UPDATE: Managed to connect to Digital Life and am now getting a full list of devices (including battery level!) and can get/set system status. Yes, I can arm the alarm programmatically.
Note: I’ve x’d out numbers for security purposes.
Example of devices:
[att.dl.digital-life-system] => stdClass Object
(
[deviceType] => digital-life-system
[deviceGuid] => AM0000xxxx
[movable] => 1
[events] => ac-power-lost,ac-power-restored,recent-closing-alarm,exit-alarm,device-log-event,alarm-condition,alarm-condition-cleared,alarm-pending,pending-alarm-condition-cleared,alarm-condition-confirmed,home-disarmed,away-armed,stay-armed,home-disarmed-bypass,instant-armed,system-status,police,fire,aux
[entry-device-list] => SD0A09xxxx,SD0A09xxxx,SM0402xxxx
[command] => null
[camera-exclusion-list] => null
[command-result] => Ack!User=17926xxxx[Desktop Web:1457114467484]!
[alarmed-device-list] => null
[agentcameraexclusionlist] => null
[alarm-timeout] => 300
[system-status] => **Away**
[exit-delay] => 45
[alarmed-device.event-list] => null
[abort-delay] => 45
[entry-delay] => 30
[armed-stay-device-list] => SD0A09xxxx,SD0A17xxxx,SD0A09xxxx,SD0A19xxxx,SD0A01xxxx,SD0A17xxxx,SD0A19xxxx,SD0A19xxxx,SD0A09xxxx,SD0A17xxxx,SD0A30xxxx,SD0A2Bxxxx,SD0A2Exxxx,SD0A3Axxxx
[information-notifications] => null
[alarm-mode] => home
[armed-instant-device-list] => SD0A09xxxx,SD0A09xxxx,SD0A09xxxx,SD0A17xxxx,SD0A19xxxx,SD0A17xxxx,SD0A17xxxx,SD0A01xxxx,SD0A19xxxx,SD0A19xxxx,SD0A30xxxx,SD0A2Bxxxx,SD0A2Exxxx,SD0A3Axxxx
[24hrdevicelist] => null
[alarm-notifications] => null
[cross-zoning-delay] => 15
[swinger-shutdown-count] => 2
[am-flags] => 3837
[status] => 0
[name] => Digital Life System
[bypassed-device-list] => null
[armed-away-device-list] => SD0A09xxxx,SD0A17xxxx,SD0A09xxxx,SD0A19xxxx,SD0A01xxxx,SD0A17xxxx,SD0A19xxxx,SD0A19xxxx,SD0A09xxxx,SD0A17xxxx,SM0402xxxx,SD0A30xxxx,SD0A2Bxxxx,SD0A2Exxxx,SD0A3Axxxx
)
[att.dl.front-window] => stdClass Object
(
[deviceType] => contact-sensor
[deviceGuid] => SD0A17xxxx
[movable] =>
[events] => tamper,tamper-restore,loss-of-power,loss-of-power-restore,device-log-event,online,offline,battery-low,battery-low-restore,opened,closed
[arm-state] => **armed**
[status] => 0
[name] =>** Front Window**
[contact-state] => **closed**
[signal-strength] => 0
[battery-level] => 10
[test-mode-expiry] => null
[location] => 000300xxxx
)
[att.dl.front-door] => stdClass Object
(
[deviceType] => contact-sensor
[deviceGuid] => SD0A09xxxx
[movable] =>
[events] => tamper,tamper-restore,loss-of-power,loss-of-power-restore,device-log-event,online,offline,battery-low,battery-low-restore,opened,closed
[arm-state] => **armed**
[status] => 0
[name] => **Front Door**
[contact-state] => **closed**
[signal-strength] => 0
[battery-level] => 90
[test-mode-expiry] => null
[location] => 000300xxxx
)
Best part yet, I get real time events from the DL:
{“dev”:“AM0000xxxx”,“subsid”:“xxxx”,“domain”:“DL”,“value”:“Ack!User=17926xxxx[Desktop Web:1457114467484]!”,“label”:“command-result”,“type”:“device”,“catid”:“0001070100xxxx”,“acc”:“xxxx”,“extaccid”:“xxxx”,“key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,“mbus”:“true”}“”"
{“dev”:“AM0000xxxx”,“subsid”:“xxxx”,“domain”:“DL”,“value”:“Home ExitDelay”,“label”:“system-status”,“type”:“device”,“catid”:“0001070100xxxx”,“acc”:“xxxx”,“extaccid”:“xxxx”,“key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,“mbus”:“true”}“”"
{“dev”:“AM0000xxxx”,“subsid”:“xxxx”,“domain”:“DL”,“value”:“Away”,“label”:“system-status”,“type”:“device”,“catid”:“0001070100xxxx”,“acc”:“xxxx”,“extaccid”:“xxxx”,“key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,“mbus”:“true”}“”"
{“dev”:“0”,“subsid”:“xxxx”,“sdev”:“AM0000xxxx”,“domain”:“DL”,“label”:“notification-event”,“type”:“event”,“acc”:“xxxx”,“extaccid”:“xxxx”,“key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,“mbus”:“true”}“”"
{“dev”:“AM0000xxxx”,“subsid”:“xxxx”,“sdev”:“0”,“domain”:“DL”,“label”:“away-armed”,“type”:“event”,“catid”:“0001070100xxxx”,“acc”:“xxxx”,“extaccid”:“xxxx”,“key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,“mbus”:“true”}“”"
The subsid above is the subscriber ID (phone number of the SIM card inside the DLC)
The key is retrieved during login - unique to the DLC (not per connection, remains the same at all times)
Events are delivered as JSON objects via a keep-alive HTTPS connection. The email solution above was not working as designed because of missing emails. I guess I can remove all the “programs”…