Het is weer zomer en dus gaat Nederland massaal zwembadjes vullen, de planten sproeien en vaker douchen. Ik vroeg mij af, hoeveel verbruik je dan eigenlijk? Maar ook in de andere seizoenen is het interessant om te weten wat je waterverbruik is. Hoeveel verbruikt je wasmachine en je vaatwasser, hoeveel water gebruik je tijdens het douchen? Meten is weten en daarom gaan we de watermeter toevoegen aan onze smarthome domoticasoftware Home Assistant.

Een watermeter bevind zich vaak in de meterkast of kruipruimte. Waterbeheerbedrijven zoals Vitens of Oasen monteren vaak watermeters van het merk Itron. Zo ook die van mij, helaas zijn de watermeters nog niet smart en missen ze dus een ‘slimme’ aansluiting zoals P1 of S0 aansluiting (pulsuitgang) zoals bij slimme meters, zonnepanelen of tussenmeters. We zullen het dus anders aan moeten pakken om de watermeter uit te lezen.

Itron KIWA TU1M15
Mijn watermeter: Itron KIWA TU1M15

Home Assistant of Domoticz

Dit artikel is er ook voor Domoticz gebruikers! Lees rustig verder in Watermeter uitlezen met Domoticz als je Domoticz als smarthome software gebruikt en je waterverbruik inzichtelijk wilt krijgen.

Met onderstaand stappenplan voeg je eenvoudig je watermeter toe aan Home Assistant.

  1. Weet waar je watermeter zit

    Zorg dat je weet waar je watermeter zich bevind. Meestal is het de meterkast, je hebt er ook WiFi bereik en netstroom of USB 5v nodig.

  2. Knutsel de pulsteller in elkaar met de nabijheidssensor

    Maak een WiFi pulsteller op basis van een Wemos D1 mini/ESP8266 met nabijheidssensor en esphome

  3. Configureer Home Assistant

    Esphome maakt de sensoren aan in Home Assistant

  4. Analyseer je waterverbruik

    De gegevens komen binnen terwijl je water verbruikt. Nu heb je inzicht in je waterverbruik en start met besparen!

Zelf een pulsgever voor de watermeter maken met een Wemos D1 mini

In mijn huis is de Aquadis Itron TU1M15, geïnstalleerd. De watermeter bevat een rood ronddraaiend metertje met een stalen plaatje erop. Bij iedere liter water die je verbruikt, draait het metertje 1x rond. Wanneer je dus het aantal rondjes telt wat het plaatje draait, kun je je waterverbruik meten. Nu je dit weet, is het eigenlijk niet zo moeilijk meer, want we gaan gewoon pulsen tellen. Daar zijn legio voorbeelden en oplossingen voor binnen de Arduino wereld. Ik heb er twee geprobeerd, een optische sensor en de nabijheidssensor. Lees in mijn artikel Watermeter uitlezen met Domoticz meer over mijn bevindingen van beide oplossingen. Voor de watermeter integratie met Home Assistant ga ik in dit artikel verder met de beste oplossing; de nabijheidssensor.

Waterverbruik meten met een nabijheidssensor/proximity sensor

De beste oplossing heb ik gevonden in een “nabijheidssensor” ofwel een “proximity sensor”. Deze sensor geeft een puls af wanneer er metaal dichtbij het meetoppervlak komt. Het metalen plaatje op de rode wijzer van de watermeter is groot en dichtbij genoeg om waar te nemen door de sensor. Wanneer er detectie is, gaat de rode led op de sensor aan. Het betreft een LJ12A3-4-Z-BX. In de reacties onder het artikel Watermeter uitlezen met Domoticz hebben lezers gemeld dat ook andere type proximitysensors werken.

LJ12A3-4-Z-BX nabijheidssensor
LJ12A3-4-Z-BX nabijheidssensor

De werking van een nabijheidssensor/proximity sensor

De sensor werkt op 6 tot 36V DC. Omdat die spanning niet uit de Wemos D1 mini of een USB poort komt, moeten we die ook zien te maken. Dat kan door bijvoorbeeld een 12VDC adapter te gebruiken, of door een spanningsconverter toe te passen.

De nabijheidssensor zelf trekt 300mA, dus de adapter of spanningsconverter moet dat minimaal kunnen leveren. Omdat ik geen plek meer had voor een extra stekker in het stopcontact voor een adapter en een ‘sterke’ USB poort beschikbaar had, heb ik gebruik gemaakt van een MT3608 spanningsconverter. Deze spanningsconverter kan maximaal 2A leveren.

Ik ga het als volgt aansluiten:

230VAC   ->    Telefoonlader 5V 2A      ->     Spanningsconverter 5v/12vDC  & Wemos D1 mini      ->        Sensor

Bij een adapter kun je het volgende doen:

230VAC    ->  Adapter  …VDC ..A   ->    Sensor & Spanningsconverter …V/5V DC  ->    Wemos D1 mini

TIP

In de reacties onder het artikel Watermeter uitlezen met Domoticz hebben lezers gemeld dat er ook een 5V nabijheidssensor is. Dat betekend dat je het spanningsconverterprintje niet meer nodig hebt.

MT3608 spanningsconverter voor Arduino
MT3608 spanningsconverter voor Arduino

Aansluitschema van de nabijheidssensor op Wemos D1 mini

De nabijheidssensor, Wemos D1 mini en de spanningsconverter sluit ik aan op een USB poort van een apparaat wat in de meterkast hangt. Vervolgens voeg je alle GND draden van alle componenten samen. Tussen de 5V van de Wemos en zwarte kabel van de sensor plaatsen we een 10K ohm weerstand. De datadraad van de sensor kun je op een willekeurige GPIO pin aansluiten van de Wemos. Onthoud dit pinnummer wel, want die heb je straks nodig in de esphome software. Sluit als laatste de blauwe en bruine draad van de nabijheidssensor aan op de 12v aansluiting van de spanningsconverter.

Aansluitschema watermeter
Aansluitschema watermeter

Wanneer je alles goed aangesloten hebt en je houd de sensor tegen een stuk metaal, zie je de led op de sensor aan gaan. Dat betekend dat het werkt!

Sensor en Wemos D1 mini bevestigen op de watermeter

De nabijheidssensor op de watermeter bevestigen is nog wel een uitdaging. Een voorwaarde voor mij was dat ik altijd de waterstand moet kunnen lezen en dat ik de meter niet mag beschadigen. Met wat knutselen met plastic, hout en stalen beugels kom je een eind.

Zelf maken moeilijk?

Ben je niet zo handig, dan bestaat er ook een Impulsgever die je op de Itron Aquadis watermeter plaatst en kunt integreren in je domoticasysteem. Het apparaat is wel vrij prijzig, namelijk ongeveer 80 euro en de leverbaarheid is lastig.

Pulssensor Cyble voor watermeters Itron
Pulssensor Cyble voor watermeters Itron

S0 tool

Collega blogger Wobbe van huizebruin.nl wees mij erop dat hij een kant en klare software en hardware oplossing heeft ontwikkeld op basis van esphome. Het is vergelijkbaar met wat we in dit artikel gaan maken. Wil je het checken? Zie :

https://www.huizebruin.nl/product/s0tool/

ESPhome en Home Assistant

De hardware werkt. We gaan over naar de software. We gaan code via esphome op de Wemos D1 mini flashen. Heb je nog nooit met esphome gewerkt? Installeer dan eerst de esphome addon.

Klik op New Device en geef je device een naam. Geef het bijvoorbeeld de naam Watermeter. Plak nu onderstaande code in het venster:

# voorbeeld: https://github.com/hugokernel/esphome-water-meter
substitutions:
  name: watermeter
  friendly_name: "Watermeter"
  
esphome:
  name: watermeter
  platform: ESP8266
  board: d1_mini
  on_boot:
    priority: -10
    then:
    - script.execute: publish_states
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
  password: "59bfd5695775faaa05ef193e378d4cc2"
wifi:
  ssid: "<<WIFI SSID>>"
  password: "<<WIFI PASSWORD>>"
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Watermeter Fallback Hotspot"
    password: "4Ejkhjkhuixa4M"
captive_portal:
script:
  - id: reset_main_counter
    then:
      - lambda: |-
          id(main_counter_pulses) = 0;
          id(water_main_consumption).publish_state(id(main_counter_pulses));
  - id: reset_secondary_counter
    then:
      - lambda: |-
          id(secondary_counter_pulses) = 0;
          id(water_secondary_consumption).publish_state(id(secondary_counter_pulses));
  - id: publish_states
    then:
      - lambda: |-
          id(water_main_consumption).publish_state(id(main_counter_pulses));
          id(water_secondary_consumption).publish_state(id(secondary_counter_pulses));
          id(water_daily_consumption).publish_state(id(daily_counter_pulses));
          id(water_weekly_consumption).publish_state(id(weekly_counter_pulses));
          id(water_monthly_consumption).publish_state(id(monthly_counter_pulses));
          id(water_yearly_consumption).publish_state(id(yearly_counter_pulses));
          id(current_water_consumption).publish_state(id(event_quantity));
  
time:
  - platform: sntp
    on_time:
      - seconds: 0
        minutes: 0
        hours: 0
        then:
          - globals.set:
              id: daily_counter_pulses
              value: '0'
          - lambda: id(water_daily_consumption).publish_state(id(daily_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_week: MON
        then:
          - globals.set:
              id: weekly_counter_pulses
              value: '0'
          - lambda: id(water_weekly_consumption).publish_state(id(weekly_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_month: 1
        then:
          - globals.set:
              id: monthly_counter_pulses
              value: '0'
          - lambda: id(water_monthly_consumption).publish_state(id(monthly_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_month: 1
        months: JAN
        then:
          - globals.set:
              id: yearly_counter_pulses
              value: '0'
          - lambda: id(water_yearly_consumption).publish_state(id(yearly_counter_pulses));
sensor:
  - platform: pulse_counter
    id: water_pulse_counter
    pin: 4
    name: "${friendly_name} water consumption" 
    update_interval: 2sec
    internal_filter: 10us
    unit_of_measurement: "L/min"
    accuracy_decimals: 0
    icon: "mdi:water"
    filters:
      # Divide by 60
      - multiply: 0.0167
      - lambda: return abs(x);
  - platform: template
    id: water_main_consumption
    name: "${friendly_name} main water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: water_secondary_consumption
    name: "${friendly_name} secondary water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: water_daily_consumption
    name: "${friendly_name} daily water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: water_weekly_consumption
    name: "${friendly_name} weekly water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: water_monthly_consumption
    name: "${friendly_name} monthly water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: water_yearly_consumption
    name: "${friendly_name} yearly water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: current_water_consumption
    name: "${friendly_name} current water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  - platform: template
    id: last_water_consumption
    name: "${friendly_name} last water consumption"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
  
binary_sensor:
  # Nabijheidssensor
  - platform: gpio
    id: water_pulse
    pin: 4
    internal: true
    filters:
       - delayed_on_off: 50ms
       - lambda: |-
          id(main_counter_pulses) += x;
          id(secondary_counter_pulses) += x;
          id(daily_counter_pulses) += x;
          id(weekly_counter_pulses) += x;
          id(monthly_counter_pulses) += x;
          id(yearly_counter_pulses) += x;
          id(event_quantity) += x;
          return x;
    on_state:
       - script.execute: publish_states
       
switch:
  - platform: template
    name: "${friendly_name} reset main counter button"
    icon: "mdi:restart"
    turn_on_action:
      - script.execute: reset_main_counter
  - platform: template
    name: "${friendly_name} reset secondary counter button"
    icon: "mdi:restart"
    turn_on_action:
      - script.execute: reset_secondary_counter
  - platform: restart
    name: "${friendly_name} restart"
interval:
  # Save the last consumption
  #
  # An event is published when a water flow (>= 1L / 15 seconds) is
  # detected and followed by a stop of consumption for a defined time.
  - interval: 15sec
    then:
      - lambda: |-
          if (id(event_quantity) != id(last_event_quantity)) {
            // Water continues to flow
            // Reset event counter
            id(event_counter) = 0;
          } else {
            // Water no longer flows
            if (id(event_quantity)) {
              // 4 * 15 * 5 = 5min
              if (id(event_counter) < 4 * 5) {
                // Timeout is not reaches
                id(event_counter)++;
              } else {
                  // Timeout is reaches
                  id(last_water_consumption).publish_state(id(event_quantity));
                  // Send event to Home Assistant
                  api::HomeAssistantServiceCallAction<> *api;
                  api = new api::HomeAssistantServiceCallAction<>(api_apiserver, true);
                  // Event id length limit is 32 characters
                  api->set_service("esphome.last_consumption_changes");
                  api->play();
                  id(event_quantity) = 0;
              }
            }
          }
          id(last_event_quantity) = id(event_quantity);
  # Track the current consumption
  - interval: 2sec
    then:
      - lambda: |-
          if (id(event_quantity) != id(current_event_quantity)) {
            id(current_water_consumption).publish_state(id(event_quantity));
          }
          id(current_event_quantity) = id(event_quantity);
globals:
 - id: main_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: secondary_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: daily_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: weekly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: monthly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: yearly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: event_quantity
   type: int
   restore_value: no
   initial_value: '0'
 - id: last_event_quantity
   type: int
   restore_value: no
   initial_value: '0'
 - id: event_counter
   type: int
   restore_value: no
   initial_value: '0'
 - id: current_event_quantity
   type: int
   restore_value: no
   initial_value: '0'
 - id: higher_resistance
   type: float
   restore_value: yes
   initial_value: '0'

Pas de volgende waarden aan naar je eigen situatie: Wifi SSID, Wifi Password en de pin van de sensor onder binairy_sensor.

Wanneer je een recente versie van esphome gebruikt, namelijk 2023.12 of nieuwer moet je nog een extra toevoeging doen omdat pins niet meer dubbel gebruikt mogen worden. Lezer Remco heeft in de reacties uitgelegd wat je moet doen.

Het waterverbruik van vandaag. Om 00:00 reset de dagteller.
Het waterverbruik van vandaag. Om 00:00 reset de dagteller.

Deze code maakt een aantal sensors aan die je inzicht geven in je waterverbruik. Er is een ‘huidig verbruik’ teller, welke het aantal liters van de huidige tapactie telt. Het dag, week, maand en jaar verbruik kun je inzichtelijk maken voor deze periodes met de specifieke sensors. Er is ook een tweede teller aanwezig die je kunt resetten voor je eigen bepaalde periode.

De sensoren die Home Assistant aanmaakt
De sensoren die Home Assistant aanmaakt

esphome watermeter code flashen naar Wemos D1 mini

Flash de code naar de Wemos D1 mini. Dit moet de eerste keer via een USB kabel tussen de Wemos en de PC waar je mee werkt, of de host machine van Home Assistant. Ikzelf maak de USB verbinding altijd op de PC waarmee ik werk dus klik ik op Plug into this computer.

esphome flash opties
esphome flash opties

De browser maakt verbinding met je COM poorten en vraagt welke COM poort je Wemos is. Klik op de juiste en het flashen begint.

Welke COM poort is je Wemos D1 mini?
Welke COM poort is je Wemos D1 mini?

Als je na het flashen nog aanpassingen wilt maken aan de code kan dat, en kun je de code draadloos op je Wemos D1 mini flashen. Kies dan voor Wirelessly in het keuze menu. Home Assistant maakt dan verbinding met de Wemos via WiFi en werkt de software OTA bij.

Watermeter toevoegen aan Energy Dashboard

Vanaf Home Assistant 2022.11 is het mogelijk om ook de watermeter toe te voegen aan het Energy dashboard. Dit dashboard geeft dan nu echt een compleet beeld van je Gas/Water/Licht verbruik.

De code uit dit artikel werkt nog niet met het Energy dashboard. Ik vermoed omdat de units in liters is in plaats van kuubs. Ik wilde snel aan de slag en heb besloten de code van S0 tool te gebruiken. Op de pagina van S0 tool kun je op install klikken waarna je door de installatie wordt geleid. De pulsen komen ook in S0 tool op D2 binnen dus dat was makkelijk.

Het werkt! Je watermeter is toegevoegd aan Home Assistant!

Nu je je waterverbruik inzichtelijk hebt in Home Assistant kun je onderzoeken welke apparaten en activiteiten veel water gebruiken. Misschien kun je hierop wel heel simpel besparen!

Je wasmachine en vaatwasser verbruiken vaak het meeste water maar ook stroom, naast de keukenkraan en douche. Je kunt goed inzicht krijgen met slimme stekkers. Met goedkope Hombli smart plugs uit de lokale bouwmarkt of Shelly smart plugs heb je dat zo geregeld. Zelfs op de Tuya apparaten flash je zo ESPHome!

Wil je meer inzicht in je energieverbruik via het Energy dashboard? Kijk dan eens naar Powercalc om verbruiksmetingen te doen ook bij apparaten die daar geen ondersteuning voor hebben.

Wist je dat het heel makkelijk is om een melding te krijgen als de wasmachine of vaatwasser klaar is? Je meet dat niet via het waterverbuik maar op een andere manier. Lees meer over notificaties krijgen van je normale wasmachine, droger of ander apparaat in Is de wasmachine klaar? notificatie.

Kom je er niet uit? Laat een reactie achter!

Wat vond je van dit artikel?

Geef hieronder je stem via de sterren. Laat weten wat je vindt van het artikel en stel je vragen in de reacties!

Wat vond je van deze blogpost?

Klik op een ster om een beoordeling te geven!

Gemiddelde score 4.6 / 5. Aantal stemmen: 17

Er heeft nog niemand gestemd. Wees de eerste, het kost niets en geen registratie!

Jammer dat de post niet behulpzaam was.

Laten we deze post verbeteren!

Wat zou er beter kunnen?

Door Wouter

48 gedachten over “Watermeter in Home Assistant met esphome”
  1. Hi Wouter, bedankt voor de uitgebreide uitleg! ik heb sinds gisteren succesvol een watermeter in homeassistant en gebruik daarbij de configuratie die je hierboven hebt gedeeld.
    ik ben ook al tegen het eerste probleem aangelopen; als het meetwiel half onder de sensor stil komt te staan gaat de sensor knipperen en wordt er een absurd hoog aantal pulses geregistreerd; heb je wellicht een tip om dit in de software eruit te filteren?

    1. Beste Laurens,

      Leuk dat je aan de slag bent gegaan! Ik weet van het probleem wat je omschrijft. Ik heb er zelf eigenlijk geen last van. Ik kan mij niet voorstellen dat het bij mij niet voorkomt. Toch zie ik geen pieken in mijn verbruik.

      Heeft het misschien te maken met de weerstand die je gebruikt? Anders wellicht de waarde van
      internal_filter: 10us verhogen?

      Succes en groet Wouter

  2. Dag Wouter
    Ik zou jouw programma willen gebruiken om mijn stookolieverbruik te monitoren
    De teller die ik bezit geeft echter 20 pulsen per liter , hoe kan ik dit aanpassen ?

    1. Hoi marnix,

      Dat kan! Volgens mij is het het eenvoudigst om in de code onder de filters van de binary sensor een multiply toevoegen.

      – multiply: 0.05

      0.05 = 1/20

      Alles blijft werken zoals nu alleen iedere puls wordt vermenigvuldigd met 0.05 waardoor na 20 pulsen de teller op 1 staat.

      Omdat je nu ook met decimalen werkt kun je de accuracy nog aanpassen naar 0.00

      Succes en groet Wouter

      1. Dag wouter
        binary_sensor blijkt geen filter multiply toe te staan
        de accuracy is aangepast naar 0.05 maar heeft geen effect in HA

        1. Hoi Marnix,

          Oh ja ik zie het. De code voor esphome is voor mij ook nog een beetje nieuw…

          Wat je ook kunt doen is in home assistant een template sensor maken die de waarde van de watermeter vermenigvuldigd met 0.05.

          De accuracy_decimals moet je aanpassen naar 2 zodat esphome snapt dat je 2 decimalen wilt. Maar als je de omrekening doet in home assistant zelf hoeft dat niet.

          Zoals gezegd esphome is voor mij ook wat nieuw.

          Groet Wouter

          1. Dag wouter,
            Dat werkt inderdaad prima , zodoende heb ik mijn eerste template gemaakt
            Is er een manier om de geschiedenis te verwijderen zodat ik met een propere meting kan herbeginnen ?
            Groetjes
            Marnix

  3. Bedankt voor je artikel! De watermeter is nu ook onderdeel van mijn home Assistant.
    Ik gebruik de sensor met 8 mm bereik en heb dat op een stukje triplex geschroefd. Daar zitten ook twee 3mm pinnen op gelijmd die precies in de gaten van de watermeter passen. Zo blijft alles netjes op z’n plek en kan ik het er zo weer afhalen.
    Heb je ook ergens een mogelijkheid om je huidige meterstand erbij te zetten?

    1. Beste Jan,

      Bedankt voor je reactie. Mooi dat het werkt. Je kunt nu ook de watermeter toevoegen aan het energy dashboard. Ik heb het artikel hierop wat aangepast. Door het gebruik van de S0 tool code kun je ook je watermeterstand invoeren. Win-win 😉

      Groet Wouter

  4. Is het al iemand gelukt om de watermeter aan het nieuwe energy dashboard van versie 2022.11 te koppelen? Het zou mooi zijn om deze gegevens ook in het overzicht te kunnen zien.

    1. Beste Jan-Willem,

      Ja het is mij gelukt. Ik heb de S0tool code van HuizeBruin op mijn Wemos geflashed en kon zo de watermeter toevoegen aan het energy dashboard. Via de link https://huizebruin.github.io/s0tool/ onder het kopje Installation staat de knop install for watermeter only. Sluit je Wemos aan op je USB poort van je PC en je wordt door de installatie heen geloosd. Hardwarematig heb ik niets aangepast aangezien de S0 tool software ook luistert op poort D2 naar de pulsen. Ik gebruik dus de code in mijn artikel nu niet meer. Er is in de code van HuizeBruin ook een mogelijkheid tot het ingeven van een meterstand. Nadeel is wel dat je nieuwe sensoren aanmaakt en dus de geschiedenis ‘verliest’.

      Je kunt ook een poging doen de bestaande code aan te passen, volgens mij is het niets meer dan de units van de lifetime sensor aan te passen naar m³.

      Groet Wouter

      1. Hoi Wouter,
        Goed om te horen. Ik ga dat nu ook proberen maar moet wel even de hardware aanpassen omdat ik D5 gebruik en ook nog een paar meer sensoren. Maar als het gelukt is laat ik het zeker even weten wat mijn ervaringen zijn…

  5. Hi Wouter,

    Dank voor deze oplossing hij werkt perfect!
    Ik heb hem overigens ook op het dashboard gekregen door het toevoegen van twee extra attributen op de water_main_consumption:

    – platform: template
    id: water_main_consumption
    name: “${friendly_name} main water consumption”
    unit_of_measurement: “L”
    accuracy_decimals: 0
    icon: “mdi:water”
    device_class: water
    state_class: total

    1. Voor Home Assistant is dit inderdaad het enige wat nodig is, de hele So tool is nergens voor nodig. Dank voor het delen Ferdinand.

      Een aanvulling op de code: als je een vast ip gebruikt werkt het stuk van
      time:
      – platform: sntp
      niet. Daardoor werken ook de resets niet. Dat kan je vervangen door
      time:
      – platform: homeassistant
      id: homeassistant_time
      zodat de tijd direct van Home Assistant wordt uitgelezen. Dat voorkomt uiteraard ook eventuele synchronisatieproblemen.

  6. Hi Wouter,
    ik heb de water meter (jouw versie) draaien op een HA. De uitlezing met een nabijheidssensor had ik al wat langer in gebruik op mijn watermeter. Werkt probleem loos eerst in Domoticz.
    Maar, hoe stop ik de meetuitlezing van de watermeter in het programma. ben begonnen met 0 en het verbruik staat op 4261 liter. Mijn water meter staat op 626324 liter.
    Ik kijk er waarschijnlijk overheen, dat heb je soms met een vastgeroeste hobby programeur van 1956 🙂

    1. Hoi Richard,

      Dat is gek! ${friendly_name} moet automatisch worden vervangen door wat er bij

      substitutions:
      name: watermeter
      friendly_name: “Watermeter”

      staat. Heb je dit juist overgenomen in de yaml van je esphome device?

      Succes!

      Groet Wouter

  7. Hoi Wouter,

    Dank voor de instructie voor het maken van een watermeter, ik heb er 2 gemaakt voor koud en warm water.
    Alles werkt, maar als ik de voeding van de ESP8266 haal dan gaan de tellers weer naar 0 liter, heb je enig idee waar ik dit kan vinden en oplossen

    Vriendelijke groet Ron

    1. Hoi Ron,

      Excuses voor het niet antwoorden. Welke esphome code heb je gebruikt? De code uit mijn artikel of die van de s0tool? Hoe heb je het opgelost? Zou je dat willen delen, dan hebben andere lezers er ook iets aan!

      Groet Wouter

  8. Hoi,

    Ik heb de code uit het artikel hier boven gebruikt.

    Ik heb op advies van “TheFes” op Tweakers gebruik gemaakt van de nutsmeters die in HA aanwezig zijn.

    Hier van 8 stuks aangemaakt wel was het even zoeken naar de juiste instelling.

    De nutsmeter zijn te vinden in “ helpers “

  9. Hoi Wouter,
    Ik heb enige tijd geleden een watermeter gemaakt gebaseerd op jouw variant. Werkt prima! Echter sinds de ESPHOME update van december 2023 wordt er een controle uitgevoerd op het dubbel gebruik van dezelfde pin binnen de ESPHOME config waardoor deze foutloopt. Op te lossen door in jouw code op de plekken waar nu
    pin: 4
    is gebruikt, dit aan te passen naar:
    pin:
    number: 4
    allow_other_uses: true

    1. Hallo Remco,
      Ik krijg de volgende foutmeldingen
      INFO ESPHome 2023.12.9
      INFO Reading configuration /config/esphome/watermeter.yaml…
      INFO Detected timezone ‘Europe/Amsterdam’
      Failed config
      sensor.pulse_counter: [source /config/esphome/watermeter.yaml:90]
      platform: pulse_counter
      id: water_pulse_counter
      + This variable only supports pin numbers, not full pin schemas (with inverted and mode).
      pin:
      +[number] is an invalid option for [sensor.pulse_counter]. Did you mean [name]?
      number: 4
      +[allow_other_uses] is an invalid option for [sensor.pulse_counter]. Please check the indentation.
      allow_other_uses: True
      name: Watermeter water consumption
      update_interval: 2sec
      internal_filter: 10us
      unit_of_measurement: L/min
      accuracy_decimals: 0
      icon: mdi:water
      filters:
      – multiply: 0.0167
      – lambda: return abs(x);
      binary_sensor.gpio: [source /config/esphome/watermeter.yaml:156]
      platform: gpio
      id: water_pulse
      +This variable only supports pin numbers, not full pin schemas (with inverted and mode).
      pin:
      +[number] is an invalid option for [binary_sensor.gpio]. Did you mean [name]?
      number: 4
      +[allow_other_uses] is an invalid option for [binary_sensor.gpio]. Please check the indentation.
      allow_other_uses: True
      internal: True
      filters:
      – delayed_on_off: 50ms
      – lambda: |-
      id(main_counter_pulses) += x;
      id(secondary_counter_pulses) += x;
      id(daily_counter_pulses) += x;
      id(weekly_counter_pulses) += x;
      id(monthly_counter_pulses) += x;
      id(yearly_counter_pulses) += x;
      id(event_quantity) += x;
      return x;
      on_state:
      – script.execute: publish_state

        1. Hoi Wouter,

          De foutmeldingen zijn verdwenen. Dank vvor de tip. Ik heb de D1 Mini echter nog niet werkend. In de uitleg staat dat ik ook de pin van de sensor onder Binairy_sensor moet instellen. Hoe weet ik welke pin dat is? En dan alleen onder Binairy_sensor of ook die van een paar regels hoger?

          1. Dag Rob,

            Ja beide aanpassen naar het pin nummer waarop je de sensor fysiek hebt aangesloten. Je kunt ook gewoon het D nummer gebruiken wat op het printje staat.

            Succes Wouter

          2. Daar ben ik weer. Pin nrs. gewijzigd en de foutmeldingen zijn verdwenen. Insatalatie op D1 is geslaagd. D1 blijft echter offline. ssid en pin goed ingesteld “ssid” “pin”. D1 al eerder fixt ip gegeven.
            Helaas geen verbinding

          3. Je kunt opnieuw met je WiFi proberen te verbinden door middel van de watermeter fallback accespoint. Want je hebt toch wel je echte wifi gegevens ingevuld? Fixed ip misschien even eruit halen.

          4. Goedemiddag Wouter.
            Laatste update. Ik moet me bijna schamen. Ik had vermeld dat SSID en ww goed was ingesteld. Een collega die iets meer kijk heeft op programeren heeft meegekeken. Wat bleek, ik had hoofd en kleine letters gebruikt in mijn SSID en dan voel je hem al aan, alles mest hoofdletter zijn. DOM, DOM, DOM.
            Bedankt voor je tijd en hulp.

          5. Ha Rob,

            Tsja al doende leert men zullen we maar zeggen ? ik moet eerlijk bekennen dat ik ook niet wist dat het SSID hoofdlettergevoelig is. Maar het klinkt wel logisch.

            Veel plezier in deze nieuwe hobby,

            Groet Wouter

  10. Ik heb de volt booster aangesloten op een usb kabel en gevoed via de laptop. Even getest of ik het voltage naar 12 volt krijg voordat ik de sensor er aan soldeer. Het voltage van de MT3608 blijft als output 5v. Dat is tevens ook de input. De potmeter heb ik alle kanten opgedraaid en soms verschiet deze tijdelijk, waarna deze weer naar ca. 5v gaat. Hoger gaat de output nooit. Heb ik toevallig een kapotte voltage booster te pakken? Heb zo even geen reserve om dat te testen. Enig idee of ik dat zonder reserve kan uitsluiten?

    1. Hoi Dyon,

      Nou je bent niet de enige hoor. Ik heb nu ook zo’n MT3608 liggen die stabiel op 5v blijft hangen. Toch vreemd. Je kunt een ander input voltage proberen, om te testen of dat wat uitmaakt…

      Groet Wouter

      1. Na het lang tegen de klok indraaien, ging het voltage langzaam omhoog en daarna steeds sneller. De booster werkt dus wel. Nog even wachten op de sensor en dan die er aan maken. De sensoren staan ook al in home assist. Nu moet het vast goed komen.

          1. Ik kom er nu zelfs achter dat ik een 5v sensor heb besteld, dus achteraf was ook de booster zelfs niet nodig.

          2. Haha ja dat is helemaal makkelijk, kun je de booster voor een ander projectje gebruiken

  11. Ik heb de voltage booster via een usb kabel aangesloten op mijn laptop om te testen. Met de potmeter verschiet zo af en toe het voltage van de output naar 2/3/4 volt, waarna deze gelijk weer naar ca. 5v gaat. Dit is tevens ook het input voltage van de usb kabel. Enig idee hoe ik zonder reserve mt3608 kan uitsluiten dat deze kapot is?

  12. Goedemorgen,

    Sinds versie 2024.4.5 van ESPhome kan er geen update meer uitgevoerd worden. De foutmelding geeft aan dat api_apiserver niet gedeclareerd is. Na de toevoeging id: api_apiserver in de api:-sectie werkt alles weer normaal.

    1. Thanks, dat merkte ik laatst ook al. Met die toevoeging werkt de update naar de nieuwere versies inderdaad weer

    2. Bedankt voor je reactie Nick! Zo blijft iedereen op de hoogte en hoeft niet steeds het wiel opnieuw uitgevonden te worden! ?

  13. Hallo, Mooi artikel waarvoor dank!
    Ben zelf niet zo een techneut, dus heb ik de kant en klare watermeter van Homewizzard aangekocht, met de meegeleverde adapters te gebruiken op heel wat watermeters.
    Daarna was het heel eenvoudig deze in HA te integreren.
    En de prijs van 50 Euro valt ook behoorlijk mee, hoewel een ESP versie een stuk goedkoper zal uitvallen.

  14. Hi Wouter,

    Bedankt voor je artikel, ik heb het als startpunt gebruikt voor mijn eigen project in West Australië ????

    Wij gebruiken dezelfde watermeters maar ik heb inderdaad een Itrón Cyble Sensor V2 aangeschaft.
    (AUD 137.50 / ± EUR 85,-) Ik dacht dat het wellicht anderen kan helpen om ook de methode voor de Cyble Sensor V2 goed gedocumenteerd te hebben.

    De Cyble Sensor is 2 aderig, de kabel heeft enkel een signal + negative omdat de sensor een ingebouwde batterij heeft (met een levensduur van rond de 12 jaar!) Er is ook een 5-aderige versie beschikbaar maar die is met name ook flow-direction te kunnen detecteren, hetgeen niet van toepassing is in dit geval.

    In Australië is het gebruikelijk dat de watermeter in de voortuin staat (zodat ie afgelezen kan worden door het waterbedrijf). Derhalve wilde ik het geheel op batterijen laten werken. Het nadeel daarvan is dat de ESP Home code in jouw beschrijving de sensor op ‘Unavailable’ zet zodra power uitvalt omdat de batterij leeg is.
    (Een solarpanel oplossing is in de maak :-)) Eenbijkomend nadeel is dat de Wemos daardoor volledig gereset wordt en derhalve de totaal telling niet onthoudt. De enige manier om dan de toaal waarde correct te krijgen is om de service te gebruiken een de total-pulse waarde in te stellen. Helaas ziet HA dat als een ‘nieuw’ verbruik en zou je derhalve voor iedere keer inschakelen een fors waterverbruik registreren.

    Voor de integratie met HA gebruik ik een Wemos D1 Mini Pro, met grotere, externe antenne, vanwege de installatie in de tuin ongeveer 10-15mtr van de router. In mijn schema heb ik de sensor middels een pull-up aangesloten op GPIO13 (D7) en dat werkt vervolgens prima.

    Om te voorkomen dat de sensor naar ‘Unvailable’ schakelt en om ervoor te zorgen dat de sensor waarde instelbaar is -zie boven- heb ik de watermeter sensor middels een template sensor in HA opgezet. Dit voorkomt dat de sensor naar ‘Unavailable’ gaat bij uitval van de sensor als de batterij leeg is. Het staat eveneens toe dat je de ingestelde waarde kunt bijstellen middels een ‘number input’ in HA. Ik gebruik dus de ‘state’ van de totaal teller van ESP Home als differentiaal indicator voor de template sensor

    Zie voor de ESP Home code en de HA implementation van de template sensor hier:
    https://github.com/mtholen/esphome-watermeter

    Ik kon het schema (picture) niet uploaden, maar je kunt het hier vinden:
    https://app.cirkitdesigner.com/project/3d830939-acc4-4872-b70f-665ab0c8f24a

    Voor meer info over de sensor:
    https://emea.itron.com/products/cyble-sensor

    1. Hoi Martijn,

      Wat gaaf dat mijn blogs ook aan de andere kant van de wereld gelezen en toegepast worden! Bedankt voor je mooie uitgebreide reactie. Goed om te lezen dat het ook werkt met de officiële meter. Volgens mij kun je ook in de esphome code aangeven wat er gebeuren moet als hij unavailable wordt. Misschien dat @huizebruin daarbij kan helpen!

      Een klein zonnepaneel met een accu zal wel voldoende zijn. Ik ben benieuwd naar de verdere uitwerking!

      Groet Wouter

Laat weten wat je van dit artikel vindt!

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

%d bloggers liken dit: