Philips Hue Bewegungsmelder in Home Assistant einbinden

Dieses Tutorial beschreibt die notwendigen Schritte, wie Ihr den Philips Hue Bewegungsmelder mit Home Assistant verbindet.

Der Philips Hue Bewegungsmelder verfügt neben dem Motion Sensor auch über einen Temperatur- und Lichtintensitätssensor. Im Zuge dieses Tutorials werden wir auch diese Sensoren in Home Assistant einbinden.

Mit dem offiziellen Philips Hue Plugin für Home Assistant werden aktuell die Sensoren nicht unterstützt (Stand Version 0.83.3). Mit der RESTful API von Home Assistant ist die Einbindung dennoch möglich.

Natürlich sollte vorher bereits Home Assistant installiert sein. Ich habe hierzu eine Installationsanleitung gemacht.

API Key für Hue Bridge generieren

Um die RESTful API nutzen zu können benötigen wir eine API Key für die Philips Hue Bridge. Um diesen zu generieren rufen wir in dem Webbrowser unserer Wahl die Adresse http://philips-hue/debug/clip.html auf. Wenn der Link nicht funktioniert ist anstatt „philips-hue“ die IP Adresse des Hue Hubs einzutragen. Wenn alles korrekt ist, solltet Ihr den CLIP API Debugger sehen.

Philips Hue CLIP API Debugger
Philips Hue – CLIP API Debugger

Um eine API Key zu erzeugen tragt im Eingabefeld „URL“ die Adresse „/api“ ein. In der Eingabe für „Message Body“ geben wir folgendes ein:

{"devicetype": "hass#hass_sensors hass"}

Nun drückt auf eurer Philips Hue Bridge den Link Button und anschließend im CLIP API Debugger auf den Knopf „POST“.

Bei „Command Request“ sollten nun etwas wie dieses zu sehen sein:

[
	{
		"success": {
			"username":  "cpyrbB9WoP4VxyjybeQf6H2haXnxHmhaI00wZfh0"
		}
	}
]

Der Parameter hinter „username“ ist in dem Fall euer API Key. Notiert euch diesen gut, da wir diesen im Laufe dieses Tutorials mehrfach benötigen!

Sensor IDs ermitteln

Um die einzelnen Sensoren anzusprechen, benötigen wir deren jeweiligen IDs. Diese könne wir im CLIP API Debugger erfragen. Im Eingabefeld „URL“ tragen wir die Adresse „/api/[API_KEY]/sensors“ ein, wobei „[API_KEY]“ durch den zuvor ermittelten API Key zu ersetzen ist.
Danach drücken wir auf „GET“. Die „Command Response“ sollte in etwa so aussehen:

{
	"1": {
		"state": {
			"daylight": false,
			"lastupdated": "2018-12-11T14:58:00"
		},
		"config": {
			"on": true,
			"configured": true,
			"sunriseoffset": 30,
			"sunsetoffset": -30
		},
		"name": "Daylight",
		"type": "Daylight",
		"modelid": "PHDL00",
		"manufacturername": "Philips",
		"swversion": "1.0"
	},
	"8": {
		"state": {
			"temperature": 1840,
			"lastupdated": "2018-12-11T20:53:49"
		},
		"swupdate": {
			"state": "noupdates",
			"lastinstall": null
		},
		"config": {
			"on": true,
			"battery": 100,
			"reachable": true,
			"alert": "none",
			"ledindication": false,
			"usertest": false,
			"pending": []
		},
		"name": "Hue temperature sensor 1",
		"type": "ZLLTemperature",
		"modelid": "SML001",
		"manufacturername": "Philips",
		"productname": "Hue temperature sensor",
		"swversion": "6.1.0.18912",
		"uniqueid": "00:17:88:01:02:12:e0:b3-02-0402",
		"capabilities": {
			"certified": true
		}
	},
	"9": {
		"state": {
			"presence": false,
			"lastupdated": "2018-12-11T20:42:00"
		},
		"swupdate": {
			"state": "noupdates",
			"lastinstall": null
		},
		"config": {
			"on": true,
			"battery": 100,
			"reachable": true,
			"alert": "none",
			"ledindication": false,
			"usertest": false,
			"sensitivity": 2,
			"sensitivitymax": 2,
			"pending": []
		},
		"name": "Flur Sensor",
		"type": "ZLLPresence",
		"modelid": "SML001",
		"manufacturername": "Philips",
		"productname": "Hue motion sensor",
		"swversion": "6.1.0.18912",
		"uniqueid": "00:17:88:01:02:12:e0:b3-02-0406",
		"capabilities": {
			"certified": true
		}
	},
	"10": {
		"state": {
			"lightlevel": 0,
			"dark": true,
			"daylight": false,
			"lastupdated": "2018-12-11T20:51:59"
		},
		"swupdate": {
			"state": "noupdates",
			"lastinstall": null
		},
		"config": {
			"on": true,
			"battery": 100,
			"reachable": true,
			"alert": "none",
			"tholddark": 0,
			"tholdoffset": 7000,
			"ledindication": false,
			"usertest": false,
			"pending": []
		},
		"name": "Hue ambient light sensor 1",
		"type": "ZLLLightLevel",
		"modelid": "SML001",
		"manufacturername": "Philips",
		"productname": "Hue ambient light sensor",
		"swversion": "6.1.0.18912",
		"uniqueid": "00:17:88:01:02:12:e0:b3-02-0400",
		"capabilities": {
			"certified": true
		}
	},
	"11": {
		"state": {
			"status": 0,
			"lastupdated": "2018-12-11T20:44:45"
		},
		"config": {
			"on": true,
			"reachable": false
		},
		"name": "MotionSensor 9.Companion",
		"type": "CLIPGenericStatus",
		"modelid": "PHA_STATE",
		"manufacturername": "Philips",
		"swversion": "1.0",
		"uniqueid": "MotionSensor 9.Companion",
		"recycle": true
	}
}


Temperatursensor einrichten

In meinem Fall ist der Temperatur Sensor die ID 8. Bei euch müsst ihr die ID entsprechend anpassen. In der „configuration.yaml“ legen wir nun in der Sektion „sensor“ unseren Sensor mit der RESTful API an.

sensor:
  - platform: rest
    resource: http://[HOSTNAME]/api/[API_KEY]/sensors/[SENSOR_NR]
    value_template: '{{ value_json.state.temperature | float / 100 }}'
    unit_of_measurement: °C
    name: 'Sensor Temperatur'

Ihr müsst bei diesem Eintrag [HOSTNAME] ersetzt Ihr mit dem Hostnamen oder IP der Hue Bridge, [API_KEY] mit dem API Key den Ihr weiter oben erstellt habt und [SENSOR_ID] mit der ermittelten ID.

Lichtintensitätssensor einrichten

In meinem Fall ist der Licht Sensor die ID 10. Wie zuvor legen wir in der „configurations.yaml“ in der Sektion „sensor“ unseren Sensor an.

sensor:
  - platform: rest
    resource: http://[HOSTNAME]/api/[API_KEY]/sensors/[SENSOR_ID]
    value_template: '{{ value_json.state.lightlevel }}'
    unit_of_measurement: Lux
    name: 'Sensor Lichtintensität'

Auch hier ersezt bitte [HOSTNAME], [API_KEY] und [SENSOR_ID] mit euren Daten.

Sind die Sensoren eingerichtet startet Home Assistant neu und überprüft ob die Sensoren funktionieren. Im nächsten Schritt legen wir dann den Bewegungssensor an.

Bewegungssensor einrichten

Die Einrichtung des Bewegungssensors gestaltet sich aufwändiger. Dieser meldet lediglich der Hue Bridge den aktuellen Status.

Um in Home Assistant die Bewegungsmeldungen zu registrieren, müssen wir in der Hue Bridge einen virtuellen Sensor anlegen. Im CLIP API Debugger tragen wir die URL „/api/[API_KEY]/sensors“ ein. Unter „Message Body“ fügt Ihr folgende Daten ein:

{   
    "name": "Sensor.Presence",
    "type": "CLIPGenericStatus",
    "modelid": "PHA_STATE",
    "manufacturername": "Philips",
    "swversion": "1.0",
    "uniqueid": "Sensor.Presence",
    "recycle": false
}

Den Parameter „name“ und „uniqueid“ könnt Ihr euren Wünschen anpassen. Danach drücken wir auf „POST“ um die Daten an die Hue Bridge zu schicken. Wenn es geklappt hat solltet Ihr eine Success-Meldung mit der ID des virtuellen Sensors erhalten:

[
	{
		"success": {
			"id": "12"
		}
	}
]

Nun gilt es den virtuellen Sensor mit dem Richtigen zu verbinden. Dafür tragen wir im CLIP API Debugger die URL „/api/[API_KEY]/rules“ ein. Die Daten im „Message Body“ sollten in etwa so aussehen:

{
    "name": "SensorLink.Presence",
    "conditions": [
        {
            "address": "/sensors/[SENSOR_ID]/state/presence",
            "operator": "eq",
            "value": "true"
        },
        {
            "address": "/sensors/[SENSOR_ID]/state/presence",
            "operator": "dx"
        }
    ],
    "actions": [
        {
            "address": "/sensors/[VIRTUAL_ID]/state",
            "method": "PUT",
            "body": {
                "status": 1
            }
        }
    ]
}

Die [SENSOR_ID] wäre in meinem Fall die 9, die [VIRTUAL_ID] die 12 vom Schritt vorher. Sind alle Daten angepasst drücken wir wieder auf „POST“ um die Einstellung zu übernehmen und sollten eine Success-Meldung bekommen.

Nun richten wir das automatischen Ausschalten nachdem keine Bewegung mehr registriert wurde ein. Hierfür tragen wir im CLIP API Debugger wieder die URL „/api/[API_KEY]/rules“ ein. Als „Message Body“ kommt Folgendes:

{
    "name": "SensorLink.Presence.Reset",
    "conditions": [
        {
            "address": "/sensors/[SENSOR_ID]/state/presence",
            "operator": "eq",
            "value": "false"
        },
        {
            "address": "/sensors/[SENSOR_ID]/state/presence",
            "operator": "ddx",
            "value": "PT00:05:00"
        }
    ],
    "actions": [
        {
            "address": "/sensors/[VIRTUAL_ID]/state",
            "method": "PUT",
            "body": {
                "status": 0
            }
        }
    ]
} 

Auch hier wieder [SENSOR_ID] und [VIRTUAL_ID] mit den eigenen Daten ersetzen. Die Zeit bis zum automatischen Reset ist hier mit 5 Minuten angegeben (PT00:05:00). Das Ganze wieder per „POST“ an die Hue Bridge übertragen.

Zum Schluss müssen wir nur noch den virtuellen Bewegungsmelder in Home Assistant einrichten. Hierfür tragen wird wieder in der „configuration.yaml“ in der Sektion „sensor“ die notwendigen Daten ein.

sensor:
  - platform: rest
    resource: http://[HOSTNAME]/api/[API_KEY]/sensors/[VIRTUAL_ID]
    value_template: '{{ value_json.state.status }}'
    name: 'Sensor Bewegung'

Ist der Sensor eingerichten starten wir Home Assistant neu und überprüfen wieder dessen Funktionalität.

Hiermit ist dieses Tutorial abgeschlossen. Ich hoffe es war hilfreich für euch! Wenn Ihr mich unterstützen wollt, könnt ihr das sehr gerne hier tun.

2 comments

Hallo, ich (versuche) Home Assistant seit ca 2 Wochen zu nutzen, bin also absoluter neu dabei! Vielen Dank für die endlich einmal präzise Beschreibung, wie man die HUE-Bewegungsmelder einbindet, um z.B. die Temperatur anzuzeigen. Ich habe die Platform:rest eingerichtet, das geht auch ohne Fehler, aber sorry für meine blöde Frage, aber wie bekomme ich nun die Temperatur angezeigt?

Wenn alles richtig eingerichtet ist, sollten die Sensoren eigentlich in der Übersichtsseite als Kreis auftauchen mit der Temperatur darin (oben). Dort wird dann z.B. die Temperatur angezeigt.
Ansonsten muss Du herausfinden wie das Entitätsname des Sensors ist und musst ihn einer Gruppe oder Ansicht hinzufügen. Den Namen bekommst du im „States“ Bereich (<>). Üblicherweise ist das „sensor.xxx“, wobei xxx einfach der Name ist, den Du bei der Konfiguration gewählt hast (im Tutorial „Sensor Temperatur“ > sensor.sensor_temperatur).

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.