Inhoudsopgave Use cases 2. Onderdelen 2. Ontwerp User-interface 3. Behuizing & voeding 3. Voorbeeld van elektrisch schema 5

Maat: px
Weergave met pagina beginnen:

Download "Inhoudsopgave Use cases 2. Onderdelen 2. Ontwerp User-interface 3. Behuizing & voeding 3. Voorbeeld van elektrisch schema 5"

Transcriptie

1 DIY weerstation Inhoudsopgave Use cases 2 Onderdelen 2 Ontwerp User-interface 3 Behuizing & voeding 3 Voorbeeld van elektrisch schema 5 Weerstation 1 (Wemos D1 Mini) 5 Temperatuur 7 Luchtvochtigheid 8 Luchtdruk 9 Vertaling luchtdruk naar beleving 11 Lichtsterkte 11 Vertaling Lux naar beleving 12 Windsnelheid 12 Windrichting 20 Neerslag per 24 uur 25 Neerslagindicatie 29 Data opgeslagen in Domotica database voor statistieken 29 Optioneel: data aanleveren aan open data portaal 30 Optioneel: display aan de wand 30

2 Use cases Temperatuur Luchtvochtigheid Luchtdruk Lichtsterkte Windsnelheid Windrichting Neerslag per 24 uur Neerslag indicatie WiFi verbinding buitensensor Data opgeslagen in Domotica database voor statistieken Optioneel: data aanleveren aan open data portaal Optioneel: display aan de wand Onderdelen Onderdeel Aan tal Prijs p/s Totaal Te bestellen bij Waterdichte Plastic Aansluitdoos Transparante Cover 160*160*90 1 9,86 9,86 PCB 150 * ,97 1,97 Dc 6V-40V Naar 5V 3A Dubbele Usb Charge DC-DC Step Down Converter Module 1 1,62 1,62 Micro USB kabel 25cm 2 1,99 1,99 Telefoonadapter Uit doos Wemos D1 Mini 1 1,74 1,74 DS18B20 Temperatuur Sensor 1 3,54 3,54 DHT22 Sensor 1 3,02 3,02 BMP280 luchtdruksensor 1 1,77 1,77 BH1750 Lux sensor 1 1,70 1,70 Anenometer 1 13,22 13,22

3 Windvaan 1 11,71 11,71 Neerslagmeter 1 12,66 12,66 Totaal 70,16 Ontwerp User-interface Behuizing & voeding Alle electronica en sensoren worden ingebouwd in een installatiedoos met transparant deksel, afmetingen 160x160x90. Indeling:

4 Voor de voeding wordt een adapter toegepast uit de voorraad, deze levert 12v en 2A. Deze voeding voedt de step-down buck converter die via de 2 USB-aansluitingen de Wemos D1 mini s voedt. Calculatie opgenomen vermogen: Component Wemos D1 mini (1) Wemos D1 mini (2) DB18B20 DHT22 BMP280 BH1750 ADS1115 Amperage 400mA 400mA 15mA 1,5mA 0,027mA (2,7µA) 7mA 0,15mA (150µA) Anenometer

5 Regenmeter Windmeter Windvaan Totaal 823,67mA Voorbeeld van elektrisch schema Bron: Weerstation 1 (Wemos D1 Mini) Configuratie:

6 Hardware: Devices:

7 Tools, Advanced: Temperatuur Voor het meten van de buitentemperatuur gebruik ik een DS18B20 Temperatuur Sensor. Als volgt aan te sluiten op een Wemos D1 mini met ESPEasy: Pinout: Wemos DS18B20

8 1 3,3V Rood (VCC) 2 D4 Geel (Data) 3 G Zwart (Gnd) Verdere beschrijving van het configureren van ESP kun je vinden op Luchtvochtigheid Voor het meten van de luchtvochtigheid en ter controle van de buitentemperatuur gebruik ik een DHT22 Temperatuur & luchtvochtigheid Sensor Module. Als volgt aan te sluiten op een Wemos D1 mini met ESPEasy: Pinout: Wemos DHT22 1 3,3V Rood (VCC) 2 D7 Blauw (Data) 3 G Zwart (Gnd)

9 Verdere beschrijving van het configureren van ESP kun je vinden op Luchtdruk Voor het meten van de luchtdruk gebruik ik een BMP280 luchtdruksensor. Als volgt aan te sluiten op een Wemos D1 mini met ESPEasy: Pinout: Wemos BMP ,3V VIN (VCC) 2 D1 SCK (SCL) 3 D2 SDI (SDA) 4 G Gnd

10 Verdere beschrijving van het configureren van ESP kun je vinden op Vanwege een bug in ESPEasy of Domoticz worden de waarden via een rule verstuurd:

11 Vertaling luchtdruk naar beleving Bron: barometer.htm Lichtsterkte Voor het meten van de lichtsterkte gebruik ik een BH1750 Lux sensor. Als volgt aan te sluiten op een Wemos D1 mini met ESPEasy: Pinout: Wemos BH ,3V VCC 2 D1 SCL 3 D2 SDA 4 G Gnd Verdere beschrijving van het configureren van ESP kun je vinden op

12 Vertaling Lux naar beleving Situatie lux zonlicht daglicht bewolkte dag donkere dag 100 volle maan 0,1 Bron: Windsnelheid Een digitale anenometer wordt aangesloten op de Wemos D1 mini. Pinout: Wemos Anenometer 1 D8 (GPIO15) Groen 2 G Red (Gnd)

13 Een windsnelheid van 2.4 km/uur zorgt voor één tik (count) per seconde, dus de formule wordt: voorbeeld 1: met een count van 24 per 15 seconden 2.4 * 1000 windsnelheid = counter / (15 * ) = 24 / = 2,4 m/sec * (60 * 60) = m / * 60 windsnelheid = 8.6 km/uur voorbeeld 2: met een count van 150 per 30 seconden 2.4 * 1000 windsnelheid = counter / (30 * ) = 150 / 20 = 7,5 m/sec * (60 * 60) = m / * 60 windsnelheid = 27 km/uur Van windsnelheid naar Windkracht in Beaufort Voorbeeld 1: Een windsnelheid van 8.6 km/uur betekent volgens bovenstaande tabel een windkracht 3 (matige wind) Voorbeeld 2: Een windsnelheid van 27 km/uur betekent windkracht 4 (matige wind) Gevoelstemperatuur bereken volgens JAG/TI-methode, de formule is:

14 Formule in een spreadsheet uitgetest: Windsnelheid Buitentemperatuur in graden Celsius km/uur m/s , , , , , , , , , , , , , , , , Spreadsheet formule: = 13,12 +( 0,6215 * C$2 )-( 13,96 *( $B3 ^ 0,16 ))+( 0,4867 * C$2 *( $B3 ^ 0,16 )) Omdat het weerstation zich op zo n 2 a 2,5 meter van de grond bevindt, kies is er voor om de correctie van W tot de macht 0,16 niet toe te passen, dus wordt de formule: = 13,12 +( 0,6215 * C$2 )-( 13,96 * $B3 )+( 0,4867 * C$2 * $B3 ) Anenometer geconfigureerd als Device in ESP Easy:

15 Label Waarde Omschrijving Device Pulse counter Generieke Pulse counter Name Anenometer Delay 15 Zend iedere 15 seconden het aantal getelde pulses (omwentelingen anenometer) naar MQTT IDX/Var 179 Domoticz virtuele sensor idx 179 Anenometer 1st GPIO GPIO-15 Pin (D8, GPIO-15) waar de groene draad van de

16 anenometer op is aangesloten Debounce Time (msec) 5 Zorgt er voor dat evt. false signalen uitgefilterd worden Counter Type Delta Zorgt er voor dat iedere 15 seconden het delta teruggegeven wordt tussen de huidige meting van het aantal pulses en de vorige meting Send Data On Stuur de verzamelde data naar de MQTT-broker pi Formula Count Formula Total Formula Time Value Name 1 Value Name 2 Value Name 3 Count Total Time In Domoticz virtuele sensor aangemaakt: IDX Naam Omschrijving 179 Anenometer Gemeten omwentelingen per 15 seconden 180 Actuele windsnelheid km/uur 181 Max Windsnelheid km/uur per dag 182 Gemiddelde Windsnelheid km/uur per dag Actuele windsnelheid km/uur Max Windsnelheid km/uur per dag Gemiddelde Windsnelheid km/uur per dag 183 Gevoelstemperatuur Gevoelstemperatuur volgens JAG/TI-methode Sensors in de ruimte Weerstation gezet, dit t.b.v. het javascript in weerstation.html die hier op filtert

17 Node red flow aangemaakt om de volgende waarden uit te rekenen: In node red de flow Weerstation aangepast, deze flow voert vijf extra taken uit, namelijk: 1. Actuele Windsnelheid km/uur 2. Max Windsnelheid km/uur per dag 3. Gemiddelde Windsnelheid km/uur per dag 4. Reset de Actuele Windsnelheid km/uur vandaag om 23:59 uur, en zet deze op Reset de Max Windsnelheid km/uur per dag vandaag om 23:59 uur, en zet deze op 0 6. Rekent Gevoelstemperatuur uit Node MQTT in Select Device Store windsnelheid Get #Max Windsnelheid km/uur per dag Omschrijving Leest de topic domoticz/in uit de MQTT-message queue op pi Filtert de messages van idx 179 (Anenometer) uit Rekent de gemeten waarde om naar km/uur en stopt deze waarde in de flow variabele windsnelheid_kmuur Haalt het reeds opgebouwde maximum #Max Windsnelheid km/uur per dag vandaag op uit Domoticz via JSON call Get #Gemiddelde Haalt het reeds opgebouwde gemiddelde # #Gemiddelde Windsnelheid

18 Windsnelheid km/uur per dag Get #Buitentemperat uur Actuele windsnelheid km/uur Max Windsnelheid km/uur per dag Reset at 23:59 Gemiddelde Windsnelheid km/uur per dag Gevoelstemperat uur Reset at 23:59 MQTT out km/uur per dag vandaag op uit Domoticz via JSON call Haalt actuele buitentemperatuur uit Domoticz via JSON call Bouwt een MQTT-message op om de Actuele windsnelheid km/uur in Domoticz te zetten Bepaald of de Actuele windsnelheid hoger is dan de maximaal gemeten waarde op die dag, indien dit het geval is, dan wordt er een MQTT-message opgebouwd om de Max Windsnelheid km/uur per dag in Domoticz te zetten Zet elke dag om 23:59 het dagtotaal Max Windsnelheid km/uur per dag vandaag op Telt de Actuele windsnelheid op bij de Totale windsnelheid per dag en deelt deze door het aantal waarnemingen, dan wordt er een MQTT-message opgebouwd om de Gemiddelde Windsnelheid km/uur en het aantal waarnemingen per dag in Domoticz te zetten Berekent gevoelstemperatuur op basis van Buitentemperatuur en Actuele Windsnelheid volgens JAG/TI-methode, daarna wordt er een MQTT-message opgebouwd om de Gevoelstemperatuur in Domoticz te zetten Zet elke dag om 23:59 het dagtotaal Gemiddelde Windsnelheid km/uur per dag vandaag op Schrijft de in Add Neerslag opgebouwde MQTT-message naar de MQTT-broker op pi Export van de node red flow: [{"id":"ad678d8b.e631a","type":"mqtt out","z":"ce5a71b4.6f471","name":"mqtt out","topic":"domoticz/in","qos":"2","retain":"","broker":"ede154bd.f75f38","x":1640,"y":26 0,"wires":[]},{"id":"2eb664a8.527cbc","type":"function","z":"ce5a71b4.6f471","name":"Store windsnelheid","func":"var temp = msg.payload.split(',')[2]\n\n// node.warn(\"temp=\"+temp);\n\ntemp = temp.split(':')[1]\ntemp = temp.replace('\"}', '')\ntemp = temp.replace('\"','');\n\nvar windsnelheid_msec = temp / (15 * (2400/3600));\nvar windsnelheid_kmuur = temp / (15 * (2400/3600)) * (3600/1000);\n\n// node.warn(\"windsnelheid_msec=\"+windsnelheid_msec);\n// node.warn(\"windsnelheid_kmuur=\"+windsnelheid_kmuur);\n\nflow.set('windsnelheid_msec',wind snelheid_msec);\nflow.set('windsnelheid_kmuur',windsnelheid_kmuur);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":590,"y":240,"wires":[["ce c1818","d194c6cc.ce5928","13e3ceb3.841f31","566af669.e57568"]]},{"id":"ce c1818"," type":"http request","z":"ce5a71b4.6f471","name":"get #Max Windsnelheid km/uur per dag","method":"get","ret":"obj","paytoqs":"ignore","url":" ires":[["f77d7c.c971a288"]]},{"id":"f77d7c.c971a288","type":"function","z":"ce5a71b4.6f471","name":"max Windsnelheid km/uur per dag","func":"// \"domoticz/in {\"idx\":181,\"rssi\":5,\"nvalue\":0,\"svalue\":\"53\"}\"\n\nvar currentmaxwindsnelheid = parsefloat(msg.payload.result[0].data);\nvar MQTTString = '{\"idx\":181,\"rssi\":6,\"nvalue\":0,\"svalue\":\"';\n\nif

19 (parsefloat(flow.get('windsnelheid_kmuur')) > currentmaxwindsnelheid) {\n\n MQTTString = MQTTString + parsefloat(flow.get('windsnelheid_kmuur')) + '\"}';\n \n} else {\n MQTTString = MQTTString + currentmaxwindsnelheid + '\"}';\n}\n\nmsg.payload = MQTTString;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1280,"y":300,"wires":[["ad678 d8b.e631a","3f ac"]]},{"id":"1ec57aa3.ce9c45","type":"inject","z":"ce5a71b4.6f471 ","name":"reset at 23:59","props":[{"p":"payload"}],"repeat":"","crontab":"59 23 * * *","once":false,"oncedelay":0.1,"topic":"","payload":"{\"idx\":181,\"rssi\":6,\"nvalue\":0, \"svalue\":\"0.0000\"}","payloadtype":"str","x":1220,"y":340,"wires":[["ad678d8b.e631a"]]}, {"id":"d194c6cc.ce5928","type":"function","z":"ce5a71b4.6f471","name":"actuele windsnelheid km/uur","func":"// \"domoticz/in {\"idx\":180,\"rssi\":5,\"nvalue\":0,\"svalue\":\"43.2\"}\"\n\nvar MQTTString = '{\"idx\":180,\"rssi\":6,\"nvalue\":0,\"svalue\":\"'+ parsefloat(flow.get('windsnelheid_kmuur')) + '\"}';\n\nmsg.payload = MQTTString;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1260,"y":240,"wires":[["ad678 d8b.e631a","3f ac"]]},{"id":"13e3ceb3.841f31","type":"http request","z":"ce5a71b4.6f471","name":"get #Gemiddelde Windsnelheid km/uur per dag","method":"get","ret":"obj","paytoqs":"ignore","url":" ires":[["59a0e6fb.a3b2a8"]]},{"id":"59a0e6fb.a3b2a8","type":"function","z":"ce5a71b4.6f471","name":"gemiddelde Windsnelheid km/uur per dag","func":"// \"domoticz/in {\"idx\":182,\"rssi\":5,\"nvalue\":0,\"svalue\":\"0;n;5.0000;0;5760;0\"}\"\n\nif (parsefloat(flow.get('windsnelheid_kmuur')) > 0) {\n\nvar currentavgwindsnelheid = parsefloat(msg.payload.result[0].data.split(';')[2]);\nvar currentavgcount = parsefloat(msg.payload.result[0].data.split(';')[4]);\n\nvar TotalAvgWindsnelheid = currentavgwindsnelheid * currentavgcount;\ncurrentavgcount++;\ntotalavgwindsnelheid = TotalAvgWindsnelheid + parsefloat(flow.get('windsnelheid_kmuur'));\ncurrentavgwindsnelheid = (TotalAvgWindsnelheid / currentavgcount).tofixed(4);\n\n\nvar MQTTString = '{\"idx\":182,\"rssi\":6,\"nvalue\":0,\"svalue\":\"0;n;';\nmqttstring = MQTTString + currentavgwindsnelheid + ';0;'\nMQTTString = MQTTString + currentavgcount + ';0\"}';\n\nmsg.payload = MQTTString;\n\nreturn msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1300,"y":400,"wires":[["ad 678d8b.e631a","3f ac"]]},{"id":"11ddaaaa.9e71a5","type":"inject","z":"ce5a71b4.6f 471","name":"Reset at 23:59","props":[{"p":"payload"}],"repeat":"","crontab":"59 23 * * *","once":false,"oncedelay":0.1,"topic":"","payload":"{\"idx\":182,\"rssi\":6,\"nvalue\":0, \"svalue\":\"0;n;0.0000;0;0;0\"}","payloadtype":"str","x":1220,"y":440,"wires":[["ad678d8b. e631a"]]},{"id":"566af669.e57568","type":"http request","z":"ce5a71b4.6f471","name":"get #Buitentemperatuur","method":"GET","ret":"obj","paytoqs":"ignore","url":" 9:8080/json.htm?type=devices&rid=87","tls":"","persist":false,"proxy":"","authType":"","x": 850,"y":520,"wires":[["c71fd00f.0018a"]]},{"id":"c71fd00f.0018a","type":"function","z":"ce5 a71b4.6f471","name":"gevoelstemperatuur","func":"// \"domoticz/in {\"idx\":183,\"rssi\":5,\"nvalue\":0,\"svalue\":\"-12.3\"}\"\n// =13,12+(0,6215*C$2)-(13,96*$B3)+(0,4867*C$2*$B3)\n\nvar MQTTString = '{\"idx\":183,\"rssi\":6,\"nvalue\":0,\"svalue\":\"';\nvar Buitentemperatuur = parsefloat(msg.payload.result[0].data);\nvar Gevoelstemperatuur = (0.6215*Buitentemperatuur) - (13.96 * parsefloat(flow.get('windsnelheid_msec'))) + (0,4857 * Buitentemperatuur * parsefloat(flow.get('windsnelheid_msec')));\nmqttstring = MQTTString + Gevoelstemperatuur.toFixed(4) + '\"}';\n\nmsg.payload = MQTTString;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1240,"y":520,"wires":[["ad678 d8b.e631a","3f ac"]]},{"id":"b843c62c ","type":"mqtt in","z":"ce5a71b4.6f471","name":"mqtt in","topic":"domoticz/in","qos":"2","datatype":"auto","broker":"ede154bd.f75f38","x":110,"y ":60,"wires":[["63c8c3c5.4ccfdc"]]},{"id":"63c8c3c5.4ccfdc","type":"switch","z":"ce5a71b4.6 f471","name":"select device","property":"payload","propertytype":"msg","rules":[{"t":"cont","v":"\"idx\":157","v t":"str"},{"t":"cont","v":"\"idx\":179","vt":"str"}],"checkall":"true","repair":false,"outp uts":2,"x":340,"y":60,"wires":[["d5eba41e.1f6c08"],["2eb664a8.527cbc"]]},{"id":"ede154bd.f7 5f38","type":"mqtt-broker","z":"","name":"pi","broker":" ","port":"1883","client id":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthtopic": "","birthqos":"0","birthpayload":"","closetopic":"","closeqos":"0","closepayload":"","willt opic":"","willqos":"0","willpayload":""}]

20 Website van het weerstation uitgebreidt met vier waarden: 1. Act windsnelh km/uur 2. Max windsnelh km/uur 3. Avg windsnelh km/uur 4. Max windkracht 5. Gevoelstemperatuur Meer info: Windrichting Een digitale Windvaan aangesloten op de analoge poort (A0) van de Wemos D1 mini, analoge poort is met een 10K ohm weerstand aangesloten op de 3,3v voeding van de Wemos. Pinout: Wemos Windvaan 1 3,3V 10K weerstand naar A0 2 A0 Zwart 3 G Groen (Gnd)

21 In de digitale Windvaan zitten weerstanden die er voor zorgen dat er een bepaalde spanning wordt afgegeven op basis van de windrichting, dit op een schaal van 0 tot Proefondervindelijk de volgende waarden gemeten: Dit aan de hand van onderstaande schalen vertaald naar windrichtingen

22 Windvaan geconfigureerd als Device in ESP Easy: Label Waarde Omschrijving Device Analog input A0 Name Windvaan Delay 300 Zend iedere 300 seconden(5 minuten) het gemeten voltage/ticks naar MQTT

23 IDX/Var 207 Domoticz virtuele sensor idx 207 Windvaan Send Data On Stuur de verzamelde data naar de MQTT-broker pi Formula Voltage Decimals 2 Value Name 1 Voltage In Domoticz virtuele sensor aangemaakt: IDX Naam Omschrijving 207 Windvaan Gemeten voltage 208 Windrichting Windrichting (N, NO, NNO etc.) Sensors in de ruimte Weerstation gezet, dit t.b.v. het javascript in weerstation.html die hier op filtert In node red de flow Weerstation aangepast, deze flow voert een extra taak uit, namelijk: 7. Windrichting

24 Node MQTT in Select Device Bepaal windrichting MQTT out Omschrijving Leest de topic domoticz/in uit de MQTT-message queue op pi Filtert de messages van idx 207 (Windvaan) uit Bepaalt op basis van gemeten voltage de windrichting en creëert op basis daarvan een MQTT-message Schrijft de in Bepaal windrichting opgebouwde MQTT-message naar de MQTT-broker op pi Export van de node red flow: [{"id":"b843c62c ","type":"mqtt in","z":"ce5a71b4.6f471","name":"mqtt in","topic":"domoticz/in","qos":"2","datatype":"auto","broker":"ede154bd.f75f38","x":110,"y ":60,"wires":[["63c8c3c5.4ccfdc"]]},{"id":"63c8c3c5.4ccfdc","type":"switch","z":"ce5a71b4.6 f471","name":"select device","property":"payload","propertytype":"msg","rules":[{"t":"cont","v":"\"idx\":157","v t":"str"},{"t":"cont","v":"\"idx\":207","vt":"str"},{"t":"cont","v":"\"idx\":179","vt":"str "}],"checkall":"true","repair":false,"outputs":3,"x":340,"y":60,"wires":[["d5eba41e.1f6c08" ],["3dd2cf0f.5c492"],["2eb664a8.527cbc"]]},{"id":"3dd2cf0f.5c492","type":"function","z":"ce 5a71b4.6f471","name":"Bepaal Windrichting","func":"// {\"idx\":207,\"rssi\":10,\"nvalue\":0,\"svalue\":\"200.00\"}\nvar temp = msg.payload.split(',')[3]\n\n// node.warn(\"temp=\"+temp);\n\ntemp = temp.split(':')[1]\ntemp = temp.replace('\"}', '')\ntemp = temp.replace('\"','');\n\nswitch(true) {\n case (temp > 95 && temp < 105):\n windrichting=\"n\";\n break;\n case (temp > 60 && temp < 80):\n windrichting=\"nno\";\n break;\n case (temp > 190 && temp < 210):\n windrichting=\"no\";\n break;\n case (temp > 125 && temp < 145):\n windrichting=\"ono\";\n break;\n case (temp > 300 && temp < 320):\n windrichting=\"o\";\n break; \n case (temp > 255 && temp < 275):\n windrichting=\"ozo\";\n break;\n case (temp > 660 && temp < 680):\n windrichting=\"zo\";\n break; \n case (temp > 625 && temp < 645):\n windrichting=\"zzo\";\n break;\n case (temp > 985 && temp < 1005):\n windrichting=\"z\";\n break;\n case (temp > 860 && temp < 880):\n windrichting=\"zzw\";\n break;\n case (temp > 920 && temp < 940):\n windrichting=\"zw\";\n break;\n case (temp > 735 && temp < 755):\n windrichting=\"wzw\";\n break;\n case (temp > 820 && temp < 840):\n windrichting=\"w\";\n break;\n case (temp > 425 && temp < 445):\n windrichting=\"wnw\";\n break; \n case (temp > 485 && temp < 505):\n windrichting=\"nw\";\n break;\n case (temp > 85 && temp < 95):\n windrichting=\"nnw\";\n break;\n}\n\n// node.warn(\"windrichting=\"+windrichting);\n\nvar MQTTString = '{\"idx\":208,\"rssi\":6,\"nvalue\":0,\"svalue\":\"' + windrichting + '\"}';\n\nmsg.payload = MQTTString;\n\nreturn

25 msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1240,"y":160,"wires":[["3f ac","ad678d8b.e631a"]]},{"id":"ad678d8b.e631a","type":"mqtt out","z":"ce5a71b4.6f471","name":"mqtt out","topic":"domoticz/in","qos":"2","retain":"","broker":"ede154bd.f75f38","x":1640,"y":26 0,"wires":[]},{"id":"3f ac","type":"debug","z":"ce5a71b4.6f471","name":"","active ":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusval":"", "statustype":"auto","x":1650,"y":60,"wires":[]},{"id":"ede154bd.f75f38","type":"mqtt-broker ","z":"","name":"pi","broker":" ","port":"1883","clientid":"","usetls":false,"co mpatmode":false,"keepalive":"60","cleansession":true,"birthtopic":"","birthqos":"0","birthp ayload":"","closetopic":"","closeqos":"0","closepayload":"","willtopic":"","willqos":"0","w illpayload":""}] Website van het weerstation uitgebreidt met windrichting Meer info vindt je hier: Neerslag per 24 uur Een digitale Neerslagmeter wordt op GND en D5 (GPIO14) aangesloten op de tweede Wemos D1 mini. Pinout: RJ11: Groen 3. Rood 4. - Wemos Neerslagmeter 1 D5 Groen 2 G Red (Gnd) Verdere beschrijving van hoe de Neerslagmeter aangesloten kan worden op de Wemos vindt je hier: -

26 ESPEasy als volgt geconfigureerd:

27

28 Label Waarde Omschrijving Device Pulse counter Generieke Pulse counter Name Neerslag Delay 300 Zend iedere 300 seconden (5 minuten) het aantal getelde pulses naar MQTT IDX/Var 157 Domoticz virtuele sensor idx 157 Neerslag 1st GPIO GPIO-14 Pin (D5, GPIO-14) waar de groene draad van de rain gauge op is aangesloten Debounce Time (msec) 500 Zorgt er voor dat evt. false signalen uitgefilterd worden Counter Type Delta Zorgt er voor dat iedere 300 seconden het delta teruggegeven wordt tussen de huidige meting van het aantal pulses en de vorige meting Send Data On Stuur de verzamelde data naar de MQTT-broker pi Formula Count %value%* Pulses * , waarbij de inhoud in ml is van de bucket van de rain gauge, dit levert de Neerslag in ml op per 5 minuten Formula Total %value%* Totaal aantal Pulses * , waarbij Totaal aantal Pulses gemeten wordt vanaf de boot van de Wemos, aan deze waarde hebben we dus niet zoveel Formula Time Value Name 1 Value Name 2 Value Name 3 Count Total Time In Domoticz twee virtuele sensors aangemaakt: IDX Naam Omschrijving 157 Neerslag Gemeten neerslag per 5 minuten (300 seconden) 158 #Neerslag vandaag Totale neerslag op een dag, wordt om 23:59 uur gereset naar 0 Beide sensors in de ruimte Weerstation gezet, dit t.b.v. het javascript in weerstation.html die hier op filtert

29 In node red de flow Weerstation aangemaakt, deze flow voert twee taken uit, namelijk: 8. Plust de gemeten neerslag per 5 minuten op bij het dagtotaal #Neerslag vandaag 9. Reset het dagtotaal #Neerslag vandaag om 23:59 uur, en zet deze op Node MQTT in Select Device Store neerslag Get #Neerslag Add Neerslag Omschrijving Leest de topic domoticz/in uit de MQTT-message queue op pi Filtert de messages van idx 157 (Rain-gauge) uit Stopt de gemeten waarde in de flow variabele Neerslag Haalt het reeds opgebouwde dagtotaal #Neerslag vandaag op uit Domoticz via JSON call Telt de gemeten waarde (opgeslagen in flow variabele Neerslag ) op bij het opgehaalde dagtotaal, en bouwt met dit nieuwe dagtotaal een MQTT-message op om het dagtotaal in Domoticz te zetten Reset at 23:59 Zet elke dag om 23:59 het dagtotaal #Neerslag vandaag op MQTT out Schrijft de in Add Neerslag opgebouwde MQTT-message naar de MQTT-broker op pi Export van de node red flow: [{"id":"63c8c3c5.4ccfdc","type":"switch","z":"ce5a71b4.6f471","name":"select device","property":"payload","propertytype":"msg","rules":[{"t":"cont","v":"\"idx\":157","v t":"str"},{"t":"cont","v":"\"idx\":179","vt":"str"}],"checkall":"true","repair":false,"outp uts":2,"x":340,"y":60,"wires":[["d5eba41e.1f6c08"],["2eb664a8.527cbc"]]},{"id":"d5eba41e.1f 6c08","type":"function","z":"ce5a71b4.6f471","name":"Store neerslag","func":"var temp = msg.payload.split(',')[2]\ntemp = temp.split(':')[1]\ntemp = temp.replace('\"}', '')\ntemp = temp.replace('\"','');\n\n// node.warn(\"temp=\"+temp);\n\nflow.set('windsnelheid',temp);\n\nreturn

30 msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":580,"y":60,"wires":[["858cb5a d.b08158"]]},{"id":"bb9abe8e.b8da1","type":"inject","z":"ce5a71b4.6f471","name":"reset at 23:59","props":[{"p":"payload"}],"repeat":"","crontab":"59 23 * * *","once":false,"oncedelay":0.1,"topic":"","payload":"{\"idx\":158,\"rssi\":6,\"nvalue\":0, \"svalue\":\"0.0000\"}","payloadtype":"str","x":1220,"y":100,"wires":[["ad678d8b.e631a"]]}, {"id":"3f ac","type":"debug","z":"ce5a71b4.6f471","name":"","active":true,"toside bar":true,"console":false,"tostatus":false,"complete":"false","statusval":"","statustype":" auto","x":1650,"y":60,"wires":[]},{"id":"858cb5ad.b08158","type":"http request","z":"ce5a71b4.6f471","name":"get #Neerslag","method":"GET","ret":"obj","paytoqs":"ignore","url":" on.htm?type=devices&rid=158","tls":"","persist":false,"proxy":"","authtype":"","x":820,"y": 60,"wires":[["be034d40.d05b3"]]},{"id":"be034d40.d05b3","type":"function","z":"ce5a71b4.6f4 71","name":"Add Neerslag","func":"// \"domoticz/in {\"idx\":158,\"rssi\":6,\"nvalue\":0,\"svalue\":\"0.0000\"}\"\nvar currentneerslag = parsefloat(msg.payload.result[0].data);\nvar MQTTString = '{\"idx\":158,\"rssi\":6,\"nvalue\":0,\"svalue\":\"';\n\ncurrentneerslag = currentneerslag + parsefloat(flow.get('neerslag'));\nmqttstring = MQTTString + currentneerslag + '\"}';\n\nmsg.payload = MQTTString;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1220,"y":60,"wires":[["ad678d 8b.e631a","3f ac"]]},{"id":"b843c62c ","type":"mqtt in","z":"ce5a71b4.6f471","name":"mqtt in","topic":"domoticz/in","qos":"2","datatype":"auto","broker":"ede154bd.f75f38","x":110,"y ":60,"wires":[["63c8c3c5.4ccfdc"]]},{"id":"ede154bd.f75f38","type":"mqtt-broker","z":"","na me":"pi","broker":" ","port":"1883","clientid":"","usetls":false,"compatmode":fa lse,"keepalive":"60","cleansession":true,"birthtopic":"","birthqos":"0","birthpayload":""," closetopic":"","closeqos":"0","closepayload":"","willtopic":"","willqos":"0","willpayload": ""}] Website van het weerstation uitgebreidt met twee waarden: 6. Neerslag 5 min. (ml) 7. #Neerslag vandaag (ml) Neerslagindicatie De neerslagmeter registreert 0,33mm per keer. Zodra de eerste 0,33mm geconstateerd wordt heb je je Neerslagindicatie. In de praktijk te testen of dit voldoende is. Data opgeslagen in Domotica database voor statistieken Door de Wemos D1 mini s te voorzien van EspEasy en te configureren voor gebruik met Domoticz worden alle verzamelde waarden opgeslagen in de Domoticz database en zijn beschikbaar voor het aansturen van bijv. raamopeners of ventilatoren. En natuurlijk zijn de actuele gegevens ook raadpleegbaar in de app. De exacte configuratie van Domoticz moet nog uitgewerkt worden, tevens de te genereren statistieken en rapportages.

31 Optioneel: data aanleveren aan open data portaal Deze optie ga ik niet invullen. Optioneel: display aan de wand Idee, oude smartphone/tablet aan de wand hangen met daarop een een browser die een customized Domoticz webpagina displayed. Geen wachtwoord/pincode zodat een druk op de aan-toets voldoende is om het scherm te activeren. Nog verder uitwerken.