De waarde van je Hollandse Luchten sensor in Home-Assistant

Home-Assistant (https://home-assistant.io) is een veel gebruikt open source domotica systeem met ongekende mogelijkheden. Je kunt hier ook sensoren aan koppelen. Ik heb uitgezocht hoe je een Sodaq van Hollandse Luchten als sensor kunt toevoegen. Je kunt zelfs een notificatie op je telefoon krijgen als de fijnstofwaarde hoger is dan een bepaalde grens!

Hoe doe je dit?

Allereerst moet je er achter komen hoe je de waarde van jouw sensor kunt uitlezen.

Daarvoor ga je naar de API van het SamenMeten platform waar je de data van jouw sensor kunt opvragen. We doen het even voor sensor 465 (mijn sensor), maar vul daar je eigen sensor nummer voor in de plaats.

Allereerst vraag je alles op van jouw sensor: https://api-samenmeten.rivm.nl/v1.0/Things?$filter=contains(name,‘HLL_hl_device_465’)

Dan krijg je het volgende antwoord:

{
"value": [
{
"@iot.id": 7270,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Things(7270)",
"name": "HLL_hl_device_465",
"description": "HLL_hl_device_465",
"properties": {
"codegemeente": "392",
"knmicode": "knmi_06225",
"nh3closecode": "NL10444",
"nh3regiocode": "NL10444",
"nh3stadcode": null,
"no2closecode": "NL10550",
"no2regiocode": "NL49564",
"no2stadcode": "NL10550",
"owner": "Hollandse Luchten",
"pm10closecode": "NL10550",
"pm10regiocode": "NL49564",
"pm10stadcode": "NL10550",
"pm25closecode": "NL49551",
"pm25regiocode": "NL49703",
"pm25stadcode": "NL49007",
"project": "Hollandse Luchten"
},
"Locations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Things(7270)/Locations",
"Datastreams@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Things(7270)/Datastreams",
"HistoricalLocations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Things(7270)/HistoricalLocations"
}
]
}

Open nu de link die bij ‘Datastreams’ staat. Dus: https://api-samenmeten.rivm.nl/v1.0/Things(7270)/Datastreams

Nu krijg je het volgende antwoord.

{
"value": [
{
"@iot.id": 38619,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38619)",
"name": "HLL_hl_device_465-6-rh",
"description": "HLL_hl_device_465-6-rh",
"unitOfMeasurement": {
"definition": "https://qudt.org/vocab/unit/PERCENT",
"symbol": "%"
},
"observationType": "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement",
"Thing@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38619)/Thing",
"Sensor@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38619)/Sensor",
"Observations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38619)/Observations",
"ObservedProperty@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38619)/ObservedProperty"
},
{
"@iot.id": 38618,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38618)",
"name": "HLL_hl_device_465-6-temp",
"description": "HLL_hl_device_465-6-temp",
"unitOfMeasurement": {
"definition": "https://qudt.org/vocab/unit/DEG_C",
"symbol": "C"
},
"observationType": "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement",
"Thing@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38618)/Thing",
"Sensor@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38618)/Sensor",
"Observations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38618)/Observations",
"ObservedProperty@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38618)/ObservedProperty"
},
{
"@iot.id": 38617,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38617)",
"name": "HLL_hl_device_465-12-pm25_kal",
"description": "HLL_hl_device_465-12-pm25_kal",
"unitOfMeasurement": {
"definition": "https://qudt.org/vocab/unit/MicroGM-PER-M3",
"symbol": "ug/m3"
},
"observationType": "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement",
"Thing@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38617)/Thing",
"Sensor@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38617)/Sensor",
"Observations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38617)/Observations",
"ObservedProperty@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38617)/ObservedProperty"
},
{
"@iot.id": 38616,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)",
"name": "HLL_hl_device_465-12-pm25",
"description": "HLL_hl_device_465-12-pm25",
"unitOfMeasurement": {
"definition": "https://qudt.org/vocab/unit/MicroGM-PER-M3",
"symbol": "ug/m3"
},
"observationType": "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement",
"Thing@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Thing",
"Sensor@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Sensor",
"Observations@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Observations",
"ObservedProperty@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/ObservedProperty"
}
]
}

Hier staat alles wat de sensor meet. Temperatuur, luchtvochtigheid, PM2.5 (gekalibreerd) en PM2.5 niet gekalibreerd. Ik heb de niet-gekalibreerde gekozen, er van uit gaande dat deze het minst vertraagd is. Of dat zo is moet ik nog checken.

Bij deze PM2.5 waarde kies je de link die achter ‘Observations’ staat. Je zet daar ook $top=1 bij omdat je alleen geïnteresseerd bent in de laatste waarneming. Je krijgt dan deze link:

https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Observations?$top=1

Deze link kunnen we gebruiken om de laatste waarde van jouw sensor op te halen. Het antwoord ziet er dan zo uit:

{
"@iot.nextLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Observations?$top=1&$skip=1",
"value": [
{
"@iot.id": 457733275,
"@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(457733275)",
"phenomenonTime": "2024-03-06T14:00:00.000Z",
"result": 14.78,
"Datastream@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(457733275)/Datastream",
"FeatureOfInterest@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(457733275)/FeatureOfInterest",
"resultTime": null
}
]
}

In het veld result staat de fijnstofwaarde die we zoeken (Gevonden. eindelijk…)
Nu ga je naar Home Assistant en open je een editor om configuration.yaml aan te passen. Je kunt daar een sensor toevoegen door de volgende regels toe te voegen:

sensor:
- platform: rest
name: PM25_sensor_hollandse_luchten
device_class: pm25
unique_id: sensor.PM25_sensor
resource: "https://api-samenmeten.rivm.nl/v1.0/Datastreams(38616)/Observations?$top=1"
value_template: '{{ value_json.value[0].result}}'
unit_of_measurement: µg/m³
scan_interval: 00:15:00

Nu kun je deze informatie gebruiken voor allerlei zaken. Bijvoorbeeld door de waarde op je dashboard te tonen, maar de mogelijkheden zijn eindeloos. Veel succes!

1 like