Home Assistant: Philips Hue Motion Sensor

Door nickyb2 op woensdag 26 oktober 2016 06:41 - Reacties (20)
CategorieŽn: home assistant, philips hue, Views: 7.045

Nog niet zo heel lang geleden heeft Philips een Motion Sensor uitgebracht voor de Hue lijn. Ik heb wel even getwijfeld of ik deze motion sensor wilde hebben, ik was immers best tevreden met mijn huidige Aeon Labs Multi sensoren. Echter de combinatie van AAA batterijen en de mogelijkheid ze overal op te hangen heeft mij toch doen besluiten om er twee (nummer drie is in bestelling) aan te schaffen.

Ik heb van een aantal mede-tweakers de vraag gekregen hoe ik ze gekoppeld heb in Home Assistant, mijn domotica oplossing. Dus tijd voor een korte post over hoe ik, mijn manier, ze binnen Home Assistant beschikbaar maak om ze te kunnen gebruiken.

Het doel van deze blog post is dat je aan het eind voor elke Hue Motion Sensor het volgende hebt:
  • Binary Sensor - Beweging on/off
  • Sensor - Lichtsterkte in Lux
  • Sensor - Temperatuur (de Hue Motion Sensor meet ook temperatuur)
om bovenstaand te bereiken heb je het volgende nodig:
  • Home Assistant - :X
  • API-key/User van de Bridge - zie hier (Het Hue systeem is heel wat meer dan enkel wat je met de default Philips App kunt, meld je aan, lees de documentatie)
  • Web Browser - om de CLIP API Debugger aan te spreken
Hoe je je Motion Sensor aan de bridge koppelt kun je in je handleiding vinden en ga dat ook vooral doen want anders kun je niet verder.


Lichtsterkte sensor en temperatuur sensor
Het toevoegen van de lichtsterkte en temperatuur sensor is erg eenvoudig Beide zijn beschikbaar door de Bridge uit te vragen via een REST call en laat Home Assistant nu een REST sensor hebben.

Ga naar de CLIP API debugger (http://<JOUW BRIDGE IP>/debug/clip.html) met je webbrowser en voer een GET uit op de volgende URL: /api/<API-key>/sensors
Dit geeft je een lijst met al je sensoren, ga nu op zoek naar de lichtsterkte sensor (type ZLLLightLevel) en de temperatuur sensor (type ZLLTemperature) en noteer het sensor nummer.

Je kunt nu in Home Assistant twee sensoren maken als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
- platform: rest
  resource: http://[bridge IP]/api/[API-key]/sensors/[sensor id]
  value_template: '{{ value_json.state.lightlevel }}'
  unit_of_measurement: Lux
  name: 'Woonkamer'
  
- platform: rest
  resource: http://[bridge IP]/api/[API-key]/sensors/[sensor id]
  value_template: '{{ value_json.state.temperature | float / 100 }}'
  unit_of_measurement: įC
  name: 'Woonkamer'


Vul uiteraard je bridge IP, API-key en gevonden sensor id's in op de juiste plekken. Als het goed is zou Home Assistant je nu de twee sensoren moeten tonen.


Bewegings Sensor
Je kunt de bewegingssensor op dezelfde manier te ontsluiten als de lichsterkte en temperatuur sensor, echter zou ik je willen adviseren even door te lezen voor een andere oplossing. Waarom?

Als de sensor beweging detecteert wordt presence=true aan de bridge gemeld en kun je dit uitlezen door de bridge te raadplegen. Tot zover niet anders dan de andere sensoren. Na +/- 30 seconden meld de sensor bij de bridge een presence=false, omdat je bijvoorbeeld even buiten bereik bent of te stil zit. In principe is dit precies de werking van hoe we een beweging sensor willen hebben, maar...

De bewegings sensor meld het bij de bridge en niet bij Home Assistant, dit betekent dat Home Assistant actief moet 'pollen' om de juiste status te kunnen tonen en gebruiken in eventuele automation regels. Ik meen dat de standaard (scan_interval) tijd van Home Assistant op 30 seconden staat en hoewel je dit kan aanpassen door vaker te pollen hoeft dat niet. Het risico wat je loopt is dat je een 'presence' melding mist, omdat Home Assistant niet op de juiste tijd gekeken heeft. Dit veroorzaakt een vertraging in je domotica oplossing en hoewel dat niet altijd even erg is kan je er ook last van hebben.

Als ik dit vergelijk met mijn ZWave motion sensors (standaard tijd is 4 minuten) is de tijd instelbaar en zou ik dat graag ook willen in de Hue Motion Sensors. Naar mijn weten is dit (op dit moment) niet instelbaar, maar omdat de Bridge ook een Rule Engine heeft kunnen we het in de Bridge inbouwen.

Wat we gaan doen is een 'virtuele bewegingssensor' toevoegen die actief gezet wordt door de fysieke bewegingssensor, na een instelbare tijd van X aantal minuten (ik ga voor 5 minuten) geen beweging wordt de status van de virtuele gereset naar geen beweging. Door deze virtuele bewegingssensor in Home Assistant te ontsluiten hebben we een stabiele sensor die prima te gebruiken is in automation regels.

De werkzaamheden hieronder dienen allemaal uitgevoerd te worden in de CLIP API Debugger.


Toevoegen virtuele bewegingssensor
Voer een POST uit op de volgende URL /api/[API -key]/sensors met onderstaande body om de virtuele bewegingssensor aan te maken. Je kunt de namen aanpassen aan wat je wilt.

code:
1
2
3
4
5
6
7
8
9
{   
    "name": "Wnk.Presence",
    "type": "CLIPGenericStatus",
    "modelid": "PHA_STATE",
    "manufacturername": "Philips",
    "swversion": "1.0",
    "uniqueid": "Wnk.Presence",
    "recycle": false
}



Als resultaat krijg je het sensor id terug van de virtuele bewegingssensor.


Verbinden fysieke aan virtuele bewegingssensor
Mijn fysieke bewegingssensor heeft ID: 8
Mijn virtuele bewegingssensor heeft ID: 17

Voer een POST uit op de volgende URL /api/[API-key]/rules met onderstaande body voor het toevoegen van een regel in de bridge die beide sensoren verbindt. Vervang de drie sensor ID's door die van jou.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "name": "Wnk.Presence",
    "conditions": [
        {
            "address": "/sensors/8/state/presence",
            "operator": "eq",
            "value": "true"
        },
        {
            "address": "/sensors/8/state/presence",
            "operator": "dx"
        }
    ],
    "actions": [
        {
            "address": "/sensors/17/state",
            "method": "PUT",
            "body": {
                "status": 1
            }
        }
    ]
}




Resetten virtuele bewegingssensor
Mijn fysieke bewegingssensor heeft ID: 8
Mijn virtuele bewegingssensor heeft ID: 17

Voer een POST uit op de volgende URL /api/[API-key]/rules met onderstaande body om een regel toe te voegen die de virtuele bewegingssensor reset na 5 minuten geen beweging. Vervang wederom de drie sensor ID's door die van jou.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "name": "Wnk.Presence.Reset",
    "conditions": [
        {
            "address": "/sensors/8/state/presence",
            "operator": "eq",
            "value": "false"
        },
        {
            "address": "/sensors/8/state/presence",
            "operator": "ddx",
            "value": "PT00:05:00"
        }
    ],
    "actions": [
        {
            "address": "/sensors/17/state",
            "method": "PUT",
            "body": {
                "status": 0
            }
        }
    ]
}



Als het goed is, zal de virtuele bewegingssensor nu mee aan schakelen als je fysieke bewegingssensor schakelt en uit schakelen als je fysieke bewegingssensor vijf minuten geen beweging detecteert.


Koppeling virtuele bewegingssensor met Home Assistant
Als laatste voegen we een Binary Sensor toe aan Home Assistant met als sensor ID het ID van de virtuele bewegingssensor.

code:
1
2
3
4
- platform: rest
  resource: http://[bridge IP]/api/[API-key]/sensors/[sensor id]
  value_template: '{{ value_json.state.status }}'
  name: 'Woonkamer'



Ben bovenstaande oplossing automatiseer ik een aantal zaken, zoals het aan/uit doen van de keukenboiler. Aan op beweging, uit na 15 minuten geen beweging. Daarnaast de 'niet hue' lampen die ik nog heb worden geschakeld op basis van beweging en lichtsterkte, etc, etc.

Ik hoop dat jullie er wat aan hebben en ik zie de verbeteringen graag tegemoet.