Node-Red & JSON

Node-Red Raspberry: hele bericht
Node-Red Raspberry: hele bericht

Ontvangen mqtt payload
Ontvangen mqtt-bericht (msg)

JSON maakt gebruik van voor de mens leesbare tekst in de vorm van data-objecten die bestaan uit een of meer attributen met bijbehorende waarden.” (bron:Wikipedia) Dat ziet er dan ongeveer zo uit: { attribuut: waarde, attribuut: waarde }, zoals we in het plaatje links(boven) kunnen zien, payload: “23.60” , humidity: “34.10”. Wat we ontdekten was dat op het Raspberry Pi meetapparaat, het hele bericht nog beschikbaar is (bovenste plaatje). Je zou verwachten dat dat ook met MQTT naar de ‘broker’ op de Home-Assistant-server (HA) verzonden wordt. Tot ons ongenoegen bleek dat niet het geval. Zie de afbeelding ‘Ontvangen mqtt-bericht (msg)’. Daar staat niet voor niets msg tussen haakjes. Het gaat om het hele bericht. Maar de ‘humidity’ ontbreekt. Om een of andere reden wordt alleen de zgn. payload verzonden.
De maker van deze dht22-module schrijft wel dat er bewust voor deze temperatuur-payload is gekozen om compatibel met een andere meter te blijven. Nota bene een ding dat alleen temperaturen meet, een thermometer dus. Niet ook vochtigheidsgehalte.

Dus op een of andere manier moet het attribuut payload de waarde van humidity gaan bevatten. Dat is blijkbaar het enige dat erdoor komt! Op allerlei manieren werd getracht de humidity in de payload te krijgen. Uiteindelijk heb ik gekozen voor de oplossing om na een korte pauze de oorspronkelijke payload te laten herschrijven door een ‘Change’-node.

Change Node
Change-node

Die daarna naar zijn eigen topic in MQTT wordt gestuurd.
MQTT payload herschreven en naar eigen topic in HA versturen
MQTT payload herschreven en naar eigen topic in HA versturen

Aangepast topic voor vochtigheidsmeting van DHT22
Aangepast topic voor vochtigheidsmeting van DHT22
Vochtigheid afzonderlijk van temperatuur in HA
Vochtigheid afzonderlijk van temperatuur in HA

Dat werkt!

Ik betwijfel wel of het in de buurt komt van de beste oplossing.