I also have an isy994 that is already integrated, and working well for me. It handles the "low" level stuff such as insteon linking, updates and basic rules very well and except for power outages hasn't had any "down time" since I installed it nearly 4 years ago. Specifically ISY handles all the insteon linking stuff very well and is worth it for that alone IMHO.
So I want to use openHAB for the higher level rules and more "intelligent" stuff that can tolerate some downtime periodically (of order of a couple days total per year maximum). And I want the "low level" stuff to be very reliable, less than a few hours down time per year. For me, ISY meets that requirement , and my personal opinion, from experience, is that anything that runs atop windows/linux/mac wont meet that reliability threshold.
I have tried enabling a usb PLM for openHab via the insteon PLM binding in addition to the ISY, but i see three issues with that path as a complete replacement for ISY
1.. The "Delay" in openHab "seeing" ISY events and visa versa is just annoying (not an issue if i replace ISY, but a problem if i run both)
2.. having to handle linking and insteon ID's again in openHAB is just tedious (this is a deal breaker for me if i replace ISY totally)
3.. Reliablility concerns around total down time per year average of an "OS" based system for low level functionality, which is not a concern for higher level functionality, this is also a deal breaker for me if i replace ISY totally
So i wish to continue to use insteon + ISY for low level functions for reliability and leverage openHAB for the higher level features and functionality. For my needs its a good trade off, you needs may vary and you may have a different perspective.
I am not all that familiar with java so writing a direct binding is probably more work than i can support alone, however using mqtt as a bridge into openHAB and ISY has many attractions. So my thinking was
1.. A ISY <> MQTT bridge using ISY api (rest), external to openHAB
2.. enable openHAB's mqtt binding to connect ISY to openHAB via an mqtt broker
My initital concerns with the above
1.. response time from openHAB -> isy -> insteon doing something
2.. reliability of the broker link (what happens if stuff gets "lost") ?
I wrote some quick perl code to test the idea (i wonder why do i feel the need to appologize these days for writing in perl, anyway very sorry), and I have some conclusions
1.. perl is happy to subscribe to ISY and see events with very reasonable timelyness
status: alpha code written and tested
2.. these ISY events can be posted to an mqtt broker and seen externally (i use mqtt-spy to verify)
status : alpha code written and tested against mosquitto broker and apollo active mq broker on same and seperate server to openHab
3.. enabled mqtt binding in openhab and manually tested (mqtt-spy) can both set and see switch changes inside openhab
status: mqtt binding to external world works
whats left to make this work is following
1.. read room+device info from ISY and create openhab setup files to map names between openHAB and ISY
status: alpha code written but not well tested yet, produces 4 files, 2 item files for mapping, a simple map file and a section of config for insertion into the openhab.cfg, MQTT Broker section.
./
isy.pl -verbose 0 -config /tmp -mqtthost mosquitto
running isy
RunEventQueues(0,-1)
isy_event_monitor() on 192.168.24.221
RunEventQueues() looping for count of -1
created openhab setup files, please copy/incorporate them into your openhab setup
/tmp/items/ISY99_Rooms.items
/tmp/items/ISY99_Devices.items
/tmp/transform/ISY99.map
/tmp/ISY99.cfg
isy done
2.. get
isy.pl to write and read to the mqtt channel openHAB is looking at in correct format (reproduce manual step tested using mqtt-spy)
status: alpha code written but not well tested, can receive events from isy, format message and then get ready to send to the mqtt broke, mqtt send/receive code is work in progress, below shows simple light on off event from ISY ready to send to openHAB. Receive still code work in progress
running isy
RunEventQueues(1,-1)
NI(1) (4395) HTPC2::ISY/RunMonitor()
isy_event_monitor() on 192.168.24.221
RunEventQueues() looping for count of -1
ProcessEvent()
Add code to send [/openHAB/in/Home_Office_eLight/command] => [OFF]
ProcessEvent()
Add code to send [/openHAB/in/Home_Office_eLight/command] => [ON]
My original concerns regarding response time and reliability of the broker are still "open", and i guess i'd need to have something running for a while to assess the answers
At this point i think i have a solution that works for me, but if anyone wants to "help" or contribute/share, i'd be happy to engage .
cheers
Simon