Difference between revisions of "Websockets Documentation"
(→DynamicClientRemoved) |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Almond+ 2014]] | [[Category:Almond+ 2014]] | ||
[[Category:Almond 2015]] | [[Category:Almond 2015]] | ||
− | Websocket is the protocol for establishing an interaction channel | + | [[Category:Almond 3]] |
− | + | Websocket is the protocol for establishing an interaction channel between an external application and Almond. It is also possible to receive event-based notifications. Websocket can be used to control [https://wiki.securifi.com/index.php/Devicelist_Documentation '''smart devices'''] that are paired with Almond and build smart applications around it. | |
− | + | ||
== Authentication == | == Authentication == | ||
Line 30: | Line 29: | ||
"MobileInternalIndex":"<random key>", | "MobileInternalIndex":"<random key>", | ||
"CommandType":"DeviceList", | "CommandType":"DeviceList", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"1":{ | "1":{ | ||
Line 36: | Line 34: | ||
"ID":"1", | "ID":"1", | ||
"Name":"ContactSwitch #1", | "Name":"ContactSwitch #1", | ||
− | |||
"Type":"12", | "Type":"12", | ||
+ | "FriendlyDeviceType":"ContactSwitch", | ||
"Location":"Default", | "Location":"Default", | ||
"LastActiveEpoch":"1462172879", | "LastActiveEpoch":"1462172879", | ||
− | + | "Manufacturer":"Sercomm Corp.", | |
"Version":"16", | "Version":"16", | ||
− | "Model":"Unknown" | + | "Model":"Unknown", |
+ | "DeviceState":"1" | ||
}, | }, | ||
"DeviceValues":{ | "DeviceValues":{ | ||
"1":{ | "1":{ | ||
"Name":"STATE", | "Name":"STATE", | ||
− | "Value":"true" | + | "Value":"true", |
+ | "Type":"4" | ||
}, | }, | ||
"2":{ | "2":{ | ||
"Name":"LOW BATTERY", | "Name":"LOW BATTERY", | ||
− | "Value":"0" | + | "Value":"0", |
+ | "Type":"12" | ||
}, | }, | ||
"3":{ | "3":{ | ||
"Name":"TAMPER", | "Name":"TAMPER", | ||
− | "Value":"true" | + | "Value":"true", |
+ | "Type":"9" | ||
} | } | ||
} | } | ||
Line 63: | Line 65: | ||
"ID":"2", | "ID":"2", | ||
"Name":"BinarySwitch #2", | "Name":"BinarySwitch #2", | ||
+ | "Type":"1", | ||
"FriendlyDeviceType":"BinarySwitch", | "FriendlyDeviceType":"BinarySwitch", | ||
− | " | + | "Location":"Default", |
− | " | + | "LastActiveEpoch":"1462175634", |
− | " | + | "Manufacturer":"Sercomm Corp.", |
+ | "Version":"16", | ||
+ | "Model":"SZ-BSW01", | ||
+ | "DeviceState":"1" | ||
}, | }, | ||
"DeviceValues":{ | "DeviceValues":{ | ||
"1":{ | "1":{ | ||
"Name":"SWITCH BINARY", | "Name":"SWITCH BINARY", | ||
− | "Value":"true" | + | "Value":"true", |
+ | "Type":"1" | ||
} | } | ||
} | } | ||
Line 82: | Line 89: | ||
Request | Request | ||
{ | { | ||
− | " | + | "MobileInternalIndex":"<random key>", |
"CommandType":"UpdateDeviceIndex", | "CommandType":"UpdateDeviceIndex", | ||
"ID":"<device id>", | "ID":"<device id>", | ||
Line 161: | Line 168: | ||
{ | { | ||
"CommandType": "RuleList", | "CommandType": "RuleList", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 417: | Line 423: | ||
Response | Response | ||
− | { | + | { |
− | + | "CommandType": "ClientList", | |
− | + | "MobileInternalIndex":"<random key same as request>", | |
− | + | "Success":"true", | |
− | + | "Clients": { | |
− | + | "1": { | |
− | + | "ID":"1", | |
− | + | "Name": "64:bc:0c:80:62:46", | |
− | + | "Connection": "wired", | |
− | + | "MAC": "64:bc:0c:80:62:46", | |
− | + | "Type": "other", | |
− | + | "LastKnownIP": "10.10.10.97", | |
− | + | "Active": "false", | |
− | + | "UseAsPresence": "true", | |
− | + | "Wait": "6", | |
− | + | "LastActiveEpoch": "1459845389", | |
− | + | "RX": "0", | |
− | + | "TX": "0", | |
− | + | "Block": "0/1/2", | |
− | + | "CanBlock":"true/false", | |
− | + | "Category":"Kids/Others", | |
− | + | "Schedule": "0,0,0,0,0,0,0", | |
− | + | "Manufacturer": "LG", | |
− | + | "RSSI": "0", | |
− | + | "ForceInActive": "0" | |
− | + | }, | |
− | + | "2": { | |
− | + | "ID":"2", | |
− | + | "Name": "64:bc:0c:80:62:46", | |
− | + | "Connection": "wired", | |
+ | "MAC": "64:bc:0c:80:62:46", | ||
+ | "Type": "other", | ||
+ | "LastKnownIP": "10.10.10.97", | ||
+ | "Active": "false", | ||
+ | "UseAsPresence": "true", | ||
+ | "Wait": "6", | ||
+ | "LastActiveEpoch": "1459845389", | ||
+ | "RX": "0", | ||
+ | "TX": "0", | ||
+ | "Block": "0", | ||
+ | "Schedule": "0,0,0,0,0,0,0", | ||
+ | "Manufacturer": "LG", | ||
+ | "RSSI": "0", | ||
+ | "ForceInActive": "0" | ||
+ | } | ||
+ | } | ||
} | } | ||
Line 491: | Line 513: | ||
"Wait":"6", | "Wait":"6", | ||
"Block":"0/1/2", | "Block":"0/1/2", | ||
− | "Category:"Kids/Others" | + | "Category":"Kids/Others" |
}, | }, | ||
"MobileInternalIndex":"324" | "MobileInternalIndex":"324" | ||
Line 519: | Line 541: | ||
"MobileInternalIndex":"324", | "MobileInternalIndex":"324", | ||
"Success":"true", | "Success":"true", | ||
− | " | + | "Reason":"0" |
} | } | ||
Failure | Failure | ||
Line 526: | Line 548: | ||
"MobileInternalIndex":"324", | "MobileInternalIndex":"324", | ||
"Success":"false", | "Success":"false", | ||
− | " | + | "Reason":"0" |
} | } | ||
Line 552: | Line 574: | ||
} | } | ||
<br/> | <br/> | ||
+ | |||
==ScenesCommands== | ==ScenesCommands== | ||
Note:mii(MobileInternalIndex) is a random key that is generated by the client and should be used for matching the received response to the corresponding request. Maximum string length of mii is 32 characters. | Note:mii(MobileInternalIndex) is a random key that is generated by the client and should be used for matching the received response to the corresponding request. Maximum string length of mii is 32 characters. | ||
Line 560: | Line 583: | ||
Request | Request | ||
{ | { | ||
− | "CommandType":" | + | "CommandType":"DynamicSceneList", |
"MobileInternalIndex":"5432857" | "MobileInternalIndex":"5432857" | ||
} | } | ||
Line 566: | Line 589: | ||
Note: Active :- Indicates the state of Scene<br/> | Note: Active :- Indicates the state of Scene<br/> | ||
{ | { | ||
− | "CommandType": " | + | "CommandType": "DynamicSceneList", |
− | " | + | "MobileInternalIndex":"<same as in request>", |
"Scenes": { | "Scenes": { | ||
"1": { | "1": { | ||
Line 574: | Line 597: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "2", | "ID": "2", | ||
Line 612: | Line 636: | ||
Response | Response | ||
− | {"MobileInternalIndex":"324", | + | { |
+ | "CommandType":"AddScene", | ||
+ | "MobileInternalIndex":"324", | ||
"ReasonCode":"0", | "ReasonCode":"0", | ||
"Success":"true" | "Success":"true" | ||
Line 692: | Line 718: | ||
{ | { | ||
"CommandType":"DynamicIndexUpdated", | "CommandType":"DynamicIndexUpdated", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"<device id>":{ | "<device id>":{ | ||
Line 704: | Line 729: | ||
} | } | ||
} | } | ||
+ | ===DynamicDeviceAdded=== | ||
+ | Whenever a device is added, the follow update would be received. | ||
+ | |||
+ | { | ||
+ | "CommandType":"DynamicDeviceAdded", | ||
+ | "Devices":{ | ||
+ | "<device id>":{ | ||
+ | "Data":{ | ||
+ | "Name":"<device name>", | ||
+ | "Type":"<device type id >", | ||
+ | "FriendlyDeviceType":"<friendly device type>", | ||
+ | "Location":"<location>", | ||
+ | "LastActiveEpoch":"<time stamp>", | ||
+ | "Manufacturer":"<manufacturer name>", | ||
+ | "Version":"<version number>", | ||
+ | "Model":"<model>", | ||
+ | "DeviceState":"<0/1/2>" | ||
+ | }, | ||
+ | "DeviceValues":{ | ||
+ | "1":{ | ||
+ | "Name":"<index name >", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | }, | ||
+ | "2":{ | ||
+ | "Name":"<index name>", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | }, | ||
+ | "3":{ | ||
+ | "Name":"<index name>", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ===DynamicDeviceRemoved=== | ||
+ | Whenever a device is removed, the following update is received. | ||
+ | |||
+ | { | ||
+ | "CommandType":"DynamicDeviceRemoved", | ||
+ | "Action":"remove", | ||
+ | "Devices":{ | ||
+ | "25":{ | ||
+ | "Type":"<device type id >"} | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ===DynamicAllDevicesRemoved=== | ||
+ | |||
+ | Whenever all the devices are removed, the follow update is received. | ||
+ | |||
+ | |||
+ | { | ||
+ | "CommandType":"DynamicAllDevicesRemoved" | ||
+ | } | ||
+ | |||
===DynamicDeviceUpdated=== | ===DynamicDeviceUpdated=== | ||
If any device type or index are changed the following update will be received. | If any device type or index are changed the following update will be received. | ||
Line 709: | Line 793: | ||
{ | { | ||
"CommandType":"DynamicDeviceUpdated", | "CommandType":"DynamicDeviceUpdated", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"<device id>":{ | "<device id>":{ | ||
"Data":{ | "Data":{ | ||
"Name":"<device name>", | "Name":"<device name>", | ||
− | + | "Type":"<device type id >", | |
− | + | "FriendlyDeviceType":"<friendly device type>", | |
+ | "Location":"<location>", | ||
"LastActiveEpoch":"<time stamp>", | "LastActiveEpoch":"<time stamp>", | ||
− | + | "Manufacturer":"<manufacturer name>", | |
"Version":"<version number>", | "Version":"<version number>", | ||
− | "Model":"<model>" | + | "Model":"<model>", |
− | } | + | "DeviceState":"<0/1/2>" |
+ | }, | ||
+ | "DeviceValues":{ | ||
+ | "1":{ | ||
+ | "Name":"<index name >", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | }, | ||
+ | "2":{ | ||
+ | "Name":"<index name>", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | }, | ||
+ | "3":{ | ||
+ | "Name":"<index name>", | ||
+ | "Value":"<index val>", | ||
+ | "Type":"<index type>" | ||
+ | } | ||
+ | } | ||
} | } | ||
} | } | ||
Line 731: | Line 833: | ||
{ | { | ||
"CommandType": "DynamicRuleAdded", | "CommandType": "DynamicRuleAdded", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 773: | Line 874: | ||
{ | { | ||
"CommandType": "DynamicRuleUpdated", | "CommandType": "DynamicRuleUpdated", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 812: | Line 912: | ||
{ | { | ||
− | + | "CommandType": "DynamicRuleRemoved", | |
− | + | "Action": "remove", | |
− | + | "Rules": { | |
− | + | "1": {} | |
} | } | ||
} | } | ||
Line 824: | Line 924: | ||
When all rules are removed the following update is received. | When all rules are removed the following update is received. | ||
− | {"CommandType":"DynamicAllRulesRemoved | + | {"CommandType":"DynamicAllRulesRemoved"} |
<br/> | <br/> | ||
Line 840: | Line 940: | ||
{ | { | ||
"CommandType": "DynamicClientAdded", | "CommandType": "DynamicClientAdded", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 870: | Line 969: | ||
{ | { | ||
"CommandType": "DynamicClientJoined", | "CommandType": "DynamicClientJoined", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 879: | Line 977: | ||
"Type": "other", | "Type": "other", | ||
"LastKnownIP": "10.10.10.97", | "LastKnownIP": "10.10.10.97", | ||
− | "Active": " | + | "Active": "true", |
"UseAsPresence": "true", | "UseAsPresence": "true", | ||
"Wait": "6", | "Wait": "6", | ||
Line 901: | Line 999: | ||
{ | { | ||
"CommandType": "DynamicClientLeft", | "CommandType": "DynamicClientLeft", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 932: | Line 1,029: | ||
{ | { | ||
"CommandType": "DynamicClientUpdated", | "CommandType": "DynamicClientUpdated", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 974: | Line 1,070: | ||
When all the clients are removed this update is received | When all the clients are removed this update is received | ||
− | + | { | |
− | + | "CommandType":"DynamicAllClientsRemoved" | |
− | + | } | |
− | + | ||
− | + | ||
− | } | + | |
===DynamicSceneAdded=== | ===DynamicSceneAdded=== | ||
Line 985: | Line 1,078: | ||
{ | { | ||
"CommandType": "DynamicSceneAdded", | "CommandType": "DynamicSceneAdded", | ||
− | |||
"Scenes": { | "Scenes": { | ||
"1": { | "1": { | ||
Line 992: | Line 1,084: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "1", | "ID": "1", | ||
Line 1,011: | Line 1,104: | ||
{ | { | ||
"CommandType": "DynamicSceneUpdated", | "CommandType": "DynamicSceneUpdated", | ||
− | |||
"Scenes": { | "Scenes": { | ||
"1": { | "1": { | ||
Line 1,018: | Line 1,110: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "1", | "ID": "1", | ||
Line 1,061: | Line 1,154: | ||
{ | { | ||
− | "CommandType": "DynamicAllScenesRemoved | + | "CommandType": "DynamicAllScenesRemoved" |
− | + | ||
} | } |
Latest revision as of 14:52, 1 April 2019
Websocket is the protocol for establishing an interaction channel between an external application and Almond. It is also possible to receive event-based notifications. Websocket can be used to control smart devices that are paired with Almond and build smart applications around it.
Contents
- 1 Authentication
- 2 Device Commands
- 3 Rules Commands
- 4 ClientList
- 5 ScenesCommands
- 6 Notification and Event Updates
- 6.1 DynamicIndexUpdated
- 6.2 DynamicDeviceAdded
- 6.3 DynamicDeviceRemoved
- 6.4 DynamicAllDevicesRemoved
- 6.5 DynamicDeviceUpdated
- 6.6 DynamicRuleAdded
- 6.7 DynamicRuleUpdated
- 6.8 DynamicRuleRemoved
- 6.9 DynamicAllRulesRemoved
- 6.10 DynamicAlmondModeUpdated
- 6.11 DynamicClientAdded
- 6.12 DynamicClientJoined
- 6.13 DynamicClientLeft
- 6.14 DynamicClientUpdated
- 6.15 DynamicClientRemoved
- 6.16 DynamicAllClientsRemoved
- 6.17 DynamicSceneAdded
- 6.18 DynamicSceneUpdated
- 6.19 DynamicSceneActivated
- 6.20 DynamicSceneRemoved
- 6.21 DynamicAllScenesRemoved
Authentication
In order to connect to the webserver - first specify a web-interface url, then the portid - 7681 followed by web-interface login password.
<webinterfaceUrl>:<portid>/<Login>/<password>
Example ws://10.10.10.254:7681/root/frank
Device Commands
Note: mii is a random key that is generated by the client and should be used for matching the received response to the corresponding request.
Maximum string length of mii is 32 characters. A unique mii should be used for each request
Devicelist
Command to get the list of sensors and other smart devices associated with the almond.
Request { "MobileInternalIndex":"<random key>", "CommandType":"DeviceList" }
Response { "MobileInternalIndex":"<random key>", "CommandType":"DeviceList", "Devices":{ "1":{ "Data":{ "ID":"1", "Name":"ContactSwitch #1", "Type":"12", "FriendlyDeviceType":"ContactSwitch", "Location":"Default", "LastActiveEpoch":"1462172879", "Manufacturer":"Sercomm Corp.", "Version":"16", "Model":"Unknown", "DeviceState":"1" }, "DeviceValues":{ "1":{ "Name":"STATE", "Value":"true", "Type":"4" }, "2":{ "Name":"LOW BATTERY", "Value":"0", "Type":"12" }, "3":{ "Name":"TAMPER", "Value":"true", "Type":"9" } } }, "2":{ "Data":{ "ID":"2", "Name":"BinarySwitch #2", "Type":"1", "FriendlyDeviceType":"BinarySwitch", "Location":"Default", "LastActiveEpoch":"1462175634", "Manufacturer":"Sercomm Corp.", "Version":"16", "Model":"SZ-BSW01", "DeviceState":"1" }, "DeviceValues":{ "1":{ "Name":"SWITCH BINARY", "Value":"true", "Type":"1" } } } } }
Updatedeviceindex
Request { "MobileInternalIndex":"<random key>", "CommandType":"UpdateDeviceIndex", "ID":"<device id>", "Index":"<deviceindex>", "Value":"<indexvalue>" } Response
{ "MobileInternalIndex":"<random key>", "CommandType":"UpdateDeviceIndex", "Success":"true/false" }
Getdeviceindex
Command to get the value of a device index. Request { "MobileInternalIndex":"<random key>", "CommandType":"GetDeviceIndex", "ID":"<deviceid>", "Index":"<deviceindex>" } Response
{ "MobileInternalIndex":"<random key>", "CommandType":"GetDeviceIndex", "Success":"true/false", "Value":"<indexvalue>" }
UpdateDeviceName
Command to edit name and location of a device.
Request
{ "MobileInternalIndex":"<random key>", "CommandType":"UpdateDeviceName", "ID":"6", "Name":"newswitchsss", "Location":"default" } Response
{ "MobileInternalIndex":"<random key>", "CommandType":"UpdateDeviceName", "Success":"true/false" }
Updatealmondmode
Command to change the almond mode.
Request
{ "MobileInternalIndex":"<random key>", "CommandType":"UpdateAlmondMode", "Mode":"<mode i.e. 2/3>", "EmailId":"<email id>" } Response
{ "MobileInternalIndex":"<random key>", "CommandType":"UpdateAlmondMode", "Success":"true/false" }
Rules Commands
Note: mii is a random key that is generated by the client and should be used for matching the received response to the corresponding request. Maximum string length of mii is 32 characters. A unique mii should be used for each request.
Ruleslist
Command to get the list of existing rules.
Request:
{ "CommandType":"RuleList", "MobileInternalIndex":"111" }
Response:
{ "CommandType": "RuleList", "Rules": { "12": { "Name": "mynewrule", "Valid": "true", "ID":"12", "Triggers": [{ "Type": "<type of trigger>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "Grouping": "< AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "
Addrule
Command to create a new rule.
Request
{ "MobileInternalIndex": "111", "CommandType": "AddRule", "Name": "rule", "Valid":"true", "Triggers": [ { "Type": "<type of trigger>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "Grouping": "< AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "<time in sec>", "Valid": "true" }, { "Type": "<type of trigger>", "ID": "<event id>", "EventType": "<event type>", "value": "<event value>", "Grouping": "<AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "<time in sec>", "Valid": "true" } ], "Results": [ { "Type": "<type of result>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "PreDelay": "<time in sec>", "Valid": "true" }, { "Type": "<type of result>", "ID": "<event id>", "EventType": "<event type>", "Value": "<event value>", "PreDelay": "<time in sec>", "Valid": "true" } ] }
Response
{ "CommandType":"AddRule", "Success":"true", "MobileInternalIndex":"111", "ReasonCode":"1" }
Updaterule
Command to update an existing rule.
Request
{ "MobileInternalIndex": "111", "CommandType": "UpdateRule", "Name": "ruleNAME", "Valid":"true", "ID": "2", "Triggers": [ { "Type": "<type of trigger>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "Grouping": "< AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "<time in sec>", "Valid":"true" }, { "Type": "<type of trigger>", "ID": "<event id>", "EventType": "<event type>", "Value": "<event value>", "Grouping": "<AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "<time in sec>", "Valid":"true" } ], "Results": [ { "Type": "<type of result>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "PreDelay": "<time in sec>" }, { "Type": "<type of result>", "ID": "<event id>", "EventType": "<event type>", "Value": "<event value>", "PreDelay": "<time in sec>" } ] }
Response
{ "CommandType":"UpdateRule", "Success":"true", "MobileInternalIndex":"111", "ReasonCode":"1" }
Removerule
Command to remove an existing rule.
Request
{ "CommandType": "RemoveRule", "Rules": { "ID": "1" }, "MobileInternalIndex": "111" }
Response
{ "CommandType":"RemoveRule", "Success":"true", "MobileInternalIndex":"111", "ReasonCode":"0" }
Removeallrules
Command to remove all rules.
Request
{ "CommandType":"RemoveAllRules", "MobileInternalIndex":"111" }
Response
{ "CommandType":"RemoveAllRules", "Success":"true", "MobileInternalIndex":"111", "ReasonCode":"0"
}
Validaterule
Command to validate an existing rule.
Request
{ "CommandType":"ValidateRule", "ID":"1", "Value":"true" "MobileInternalIndex":"111" }
Response
{ "CommandType":"ValidateRule", "MobileInternalIndex":"111", "ReasonCode":"0", "Success":"false", "Data":{ "Value":"true", "ID":"1" } }
ClientList
Command to get clientlist.
Request
{ "MobileInternalIndex":"<random key>", "CommandType":"ClientList" }
Response
{ "CommandType": "ClientList", "MobileInternalIndex":"<random key same as request>", "Success":"true", "Clients": { "1": { "ID":"1", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "false", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0/1/2", "CanBlock":"true/false", "Category":"Kids/Others", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" }, "2": { "ID":"2", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "false", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" } } }
Note - Success Tag in response:
If the Almond is in AP mode or Range Extender mode then Success tag will be set to ‘false’.
UpdateClient
Command to Update the data of a client.
ID - Clientid
Name - name of the client
Connection - wired/wireless
Type - pc laptop tablet smartphone ipod ipad iphone mac printer router_switch hub tv chromecast appleTV android_stick camera nest other
Use as Presence - true/false
Request
{ "CommandType":"UpdateClient", "Clients":{ "ID": "1", "Name": "device1", "Connection": "wired", "MAC": "1c:75:08:32:2a:6d", "Type": "other", "LastKnownIP": "10.2.2.11", "Active": "false", "UseAsPresence": "false", "Wait":"6", "Block":"0/1/2", "Category":"Kids/Others" }, "MobileInternalIndex":"324" } Response
{ "Success":"true/false", "MobileInternalIndex":"324", "ReasonCode":"0" }
Remove client
command to remove a client.
Request
{ "MobileInternalIndex":"<random key>", "CommandType":"RemoveClient", "Clients":{ "ID":"1", "MAC":"1c:75:08:32:2a:6d" } }
Response
Success
{ "CommandType":"RemoveClient", "MobileInternalIndex":"324", "Success":"true", "Reason":"0" }
Failure
{ "CommandType":"RemoveClient", "MobileInternalIndex":"324", "Success":"false", "Reason":"0" }
Removeallclients
Command to remove all clients
Request
{ "MobileInternalIndex":"<random key>", "CommandType":"RemoveAllClients", }
Response
Success
{ "CommandType":"RemoveAllClients", "MobileInternalIndex":"324", "Success":"true", "ReasonCode":"0" }
Failure
{ "CommandType":"RemoveAllClients", "MobileInternalIndex":"324", "Success":"false", "ReasonCode":"0" }
ScenesCommands
Note:mii(MobileInternalIndex) is a random key that is generated by the client and should be used for matching the received response to the corresponding request. Maximum string length of mii is 32 characters.
A unique mii should be used for each request
SceneList
Command to retrieve the list of existing Scenes.
Request
{ "CommandType":"DynamicSceneList", "MobileInternalIndex":"5432857" }
Response
Note: Active :- Indicates the state of Scene
{ "CommandType": "DynamicSceneList", "MobileInternalIndex":"<same as in request>", "Scenes": { "1": { "ID":"1", "Active": "true", "Name": "Scene1022", "LastActiveEpoch": "251176214925585", "VoiceCompatible":"true", "SceneEntryList": [{ "ID": "2", "Index": "1", "Value": "false", "Valid": "true" }, { "ID": "4", "Index": "1", "Value": "78", "Valid": "true" }] } } }
AddScene
Command to add a new Scene.
Request
{ "CommandType": "AddScene", "MobileInternalIndex": "324", "Scenes":{ "Name": "My_created_scene", "SceneEntryList": [ { "ID": "1", "Index": "1", "Value": "false" }, { "ID": "2", "Index": "2", "Value": "false" } ]} }
Response
{ "CommandType":"AddScene", "MobileInternalIndex":"324", "ReasonCode":"0", "Success":"true" }
UpdateScene
Command to update an existing Scene
Request
{ "MobileInternalIndex": 1667509461, "Scenes": { "Name": "DADad222d", "ID": 1, "SceneEntryList": [{ "ID": 0, "Value": "home", "Index": 1 }, { "ID": 2, "Value": "false", "Index": 1 }, { "ID": 2, "Value": "true", "Index": 2 }], "VoiceCompatible": false },"CommandType": "UpdateScene" }
Response
{"MobileInternalIndex":"324", "ReasonCode":"0", "Success":"true" }
ActivateScene
Command to activate a Scene
Request
{ "CommandType":"ActivateScene", "MobileInternalIndex":"324", "Scenes":{ "ID":"11" } }
Response
{"CommandType":"ActivateScene","MobileInternalIndex":"324","Success":"true","Reason":"0"}
RemoveScene
Command to remove a Scene
Request
{ "CommandType":"RemoveScene", "MobileInternalIndex":"324", "Scenes":{ "ID":"11" } }
Response
{"CommandType":"RemoveScene","MobileInternalIndex":"324","Success":"true","Reason":"0"}
RemoveAllScenes
Command to remove all Scenes
Request
{ "CommandType":"RemoveAllScenes", "MobileInternalIndex":"324" }
Response
{"CommandType":"RemoveAllScenes","MobileInternalIndex":"324","Success":"true","Reason":"0"}
Notification and Event Updates
DynamicIndexUpdated
If any device index is changed, the following update will be received.
{ "CommandType":"DynamicIndexUpdated", "Devices":{ "<device id>":{ "DeviceValues":{ "<index id>":{ "Name":"<index name>", "Value":"<index value>" } } } } }
DynamicDeviceAdded
Whenever a device is added, the follow update would be received. { "CommandType":"DynamicDeviceAdded", "Devices":{ "<device id>":{ "Data":{ "Name":"<device name>", "Type":"<device type id >", "FriendlyDeviceType":"<friendly device type>", "Location":"<location>", "LastActiveEpoch":"<time stamp>", "Manufacturer":"<manufacturer name>", "Version":"<version number>", "Model":"<model>", "DeviceState":"<0/1/2>" }, "DeviceValues":{ "1":{ "Name":"<index name >", "Value":"<index val>", "Type":"<index type>" }, "2":{ "Name":"<index name>", "Value":"<index val>", "Type":"<index type>" }, "3":{ "Name":"<index name>", "Value":"<index val>", "Type":"<index type>" } } } } }
DynamicDeviceRemoved
Whenever a device is removed, the following update is received. { "CommandType":"DynamicDeviceRemoved", "Action":"remove", "Devices":{ "25":{ "Type":"<device type id >"} } }
DynamicAllDevicesRemoved
Whenever all the devices are removed, the follow update is received.
{ "CommandType":"DynamicAllDevicesRemoved" }
DynamicDeviceUpdated
If any device type or index are changed the following update will be received.
{ "CommandType":"DynamicDeviceUpdated", "Devices":{ "<device id>":{ "Data":{ "Name":"<device name>", "Type":"<device type id >", "FriendlyDeviceType":"<friendly device type>", "Location":"<location>", "LastActiveEpoch":"<time stamp>", "Manufacturer":"<manufacturer name>", "Version":"<version number>", "Model":"<model>", "DeviceState":"<0/1/2>" }, "DeviceValues":{ "1":{ "Name":"<index name >", "Value":"<index val>", "Type":"<index type>" }, "2":{ "Name":"<index name>", "Value":"<index val>", "Type":"<index type>" }, "3":{ "Name":"<index name>", "Value":"<index val>", "Type":"<index type>" } } } } }
DynamicRuleAdded
When a new rule is added the following update is received.
{ "CommandType": "DynamicRuleAdded", "Rules": { "12": { "Name": "mynewrule", "Valid": "true", "ID":"12", "Triggers": [{ "Type": "<type of trigger>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "Grouping": "< AND/OR>", "Condition": "<condition typet>", "Duration": "<time in sec>", "Valid": "true" }], "Results": [{ "Type": "<type of result>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "PreDelay": "<time in sec>", "Valid": "true" }, { "Type": "<type of result>", "ID": "<event id>", "EventType": "<event type>", "Value": "<event value>", "PreDelay": "<time in sec>", "Valid": "true" }] } } }
DynamicRuleUpdated
When an existing rule is modified the following update is received.
{ "CommandType": "DynamicRuleUpdated", "Rules": { "12": { "ID":"12", "Name": "mynewrule", "Valid": "true", "Triggers": [{ "Type": "<type of trigger>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "Grouping": "< AND/OR>", "Condition": "<condition type ie.eq/le/ge/lt/gt>", "Duration": "<time in sec>", "Valid": "true" }], "Results": [{ "Type": "<type of result>", "ID": "<device id>", "Index": "<device index>", "Value": "<index value>", "PreDelay": "<time in sec>" }, { "Type": "<type of result>", "ID": "<event id>", "EventType": "<event type>", "Value": "<event value>", "PreDelay": "<time in sec>" }] } } }
DynamicRuleRemoved
When a rule is removed the following update is received.
{ "CommandType": "DynamicRuleRemoved", "Action": "remove", "Rules": { "1": {} } }
DynamicAllRulesRemoved
When all rules are removed the following update is received.
{"CommandType":"DynamicAllRulesRemoved"}
DynamicAlmondModeUpdated
{ "CommandType":"DymanicAlmondModeUpdated", "Mode":"<mode i.e. 2/3>", "EmailId":"<email id>" }
DynamicClientAdded
When a new client is added the following update is received.
{ "CommandType": "DynamicClientAdded", "Clients": { "1": { "ID":"1", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "false", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0/1/2", "CanBlock":"true/false", "Category":"Kids/Others", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" } } }
DynamicClientJoined
When a client joined network the following update is received. { "CommandType": "DynamicClientJoined", "Clients": { "1": { "ID":"1", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "true", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0/1/2", "CanBlock":"true/false", "Category":"Kids/Others", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" } } }
DynamicClientLeft
When a client leaves the network, following update is received.
{ "CommandType": "DynamicClientLeft", "Clients": { "1": { "ID":"1", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "false", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0/1/2", "CanBlock":"true/false", "Category":"Kids/Others", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" } } }
DynamicClientUpdated
When a name change or any changes done to a client the following update is received.
{ "CommandType": "DynamicClientUpdated", "Clients": { "1": { "ID":"1", "Name": "64:bc:0c:80:62:46", "Connection": "wired", "MAC": "64:bc:0c:80:62:46", "Type": "other", "LastKnownIP": "10.10.10.97", "Active": "false", "UseAsPresence": "true", "Wait": "6", "LastActiveEpoch": "1459845389", "RX": "0", "TX": "0", "Block": "0/1/2", "CanBlock":"true/false", "Category":"Kids/Others", "Schedule": "0,0,0,0,0,0,0", "Manufacturer": "LG", "RSSI": "0", "ForceInActive": "0" } } }
DynamicClientRemoved
When a client is removed this update is received
{ "CommandType": "DynamicClientRemoved", "Action": "remove", "Clients": { "1":{ "MAC": "1c:75:08:32:2a:6d" } } }
DynamicAllClientsRemoved
When all the clients are removed this update is received { "CommandType":"DynamicAllClientsRemoved" }
DynamicSceneAdded
When a new scene is added the following update is received. { "CommandType": "DynamicSceneAdded", "Scenes": { "1": { "ID":"1", "Active": "true", "Name": "Scene1022", "LastActiveEpoch": "251176214925585", "VoiceCompatible":"true", "SceneEntryList": [{ "ID": "1", "Index": "1", "Value": "false", "Valid": "true" }, { "ID": "4", "Index": "1", "Value": "78", "Valid": "false" }] } } }
DynamicSceneUpdated
when any changes are made to an existing scene the following update is received.
{ "CommandType": "DynamicSceneUpdated", "Scenes": { "1": { "ID":"1", "Active": "true", "Name": "Scene1022", "LastActiveEpoch": "251176214925585", "VoiceCompatible":"true", "SceneEntryList": [{ "ID": "1", "Index": "1", "Value": "false", "Valid": "true" }, { "ID": "4", "Index": "1", "Value": "78", "Valid": "true" }] } } }
DynamicSceneActivated
When any scene is activated the following update is received. { "CommandType": "DynamicSceneActivated", "Action": "update", "Scenes": { "1": { "Active": "true", "LastActiveEpoch": "251176214925585" } }
}
DynamicSceneRemoved
When any scene is removed the following update is received. { "CommandType": "DynamicSceneRemoved", "Action": "remove", "Scenes": { "1": {} } }
DynamicAllScenesRemoved
When all scenes are removed the following update is received.
{ "CommandType": "DynamicAllScenesRemoved" }