Op zoek naar ondersteuning? Kom gratis bij onze eigen Discord-server voor hulp en assistentie!

Watermeter uitlezen in Home Assistant met Esphome
De meterstanden van stroom en gas kan ik eenvoudig naar Home Assistant halen door de slimme meter te koppelen aan Home Assistant via de p1 kabel of andere plugins.
Het volgende idee was: Hoe kan ik de watermeter uitlezen in Home Assistant deze is nog niet slim zoals de elektriciteit en gas meter, dit ooit wel werkend gehad met domoticz maar nu niet meer. Als je onderstaande stappen volgt is dat eenvoudig te doen.
Kosten? een euro of 10 en een paar uurtjes vrije tijd!
Je moet al wel wat kennis hebben van Home Assistant & ESPhome dan is dit wel te doen.
03-11-2022
Ik heb de s0tool ontwikkeld en heb hier wat informatie over geplaats op
https://www.huizebruin.nl/home-assistant/wat-is-de-s0tool/
Tevens is hij nu als complete set inclusief behuizing en npn sensor te bestellen.
Zie hierboven in de shop voor de mogelijkheden.
Benodigdheden:
- Wemos D1 mini ep8266 of deze.
- Home assistant al werkend
- Esphome al werkend
- 10K weerstand (100 stuks aliexpress) of (uit NL 10stuks of 100stuks)
- NPN sensor (Deze gebruik ik zelf ook en werkt hier perfect) of een goedkopere China of uit Nederland
Zorg ervoor dat het sensoren voor 5V zijn niet 6V of hoger!!
Hieronder zijn opties :- Dupont kabels/connectors kan maar hoeft niet Nederland of China
- Protoboard voor op de wemos d1 mini zodat je een klein torentje maakt Nederland of China
- Soldeerbordjes China of Nederland
Het idee is vrij simpel:
Op de watermeter zit een draaischijfje die bij iedere liter water éénmaal rond draait. Op dat draaischijfje zit een half maantje van metaal. De inductieve NPN sensor wordt boven het draaischijfje bevestigd en iedere keer als er een rondje gedraaid is wordt er een signaal naar de wemos gestuurd dat er één liter water verbruikt is. En deze geeft dit weer door aan Home Assistent.

De NPN sensor heeft 3 draden (bruin/zwart/blauw). Het beste kunt je dupont female connectors aan de 3 draden maken en dan een weerstand er over heen.
Ik heb dit zelf niet gedaan maar heb 2 headers op een eximenteer print gesoldeerd plus weerstanden en connectoren. Dit printje gebruik ik zelf om de watermeter & S0 zonnepanelen te meten, bij mij zitten er 2 weerstanden op omdat hij ook de S0 kwh teller functie ook op zich neemt.
Je zou dit ook kunnen kopen zodat je niet groter formaat hebt maar alleen iets hoger namelijk een Protoboard voor op de wemos d1 mini zodat je een klein torentje maakt Nederland of China.

De blauw draad moet op een GROUND-pin ( pin G (gnd)) aangesloten worden, de zwarte draad op een GPIO ( op D2) en de bruine draad op een 5V-pin (5v) en tussen die 2 zet je de 10K ohm weerstand deze zorgt ervoor dat de ingang niet gaat zweven en daardoor valse metingen gaat doen. Zodra de NPN sensor op de wemos d1 mini aangesloten is hou je het blauwe uiteinde tegen een stukje metaal (bv. schroevendraaier) aan nu zal het ledje bovenop moeten gaan oplichten.
Mocht je de watermeter sensor op D2 hebben aangesoten kan je hem ook programeren via deze pagina selecteer je de watermeter install. https://huizebruin.github.io/s0tool/

Als je alles goed aangesloten hebt moet de led bovenop de sensor gaan branden. Indien dat het geval is hou je de sensor boven het draaischijfje met het halve maantje (van metaal). Ook nu moet de led op de sensor branden, zodra het metalen gedeelte van het draaischijfje voor de helft onder de sensor zit.

Zodra de NPN sensor het draaischijf goed detecteert is het tijd om de NPN sensor definitief op de watermeter de plaatsen. In eerste instantie zat ik te denken hoe ik een beugeltje ergens aan vast kon maken, heb ik een metalen strip geplaatst en deze vast gezet met Tiewrap aan de watermeter en daar heb ik een beugel aan vast gezet welke je voor installatie buis gebruikt, Daar heb ik de npn sensor in gezet zodat ik wat meer speling vanaf de zijkant heb zodat de sensor dus NIET precies boven het draaiende schijfje met een metalen halve maantje.
Ik lees veel dat mensen geen weerstand gebruiken en vragen daarna waarom?
Dit is nodig om ervoor te zorgen dat je digitale ingang of 0v (0 digitaal) of 5v (1 digitaal) binnen krijgt.
Zo zorg je ervoor dat de ingang niet gaat zweven. Door de kans op zweven kan je een plus extra binnen krijgen.Mooie uitleg hierover vind je o.a.
“Pull-Down weerstand – Arduino” https://oscarromero-arduino.weebly.com/pull-down-weerstand.html
Of
“Pull-up resistor – Wikipedia” https://en.m.wikipedia.org/wiki/Pull-up_resistor
Ik neem aan dat je Esphome al werkend hebt op je Home Assistant server.
dan maak je een nieuwe project aan door op het groene cirkel met de + erin die aan je rechterkant staat bij Esphome, aan en dan gebruik je de instellingen die hier onder staan als aanvulling.
Pak daar wel in de wizard direct de wemos d1 mini in de lijst en je eigen wifi ssid en wachtwoord!!
24-05-2021 20:00 update van de code geplaatst, van puls_counter omgezet naar puls_meter voor betere meting en voor ESPhome versie 1.17 en daarboven.
28-05-2021 22:12 update gedaan met de code.
17-07-2022 update naar de v22.07.13 code (github)
25-07-2022 update naar de v22.07.14 code (github)
29-10-2022 github code zo staan dat deze ook werkt met de Energie dashboard toevoeging van Home assistant v2022.11.x.
Code is al behoorlijk veranderd dan welke hier staat.
31-12-2022 code klaargemaakt zoal hij ook draait op de S0tool.
Hij is ook via deze pagina te flashen en dan selecteer je de watermeter install. https://huizebruin.github.io/s0tool/
01-01-2024 code aangepast voor ESPHome 2023.12.x
ESPHome code S0tool
# Delen en bewerken mag maar laat deze eerste regels staan.
# Bron : https://www.huizebruin.nl
# Bron File : https://github.com/huizebruin/s0tool/
# © Huizebruin.nl
substitutions:
name: s0tool-watermeter
vdate: "v24.1.34"
date: "01-01-2024"
device_description: ${name} gemaakt door huizebruin.nl versie ${vdate} - ${date}.
esphome:
name: ${name}
comment: '${device_description}'
project:
name: huizebruin.${name}
version: "${vdate}"
platform: esp8266
board: d1_mini
esp8266_restore_from_flash: true
#------------------------##------------------------##------------------------##------------------------#
wifi:
ssid: !secret ssid
password: !secret password
# ⬇ Hieronder niets veranderen tenzij je het overal goed aanpast ⬇ #
# ⬇ Schakel fallback-hotspot (captive portal) in voor het geval de wifi-verbinding mislukt ⬇ #
ap:
ssid: "${name}"
ap_timeout: 15s
web_server:
port: 80
captive_portal:
# ⬇ Enable logging ⬇ #
logger:
level: INFO
esp8266_store_log_strings_in_flash: false
# # ⬇ Enable Home Assistant API ⬇ #
api:
services:
- service: meterstand_water
variables:
meter_value: float
then:
- globals.set:
id: initial_water_usage
value: !lambda "return ( meter_value - (id(total_water_pulses)) * atof(id(Select_pulse_water).state.c_str()) ) ;"
- globals.set:
id: total_water_pulses
value: "10"
globals:
- id: initial_water_usage
type: float
restore_value: yes
initial_value: '010'
- id: total_water_pulses
type: int
restore_value: yes
ota:
safe_mode: true
reboot_timeout: 10min
num_attempts: 5
# ⬇ Enable time component voor reset elke nacht ⬇ #
time:
- platform: homeassistant
id: time_homeassistant
on_time_sync:
- component.update: S0tool_uptime_timestamp
select:
# ⬇ water per m3 rate ⬇ #
- platform: template
name: "Pulsrate water per m3"
id: Select_pulse_water
optimistic: true
options:
- "0.0001"
- "0.0005"
- "0.001"
- "0.01"
- "0.1"
initial_option: "0.001"
restore_value: yes
on_value:
then:
- logger.log:
format: "Chosen option: %s "
args: ["x.c_str()"]
#------------------------# Watermeter #------------------------#
binary_sensor:
- platform: gpio
id: internal_pulse_counter
name: Pulse Sensor Water
pin:
number: D2
allow_other_uses: true
inverted: true
mode:
input: true
on_press:
- then:
lambda: id(total_water_pulses) += 1;
sensor:
#------------------------# Watermeter #------------------------#
# ⬇ watermeter pulsen ⬇ #
- platform: pulse_counter
pin:
number: D2
allow_other_uses: true
id: watermeter_pulse
name: "watermeter pulse"
state_class: measurement
unit_of_measurement: "l/min"
accuracy_decimals: 1
icon: "mdi:water-pump"
filters:
lambda: return x * atof(id(Select_pulse_water).state.c_str()) * 1000;
# ⬇ Totaal watermeter ⬇ #
total:
id: sensor_pulse_meter_total
name: "watermeter Totaal"
unit_of_measurement: "m³"
state_class: total_increasing
device_class: water
accuracy_decimals: 3
filters:
lambda: return x * atof(id(Select_pulse_water).state.c_str());
# ⬇ Watermeter stand bij benadering ⬇ #
- platform: template
id: watermeter_total
name: "watermeter stand"
state_class: "total_increasing"
icon: mdi:water
unit_of_measurement: "m³"
accuracy_decimals: 3
lambda: return id(initial_water_usage) + (id(total_water_pulses) * atof(id(Select_pulse_water).state.c_str()));
# ⬇ Waterpulses only web interface for debugging ⬇ #
- platform: template
id: watermeter_pulses
name: "watermeter pulses totaal"
state_class: "total_increasing"
accuracy_decimals: 0
lambda: return id(total_water_pulses);
internal: True
#------------------------# sensoren #------------------------#
- platform: uptime
id: S0tool_uptime
- platform: template
id: S0tool_uptime_timestamp
name: "${name} online sinds"
device_class: "timestamp"
accuracy_decimals: 0
update_interval: never
icon: 'mdi:clock-start'
lambda: |-
static float timestamp = (
id(time_homeassistant).utcnow().timestamp - id(S0tool_uptime).state
);
return timestamp;
# ⬇ versie verbinding informatie sensoren voor in ha ⬇ #
# WiFi signal
- platform: wifi_signal
name: "${name} - WiFi Signal"
update_interval: 120s
text_sensor:
- platform: template
name: "s0tool_versie"
id: s0tool_versie
icon: 'mdi:alpha-v-circle-outline'
update_interval: 6h
lambda: |-
return {"${vdate}"};
- platform: wifi_info
ip_address:
name: "${name} IP-adres"
id: s0tool_ip_adres
icon: mdi:ip-network
ssid:
name: "${name} Netwerk"
id: s0tool_netwerk
icon: mdi:access-point-network
mac_address:
name: "${name} Mac-adres"
id: s0tool_mac_adres
icon: mdi:folder-key-network-outline
# restart button #
button:
- platform: restart
name: "${name} Restart device"
# Factory Reset Switch from ESPHome v2022.09
- platform: factory_reset
name: Restart with Factory Default Settings
Daarna sla je hem op en kan je hem flashen door rechtstreeks aan je Home Assistant server een usb-kabel te verbinden of je complimeerd hem en flasht hem via je pc of laptop met de esphome flash tool.
Zodra hij geflasht is krijg je een melding op je dashboard dat er een nieuw apparaat is gevonden deze voeg je toe.
03-11-2022 code klaargemaakt zoal hij ook draait op de S0tool.
Hij is ook via deze pagina te flashen en dan selecteer je de watermeter install. https://huizebruin.github.io/s0tool/
Vanaf nu kun je het waterverbruik in Home Assistent monitoren!
en nu ga je naar je configuration.yaml file en daar voeg je onderstaande code toe.
Heb je de slimme meter al gekoppeld dan kan je en daar de utility_meter gedeelte al hebben staan kan je de eerste regel weg laten en de rest plaatsen onder de slimme meter utility_meter data.
Utility meter code
#utility_meter:
### watermeter S0 meter
waterverbruik_per_kwartier:
source: sensor.watermeter_totaal
cycle: quarter-hourly
waterverbruik_per_uur:
source: sensor.watermeter_totaal
cycle: hourly
waterverbruik_per_dag:
source: sensor.watermeter_totaal
cycle: daily
waterverbruik_per_week:
source: sensor.watermeter_totaal
cycle: weekly
waterverbruik_per_maand:
source: sensor.watermeter_totaal
cycle: monthly
waterverbruik_per_kwartaal:
source: sensor.watermeter_totaal
cycle: quarterly
waterverbruik_per_jaar:
source: sensor.watermeter_totaal
cycle: yearly
water_per_altijd:
source: sensor.watermeter_totaal
Dashboard code
Daarna doe je een reboot nadat je via — instellingen — serverbeheer — Valideer configuratie hebt gedaan
dit moet je elke keer doen bij wijzigingen in je configuration.yaml file.
Nu kun je meerdere sensoren toevoegen aan je dashboard
- waterverbruik_per_kwartier
- waterverbruik_per_uur
- waterverbruik_per_dag
- waterverbruik_per_week
- waterverbruik_per_maand
- waterverbruik_per_kwartaal
- waterverbruik_per_jaar
- waterverbruik_per_altijd

Meterstand invullen in Home Assistant.
Ga naar Ontwikkelhulpmiddelen ( het hamer symbool) in de linker Zij balk
Ga nu naar naar Service
Ga op de balk staan waar nu “Alarm_control****” staat.
Watermeter meterstand
En typ daar ” Watermeter ” in Nu kan je op het veld eronder de meter_value invullen.
Vul daar alleen het getal in voor de comma ( of sommige meters de rode vakken)
zodra je daar wat hebt ingevuld zal er een knop gaan oplichten met de naam service aanroepen .
Druk hierop en nu wordt de stand ingevoerd en zal hij ook juist zichtbaar zijn op je Dashboard.
Kwhmeter meterstand
En typ daar ” KWHmeter ” in Nu kan je op het veld eronder de meter_value invullen.
Vul daar alleen het getal in voor de comma ( of sommige meters de rode vakken)
zodra je daar wat hebt ingevuld zal er een knop gaan oplichten met de naam service aanroepen .
Druk hierop en nu wordt de stand ingevoerd en zal hij ook juist zichtbaar zijn op je Dashboard.
Nutsmeter meterstand kwh/water
En typ daar ” Nutsmeter: Calibrate ” in
En dan bij Doelen welke meter je wilt aanpassen
Nu kan je op het veld eronder de value invullen.
Vul daar alleen het getal in voor de comma ( of sommige meters de rode vakken)
zodra je daar wat hebt ingevuld zal er een knop gaan oplichten met de naam service aanroepen .
Druk hierop en nu wordt de stand ingevoerd en zal hij ook juist zichtbaar zijn op je Dashboard.
Laatste versie van de code staat op Github
Via onderstaande link komt u op de Github pagina van de S0tool, hier kunt u altijd de meest recente versie vinden van de door mij geschreven code.
https://github.com/huizebruin/s0tool en om hem in 1x te flashen op de wemos d1 mini esp8266 kan je via deze pagina doen, voordeel dan is dat je hem kunt updaten met de laatste versie die ook op GitHub staat. https://huizebruin.github.io/s0tool/
Indien u opmerkingen of verbeteringen wilt aandragen over de code kunt u deze altijd doorgeven.
Watermeter op het energy dashboard.
Vanaf Home Assistant versie 2022.11.X is het mogelijk om met de S0tool vanaf versie v22.10.20 met de watermeter toe te voegen aan het energie dashboard.
Energie dashboard met watermeter toegevoegd vanaf V2022.11.X

Watermeter toevoegen aan het dashboard:
- Instellingen
- Dashboard
- Energie dashboard
- Wacht ongeveer een half uurtje en dan zal je de volgende stappen kunnen doen.
- waterverbruik en zoek dan : Watermeter Totaal
- Nu kan je naar je energie dashboard gaan en daar is nu je watermeter aan gekoppeld. Deze wordt elk uur geüpdatet.
De sensoren die je nu hebt vanaf S0tool versie v22.10.21
– huizebruin

Updaten van de S0tool
Ga naar je ESPHome dashboard
- klik op de 3 stippen
- klik op clean build files
- klik op install
Nu zal hij de laatste versie binnen gaan halen, en daarna bouwen, en nadat dat klaar is zou je een versie moeten zien welke boven de v22.10.20 is.
Wil dit niet moet je heb programmeren via de GitHub pagina https://huizebruin.github.io/s0tool/
Het beste is de standaard versie te gaan pakken, zodat je up to date blijft, en nadat je dat gedaan hebt kan je de S0tool wel via bovenstaande gedeelte blijven updaten.
Testen van je installatie
Als je de sensor hebt toegevoegd en alles hebt gedaan moet je gaan testen.
Ik heb dit gedaan met maatbekers van 0.5L en 1L nu moet je gaan kijken wat de sensor voor waarde geeft.
Ik hield zelf de 15min in de gaten wat mijn verbruik was.
Mocht die niet overeen komen moet je deze lijn de cijfers wat veranderen en daarna OTA updaten en weer meten.
ik heb nog niet kunnen vinden waarom de cijfers zo bij mij kloppen terwijl het bij anderen weer anders is.
Heb je een goede situatie gecreëerd dan heb je nu een mooie tool om je waterverbruik in de gaten te houden. staar je niet blind op de waardes, dit is een tool en je zult altijd nog je watermeter cijfers door moeten geven aan je leverancier.
Voor eventuele updates komen automatische richting mijn github.
hier staat nog veel meer informatie op over Home Assistant
https://github.com/huizebruin/s0tool
NPN sensor houders
3d mallen
Welke zouden passen met de npn sensor .
- Sensus 620 mount for LJ18A3-8-Z/BX-5V proximity sensor
- Sensor Holder Watermeter Elster V200 Type 8212 / 18 MM Sensor
- Elster V200 Watermeter 18MM Sensor
- LB18A3-8-Z/BX-5V SENSOR HOLDER FOR KIWA AQUADIS WATER METER
- Sensor holder for Itron Flodis watermeter
- Watermeter Sensor Mount for LJ12A3
- Nieuw 02-01-2024
- LJ18A3-8Z/BX proximity sensor holder for Sensus 620
- LJ18A3-8Z/BX voor op de Maddalena MVM Belgium (Watergroep)
Zelfbouw systeem
DIY Beugel voor watermeter sensor.
Deze kreeg ik via mail toegestuurd door Kees van Os, en mocht hem delen met jullie .
Benodigdheden
- Meubel hoek 50 x 50 mm
- Meubelhoek 30 x 30 mm
- 1 x M4 bout / moer / ring
- Diverse tiewraps
Kort meubelhoek 50 mm aan 1 kant in tot vlak voor het gat .
Kort meubelhoek 30 mm aan 1 kant in zodat deze niet uitsteekt.
Bevestig beide aan los aan elkaar met M4 bout / moer
Zet de beide moeren op de sensor zo wijd dat de meubelhoek er precies tussen valt.
Zet sensor nu vast met tiewraps op de kleine meubelhoek.
Lijn geheel grof uit op de watermeter en zet vast met tiewraps .
Stel sensor fijn af boven het wieletje met de M4 bout en draai deze vast ( sleutel 7 )
LET OP SENSOR MOET SLECHTS DE HELFT VAN DE CIRKEL RAKEN ( zie foto , niet centreren op cirkel)
Heb je ook een mal voor een andere meter.
En wil je hem delen ? neem dan contact op
of reageer bij de wiki over watermeter. https://www.huizebruin.nl/wiki/npn-houders/
Dan zet ik hem erbij in de lijst die overal te zien is in de verschillende artikelen hier op Huizebruin.nl
Veel plezier ermee.
Mocht je aanvullingen hebben deel ze hieronder of via mail.
Spelfouten, taalfouten of inhoudelijke fouten ontdekt?
Stuur dan een mailtje naar de auteur van dit artikel!
Tevreden met deze website?
Als je dit artikel met interesse hebt gelezen klik dan op Vind ik Leuk .
Voor u een kleine moeite voor mij een compliment.
Alvast Bedankt.
Als je feedback, tips of iets anders hebt,
Aarzel dan niet om hieronder een reactie achter te laten.
Ontdek meer van Huizebruin.nl
Abonneer je om de nieuwste berichten naar je e-mail te laten verzenden.






Ik ben er even mee bezig geweest. De sensor is besteld bij ali. Echter de sensor lijkt niet goed te werken. Hij (of zij) lijkt enorm traag. Duurt soms een paar seconden voor hij van status veranderd als hij iets van metaal heeft gezien (laag naar hoog) . Is het gewoon slecht (2 stuks)? of doe ik misschien wat verkeerd?
Ik heb hem precies zoals hier vermeld aangesloten, ook zonder ESP is hij traag
Op deze manier kan hij natuurlijk nooit pulsen tellen…
Hallo Laurens,
Heb je wel de juiste sensor aangeschaft en een goede wemos en een goede voeding 5v 1A ?
Hier draait hij al heel wat jaren zonder enige moeite, en er zijn ook heel veel die de s0tool in gebruik hebben.
bleek overigens een defecte sensor. Nieuwe (dezelfde) besteld, nu werkt het
Je vermeldt het toepassen van een weerstand en de reden waarvoor die nodig is. Dat is duidelijk, maar deze specifieke sensor LJ18A3-8Z/BX heeft deze al ingebouwd. Maakt het nog weer even eenvoudiger.
https://s.click.aliexpress.com/e/_DFIeI6d
Hallo Eugene,
Bedankt voor je reactie.
Bij deze zit geen weerstand ingebouwd, het plaatje wat je ziet op de sensor staat een icoon welke aangeeft voor de npn sensor intern.
Hallo, misschien een tip om de links die je hebt staan in je website te laten openen in een nieuw tabblad (edge) en niet in het zelfde zoals het nu is.