Convert Redloro Smartthings Proxy for Envisalink


#1

I have been able to load all of the drivers except in the partition creation it error on :slight_smile:
capability "Button"

on the application it loads perfectly, but it is asking for the hub selection which is available in smartthings, this is the offending code:
section("SmartThings Hub") {
input "hostHub", "hub", title: "Select Hub", multiple: false, required: true
}

Any ideas on what I should set this too too force it to work with the HE hub?


#2

Ok, I'm diving in on this.

I couldn't find any info on how to get the hub to allow me to send data from a non-existent device via the local proxy connection. So, the way that NodeProxy server works is that the SmartApp asks the proxy what the config is, and it sends it to the Hub via the local proxy connection and then based on that data, the devices are created.

Here's where I am thus far: test.groovy · GitHub

Line 83 sets the subscription to the IP and port to the Hubitat box.

And see this in the logs on the hub:
Received data from 192.168.1.78, no matching device found for 192.168.1.78, C0A8014E:XXX, B827EBAXXX or C0A80XXX.

192.168.1.78 is the NodeProxy server. Here is the data that the hub SHOULD have received and processed (info about my alarm):
{"type":"discover","partitions":[{"partition":1,"name":"Honeywell Security Panel"}],"zones":[{"zone":1,"type":"smoke","name":"Smoke Detector"},{"zone":2,"type":"contact","name":"Front Door"},{"zone":3,"type":"contact","name":"Garage Door"},{"zone":4,"type":"contact","name":"Back Door"},{"zone":5,"type":"contact","name":"Foyer Motion"},{"zone":6,"type":"contact","name":"Master Motion"},{"zone":7,"type":"contact","name":"Master Glass"},{"zone":8,"type":"contact","name":"Kitchen and Dining Glass"}]}

It's almost like I need to add a parent device with the IP of the NodeProxy device in order to be authorized to create child devices. Not sure how to do this or how this differs from how ST Hub worked.

I believe it has something to do with this and being able to subscribe to local LAN events.
subscribe(location, null, lanResponseHandler, [filterEvents:false])

Something similar to this: Receiving notifications from LAN devices

It appears from that that the App has to create a Child Device with the deviceNetworkID (MAC or IP) of the proxy server before other child devices can be created.

Maybe @chuck.schwer or @patrick have an idea of what needs to be changed in the ST code.

Brian


Envisalink Integration Application and Connection Driver
#3

@Robertgmcneill Want to give this a go?


#4

Awesome! I will try it out this weekend. Any good feedback so far?


#5

None, let me know how it goes.


#6

ok, i am unsure based on the code weather you are creating the child devices. The events are now showing up on the the partition on HE, but there were no children created for monitoring the condition of the devices


#7

Yes, I’m creating child devices. Events go to the child devices; see example. I do have a bug where motion devices are created as contact. I’ll try to fix this weekend.


#8

I had to remove all of the smartthings generated devices that were sent via hublink. Once I cleaned up the smartthings and removed them from HE, your program worked

Thanks


#9

Good deal. There isn't a code issue with motion/contact, I just didn't have them listed as motion in my config, once I adjusted and did a discovery again, things showed properly.


#10

Thanks for this. I was using Redloro's code on SmartThings and am moving over to Hubitat.

All works well with the exception of integration into HSM. Contacts update the status quicker than on ST due to being run locally. Since HSM is not getting updates, I created three Custom Commands in RM for ArmStay, ArmAway and Disarm - then associated those with Virtual Switches. Now I can move all my routines (ie; Goodbye, I'm Back...) to Hubitat, and have no need for HSM.


#11

HSM should be working now: [Release] Envisalink App & Driver for Vista/Ademco/Honeywell Alarm via smartthings-nodeproxy


#12

@ brianwilson The integration doesn't seem to be working for me. On the install of HSM my alarm disarmed, and the HSM log noted a Disarm. However, any subsequent arming or disarming isn't reflected in HSM (there is only the initial disarm entry in the log and that is it).

I tried restarting Node Proxy and the Hub but that didn't work.

There is a repeating error in the Honeywell Security log:
app:1712019-02-04 11:30:06.573 pm errorgroovy.lang.MissingMethodException: No signature of method: app15493400872501361395449.parseLanMessage() is applicable for argument types: (com.hubitat.hub.domain.Event) values: [com.hubitat.hub.domain.Event@70ac412a] on line 130 (lanResponseHandler)

Any suggestions? Thx!


#14

An update. The integration now works. I noticed that SmartTiles was getting the arm/disarm status changes so I assumed the issue was with HSM. I never configured HSM - just thought it would pick up the status from the app. It doesn't - HSM does need to be configured.

I am still getting the error in the log that I posted above.


#15

Yeah, HSM needs to be configured and this can update the status. I also get the error but it doesn't impact the app working. I'm unclear on how to dig deeper into the error to determine what it is.