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.
Registreer openWeatherMap API-sleutel
Installeer het openWeatherMap-knooppunt
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.
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":[]}]
Meer informatie
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. 🙂
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!
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
Werkt perfect 🙂
Supersnelle ondersteuning! Bedankt
Uitstekend! Graag. 🙂 Veel succes!
Hartelijke groeten
Fabian
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
Hoi Michael,
Ik denk dat ik heb gebruikt wat je zoekt in dit bericht (voor een iets ander doel): https://nerdiy.de/howto-nodered-pushbullet-benachrichtigung-bei-ssh-login/
Als u de code importeert en vervolgens naar het functieknooppunt kijkt, kunt u zien hoe de nieuwe lading wordt samengesteld.
Ik hoop dat dit je helpt, anders laat het me weten. 🙂
Hartelijke groeten
Fab
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
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
Super, ja zo werkt het ook, werkt perfect!
Dankjewel Fabien
Geweldig, ik ben blij dat het gelukt is. 🙂