I have an iPort surface mount with 10 buttons (product link: [login to view URL]) and i wish to control this with homekit app. I use homebridge running on a Raspberry Pi for non-compatible homekit devices so i need someone to write code and create a homebridge compatible plugin. You can find details about it's configuration here: [login to view URL]
It's a simple frame with 10 RGB LED buttons and each button has two states either it's idle or it's being pushed.
When i telnet the device on it's static IP [login to view URL] and port 10001 i get this:
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","versio
n":"V6","uptime":"1834442889","keys":[{"label":"key 1","state":"0"},{"label":"ke
y 2","state":"0"},{"label":"key 3","state":"0"},{"label":"key 4","state":"0"},{"
label":"key 5","state":"0"},{"label":"key 6","state":"0"},{"label":"key 7","stat
e":"0"},{"label":"key 8","state":"0"},{"label":"key 9","state":"0"},{"label":"ke
y 10","state":"0"}]}
After pushing one of 10 buttons (button number 5) it gets to state "1":
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834481454","eventtime":"63278","events":[{"label":"key 5","state":"1"}]}
When i release the button it gets again to state "0":
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834481574","eventtime":"63398","events":[{"label":"key 5","state":"0"}]}
If i keep pushing the button (i push button number 4 this time) it returns again and again state "1" until i release it and then it returns to state "0":
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834509314","eventtime":"25602","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834510316","eventtime":"26604","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834510617","eventtime":"26905","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834510918","eventtime":"27206","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834511219","eventtime":"27507","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834511520","eventtime":"27808","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834511821","eventtime":"28109","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834512122","eventtime":"28410","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834512423","eventtime":"28711","events":[{"label":"key 4","state":"1"}]}
{"deviceid":"SurfaceMount","model":"iPortSM10B","macaddr":"DC82F60009DD","version":"V6","uptime":"1834512943","eventtime":"29011","events":[{"label":"key 4","state":"0"}]}
There is also an optional LED RGB color changing option for the buttons when being pressed and i'm not very sure how it can be done but i've captured network traffic between my PC and the mount frame with wireshark when this happens and you can find the info captured in the attached file.
I'm not sure if this helps you to understand how you can write the plugin but i can give you local access to my LAN and grab more details about the device if you need to.
Thank you in advance for your time.