Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Moderator: leecollings
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Right - pushbutton support for HomeKit - here's the issue. The selector switch type used by physical push buttons is also used for many other types of device. Eg: I have a selector switch type in Domoticz that handles all the modes on my TV and has 7 states.
From what I can tell, push buttons (single tap / dbl tap / long tap - 3 states) are also being used in Domoticz as Selector Switches, and show up in the JSON API as SwitchTypeVal 18. (Head to Domoticz.ip/json.htm?type=devices&rid=[device idx] to confirm)
Enabling this patch results in ALL selector switches showing up in HomeKit with the ability to be used as a trigger, but only on the first three selector levels (ie: level 10, 20 and 30 when you edit the switch in Domoticz). So for those of you without Physical Push Buttons who like me have selector switches being used for other purposes within Domoticz, don’t get excited. This patch isn’t to enable the full level of functionality of selector switches...
Anyways, the selector switch type logically maps to HomeKit's Stateless Programmable Switch type. This is the only service type suitable and made available to us by Apple, and accepts 3 levels: 0, 1, 2. These are READ ONLY characteristics. They will appear as sensors, not controls, and will reflect whatever they're set to from Domoticz, BUT you would NOT be able to interact with them / use them to control that device from HomeKit. These 3 levels map to levels 10, 20 and 30 within Domoticz. Level 0 / Off doesn’t factor into the equation at the HomeKit end.
All this does is allow you to assign the single / dbl / long tap (or the action of changing a selector switch from level 10 to 20 to 30) to trigger another already existing switch in HomeKit, or a Scene.
So... all that said, I’ve just pushed 2.1.6 up to NPM which maps selector switches into HomeKit so that you CAN use your physical button as a HomeKit trigger, rather than as a Domoticz-native trigger... so, push-button support: done.
Once added, tap and hold on the button in Home.app and tap details to configure what actions trigger what switches / scenes.
For users with Selector Switches in general (not related to Physical Push Buttons) who want full functionality of all the selector levels available from within Homekit, the solution is simple(ish) - you need to create virtual switches in Domoticz for each button's state, and set the on actions to target the selector switch via Domoticz' http api - see https://www.domoticz.com/wiki/Domoticz_ ... tor_Switch
These virtual switches should be left as switches if your button device is set with the switch select type, or set as Push On switches if your button device is set with the button select type (and add a value in the off delay field in Domoticz so they flip off after being selected)
Edit your button devices selector switch to find which it's currently set to.
If switch select type, you then need to head to Domoticz events and create blocky if do else if do scripts to handle turning the other virtual switches off when you turn one on, and to ensure that the virtual switches represent the button devices selector state when it's been changed with your physical button.
The virtual switches will then be picked up in HomeKit and function correctly / as appropriate for however you've configured your virtual switches / blocky events.
From what I can tell, push buttons (single tap / dbl tap / long tap - 3 states) are also being used in Domoticz as Selector Switches, and show up in the JSON API as SwitchTypeVal 18. (Head to Domoticz.ip/json.htm?type=devices&rid=[device idx] to confirm)
Enabling this patch results in ALL selector switches showing up in HomeKit with the ability to be used as a trigger, but only on the first three selector levels (ie: level 10, 20 and 30 when you edit the switch in Domoticz). So for those of you without Physical Push Buttons who like me have selector switches being used for other purposes within Domoticz, don’t get excited. This patch isn’t to enable the full level of functionality of selector switches...
Anyways, the selector switch type logically maps to HomeKit's Stateless Programmable Switch type. This is the only service type suitable and made available to us by Apple, and accepts 3 levels: 0, 1, 2. These are READ ONLY characteristics. They will appear as sensors, not controls, and will reflect whatever they're set to from Domoticz, BUT you would NOT be able to interact with them / use them to control that device from HomeKit. These 3 levels map to levels 10, 20 and 30 within Domoticz. Level 0 / Off doesn’t factor into the equation at the HomeKit end.
All this does is allow you to assign the single / dbl / long tap (or the action of changing a selector switch from level 10 to 20 to 30) to trigger another already existing switch in HomeKit, or a Scene.
So... all that said, I’ve just pushed 2.1.6 up to NPM which maps selector switches into HomeKit so that you CAN use your physical button as a HomeKit trigger, rather than as a Domoticz-native trigger... so, push-button support: done.
Once added, tap and hold on the button in Home.app and tap details to configure what actions trigger what switches / scenes.
For users with Selector Switches in general (not related to Physical Push Buttons) who want full functionality of all the selector levels available from within Homekit, the solution is simple(ish) - you need to create virtual switches in Domoticz for each button's state, and set the on actions to target the selector switch via Domoticz' http api - see https://www.domoticz.com/wiki/Domoticz_ ... tor_Switch
These virtual switches should be left as switches if your button device is set with the switch select type, or set as Push On switches if your button device is set with the button select type (and add a value in the off delay field in Domoticz so they flip off after being selected)
Edit your button devices selector switch to find which it's currently set to.
If switch select type, you then need to head to Domoticz events and create blocky if do else if do scripts to handle turning the other virtual switches off when you turn one on, and to ensure that the virtual switches represent the button devices selector state when it's been changed with your physical button.
The virtual switches will then be picked up in HomeKit and function correctly / as appropriate for however you've configured your virtual switches / blocky events.
Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Thanks for your work, however I have a strange behaving. I does not matter how i click (single, double, long) it always triggered long press in HomeKit (within 1 second) So it always only triggers long click. Oh and long click is triggering long click in HomeKit twice!
- Attachments
-
- screenshot_83.png (178.46 KiB) Viewed 8166 times
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
That’s probably your off reset (Abschaltverzogerung). Set to 0, otherwise it’ll transmit an off signal by mqtt which will trip things up.
Homebridge is listening for a single signal, regardless of your clicks. That single signal will contain either 10, 20 or 30, depending whether you single, double or triple click. The physical switch should talk to domoticz and trigger the change of the selector. The selector should then emit a single MQTT signal with the value of either 10, 20, or 30. If multiple things happen, multiple signals are being sent by Domoticz.
If setting Off timer to 0 doesn’t work you’ll need to run then fire your switch and look at what mqtt output is being received by homebridge. All works fine here.
Homebridge is listening for a single signal, regardless of your clicks. That single signal will contain either 10, 20 or 30, depending whether you single, double or triple click. The physical switch should talk to domoticz and trigger the change of the selector. The selector should then emit a single MQTT signal with the value of either 10, 20, or 30. If multiple things happen, multiple signals are being sent by Domoticz.
If setting Off timer to 0 doesn’t work you’ll need to run
Code: Select all
DEBUG=* homebridge -D
Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
I did change to 0, still the same. Debug shows 10 HomeKit says LongClick
Single Click
douple Click
Long Click
Single Click
Code: Select all
Name: Alarm Button
Device: Light/Switch,Selector Switch
Is Switch: true
SwitchTypeVal: 18
MQTT Message:
{
"Battery": 87,
"LevelActions": "|||",
"LevelNames": "Off|Click|Double Click|Long Click",
"LevelOffHidden": "false",
"RSSI": 12,
"SelectorStyle": "0",
"description": "",
"dtype": "Light/Switch",
"id": "01A3F835",
"idx": 381,
"name": "Alarm Button",
"nvalue": 1,
"stype": "Selector Switch",
"svalue1": "10",
"switchType": "Selector",
"unit": 1
}
EventedHTTPServer [::ffff:192.168.0.10] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +5s
EventedHTTPServer [::ffff:192.168.0.19] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +2ms
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +5s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 44671 +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +22ms
HAPServer [CD:21:4D:E3:CE:32] HAP Request: GET / +1ms
HAPServer [CD:21:4D:E3:CE:32] WARNING: Handler for / not implemented +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +3ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +28ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +9ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +10s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 45141 +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +11ms
HAPServer [CD:21:4D:E3:CE:32] HAP Request: GET / +1ms
HAPServer [CD:21:4D:E3:CE:32] WARNING: Handler for / not implemented +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +2ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +15ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +1ms
Code: Select all
Name: Alarm Button
Device: Light/Switch,Selector Switch
Is Switch: true
SwitchTypeVal: 18
MQTT Message:
{
"Battery": 87,
"LevelActions": "|||",
"LevelNames": "Off|Click|Double Click|Long Click",
"LevelOffHidden": "false",
"RSSI": 12,
"SelectorStyle": "0",
"description": "",
"dtype": "Light/Switch",
"id": "01A3F835",
"idx": 381,
"name": "Alarm Button",
"nvalue": 1,
"stype": "Selector Switch",
"svalue1": "20",
"switchType": "Selector",
"unit": 1
}
EventedHTTPServer [::ffff:192.168.0.10] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +7s
EventedHTTPServer [::ffff:192.168.0.19] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +6ms
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +3s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 39949 +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +8ms
HAPServer [CD:21:4D:E3:CE:32] HAP Request: GET / +1ms
HAPServer [CD:21:4D:E3:CE:32] WARNING: Handler for / not implemented +0ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +2ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +8ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +4ms
Code: Select all
Name: Alarm Button
Device: Light/Switch,Selector Switch
Is Switch: true
SwitchTypeVal: 18
MQTT Message:
{
"Battery": 87,
"LevelActions": "|||",
"LevelNames": "Off|Click|Double Click|Long Click",
"LevelOffHidden": "false",
"RSSI": 12,
"SelectorStyle": "0",
"description": "",
"dtype": "Light/Switch",
"id": "01A3F835",
"idx": 381,
"name": "Alarm Button",
"nvalue": 1,
"stype": "Selector Switch",
"svalue1": "30",
"switchType": "Selector",
"unit": 1
}
EventedHTTPServer [::ffff:192.168.0.10] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +4s
EventedHTTPServer [::ffff:192.168.0.19] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +2ms
[2018-2-3 14:08:09] [eDomoticz] MQTT Message received for Alarm Button.
Name: Alarm Button
Device: Light/Switch,Selector Switch
Is Switch: true
SwitchTypeVal: 18
MQTT Message:
{
"Battery": 87,
"LevelActions": "|||",
"LevelNames": "Off|Click|Double Click|Long Click",
"LevelOffHidden": "false",
"RSSI": 12,
"SelectorStyle": "0",
"description": "",
"dtype": "Light/Switch",
"id": "01A3F835",
"idx": 381,
"name": "Alarm Button",
"nvalue": 1,
"stype": "Selector Switch",
"svalue1": "40",
"switchType": "Selector",
"unit": 1
}
EventedHTTPServer [::ffff:192.168.0.10] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +619ms
EventedHTTPServer [::ffff:192.168.0.19] Sending HTTP event '63.10' with data: {"characteristics":[{"aid":63,"iid":10,"value":2}]} +1ms
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +1s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 44957 +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +9ms
HAPServer [CD:21:4D:E3:CE:32] HAP Request: GET / +0ms
HAPServer [CD:21:4D:E3:CE:32] WARNING: Handler for / not implemented +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +2ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +9ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +2ms
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +10s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 37225 +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +11ms
HAPServer [CD:21:4D:E3:CE:32] HAP Request: GET / +0ms
HAPServer [CD:21:4D:E3:CE:32] WARNING: Handler for / not implemented +1ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +2ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +9ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +3ms
[2018-2-
Last edited by islandman on Saturday 03 February 2018 19:42, edited 1 time in total.
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Have just pushed v2.1.9 with a few added break; cases... this may resolve.
nb: your long click needs to send 30 - looking at the above it’s sending 30 followed by 40.
Code: Select all
sudo npm update -g homebridge-edomoticz
Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Did update again
Still the same and yes there is a Stage 40 send release long click, I removed it but still sending the information.
Code: Select all
pi@raspberrypi:~ $ sudo npm update -g homebridge-edomoticz
/usr/lib
└── [email protected]
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Sorry always shows long click in HomeKit not double click, and if you actual use double click it release twice (maybe it sees the 40 long click release?)
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
There should be no release. The selector should send ONLY send 10, 20 or 30, which maps to 0,1,2 in HomeKit, which are the only acceptable values. Anything outside of these ranges will confuse matters.
Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
I understand, however even if i do single click and it only send 10, HomeKit shows long click.
I just created a dummy button with 10/20/30 it also always is sending long Click to HomeKit
I just created a dummy button with 10/20/30 it also always is sending long Click to HomeKit
Code: Select all
Name: Test Button
Device: Light/Switch,Selector Switch
Is Switch: true
SwitchTypeVal: 18
MQTT Message:
{
"Battery": 255,
"LevelNames": "Off|Level1|Level2|Level3",
"RSSI": 12,
"SelectorStyle": "0",
"description": "",
"dtype": "Light/Switch",
"id": "000141F0",
"idx": 416,
"name": "Test Button",
"nvalue": 2,
"stype": "Selector Switch",
"svalue1": "10",
"switchType": "Selector",
"unit": 1
}
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Problem found and fixed! MQTT handler getting diverted thru the wrong function...
Update to 2.1.10 and all should work perfectly (finally)!
Update to 2.1.10 and all should work perfectly (finally)!
Code: Select all
sudo npm update -g homebridge-edomoticz
Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 53
- Joined: Saturday 05 August 2017 20:27
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Confirm its working now!!!! Thanks again @marci GREAT WORK!
- Marci
- Posts: 531
- Joined: Friday 22 January 2016 18:00
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 3.8153
- Location: Wakefield, West Yorkshire UK
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Yay! No probs - now it’s drinking’ time... 

Extended Domoticz homebridge-plugin for latest Homebridge - adds temp/humidity/pressure sensors, power consumption sensors, DarkSkies virtual weather station support, YouLess Meter support, general % usage support & switch/lamp status checking!
-
- Posts: 2
- Joined: Monday 26 November 2018 5:16
- Target OS: Linux
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
I'm running the Xiaomi Gateway with wireless push button switches.
I have them running in Domoticz fine, when I push a button, Demoticz is responding, but the button activation is not being sent to Homebridge, I have looked at the logs in Homebridge and there is nothing happening, I can assign Homekit devices like a lamp or a light to a single press or a double press, but they will not respond as Domoticz doesnt seem to update Homebridge with a switch press statice.
Any chance you can help me out with whats happening here?
I have them running in Domoticz fine, when I push a button, Demoticz is responding, but the button activation is not being sent to Homebridge, I have looked at the logs in Homebridge and there is nothing happening, I can assign Homekit devices like a lamp or a light to a single press or a double press, but they will not respond as Domoticz doesnt seem to update Homebridge with a switch press statice.
Any chance you can help me out with whats happening here?
-
- Posts: 2
- Joined: Monday 26 November 2018 5:16
- Target OS: Linux
- Domoticz version:
- Contact:
Re: Homebridge-eDomoticz & Push Button selector switches (SwitchTypeVal 18)
Nevermind, I figured it out,
Incase anyone else is having this issue, I hadn't installed the MQTT service
Domoticz: Install MQTT Virtual Hardware
Homebridge System: Install Mosquito MQTT
Now button presses are all updated in Homekit.
Incase anyone else is having this issue, I hadn't installed the MQTT service
Domoticz: Install MQTT Virtual Hardware
Homebridge System: Install Mosquito MQTT
Now button presses are all updated in Homekit.
Who is online
Users browsing this forum: No registered users and 0 guests