Soms wil je weten hoeveel water er door jouw kraan stroom. Of dit nu afkomstig is van het net, of uit je eigen regenput, meten is weten. Want laat ons eerlijk zijn, hoeveel mensen weten nu echt hoeveel ze verbruiken? Meestal weet je het wel ongeveer, a-peu-pres, bij benadering. Maar het zou toch zoveel beter zijn om tot op de liter te weten wat er stroomt? Niet alleen voor je portemonee, maar ook voor het milieu.
En dan kan je zo anticipeteren op je verbruik. Denk bv bij lekkende leiding, vergeten kraantje, besproeien van je moestuin, gazon of border, wat loopt er naar je vijver, of naar straat…
Hardware
De setup is relatief simpel, eens je het door hebt. Volgende zaken heb je nodig:
- Waterstroommeter
Deze heb je rond de 10 à 20 euro - Raspberry pi (zero)
* verder genoemd als rpz
Kostprijs rond de 40 euro.
Je kan deze natuurlijk ook nog voor andere zaken inschakelen. Ik denk aan temperatuur- en vochtsensoren, uitgang voor automatishe kranen, backupservertje… - Een domoticaserver (optioneel)
Je kan de data natuurlijk ook stockeren op de rpz, maar met een domoticaserver kan je andere evenementen triggeren. Alerting, stoppen van de pompen, historiek bijhouden…
Interconnectie
De meeste meters kan je eenvoudig op volgende wijze aansluiten op de raspberry pi. Wel opletten dat in de meeste gevallen dit wat soldeerwerk vraagt. Je zal 3 kabeltjes moeten verbinden met de juiste pinnen. Dus een goede (lees kleine!) soldeerbout is wel vereist.
- USB1: Normale 5V= voeding van de Raspberry PI.
- Pin 1: Rode kabel (voeding 3.3V)
- Pin 6: Zwarte kabel (massa of grond)
- Pin 7: Gele kabel (data naar GPIO 4)
Ter illustratie:
Software
Raspberry OS
Een standaard installatie, zonder desktop is meer dan voldoende. In ‘c’ heb je enkel python en mqtt nodig. Ik zou volgende 2 configuraties willen aanbevelen vooraleer je een scherm loskoppelt:
- Inloggen via ssh toestaan
Dan kan je ten alle tijde inloggen vanop je pc. Ook een goed wachtwoord is hier een aanrader. Goed in de vorm van bescherming tegen hackers, en goed voor jezelf om makkelijk te onthouden. Ook even opletten dat de RPZ nogal es durven in qwerty te staan. - WIFI netwerk instellen.
Ik geef ook de voorkeur aan een vast IP-adres. Dan ben je zeker dat je RPZ niet ergens anders op je netwerk gaat zitten.
Extra’s
Om alles correct te laten verlopen, moet je eerst volgende software installeren:
- sudo apt install -y mosquitto mosquitto-clients
Maak een bestandje aan met /etc/mosquitto/conf.d/hostname.conf (hostname in jouw geval natuurlijk), met volgende lijnen erin:
listener 1883
allow_anonymous true
- sudo apt install pip
- pip install paho-mqtt python-etcd
Even reboot om alles correct te laden. Je kan ook de services herstarten, maar een reboot is sneller dan dat je de commado’s kan typen.
Data script
Onderstaand een klein scriptje die je moet runnen op de raspberry pi. Persoonlijk gebruik ik altijd de folder /diy/ voor mijn scripts. Handig om te weten wat ik deed, en nog handiger omdat dit meestal de enige folder is die ik vervolgens moet backuppen.
Het kan zijn dat je in dit bestandje de flow frequency moet wijzigen. Dit hangt een beetje af van je flowmeter (hardware). Bij gelegenheid ga ik dit nog wat verder uitwerken, hoe je maw deze frequentie kan meten indien dit niet gekend is.
/diy/water_flow.py
!/usr/bin/python
import RPi.GPIO as GPIO
import time, sys
import paho.mqtt.publish as publish
FLOW_SENSOR_GPIO = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(FLOW_SENSOR_GPIO, GPIO.IN, pull_up_down = GPIO.PUD_UP)
MQTT_SERVER = “127.0.0.1”
global count
count = 0
def countPulse(channel):
global count
if start_counter == 1:
count = count+1
GPIO.add_event_detect(FLOW_SENSOR_GPIO, GPIO.FALLING, callback=countPulse)
while True:
try:
start_counter = 1
time.sleep(2)
start_counter = 0
flow = (count / 7.5) # Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
print(“The flow is: %.3f Liter/min” % (flow))
publish.single(“WaterFlow”, flow, hostname=MQTT_SERVER)
count = 0
time.sleep(1)
except KeyboardInterrupt:
print(‘\nkeyboard interrupt!’)
GPIO.cleanup
Testen
Wil je zien of dit allemaal correct werkt?
Dit kan eenvoudig getest worden via:
- python /diy/water_flow.py
Dit zou elke 2 seconden de output moeten tonen. Blaas maar even in je metertje.
Stoppen doe je door CTRL & C, of een reboot. - mosquitto_sub -v -h localhost -p 1883 -t ‘#’
Door dit commando te runnen, zou je de MQTT boodschappen moeten zien passeren.
Stoppen doe je door CTRL & C, of een reboot.
Data
De data wordt ahv mqtt doorgestuurd naar een domoticaserver. In mijn geval is dit openHAB. Aan de hand van deze waarden kan je dan netjes de historiek zien van je waterverbruik. Maar ook allerlei zaken triggeren. Denk maar bv alarmering bij openstaande kranen. Of automatisch sluiten van zaken na x-aantal liter water, ik denk dan aan de moestuin, borders en zelfs gras.
Zo kan je netjes opvolgen wanneer, hoeveel en hoelang er water stroomde:
En kan je aan hand van een paar simpele berekeningen netjes zien hoeveel regen- en/of stadwater verbruikt. Altijd goed om te weten wat je bespaart, of waar je nog zou kunnen besparen.