[RELEASE] HubiThings Replica

Hi @mavrrick58 ,
As a student of yours for the NodeRed Samsung Studio solution I can tell you that I have tested one of my 6 AC units that was previously using the NodeRed solution and connected it using Replica app, it works for me just great. No need for an additional HW (Raspberry PI) and no manual creation of ST smartapp that I never felt confident with. I hope it will hold all 6 units with no real performance issues.

6 Likes

Me too!

One of the Alpha testers has over 50 smartthings devices authorized within 3 OAuths; plus another Replica and one OAuth running another 10 ST devices and has not reported any performance issues (all on the same HE hub). I assume your ACs are not very event noisy so it should be good -

I did a bunch of work to capture active working data in cache memory to help with performance and rule lookup. The cache does reset with a hub reboot or new Replica application code load.

To note - there is some work todo in the app to handle lifecycle changes (ST device renames, ST device add/deletes) which is very brute force at the moment. Hopefully I can tame that down as the product matures.

Appreciate the nice words. :slight_smile:

Would love that! The application will automatically pick up any DH with 'replica' as the namespace with hopes others could fill in the gaps for all the various devices out there. @bthrock and myself can help with design guidance. There are some tricks to hide commands to not overload the HE device UI that you will see - suggest looking at the Replica Switch for the simple case -- the crazy case is the Replica Samsung OCF AirCon -- and the odd ball is the Replica SmartThings Hub that is designed to drive mode changes per location.

4 Likes

@Bloodtick_Jones
I know this is still in beta but there is probably a pretty good size community that would love to have this available to them easily. Any thoughts on when you would get It added to HPM. Just the streamline way to provide updates may help allot as you move the development forward. What is holding you back. Maybe it is a gap that a community member that is testing can help complete so others can use start to use this tool more.

I really can't express enough how great this work is. Absolutely fantastic

3 Likes

@mavrrick58 it'll be on HPM in a few days, as was mentioned a few posts up, patience is a virtue!

3 Likes

As @Greenwave mentioned we are working towards a HPM 'release' in the next few days. I would like to get the following completed first while in Beta:

  • SmartThings Virtual Device creation & lifecycle management in OAuth
  • Component ID (and capability) level support in Replica (Buttons, Samsung big-box devices, etc.)

Both are almost ready for Beta this week. Thanks for the patience.

3 Likes

Hi,
Looks like pretty usefull! I would like to know if it ll still works after ST groovy shutdown? Also, is it webcore compatible? I would like to transfer all my piston and then assign the mirrored devices...

Thanks!

1 Like

Yes, It uses the ST cloud APIs that are the go forward solution for integration with ST.

Yes, in the fact that you build representative HE devices on the HE hub that 'replicate' the ST device. The HE webCoRE application then works locally (as it does today on HE).

2 Likes

I am working on Color Bulb Replica Driver. Got it lit and have switch, colorTemp, level commands all working and all attributes working. Trying to troubleshoot why the Capability Color Control commands are not working. It is very tedious.
When done, I should have mono, colorTemp, and color bulb drivers for the replica implementation.

2 Likes

@Bloodtick_Jones Hi Mate,

Any plan to add water sensor replica driver to supported device list?.

Regards,
Sundar

Build a fake Replica Switch against the ST sensor and it will populate the HE Device Handler with various JSON data.

Cut and paste the 'capability' infomation and post and we can build one. When you post to the forum use the preformatted </> text otherwise it will make a mess of the JSON.

The HE Device Handler should look something like this:

I've been working on this as well and also have a working driver, but need to troubleshoot the colorControl with @Bloodtick_Jones, who's been busy getting ready for release. If we figure out anything, or you do first, just post here.

So pleased to see people like yourself building community drivers!! :partying_face:

ETA: Sent you a PM.

@Bloodtick_Jones Please find the Json

capabilities: {"components":[{"id":"waterSensor","version":1,"status":"live","name":"Water Sensor","ephemeral":false,"attributes":{"water":{"schema":{"type":"object","properties":{"value":{"title":"MoistureState","type":"string","enum":["dry","wet"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{}},{"id":"battery","version":1,"status":"live","name":"Battery","ephemeral":false,"attributes":{"battery":{"schema":{"title":"IntegerPercent","type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100},"unit":{"type":"string","enum":["%"],"default":"%"}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{}},{"id":"legendabsolute60149.signalMetrics","version":1,"status":"proposed","name":"Signal Metrics","ephemeral":false,"attributes":{"signalMetrics":{"schema":{"type":"object","properties":{"value":{"type":"string"}},"additionalProperties":false,"required":["value"]},"setter":"setSignalMetrics","enumCommands":[]}},"commands":{"setSignalMetrics":{"name":"setSignalMetrics","arguments":[{"name":"value","optional":false,"schema":{"type":"string"}}]}}},{"id":"refresh","version":1,"status":"live","name":"Refresh","ephemeral":false,"attributes":{},"commands":{"refresh":{"name":"refresh","arguments":[]}}}]}
commands: {"setSwitchValue":[{"name":"switch*","type":"ENUM"}],"setSwitchOff":[],"setSwitchOn":[],"setHealthStatusValue":[{"name":"healthStatus*","type":"ENUM"}]}
description: {"deviceId":"3e9e44aa-9a0c-4b73-8d30-0b7af700bd2a","name":"water-battery","label":"Salt Indicator Sensor","manufacturerName":"SmartThingsCommunity","presentationId":"69a03b71-4db2-3b09-8d0a-b1247e232c42","deviceManufacturerCode":"LUMI","locationId":"50b6110c-c91d-4d2b-8e7d-43a299524fdf","roomId":"df49001a-e4bc-4e27-b599-20f18791fc30","components":[{"id":"main","label":"main","capabilities":[{"id":"waterSensor","version":1},{"id":"battery","version":1},{"id":"legendabsolute60149.signalMetrics","version":1},{"id":"refresh","version":1}],"categories":[{"name":"LeakSensor","categoryType":"manufacturer"}]}],"createTime":"2022-10-13T21:45:50.677Z","parentDeviceId":"231b48c1-3b05-4ed3-888c-bc687db3ed89","profile":{"id":"fa8f1715-cb8d-372a-b3f9-74617258e8fe"},"zigbee":{"eui":"00158D000726D907","networkId":"3FC8","driverId":"8a5a5586-aa12-4cbb-b7ed-fa3ad735df0d","executingLocally":true,"hubId":"231b48c1-3b05-4ed3-888c-bc687db3ed89","provisioningState":"DRIVER_SWITCH"},"type":"ZIGBEE","restrictionTier":0,"allowed":null}
health: {"deviceId":"3e9e44aa-9a0c-4b73-8d30-0b7af700bd2a","state":"ONLINE","lastUpdatedDate":"2023-01-04T11:13:18.225Z"}
replica: {"deviceId":"3e9e44aa-9a0c-4b73-8d30-0b7af700bd2a","componentId":"main","replicaId":13,"type":"child"}
rules: {"version":1,"components":[{"trigger":{"name":"off","label":"command: off()","type":"command"},"command":{"name":"off","type":"command","capability":"switch","label":"command: off()"},"type":"hubitatTrigger"},{"trigger":{"name":"on","label":"command: on()","type":"command"},"command":{"name":"on","type":"command","capability":"switch","label":"command: on()"},"type":"hubitatTrigger"},{"trigger":{"type":"attribute","properties":{"value":{"title":"SwitchState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"switch","attribute":"switch","label":"attribute: switch."},"command":{"name":"setSwitchValue","label":"command: setSwitchValue(switch)","type":"command","parameters":[{"name":"switch*","type":"ENUM"}]},"type":"smartTrigger"},{"trigger":{"type":"attribute","properties":{"value":{"title":"HealthState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"healthCheck","attribute":"healthStatus","label":"attribute: healthStatus."},"command":{"name":"setHealthStatusValue","label":"command: setHealthStatusValue(healthStatus)","type":"command","parameters":[{"name":"healthStatus*","type":"ENUM"}]},"type":"smartTrigger","mute":true}]}
status: {"components":{"main":{"waterSensor":{"water":{"value":"dry","timestamp":"2023-01-06T00:55:29.042Z"}},"refresh":{},"battery":{"battery":{"value":100,"unit":"%","timestamp":"2022-10-13T23:37:51.706Z"}},"legendabsolute60149.signalMetrics":{"signalMetrics":{"value":"<em table style='font-size:70%';'font-weight: bold'GMT: 2023/01/06 Time: 00:01
DNI: 0x3FC8 LQI: 146 RSSI: -54dbm
","timestamp":"2023-01-06T00:01:41.900Z"}}}}}
triggers: {"off":[],"on":[],"refresh":[]}

1 Like

Beta Code Release 1.2.09 posted.

  • New jQuery DataTables to allow for sorting and search
  • Support for multiple component ID SmartThings devices such as Buttons
  • Bug fixes to non-Replica rules support. (must install to support virtual drivers)
  • Bug fixes to mirror device selection

Drop down will appear on Create and Mirror functions for buttons. Each component will become its own HE Device on the HE Hub:

Powerful jQuery DataTables sorting, paging and search:


Note: the jQuery library is local on the HE device firmware and not externally loaded.

How to update:
Load HubiThings Replica first:
https://raw.githubusercontent.com/bloodtick/Hubitat/main/hubiThingsReplica/hubiThingsReplica.groovy

Load HubiThings OAuth next:
https://raw.githubusercontent.com/bloodtick/Hubitat/main/hubiThingsReplica/hubiThingsOauth.groovy

1 Like

https://raw.githubusercontent.com/bloodtick/Hubitat/main/hubiThingsReplica/devices/replicaWaterSensor.groovy

Give this a try. I did include the custom signalMetrics. Not sure what/how that works, but would be rule ignored if others don't include it.

1 Like

@Bloodtick_Jones thanks Mate. I have tested and the water sensor driver is working like a charm.. Kudos to the effort.

2 Likes

Can you explain how its working? Where to start? I have a ST hub with some devices (real) and some virtual devices... I have HE hub too with nothing else than my phone and presence sensor like life360...
Is there a kind of video or something to see what needed to be done?

@Bloodtick_Jones One more request, any idea about the contact sensor replica driver.

Did you try the Replica Multipurpose Sensor? That is designed around the ST native sensor which is primary as a contact. No idea why they named it as such. Probably should rename it...

1 Like

Start at the top!

The Arlo capabilties data information is below

capabilities: {"components":[{"id":"switch","version":1,"status":"live","name":"Switch","ephemeral":false,"attributes":{"switch":{"schema":{"type":"object","properties":{"value":{"title":"SwitchState","type":"string","enum":["on","off"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[{"command":"on","value":"on"},{"command":"off","value":"off"}]}},"commands":{"off":{"name":"off","arguments":[]},"on":{"name":"on","arguments":[]}}},{"id":"refresh","version":1,"status":"live","name":"Refresh","ephemeral":false,"attributes":{},"commands":{"refresh":{"name":"refresh","arguments":[]}}},{"id":"button","version":1,"status":"live","name":"Button","ephemeral":false,"attributes":{"button":{"schema":{"type":"object","properties":{"value":{"title":"ButtonState","type":"string","enum":["pushed","held","double","pushed_2x","pushed_3x","pushed_4x","pushed_5x","pushed_6x","down","down_2x","down_3x","down_4x","down_5x","down_6x","down_hold","up","up_2x","up_3x","up_4x","up_5x","up_6x","up_hold","swipe_up","swipe_down","swipe_left","swipe_right"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"numberOfButtons":{"schema":{"type":"object","properties":{"value":{"title":"PositiveInteger","type":"integer","minimum":0}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"supportedButtonValues":{"schema":{"type":"object","properties":{"value":{"type":"array","items":{"title":"ButtonState","type":"string","enum":["pushed","held","double","pushed_2x","pushed_3x","pushed_4x","pushed_5x","pushed_6x","down","down_2x","down_3x","down_4x","down_5x","down_6x","down_hold","up","up_2x","up_3x","up_4x","up_5x","up_6x","up_hold","swipe_up","swipe_down","swipe_left","swipe_right"]}}},"additionalProperties":false,"required":[]},"enumCommands":[]}},"commands":{}},{"id":"battery","version":1,"status":"live","name":"Battery","ephemeral":false,"attributes":{"battery":{"schema":{"title":"IntegerPercent","type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100},"unit":{"type":"string","enum":["%"],"default":"%"}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{}},{"id":"healthCheck","version":1,"status":"live","name":"Health Check","ephemeral":false,"attributes":{"checkInterval":{"schema":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":604800},"unit":{"type":"string","enum":["s"],"default":"s"},"data":{"type":"object","additionalProperties":false,"required":[],"properties":{"deviceScheme":{"type":"string","enum":["MIXED","TRACKED","UNTRACKED"]},"hubHardwareId":{"type":"string","pattern":"^[0-9a-fA-F]{4}$"},"protocol":{"title":"DeviceHealthProtocol","type":"string","enum":["zigbee","zwave","bluetooth","lan","cloud","unknown","ocf","mqtt"]},"offlinePingable":{"type":"string","enum":["0","1"]},"badProperty":{"type":"string"}}}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"healthStatus":{"schema":{"type":"object","properties":{"value":{"type":"string","enum":["online","offline"]},"data":{"type":"object","additionalProperties":false,"required":[],"properties":{"deviceScheme":{"type":"string","enum":["MIXED","TRACKED","UNTRACKED"]},"badProperty":{"type":"string"}}}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"DeviceWatch-Enroll":{"schema":{"type":"object","properties":{"value":{"title":"DeviceHealthEnroll","type":"object","additionalProperties":false,"properties":{"scheme":{"type":"string","enum":["MIXED","TRACKED","UNTRACKED"]},"protocol":{"title":"DeviceHealthProtocol","type":"string","enum":["zigbee","zwave","bluetooth","lan","cloud","unknown","ocf","mqtt"]},"hubHardwareId":{"title":"String","type":"string","maxLength":255}}}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"DeviceWatch-DeviceStatus":{"schema":{"type":"object","properties":{"value":{"type":"string","enum":["online","offline"]},"data":{"type":"object","additionalProperties":false,"required":[],"properties":{"deviceScheme":{"type":"string","enum":["MIXED","TRACKED","UNTRACKED"]},"badProperty":{"type":"string"}}}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{"ping":{"name":"ping","arguments":[]}}},{"id":"videoStream","version":1,"status":"live","name":"Video Stream","ephemeral":false,"attributes":{"stream":{"schema":{"type":"object","properties":{"value":{"title":"JsonObject","type":"object"}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{"stopStream":{"name":"stopStream","arguments":[]},"startStream":{"name":"startStream","arguments":[]}}},{"id":"motionSensor","version":1,"status":"live","name":"Motion Sensor","ephemeral":false,"attributes":{"motion":{"schema":{"type":"object","properties":{"value":{"title":"ActivityState","type":"string","enum":["active","inactive"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{}},{"id":"soundSensor","version":1,"status":"live","name":"Sound Sensor","ephemeral":false,"attributes":{"sound":{"schema":{"type":"object","properties":{"value":{"type":"string","enum":["detected","not detected"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{}},{"id":"videoCapture","version":1,"status":"live","name":"Video Capture","ephemeral":false,"attributes":{"stream":{"schema":{"type":"object","properties":{"value":{"title":"JsonObject","type":"object"}},"additionalProperties":false,"required":["value"]},"enumCommands":[]},"clip":{"schema":{"type":"object","properties":{"value":{"title":"JsonObject","type":"object"}},"additionalProperties":false,"required":["value"]},"enumCommands":[]}},"commands":{"capture":{"name":"capture","arguments":[{"name":"startTime","optional":false,"schema":{"title":"Iso8601Date","type":"string","pattern":"^(?:[1-9]\\d{3}-?(?:(?:0[1-9]|1[0-2])-?(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-?(?:29|30)|(?:0[13578]|1[02])-?31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-?02-?29)T(?:[01]\\d|2[0-3]):?[0-5]\\d:?[0-5]\\d(?:\\.\\d{3})?(?:Z|[+-][01]\\d(?::?[0-5]\\d)?)$"}},{"name":"captureTime","optional":false,"schema":{"title":"Iso8601Date","type":"string","pattern":"^(?:[1-9]\\d{3}-?(?:(?:0[1-9]|1[0-2])-?(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-?(?:29|30)|(?:0[13578]|1[02])-?31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-?02-?29)T(?:[01]\\d|2[0-3]):?[0-5]\\d:?[0-5]\\d(?:\\.\\d{3})?(?:Z|[+-][01]\\d(?::?[0-5]\\d)?)$"}},{"name":"endTime","optional":false,"schema":{"title":"Iso8601Date","type":"string","pattern":"^(?:[1-9]\\d{3}-?(?:(?:0[1-9]|1[0-2])-?(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-?(?:29|30)|(?:0[13578]|1[02])-?31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-?02-?29)T(?:[01]\\d|2[0-3]):?[0-5]\\d:?[0-5]\\d(?:\\.\\d{3})?(?:Z|[+-][01]\\d(?::?[0-5]\\d)?)$"}},{"name":"correlationId","optional":true,"schema":{"title":"String","type":"string","maxLength":255}},{"name":"reason","optional":true,"schema":{"title":"String","type":"string","maxLength":255}}]}}},{"id":"alarm","version":1,"status":"live","name":"Alarm","ephemeral":false,"attributes":{"alarm":{"schema":{"type":"object","properties":{"value":{"title":"AlertState","type":"string","enum":["both","off","siren","strobe"]}},"additionalProperties":false,"required":["value"]},"enumCommands":[{"command":"both","value":"both"},{"command":"off","value":"off"},{"command":"siren","value":"siren"},{"command":"strobe","value":"strobe"}]}},"commands":{"siren":{"name":"siren","arguments":[]},"strobe":{"name":"strobe","arguments":[]},"off":{"name":"off","arguments":[]},"both":{"name":"both","arguments":[]}}}]}
commands: {"setSwitchValue":[{"name":"switch*","type":"ENUM"}],"setSwitchOff":[],"setSwitchOn":[],"setMotionValue":[{"name":"motion*","type":"ENUM"}],"setMotionActive":[],"setMotionInactive":[],"setSoundValue":[{"name":"sound*","type":"ENUM"}],"setSoundDetected":[],"setSoundNotDetected":[],"setBatteryValue":[{"name":"battery*","type":"NUMBER"}],"setHealthStatusValue":[{"name":"healthStatus*","type":"ENUM"}]}
description: {"deviceId":"30fb90d7-a507-4a38-80d3-f58ae0a9f895","name":"c2c-arlo-wired-video-doorbell-switch-battery","label":"Front Door Doorbell","manufacturerName":"SmartThings","presentationId":"SmartThings-smartthings-c2c_arlo_doorbell_switch_battery","locationId":"6deb2ff0-5ece-4c2c-9709-fc4e2819c574","ownerId":"573997fb-413b-4478-b153-f750618ef88e","roomId":"fe89c8a7-7a39-4465-99b5-0db72a4ff4ad","components":[{"id":"main","label":"main","capabilities":[{"id":"switch","version":1},{"id":"refresh","version":1},{"id":"button","version":1},{"id":"battery","version":1},{"id":"healthCheck","version":1},{"id":"videoStream","version":1},{"id":"motionSensor","version":1},{"id":"soundSensor","version":1},{"id":"videoCapture","version":1},{"id":"alarm","version":1}],"categories":[{"name":"Camera","categoryType":"manufacturer"}]}],"createTime":"2023-01-01T17:57:32.438Z","profile":{"id":"82c7e00a-b03b-4de0-8b79-aec4db3375e0"},"viper":{"manufacturerName":"Arlo","modelName":"AVD1001B"},"type":"VIPER","restrictionTier":0,"allowed":null}
health: {"deviceId":"30fb90d7-a507-4a38-80d3-f58ae0a9f895","state":"ONLINE","lastUpdatedDate":"2023-01-06T12:56:53.039Z"}
replica: {"deviceId":"30fb90d7-a507-4a38-80d3-f58ae0a9f895","replicaId":714,"type":"child"}
rules: {"version":1,"components":[ {"trigger":{"type":"attribute","properties":{"value":{"title":"ActivityState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"motionSensor","attribute":"motion","label":"attribute: motion.*"},"command":{"name":"setMotionValue","label":"command: setMotionValue(motion*)","type":"command","parameters":[{"name":"motion*","type":"ENUM"}]},"type":"smartTrigger"}, {"trigger":{"name":"off","label":"command: off()","type":"command"},"command":{"name":"off","type":"command","capability":"switch","label":"command: off()"},"type":"hubitatTrigger"}, {"trigger":{"name":"on","label":"command: on()","type":"command"},"command":{"name":"on","type":"command","capability":"switch","label":"command: on()"},"type":"hubitatTrigger"}, {"trigger":{"type":"attribute","properties":{"value":{"title":"ActivityState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"soundSensor","attribute":"sound","label":"attribute: sound.*"},"command":{"name":"setSoundValue","label":"command: setSoundValue(sound*)","type":"command","parameters":[{"name":"sound*","type":"ENUM"}]},"type":"smartTrigger"}, {"trigger":{"title":"IntegerPercent","type":"attribute","properties":{"value":{"type":"integer","minimum":0,"maximum":100},"unit":{"type":"string","enum":["%"],"default":"%"}},"additionalProperties":false,"required":["value"],"capability":"battery","attribute":"battery","label":"attribute: battery.*"},"command":{"name":"setBatteryValue","label":"command: setBatteryValue(battery*)","type":"command","parameters":[{"name":"battery*","type":"NUMBER"}]},"type":"smartTrigger","mute":true}, {"trigger":{"type":"attribute","properties":{"value":{"title":"SwitchState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"switch","attribute":"switch","label":"attribute: switch.*"},"command":{"name":"setSwitchValue","label":"command: setSwitchValue(switch*)","type":"command","parameters":[{"name":"switch*","type":"ENUM"}]},"type":"smartTrigger"}, {"trigger":{"type":"attribute","properties":{"value":{"title":"HealthState","type":"string"}},"additionalProperties":false,"required":["value"],"capability":"healthCheck","attribute":"healthStatus","label":"attribute: healthStatus.*"},"command":{"name":"setHealthStatusValue","label":"command: setHealthStatusValue(healthStatus*)","type":"command","parameters":[{"name":"healthStatus*","type":"ENUM"}]},"type":"smartTrigger","mute":true} ]}
status: {"components":{"main":{"button":{"button":{"value":"up","timestamp":"2023-01-06T12:56:51.615Z"},"numberOfButtons":{"value":null},"supportedButtonValues":{"value":["pushed"],"timestamp":"2023-01-01T17:57:37.880Z"}},"videoCapture":{"stream":{"value":null},"clip":{"value":null}},"videoStream":{"stream":{"value":null}},"healthCheck":{"checkInterval":{"value":60,"unit":"s","data":{"deviceScheme":"UNTRACKED","protocol":"cloud"},"timestamp":"2023-01-01T17:57:32.619Z"},"healthStatus":{"value":null},"DeviceWatch-Enroll":{"value":null},"DeviceWatch-DeviceStatus":{"value":"online","data":{},"timestamp":"2023-01-01T17:57:37.296Z"}},"alarm":{"alarm":{"value":"off","timestamp":"2023-01-01T17:57:37.880Z"}},"refresh":{},"soundSensor":{"sound":{"value":"not detected","timestamp":"2023-01-01T17:57:37.880Z"}},"motionSensor":{"motion":{"value":"inactive","timestamp":"2023-01-06T19:47:53.182Z"}},"battery":{"battery":{"value":35,"unit":"%","timestamp":"2023-01-06T12:56:51.299Z"}},"switch":{"switch":{"value":"on","timestamp":"2023-01-01T17:57:37.880Z"}}}}}
triggers: {"refresh":[]}

Hope that helps

1 Like