Difference between revisions of "Websockets Documentation"
(→ClientList) |
|||
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 | + | 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. |
<b>Note: WebSocket API new Rules Commands are being updated according to the new firmware R089 and please [https://wiki.securifi.com/index.php/Changelog '''click here'''] to access the old Rules Commands which would work with the old firmware R085.</b> | <b>Note: WebSocket API new Rules Commands are being updated according to the new firmware R089 and please [https://wiki.securifi.com/index.php/Changelog '''click here'''] to access the old Rules Commands which would work with the old firmware R085.</b> | ||
Line 30: | Line 30: | ||
"MobileInternalIndex":"<random key>", | "MobileInternalIndex":"<random key>", | ||
"CommandType":"DeviceList", | "CommandType":"DeviceList", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"1":{ | "1":{ | ||
Line 36: | Line 35: | ||
"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 66: | ||
"ID":"2", | "ID":"2", | ||
"Name":"BinarySwitch #2", | "Name":"BinarySwitch #2", | ||
− | |||
"Type":"1", | "Type":"1", | ||
− | " | + | "FriendlyDeviceType":"BinarySwitch", |
− | "Location":"Default" | + | "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 90: | ||
Request | Request | ||
{ | { | ||
− | " | + | "MobileInternalIndex":"<random key>", |
"CommandType":"UpdateDeviceIndex", | "CommandType":"UpdateDeviceIndex", | ||
"ID":"<device id>", | "ID":"<device id>", | ||
Line 161: | Line 169: | ||
{ | { | ||
"CommandType": "RuleList", | "CommandType": "RuleList", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 419: | Line 426: | ||
{ | { | ||
"CommandType": "ClientList", | "CommandType": "ClientList", | ||
− | " | + | "MobileInternalIndex":"<random key same as request>", |
+ | "Success":"true", | ||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 506: | Line 514: | ||
"Wait":"6", | "Wait":"6", | ||
"Block":"0/1/2", | "Block":"0/1/2", | ||
− | "Category:"Kids/Others" | + | "Category":"Kids/Others" |
}, | }, | ||
"MobileInternalIndex":"324" | "MobileInternalIndex":"324" | ||
Line 534: | Line 542: | ||
"MobileInternalIndex":"324", | "MobileInternalIndex":"324", | ||
"Success":"true", | "Success":"true", | ||
− | " | + | "Reason":"0" |
} | } | ||
Failure | Failure | ||
Line 541: | Line 549: | ||
"MobileInternalIndex":"324", | "MobileInternalIndex":"324", | ||
"Success":"false", | "Success":"false", | ||
− | " | + | "Reason":"0" |
} | } | ||
Line 576: | Line 584: | ||
Request | Request | ||
{ | { | ||
− | "CommandType":" | + | "CommandType":"DynamicSceneList", |
"MobileInternalIndex":"5432857" | "MobileInternalIndex":"5432857" | ||
} | } | ||
Line 582: | Line 590: | ||
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 590: | Line 598: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "2", | "ID": "2", | ||
Line 628: | Line 637: | ||
Response | Response | ||
− | {"MobileInternalIndex":"324", | + | { |
+ | "CommandType":"AddScene", | ||
+ | "MobileInternalIndex":"324", | ||
"ReasonCode":"0", | "ReasonCode":"0", | ||
"Success":"true" | "Success":"true" | ||
Line 708: | Line 719: | ||
{ | { | ||
"CommandType":"DynamicIndexUpdated", | "CommandType":"DynamicIndexUpdated", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"<device id>":{ | "<device id>":{ | ||
Line 725: | Line 735: | ||
{ | { | ||
"CommandType":"DynamicDeviceAdded", | "CommandType":"DynamicDeviceAdded", | ||
− | |||
"Devices":{ | "Devices":{ | ||
"<device id>":{ | "<device id>":{ | ||
Line 731: | Line 740: | ||
"Name":"<device name>", | "Name":"<device name>", | ||
"Type":"<device type id >", | "Type":"<device type id >", | ||
+ | "FriendlyDeviceType":"<friendly device type>", | ||
"Location":"<location>", | "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":{ | "DeviceValues":{ | ||
"1":{ | "1":{ | ||
"Name":"<index name >", | "Name":"<index name >", | ||
− | " | + | "Value":"<index val>", |
+ | "Type":"<index type>" | ||
}, | }, | ||
"2":{ | "2":{ | ||
"Name":"<index name>", | "Name":"<index name>", | ||
− | "Value":"<index val>" | + | "Value":"<index val>", |
+ | "Type":"<index type>" | ||
}, | }, | ||
"3":{ | "3":{ | ||
"Name":"<index name>", | "Name":"<index name>", | ||
− | "Value":"<index val>" | + | "Value":"<index val>", |
+ | "Type":"<index type>" | ||
} | } | ||
} | } | ||
Line 772: | Line 786: | ||
{ | { | ||
− | "CommandType":"DynamicAllDevicesRemoved" | + | "CommandType":"DynamicAllDevicesRemoved" |
− | + | ||
− | + | ||
} | } | ||
Line 782: | Line 794: | ||
{ | { | ||
"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 804: | Line 834: | ||
{ | { | ||
"CommandType": "DynamicRuleAdded", | "CommandType": "DynamicRuleAdded", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 846: | Line 875: | ||
{ | { | ||
"CommandType": "DynamicRuleUpdated", | "CommandType": "DynamicRuleUpdated", | ||
− | |||
"Rules": { | "Rules": { | ||
"12": { | "12": { | ||
Line 897: | Line 925: | ||
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 913: | Line 941: | ||
{ | { | ||
"CommandType": "DynamicClientAdded", | "CommandType": "DynamicClientAdded", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 943: | Line 970: | ||
{ | { | ||
"CommandType": "DynamicClientJoined", | "CommandType": "DynamicClientJoined", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 952: | Line 978: | ||
"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 974: | Line 1,000: | ||
{ | { | ||
"CommandType": "DynamicClientLeft", | "CommandType": "DynamicClientLeft", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 1,005: | Line 1,030: | ||
{ | { | ||
"CommandType": "DynamicClientUpdated", | "CommandType": "DynamicClientUpdated", | ||
− | |||
"Clients": { | "Clients": { | ||
"1": { | "1": { | ||
Line 1,048: | Line 1,072: | ||
{ | { | ||
− | "CommandType":"DynamicAllClientsRemoved | + | "CommandType":"DynamicAllClientsRemoved" |
− | + | ||
} | } | ||
Line 1,056: | Line 1,079: | ||
{ | { | ||
"CommandType": "DynamicSceneAdded", | "CommandType": "DynamicSceneAdded", | ||
− | |||
"Scenes": { | "Scenes": { | ||
"1": { | "1": { | ||
Line 1,063: | Line 1,085: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "1", | "ID": "1", | ||
Line 1,082: | Line 1,105: | ||
{ | { | ||
"CommandType": "DynamicSceneUpdated", | "CommandType": "DynamicSceneUpdated", | ||
− | |||
"Scenes": { | "Scenes": { | ||
"1": { | "1": { | ||
Line 1,089: | Line 1,111: | ||
"Name": "Scene1022", | "Name": "Scene1022", | ||
"LastActiveEpoch": "251176214925585", | "LastActiveEpoch": "251176214925585", | ||
+ | "VoiceCompatible":"true", | ||
"SceneEntryList": [{ | "SceneEntryList": [{ | ||
"ID": "1", | "ID": "1", | ||
Line 1,132: | Line 1,155: | ||
{ | { | ||
− | "CommandType": "DynamicAllScenesRemoved | + | "CommandType": "DynamicAllScenesRemoved" |
− | + | ||
} | } |
Revision as of 14:37, 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.
Note: WebSocket API new Rules Commands are being updated according to the new firmware R089 and please click here to access the old Rules Commands which would work with the old firmware R085.
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" }