Hue Binding - Dimmer Switch

So, it is possible to include Hue Switches within openHAB, but not via the binding.
It can be done through the hue bridges api and the HTTP Binding.

It´s descriped on a German Smarthome Blog:
onesmarthome.de Hue Switch

At first you need to add a api user on the bridge and the rest is done as an HTTP Binding item and rules

String HueRemote "Remote[%s]" (Hue) {http="<[http://<HueBridge_IP>/api/<HueAPIUser>/sensors/2:6000:JSONPATH($.state.buttonevent)]"}
1 Like

Unfortunately this solution pulls the status change from the bridge in predefined intervals so there is delay.

I wonder how to get the switch press or motion sensor information pushed to openhab via the bridge.

While this wasn‘t possible in the past some months ago Philips announced integration of dim-switch and motion sensor with Apple Homekit. So I was confident that they implemented some push channel. However, maybe this only works with homekit.

Maybe someone here has further information concerning Homekit integration of dim-switch and sensor and how to use this with openhab to make the switch & sensors fully integrated devices with openhab.

Essentially it would mean that the Hue binding behaves like a HomeKit App, which has a public spec here: https://developer.apple.com/homekit/specification/. You do need an apple ID wich I don’t have. Are there any plans to use this API from the Hue binding? My gut feeling tells me that status polling could soon be a thing of the past :slight_smile:

1 Like

Are there any news on integrating Hue Dimmer Switch?
I mean, Philips has opened it to HomeKit, so it seems the Hue bridge somehow allows capturing events from the dimmers.

I know that there is a solution by polling. But this seems not to be optimal.

These dimmers are quite cheap. And I believe have because of that a certain footprint in the market.
Would be very cool if they were supported by OpenHab.

Bodo

2 Likes

@sihui

Can the dimmer switch be used too trigger rules ect in openhab and not do anything to my lights ?

I already have a hue bridge and bulbs with motion sensors running and talking too OH
I’m hoping to use the Hue Dimmer switch to enable modes like in bed and turn on fans ect
i don’t need it too control my lights as they are already automated or motion activated

I did post about it but got no response so thought i would try here

(EDIT)
JUST FOUND THIS POST

1 Like

@chrisonline @mstolt @bodomenke @Sharpy @uweb @apfelflo89 @jakobjp @Jonas88 @UglyKidJoe @sihui

FYI → Hue Sensor and Hue Dimmer Switch are both now supported by Hue binding

4 Likes

Hi,
thanks for letting us know.
I already switched to the binding as far as i could, because there is still a lack of support for the “Hue Tap” .
So there is still use for the web api calls

Have not integrated my Tap yet, any links available on how to do that? Thx.

@apfelflo89 @sihui May I ask you to send me some data (logs, information from Hue API interface about that sensor, etc.) about your “Hue Tap”. This will help to include it into the binding as I am not having access to an own device. Thanks.

@sihui @cweitkamp
not sure about links, but it´s pretty easy, just like the Dimmer Switch. The Hue Tap just gives back different values from the Dimmer Switch

The json response from a Hue Tap within the api looks like that:
http://hue-bridge/api/api-token/sensors/10

state
buttonevent 17
lastupdated “2018-12-26T21:01:35”
swupdate
state “notupdatable”
lastinstall null
config
on true
name “Hue Tap Schlafzimmer”
type “ZGPSwitch”
modelid “ZGPSWITCH”
manufacturername “Philips”
productname “Hue tap switch”
uniqueid “00:00:00:00:XX:XX:XX:XX-XX”
capabilities
certified true

Then you have to convert the values from those Button press events with a .map like:
16=Button 2
17=Button 3
18=Button 4
34=Button 1

For now my Items look like that:

String HueTapSZButton "Hue Tap Schlafzimmer [MAP(hue.map):%s]" (HueSwitch) {http="<[huetap:1000:JSONPATH($.state.buttonevent)]"}
String HueTapSZUpdate "Hue Tap SZ Last Update [%s]" <clock> (HueSwitch) {http="<[huetap:30000:JSONPATH($.state.lastupdated)]"}
1 Like

For sure. You may have to tell me how to get those data needed :grinning:

Thank you very much, sounds easy indeed, will try tomorrow to get it to work.

@apfelflo89 Thank you very much. Should be enough for a first glimpse. I will incorporate the Hue Tap into the binding.

I will return to you if I need anything else.

1 Like

If you like to test it:

2 Likes

Uninstalled hue binding via PaperUI, dropped test jar into my addons folder, cleared tmp and cache, restarted openHAB (2.5 Snapshot #1467 manual install on Debian 9.5):

2018-12-28 12:22:14.900 [ERROR] [org.eclipse.smarthome.binding.hue   ] - FrameworkEvent ERROR - org.eclipse.smarthome.binding.hue
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.smarthome.binding.hue [191]
  Unresolved requirement: Import-Package: org.eclipse.jdt.annotation; resolution:="optional"
  Unresolved requirement: Import-Package: org.eclipse.smarthome.config.discovery.upnp

	at org.eclipse.osgi.container.Module.start(Module.java:444) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1614) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) ~[?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]

2018-12-28 12:22:59.862 [WARN ] [org.apache.felix.fileinstall        ] - Error while starting bundle: file:/opt/openhab2/addons/org.eclipse.smarthome.binding.hue-0.11.0-SNAPSHOT.jar
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.smarthome.binding.hue [191]
  Unresolved requirement: Import-Package: org.eclipse.jdt.annotation; resolution:="optional"
  Unresolved requirement: Import-Package: org.eclipse.smarthome.config.discovery.upnp

	at org.eclipse.osgi.container.Module.start(Module.java:444) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1221) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:515) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4]



openhab> bundle:list | grep hue
191 x Installed x  80 x 0.11.0.201812281054    x Eclipse SmartHome hue Binding


openhab> bundle:start 191
Error executing command: Error executing command on bundles:
        Error starting bundle 191: Could not resolve module: org.eclipse.smarthome.binding.hue [191]
  Unresolved requirement: Import-Package: org.eclipse.jdt.annotation; resolution:="optional"
  Unresolved requirement: Import-Package: org.eclipse.smarthome.config.discovery.upnp

Sorry, missed that post. It’s starting now, will do some further testing :kissing_heart:

2018-12-28 13:32:01.997 [.ItemChannelLinkAddedEvent] - Link 'TabLiving_Sw-hue:0830:0017882e7a2d:5:tap_switch' has been added.
2018-12-28 13:32:02.060 [.ItemChannelLinkAddedEvent] - Link 'TabLiving_lastUpdated-hue:0830:0017882e7a2d:5:last_updated' has been added.
2018-12-28 13:32:02.084 [.ItemChannelLinkAddedEvent] - Link 'TabLiving_Bat-hue:0830:0017882e7a2d:5:battery_level' has been added.
2018-12-28 13:32:02.106 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from NULL to 2018-12-28T12:16:57.000+0100
2018-12-28 13:32:02.126 [.ItemChannelLinkAddedEvent] - Link 'TabLiving_lowBat-hue:0830:0017882e7a2d:5:battery_low' has been added.
2018-12-28 13:33:45.569 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-28T12:16:57.000+0100 to 2018-12-28T13:33:44.000+0100
2018-12-28 13:33:47.424 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-28T13:33:44.000+0100 to 2018-12-28T13:33:46.000+0100
2018-12-28 13:33:49.363 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-28T13:33:46.000+0100 to 2018-12-28T13:33:48.000+0100
2018-12-28 13:33:51.415 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-28T13:33:48.000+0100 to 2018-12-28T13:33:50.000+0100

2018-12-28 13:32:02.169 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 34.0
2018-12-28 13:32:02.212 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 34.0
2018-12-28 13:33:45.100 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 16.0
2018-12-28 13:33:47.402 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 17.0
2018-12-28 13:33:49.342 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 18.0
2018-12-28 13:33:51.394 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 34.0

The remote went offline after a few seconds, will do more tests tomorrow. Thanks so far :+1:

Here are my findings:

The tap_switch_event channel reflects every button press on all of the four available buttons with the correct numbers.
The last_updated channel contains the correct DateTime events for the button presses.
The tap_switch channel does not get any state updates.
The battery_level and battery_low channels don’t get anything because the Tap Remote does not have a battery :grinning: It is powered by kinetic energy when pressing the buttons.

2018-12-29 08:45:05.196 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-29T07:41:25.000+0100 to 2018-12-29T08:45:04.000+0100
2018-12-29 08:45:05.218 [me.event.ThingUpdatedEvent] - Thing 'hue:0830:0017882e7a2d:5' has been updated.
2018-12-29 08:45:06.721 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 17.0
2018-12-29 08:45:06.742 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-29T08:45:04.000+0100 to 2018-12-29T08:45:05.000+0100
2018-12-29 08:45:06.763 [me.event.ThingUpdatedEvent] - Thing 'hue:0830:0017882e7a2d:5' has been updated.
2018-12-29 08:45:07.756 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 16.0
2018-12-29 08:45:07.776 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-29T08:45:05.000+0100 to 2018-12-29T08:45:07.000+0100
2018-12-29 08:45:07.799 [me.event.ThingUpdatedEvent] - Thing 'hue:0830:0017882e7a2d:5' has been updated.
2018-12-29 08:45:08.840 [vent.ChannelTriggeredEvent] - hue:0830:0017882e7a2d:5:dimmer_switch_event triggered 34.0
2018-12-29 08:45:08.862 [vent.ItemStateChangedEvent] - TabLiving_lastUpdated changed from 2018-12-29T08:45:07.000+0100 to 2018-12-29T08:45:08.000+0100
2018-12-29 08:45:08.883 [me.event.ThingUpdatedEvent] - Thing 'hue:0830:0017882e7a2d:5' has been updated.

What I did notice though: after a while the Things goes offline, but still the channels get state updates when pressing the buttons. As the device does not have a power source to provide any updates to the openHAB system while not in use for a longer period of time I guess this is normal behaviour.
Summary: It is working and a great enhancement for openHAB as you can now use the Tap remote as a gerneral purpose remote. Thanks a lot for that :+1::+1:

Edit: hold on, made a small mistake using the wrong itemtype, update is in progress :sunglasses:
2nd Edit: after using the correct itemtype Number instead of Switch for the tap_switch channel my above statement is still valid: tap_switch channel does not get any state updates.

1 Like

Thank you very much for testing. I will remove the battery channels and figure out why the event state was not updated.

1 Like

If other users want to test, here is a simple rule to catch the events:

rule "Hue Tap Remote"
when
	Channel "hue:0830:yxyxyxyxyxyxyx:5:dimmer_switch_event" triggered
then
	logInfo("EXTRA", "HUE Tap Remote switch event {}", receivedEvent)
	switch(receivedEvent.getEvent()) {
		case "34.0": {
		logInfo("EXTRA","HUE: Button 1 triggered")
			//do other stuff
		}		
		case "16.0": {
		logInfo("EXTRA","HUE: Button 2 triggered")
			//do other stuff
		}
		case "17.0": {
		logInfo("EXTRA","HUE: Button 3 triggered")
			//do other stuff
		}	
		case "18.0": {
		logInfo("EXTRA","HUE: Button 4 triggered")
			//do other stuff
		}
	}
end
1 Like

I tested the binding as well (still with the battery channels included). Discovery:

[el.core.internal.ModelRepositoryImpl] - Loading model 'hue.things'
[g.discovery.internal.PersistentInbox] - Added new thing 'hue:0830:xxxxxxxxxxxx:20' to inbox.
[g.discovery.internal.PersistentInbox] - Added new thing 'hue:0830:xxxxxxxxxxxx:32' to inbox.
[el.core.internal.ModelRepositoryImpl] - Refreshing model 'hue.things'

Pressing the buttons gives the following log entries (using the rules example from @sihui):

[eclipse.smarthome.model.script.EXTRA] - HUE Tap Remote switch event hue:0830:xxxxxxxxxxxx:tap_dining:dimmer_switch_event triggered 16.0
[eclipse.smarthome.model.script.EXTRA] - HUE: Button 2 triggered
[eclipse.smarthome.model.script.EXTRA] - HUE Tap Remote switch event hue:0830:xxxxxxxxxxxx:tap_dining:dimmer_switch_event triggered 34.0
[eclipse.smarthome.model.script.EXTRA] - HUE: Button 1 triggered
[eclipse.smarthome.model.script.EXTRA] - HUE Tap Remote switch event hue:0830:xxxxxxxxxxxx:tap_dining:dimmer_switch_event triggered 18.0
[eclipse.smarthome.model.script.EXTRA] - HUE: Button 4 triggered
[eclipse.smarthome.model.script.EXTRA] - HUE Tap Remote switch event hue:0830:xxxxxxxxxxxx:tap_dining:dimmer_switch_event triggered 17.0
[eclipse.smarthome.model.script.EXTRA] - HUE: Button 3 triggered
[eclipse.smarthome.model.script.EXTRA] - HUE Tap Remote switch event hue:0830:xxxxxxxxxxxx:tap_dining:dimmer_switch_event triggered 18.0
[eclipse.smarthome.model.script.EXTRA] - HUE: Button 4 triggered

As I am not using PaperUI, all configuration was done in .things and .items files.
An example hue.things file entry for on of my Tap’s look like:

Bridge hue:bridge:xxxxxxxxxxxx [ipAddress="192.168.1.98", userName="<secret>", sensorPollingInterval=200, pollingInterval=5 ]
{
    ...
    0830 tap_dining [sensorId="32"]
    ....
}

And my hue.items for this Tap:

// Tap Switch Dining
Switch   TS_DiningSwitch    "Tap Switch Dining room"                                        {channel="hue:0830:xxxxxxxxxxxx:tap_dining:tap_switch"}
DateTime TS_DiningLastUpd   "Detected [%1$tH:%1$tM:%1$tS]"                                  {channel="hue:0830:xxxxxxxxxxxx:tap_dining:last_updated"}

Looks promising. Great job @cweitkamp