Smartapp and devices for Electronics Line and MyELAS based Security Panels

With this thread I’d like to share with the community a smart app and device types for MyELAS and Electronisc Line based alarm panels, which I know are installed in some of UK households. Hope someone who is running one of these alarm panels and would like to integrate it with SmartThings will find this post useful.

As a basis I took AlarmServer code and its available integrations with SmartThings such as (DSC, Ademco/Vista) and adapted it to MyELAS REST API to be usable with all panels that can be configured via MyELAS website.

Current status is: Most useful functionality is supported for almost all zone types.
Current setup difficulty: medium to difficult depending on your knowledge of Python and computers.

Required components:

Electronics Line security panel (from Risco Group) configured to be controllable via MyELAS web service.
A server or computer or raspberry pi to run the Python code on 24/7
Some technical skills

Code and documentation locations:

Smartthings App and custom device types (along with documentation and setup info) can be found here

Other custom security panel integrations with SmartThings:

Integration for DSC/Ademco/Vista panels with Smartthings: GitHub - kholloway/smartthings-dsc-alarm: Smartthings code for DSC (or generic) alarm panels via REST API
AlarmServer for DSC panels: GitHub - kholloway/smartthings-dsc-alarm: Smartthings code for DSC (or generic) alarm panels via REST API
HoneyAlarmServer (for Ademco/VIsta panels) GitHub - MattTW/HoneyAlarmServer: Envisalink 2DS/3 Alarm Server for Honeywell or Ademco Vista Security Systems

Huge thanks to everyone who worked on AlarmServer and other integrations of security panels with SmartThings. This has helped hugely to understand how to integrate legacy security systems with SmartThings and how to build this particular integration for MyELAS based panels.

Related threads:

1 Like

Hi Hajar,

I got very excited seeing that someone has worked on this.
I have a risco alarm. I think it will work.
However all my urls are a little different. eg: https://www.riscocloud.com/ELAS/WebUI/Security/GetCPState
I modified script to add them. (I’ll parameterize url and move to config file later)

I am only using python server currently to check if it is working before i add smartthing code.

Seems to be working ok, but i have some questions:
I get "Failed to update panel ever minute"
This is due to https://www.riscocloud.com/ELAS/WebUI/Security/GetCPState
having “u’overview’: None” but i dont think this is necessary an error.
Also i cant seem to access local ui in browser. What is a sample url? i knows its on port 8111.

Thanks,
Arron

I did some snooping with chrome on my riscocloud.
I noticed a couple of things:
https://www.riscocloud.com/ELAS/WebUI/Security/GetCPState?userIsAlive=true
this returns same as i am getting with alarm server, none in overview
However with this on its own:
https://www.riscocloud.com/ELAS/WebUI/Security/GetCPState
i get full response.

in your AlarmServer.py for every GetCPState message you add IsAlive.
Maybe this is where our systems differ.

Thanks,
Arron

Hi Arron,

Glad you find its interesting. Hope it will work for you as it did for me and you can connect your SmartThings and Risco Cloud based security panel.

Quick answer to your questions:
1)Yes, if you’re right, if your panel uses a different server for online panel management then your URLs should be changed accordingly. Seems you’ve done a great job at it.
2)The url to access the site is either: http://localhost:8111 or https://localhost:8111 depending if you use SSL or not in the AlarmServer config file. By default it should be http. If you’re trying to connect to the site not from the same machine, then replace localhost with the IP address through which your machine is accessible.
3)“u’overview’: None” is indeed not an error. I don’t recall having this problem, but may be I should double check. userIsAlive=true is certainly not a required parameter. I saw GetCPState working equally well for me with and without it and since it is usually included by MyElas site I decided to include it too. But feel free to remove it.

Let me know if you manage to make it work!

Got this working but it seems allot of my json responses were different.
Not sure if it was the fact that it was a different alarm (Risco Agility 3 connected via riscocloud)or if it was because i have two partitions and your code was triggering a panel status in a place where it was not possible with 2 partitions.
I have it working with smartapp - when i set alarm manually it will be reflected on smartthings but i have yet to expose api on my alarm server so i can disarm/arm/partset via smartthings (port forward i guess).

Have you any experience with rate limiting hitting their server with polls?
What poll rate do you use?
I have it set to 30 secs currently but i miss some door open/closes.
I guess no way to fix that without hammering server.

Great, happy to hear you did get it working. Not sure what caused the differences, but I guess it could be due to different panels and web servers. Would be cool if you could submit your code in a separate branch to the same repository. Then people who have systems closer to yours could choose your codebase as a starting point. Just be careful not to post any personal account information.

Regarding disarm/arm/partset via smartthings - it works flawlessly in my setup. And I didn’t have to do any port forwarding since my ST hub and Raspberry Pi server are running in the same local area network. For security reasons I think its actually better not to expose your AlarmServer externally unnecessarily. And if you do, make sure you run everything via SSL.

Regarding rate limiting, unfortunately its a problem of this poll rather than push setup. Other alarm panels have extensions that send you updates when a change in the system happens. This is the original premise using which AlarmServer was built. But for our alarm panels no push solution exists (or at least I am not aware of one). So we need to turn things around and poll the server periodically for the latest updates. I felt it that polling once a minute was more than enough for me. I guess you can set it to 30s too. But polling more frequently is likely not to work for two reasons: 1)response requests do not arrive so quickly, sometimes it takes a few seconds, and if you combine it with the fact that updates from the panel to the web server also take a few seconds to get, then you already have up to 10s delay between event happening and AlarmServer getting updated; 2)another problem with more frequent polling that risco server may ban your application if it overloads it with too frequent requests, so I wouldn’t go that far.

Hi

Can I check if this is still working.

I have been looking at the RESTful requests that chrome makes to MyElas and it uses XHR requests with an authorisation cookie.

James

Yes still works for me

Aaron, did you create a separate branch for the Agility 3 ? I have just ordered a ST and would like to integrate.

@SIW1973 - I’m also interested in Risco alarm integration. Have you made any progress? Simon

Has anyone got information about how a Risco alarm system can be used?

Can you show me your Risco code?