HowTo: Node Red – Ontvang actuele weergegevens van OpenWeatherMap

Het is niet altijd mogelijk om omgevingsgegevens zoals de buitentemperatuur direct te meten. Toch komt het soms wel van pas. Zo kun je er bijvoorbeeld voor zorgen dat de radiatoren binnen alleen aangaan als het buiten koud is. Verwarmingen die in de zomer automatisch aangaan, kosten niet alleen geld, maar ook zweet. 🙂

Om deze omgevingsgegevens te krijgen, heb je eigenlijk een eigen weerstation nodig, dat de SmartHome voedt met de bijbehorende gegevens.
U kunt dit geld echter besparen. Dankzij gratis weerdiensten waarvan u alleen deze gegevens hoeft op te halen. Eén van deze weerdiensten is OpenWeatherMap.org.

Hoe u weergegevens van OpenWeatherMap.org kunt verkrijgen en gebruiken voor uw SmartHome, wordt in het volgende artikel uitgelegd.


Veiligheidsinstructies

Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/

Affiliate links / reclame links

De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂 


Eisen

Handige artikelen:
NodeRed moet natuurlijk al geïnstalleerd zijn zodat je deze configuratie kunt gebruiken.
Hoe je een RaspberryPi voorbereidt en vervolgens NodeRed erop installeert, wordt beschreven in de volgende artikelen.

In de volgende artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi – setup voor nerds!
RaspberryPi – De eerste configuratie!
RaspberryPi – Bedien de RaspberryPi via SSH
NodeRed – NodeRed installeren op de RaspberryPi
NodeRed – Installeer nieuwe knooppunten

NodeRed - importeer en exporteer knooppuntcode

Vereist gereedschap:
-Nee-

Benodigd materiaal:

In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.


Log in op de configuratie-interface van NodeRed

Voordat u uw NodeRed-configuratie kunt bewerken, moet u - indien geactiveerd - eerst inloggen op de NodeRed-configuratie-interface.

Weergave van het aanmeldingsvenster. Hier moet u de inloggegevens invoeren die u tijdens de configuratie van de login hebt opgegeven. Informatie hierover vind je in het artikel NodeRed - gebruikersaanmelding instellen.

Registreer openWeatherMap API-sleutel

Om toegang te krijgen tot de actuele weergegevens van openWeahterMap.org heeft u een API-sleutel nodig. Hoe u deze gratis kunt registreren, wordt in dit artikel beschreven: Registreer OpenWeatherMap.org API-sleutel
Dit moet later worden opgeslagen in het openWeatherMap-knooppunt. Onthoud het dus goed. 🙂

Installeer het openWeatherMap-knooppunt

Om de gegevens uit OpenWeatherMap.Org te kunnen ophalen, moet u het knooppunt “node-red-node-openweathermap” installeren. Hoe u knooppunten installeert, staat in het artikel NodeRed – Installeer nieuwe knooppunten uitgelegd.

Knooppuntcode importeren

De volgende configuratie zou u op weg moeten helpen. Om dit te doen, importeert u eenvoudigweg de volgende knooppuntcode in uw NodeRed-installatie. Hoe u dit kunt doen, staat in het artikel NodeRed - importeer en exporteer knooppuntcode uitgelegd.

Direct daarna dient u de eerder geregistreerde API-sleutel toe te voegen aan de configuratie, zoals hieronder beschreven.

Weergave van de configuratie in de editor.

Knooppuntcode:

[{"id '85dccee.5ca84', type 'change', z '5ebf035f.49459c', 'name 'buitentemperatuur', 'regels':[{'t', ingesteld ","p"payload"pt"msg""to""data.main.temp-273.15""tot"jsonata"}],"action"" property ':', 'from': ',', 'reg':false,'x':710,'y':200,'draden':[['6ab6bc17.16a144'] ]},{"id 'b36beeac.014ba', type 'json', z '5ebf035f.49459c', 'name', 'property', payload, 'action' :"","mooi":false,"x":510,"y":200,"draden":[["85dccee.5ca84","a0fb594.6e02ea8","7aa148d5.934fb8","8e550228.aae02 ","52536e82.1cb05", "b22dec0e.d53f3", "bcdf0d32.be17a", "95d0a7a8.66b9e8", "514584f.458327c"]]},{"id":34eee9ed.b64d36", "type": "inject", "z":5ebf035f.49459c", "name": Gegevens handmatig ophalen", "topic":", "payload":", "payloadType: "datum", "repeat": "","crontab":","once":false,"onceDelay":0.1,"x":180,"y":260,"wires":[["d5a8c5aa.82b3c8"]]},{ "id 'a0fb594.6e02ea8', type 'wijzigen', z '5ebf035f.49459c', 'name' luchtvochtigheid, 'regels':[{"t 'instellen', "p"payload","pt"msg", "to"data.main.humidity","tot"jsonata"}],"action" ", "property" ","from":","to":"reg":false,"x":720,"y":320,"draden":[["b9f93625.5051b8"]]},{ "id '7aa148d5.934fb8', type 'wijzigen', z '5ebf035f.49459c', 'name 'buitenluchtdruk', 'regels':[{"t: set ", "p"payload","pt"msg"to"data.main. Pressure"tot"jsonata"}],"action" ""property" :" ","from":", "to":", reg":false,"x":700,"y":360,"draden":[["fbf0a415.6ed9c8"]]} ,{ "id 'd5a8c5aa.82b3c8', type 'openweathermap', z '5ebf035f.49459c', 'name', 'wtype', 'huidig', 'lon' ", "lat":410,"y":260,"draden":[ [" b36beeac.014ba"]]},{"id '67bf25e3.d1ce1c', 'type': openweerkaart in ', z':5ebf035f.49459c, 'name', 'wtype' :" current","lon":","lat":",city":Bochum", "country":Duitsland", "taal":160," y" :200,"wires":[["b36beeac.014ba"]]},{"id '8e550228.aae02', type 'debug', z '5ebf035f.49459c' naam" :"Ruwe gegevens","actief":true,"tosidebar":true,"console":false,"tostatus":false,"complete":true","x":680,"y": 160," wires":[]},{"id '6ab6bc17.16a144', type 'debug', z '5ebf035f.49459c',name 'buitentemperatuur', 'actief' :true, "tosidebar":true,"console":false,"tostatus":false,"complete:payload","x":990,"y":200,"wires":[]},{ "id" :"b9f93625.5051b8", type "debug", z "5ebf035f.49459c", "name" luchtvochtigheid, "actief":true,"tosidebar":true,"console ":false ,"tostatus":false,"complete:payload","x":1000,"y":320,"wires":[]},{"id:fbf0a415.6ed9c8"," type": "debug", z"5ebf035f.49459c", name "buitenluchtdruk", "actief":true,"tosidebar":true,"console":false,"tostatus":false ,"complete": "payload","x":980,"y":360,"draden":[]},{"id '52536e82.1cb05', 'type 'change', 'z "5ebf035f.49459c","name"Windkracht","regels":[{"t"set"p"payload"pt"msg""to" :"data.wind. speed","tot":jsonata"}],"action":", "property":", "from":", "to":", "reg" :false,"x" :690,"y":400,"draden":[["93256619.92a1b8"]]},{"id 'b22dec0e.d53f3', 'type': 'change', 'z "5ebf035f.49459c"name""Windrichting""regels":[{"t""set"p"payload"pt"msg"" :"data.wind.deg ","dead"jsonata"}],"action" ", "property" , "from" , " to " , "reg" :false,"x": 690,"y":440,"wires":[["d755f34d.fdefa"]]},{"id '93256619.92a1b8', type 'debug', 'z static:true,tosidebar:true,console:false,tostatus:false,complete:payload, x":970,"y" :400,"draden":[]},{"id"d755f34d.fdefa", "type"debug",z"5ebf035f.49459c",naam static: "Windrichting", actief ":true,"tosidebar":true,"console":false,"tostatus":false,"complete:payload","x":970,"y":440 ,"draden":[]}, {"id":bcdf0d32.be17a", "type": wijzigen", "z":5ebf035f.49459c", "name":weatherDescription", "regels": [{"t":set" ,"p"payload"pt"msg"to"data.weather[0].description"tot"jsonata"}] ,"action":"," property":","from":"to":"reg":false,"x":720,"y":480,"draden" :[["a9876b9d.5e5be8"] ]},{"id 'a9876b9d.5e5be8', 'type' debug ', z '5ebf035f.49459c 'name 'weerbeschrijving' active":true,"tosidebar": true,"console":false,"tostatus":false,"complete></payload","x":1000,"y":480,"wires":[]} ,{"id '95d0a7a8. 66b9e8', type 'wijzigen', z '5ebf035f.49459c', name 'buitenTempMin', 'regels':[{'t 'instellen ","p"payload" ,"pt"msg","to"data.main.temp_min-273.15""tot"jsonata"}],"action"" property ': ', 'from' :' ', 'to ', 'reg':false,'x':700,'y':240,'draden':[['751ba810.fd1938'] ]},{"id '514584f.458327c', type 'change', z '5ebf035f.49459c', name 'buitenTempMax', 'regels':[{"t': "set", "p" payload "pt "msg", "to":data.main.temp_max-273.15", "tot"jsonata"}],"action": ,"property":,"from":280,"draden":[["455148a8.ce5168 "]]},{"id" :"751ba810.fd1938", type "debug", z "5ebf035f.49459c", naam "buitenTempMin", "actief":true,"tosidebar ":true,"console":false ,"tostatus":false,"complete></payload","x":980,"y":240,"wires":[]},{"iddice: 455148a8.ce5168","type": "debug","z"5ebf035f.49459c",name"buitenTempMax", "actief":true,"tosidebar":true,"console":false," tostatus":false,"complete": "payload","x":980,"y":280,"draden":[]}]
Uw OpenWeatherMap API-sleutel moet worden ingevoerd in de OpenWeatherMap-knooppunten, zodat het ophalen van gegevens werkt.

Meer informatie

https://openweathermap.org/


Veel plezier met het project

Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂

PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂

Koop Me a Coffee op ko-fi.com       

10 comments

  1. HOI,
    Cool ding, bedankt voor je tutorials 🙂

    Ik heb een probleem.
    Als ik de temperaturen als tekst uitvoer, krijg ik er te veel decimalen achter....
    Hoe kan ik afronden?

    Heel erg bedankt!

    1. Hé Adriaan,
      Bedankt. 🙂
      Ik doe dit altijd met een functieknooppunt en wat JavaScript. (Ik weet zeker dat er andere potentieel betere manieren zijn).
      Ik heb hier een voorbeeld voor je geüpload: https://pastebin.com/UesZyP2N
      U zou de code gemakkelijk moeten kunnen importeren. Hopelijk spreekt het voor zich. Vraag het anders nog een keer. 🙂
      Hartelijke groeten
      Fabian

  2. Hallo allemaal

    De post is een beetje oud, maar het heeft me enorm geholpen, bedankt!
    Ik ben momenteel Rhasspy aan het bouwen op een OrangePi, de spraakuitvoer van de weergegevens
    krijgen vorm dankzij de knooppuntcode :). Mijn probleem is dat ik het individu heb
    Ik kan query's niet in één uitvoer samenvatten, ik moet nog steeds statische tekst gebruiken
    voeg iets toe als "Het huidige weer in..." of "De wind waait uit de richting...." en stuur het vervolgens door naar de server als msg.payload. Ik sta heel open voor een tip, bedankt.

    Groetjes Michaël

  3. Ja precies Fab, hij was raak met de tip, werkt heel goed, heel erg bedankt.
    Nu wil ik graag de “data.main.temp-273.15” afronden, voor mij is dat de msg.payload2, ik zag je tip van bovenaf “parseFloat(msg.payload).toFixed(2)”.
    Kun je me helpen waar ik heen moet of is er een andere manier?
    Groetjes Michaël

    1. Hoi Michael,
      je kunt dat in principe in hetzelfde functieknooppunt plaatsen. Bijvoorbeeld zo:
      var waarde=parseFloat(msg.payload2).toFixed(2)
      msg.payload “Hier is de zin die u wilt uitvoeren met de afgeronde waarde: “+String(waarde);

      Ik hoop dat dat werkt.
      Hartelijke groeten
      Fabian

Kommentar hinterlassen

Het e-mailadres wordt niet gepubliceerd. Erforderliche Felder sind mit * markiert

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.