Watermeter draadloos uitlezen in Domoticz
Monitor naast stroom en gas nu ook je waterverbruik
De zomers in Nederland worden steeds heter en droger. En als de klimaatverandering zo door gaat, zal dat niet op korte termijn veranderen. We moeten dus zuinig zijn met water. Toch kunnen we het watergebruik, anders dan het verbruik van elektriciteit- en aardgas, nog steeds niet op een slimme manier in de gaten houden. Met dit ontwerp voor een draadloze watermeter lukt dat wel, via Domoticz.
Update 14 februari 2023
Er zijn in het verleden diverse ontwerpen voor elektronische watermeters online verschenen, maar die maken meestal gebruik van een fysieke aansluiting. Ik wilde per se een draadloze optie, aangezien mijn Raspberry Pi niet in de meterskast staat. Daarom besloot ik een draadloze sensor te bouwen, met een ESP8266 en het stuurprogramma ESP Easy.
Voor het opnemen van de meter gebruiken we een LJ12A3 proximity sensor. Feitelijk is dit een sensor die gevoelig is voor veranderingen in een magnetisch veld. Als je er een metalen object langs beweegt, geeft de sensor een negatieve puls. Of correcter: verandert de toestand van de data-uitgang van hoog naar laag.
Als er een metalen object in de buurt ligt (dus niet beweegt), gebeurt er niks. We kunnen dit gebruiken doordat de oudere watermeters een halvemaantje hebben dat ronddraait als het water stroomt. Op dat halvemaantje zit een metalen strip. Door de sensor zo dicht mogelijk bij die strip te brengen, ziet deze de veranderingen in het magnetisch veld. Iedere keer als het stripje langs komt, geeft de sensor dat door.
De sensor is het eenvoudigst te bevestigen door voorzichtig een gaatje in het plastic deksel van de watermeter te boren. Met twee boutjes zet je de LJ12A3 daar in vast.
Let op: dit ging bij mij de eerste keer mis. Ik had de sensor namelijk precies in het midden boven de as van het wieltje bevestigd. Veel te netjes! Daardoor veranderde het magnetisch veld niet genoeg bij het ronddraaien en gaf de sensor geen pulsen af. Hij moet dus iets uit het midden worden gemonteerd.
De pulsen kunnen we opvangen en doorsturen naar Domoticz via WiFi. We sturen ze via een ESP8266. Dat is een veelgebruikte en goedkope programmeerbare microcontroller met meerdere in- en uitgangen en WiFi aan boord. Ideaal voor zelfbouwers dus. Zeker als je de variant Wemos D1 mini gebruikt: die kan eenvoudig via een USB-kabeltje met 5V worden gevoed én geprogrammeerd, als je hem op je laptop aansluit. Voor andere 8266-varianten heb je aanvullende hardware nodig.
Dan komt al gauw de eerste uitdaging om de hoek kijken. Om betrouwbaar te werken, heeft de sensor tussen 12V en 24V spanning nodig. De microcontroller werkt op 5V. We moeten daarom niet alleen de spanning verlagen, maar ook het spanningsniveau van de pulsen die op de ingang van de microcontroller komen te staan.
Wemos D1 mini
Er zijn ook andere oplossingen, zoals zo vaak. Zo kun je de Wemos voeden met een 5V telefoonlader en de sensor via een step up booster van 12V spanning voorzien. Ik hou het liever simpel, met componenten die ik ken en die zich in de praktijk hebben bewezen. Zeker aangezien de sensor meer stroom verbruikt dan de Wemos. Een voeding van 12V gebruiken en die verlagen ligt dan meer voor de hand dan andersom. En een netvoeding, die heb je toch wel nodig.
Ik heb dus onderstaande schakeling in elkaar geknutseld, die wordt gevoed met een 12V netadapter (maar het mag ook meer zijn, maximaal 24V). Een bekend en goedkoop spanningsstabilisator-IC verlaagt de spanning naar 5V voor de Wemos D1. De sensor stuurt zijn data door via een optocoupler, zodat ook op de ingang van de D1 geen 12V kan komen te staan. Ik heb dit gebouwd op een stukje experimenteerprint en ondergebracht in een universele kunststof behuizing:
Boodschappenlijstje
Wat je nodig hebt om dit te bouwen, zijn de volgende componenten. Je kunt er misschien enkele in je rommeldoos vinden, maar dat zal niet voor alles gelden. Als je iets moet bestellen, klik dan op de bijbehorende link. Ik heb geprobeerd de goedkoopste onderdelen te vinden, soms is het letterlijk dubbeltjeswerk:
- Een goedkope 12 tot 24V gelijkstroomvoeding van minstens 500mA (kijk eerst in je rommeldoos; ik heb zelf een oude 12V netvoeding van een modem gebruikt die ik nog had liggen)
- 1 weerstand van 1kOhm
- 1 weerstand van 10kOhm
- 1 elco van 100 microFarad/63V, het mag ook groter, als je nog iets in je elektronicadoos hebt rondslingeren
- 1 condensator (folie of keramisch) van 100nF, ook dit komt niet zo nauw
- 1 optocoupler, PC817 of equivalent
- 1 spanningsstabilisator, type 7805
- 1 Hall sensor, type LJ12A3
- 1 Wemos D1 mini (soms goedkoper te bestellen via Amazon).
- een stukje experimenteerprint en een kunststof behuizing
- een micro USB-datakabel (dus niet alleen een laadkabel) om de Wemos te programmeren
Als eerste gaan we een nieuw device aanmaken in Domoticz en de Wemos D1 programmeren. Stap voor stap:
STAP 1:
Maak in Domoticz een virtuele sensor met de naam Watermeter (of Waterverbruik) en het type Teller (incrementele)
. Je vindt deze terug onder het tabblad Overige
STAP 2:
Klik op het tandwieltje om de instellingen van de zojuist gemaakte sensor aan te passen. Verander het type in Water
.
STAP 3:
Zet de instellingen Meter deler
op 1000. We gaan kubieke meters (m3) tellen.
STAP 4:
Vul bij Meter Offset
de huidige stand in van je fysieke watermeter, zodat de teller in Domoticz niet op 0 begint.
STAP 5:
Klik op Aanpassen
We gaan nu ESP Easy installeren op de Wemos D1 mini.
STAP 6:
Download ESP EASY. De laatste stabiele versie is hier is te downloaden. Pak het bestand uit in een map.
STAP 7:
Sluit de Wemos D1 via de micro-USB datakabel aan op een laptop met Windows.
STAP 8:
Druk op de Windows-toets + R en tik cmd.exe, of open de Windows Commandline via het menu. Tik in: chgport /QUERY
. Nu verschijnt een lijst met aangesloten COM-poorten. Een daarvan is die met de Wemos D1 mini. Je hebt het nummer van deze COM-poort zo dadelijk nodig.
STAP 9:
Navigeer nog steeds in de Windows Commandline naar de map waar je het zojuist gedownloade bestand hebt uitgepakt en tik in: flash.cmd
STAP 10:
Je krijgt nu een aantal vragen over waar de firmware naartoe moet worden geflasht: de COM-poort (5 in dit voorbeeld), de omvang (4096 voor de Wemos D1 en het versienummer (120 in dit geval). Daarna schiet een reeks informatieregels over het scherm, ingekort:
Comport (example 3, 4, ..) :5
Flash Size (example 512, 1024, 4096) :4096
Build (example 71, 72, ..) :120
Using com port: 5
Using bin file: ESPEasy_R120_4096.bin
esptool v0.4.6 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
setting board to nodemcu
setting baudrate from 115200 to 115200
setting port from COM1 to COM5
setting address from 0x00000000 to 0x00000000
espcomm_upload_file
stat ESPEasy_R120_4096.bin success
setting serial port timeouts to 1000 ms
opening bootloader
resetting board
...KNIP...
writing flash
............................................................................
...KNIP...
closing bootloader
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
Press any key to continue . . .
STAP 11:
Druk nu op het kleine resetknopje van de Wemos D1, vlak naast de USB-aansluiting. Het apparaatje herstart als WiFi access point (AP).
STAP 12:
Kijk op je laptop in de lijst met beschikbare WiFI netwerken. Daar zie je ESP_0 tussen staan. Kies die en klik op Connect/Verbinden.
STAP 13:
De browser opent met pagina http://192.168.4.1/setup. Daarop zie je de WiFi Setup wizard van ESP Easy. Kies je WiFi netwerk, vul het wachtwoord in en klik op Connect.
STAP 14:
ESP Easy gaat nu verbinding maken met het opgegeven WiFi netwerk. Na ongeveer een halve minuut krijg je de melding:
Welcome to ESP Easy: newdevice
ESP is connected and using IP Address: 192.168.0.106
Connect your laptop / tablet / phone back to your main Wifi network and Proceed to main config.
STAP 15:
Noteer het IP adres en reserveer het eventueel op je modem onder de DHCP instellingen, zodat je niet meer hoeft te zoeken als je later nog eens de instellingen wilt wijzigen terwijl je moden een nieuw adres aan het apparaat heeft toegekend. Voor de werking met Domoticz is dit niet nodig.
STAP 16:
Het acces point ESP_0 is nu inmiddels inactief gemaakt en je laptop maakt als het goed is automatisch weer contact met je normale WiFi-netwerk. Klik op Proceed to main config op de bovenstaande pagina en je komt in het configuratiescherm van ESP Easy.
STAP 17:
Verander aan de instellingen op deze pagina op zijn minst het volgende:
- Name: de naam van je apparaat, bijvoorbeeld Watermeter
- Admin password: het wachtwoord om de instellingen later nog te kunnen veranderen
- Controller IP: het lokale IP-adres van Domoticz
- Controller Port: de poort waarachter Domoticz actief is, als dit niet 8080 (default) is
- Controller User: je inlognaam bij Domoticz
- Controller Password: je wachtwoord in Domoticz
STAP 18:
Scroll naar de onderkant van de pagina en klik op Submit.
STAP 19:
Ga nu naar het tabblad Devices en klik op Edit op de bovenste regel. Kies als Device de pulse counter. Een scherm met instellingen verschijnt.
STAP 16:
Vul hier op zijn minst in:
- Name: naam van de sensor
- IDX: de idx vind je in de aangemaakte sensor in Domoticz
- 1st GPIO: de GPIO-aansluiting waarop je de schakeling hebt aangesloten. Hier GPIO-12 (en als je volgens het schema bouwt GPIO2)
- Debounce Time: 50
- Counter Type: Delta/Total/Time
STAP 20:
Scroll naar de onderkant van de pagina en klik op Submit.
STAP 21:
Soldeer nu de bovenstaande schakeling in elkaar, en zet hem in een net kastje in de meterkast.
STAP 22:
Maak de LS12A3 sensor vast in het deksel van de watermeter, zoals hierboven beschreven.
STAP 23:
Sluit de stroom aan en ze de waterkraan open. Als alles goed gaat, zie je nu het lampje bovenop de LJ12A3 sensor knipperen. Dit betekent dat de data wordt doorgegeven. In Domoticz zie je vervolgens de teller van je nieuwe Apparaat verder lopen.
Dat is alles! Het lijkt veel, maar het zijn simpele, heldere stappen. De meeste tijd zul je kwijt zijn aan het wachten tot de postbode de onderdelen brengt, en (waarschijnlijk) aan het inbouwen van de schakeling in een net doosje!
Zie ook:
18 reacties
Herman · 18 juni 2020 op 11:48
Mooie blog. ik snap enkel niet de aansluiting van de sensor met de opto coupler. De sensor is een NPN sensor en schakelt de 0.
Dan gaat de optocoupler toch nooit werken?
Robot One · 1 juli 2020 op 09:39
De uitgang van de sensor (zwarte draad) is normaal open, maar geeft bij het signaleren van een inductieve verandering een positieve puls op de fotodiode (via R1), waadoor deze wordt getriggerd.
René · 6 juli 2020 op 13:22
Zeer mooie uitleg!
GPIO-12 snap ik niet, volgens het schema zit er toch niets aangesloten op D6.
Of zie ik dit helemaal verkeerd.
Pin Function ESP-8266 Pin
TX TXD TXD
RX RXD RXD
A0 Analog input, max 3.3V input A0
D0 IO GPIO16
D1 IO, SCL GPIO5
D2 IO, SDA GPIO4
D3 IO, 10k Pull-up GPIO0
D4 IO, 10k Pull-up, BUILTIN_LED GPIO2
D5 IO, SCK GPIO14
D6 IO, MISO GPIO12
D7 IO, MOSI GPIO13
D8 IO, 10k Pull-down, SS GPIO15
G Ground GND
5V 5V –
3V3 3.3V 3.3V
RST Reset RST
Robot One · 12 juli 2020 op 15:41
Dit is in het schema inderdaad GPIO2.
Johan · 29 juli 2020 op 20:21
Met dit ontwerp heb ik geprobeerd een werkend resulaat te krijgen, maar helaas. Zodra ik de Wemos D1 Mini v3 van de USB afhaal en laat werken via de 5V van de schakeling, brandt alleen de led fel op de D1 mini en kan ik de webinterface niet meer benaderen.
Bas · 7 september 2020 op 15:46
Beste Robot One,
ben deze set-up aan het bouwen maar heb je misschien ook een foto van het printplaatje? Ben eerlijk gezegd niet thuis in componenten van electronica en weet niet hoe ik e.e.a (voornamelijk alle polen) moet aansluiten. Bijvoorbeeld de optocoupler heeft 4 pootjes. Ook het verschil van de C1 en C2 weet ik niet. heb alle onderdelen in huis gehaald, nu nog de juiste configuratie.
Alvast bedankt voor je hulp!
Gr. Bas
Robot One · 27 september 2020 op 17:05
Ik heb dit zelf op een stukje experimenteerprint opgebouwd, niet echt een voorbeeld van netheid 🙂 Als je de aansluitingen van componenten zoekt, kun je een kijken op https://www.alldatasheet.com/. Ook https://www.budgetronics.eu/nl/downloads/c-24 kan handig zijn.
Robot One · 27 september 2020 op 17:14
Ook deze video is wel interessant om de basics van elektronica en hoe componenten eruit zien te begrijpen: https://youtu.be/6Maq5IyHSuc
Bert · 24 oktober 2020 op 17:08
Beste Robot One,
Ik heb eerder een dergelijke opstelling gemaakt. Op de opto coupler na, want de sensor heeft een open collector uitgang. Het werkte perfect, op één ding na. Als het vaantje van de watermeter toevallig net op een overgangspunt stil blijft staan, krijg je een pulserend aan – uit signaal, wat ervoor zorgde dat de verbruiksstand omhoog schoot.
Ik heb dit niet op kunnen lossen, dus ik ben benieuwd of jij dit probleem ook hebt.
Met vriendelijke groet,
Bert
Robot One · 28 oktober 2020 op 12:46
Dat heb ik nog niet meegemaakt. Vreemd ook, want de sensor hoort te reageren op wisselingen in het magnetisch veld, niet op een stabiele situatie.
Jeroen · 20 november 2020 op 00:30
Wat is het default wachtwoord van ESP_0 ? Ik probeer dit project met een nodemcu maar om met het wifinetwerk ESP_0 te verbinden vraagt hij om een wachtwoord.
Jan · 29 december 2020 op 13:22
het standaard wachtwoord is: configesp
Rob · 30 december 2020 op 22:59
Probeer ‘configesp’ zoals hier beschreven: https://www.letscontrolit.com/wiki/index.php/ESPEasy
Rob · 23 december 2020 op 15:57
Eerst op GPIO2 geprobeerd, dit zonder resultaat.
Heb de opstelling nu werkend op GPIO12 met tasmota en home assistant.
Willem · 1 februari 2021 op 20:01
Hoi Rob, wil jij misschien een schema en config delen van hoe je dit met Tasmota werken hebt gekregen?
Frederic · 9 februari 2021 op 20:14
Heb deze schakeling opgebouwd en getest. Krijg het niet aan de praat in Domoticz.
Als ik de incrementele teller gebruik gebeurt er niets bij Domoticz bij verdraaiing. Vervang ik de teller voor een schakelaar en lamp gaat deze wel knipperen bij verdraaing.
Wat doe ik fout?
Frederic · 10 februari 2021 op 17:50
Ik geb deze opstelling geheel identiek opgebouwd in domoticz.
Echter zonder resultaat. Als ik in de ESP de counter vervang voor een schakelaar en in Domoticz de counter ook vervang door een schakelaar en lamp werkt het wel. De communicatie is er dus wel.
Het lijkt er op dat er in Domoticz iets fout gaat.
Wie heeft de oplossing?
ralph · 14 maart 2023 op 16:27
Ik had hetzelfde probleem. Toen ik Countertype naar alleen “Delta” veranderde, werkte het wel.