tt

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:

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/

De aansluiting is gelijk voor de 4 & 8 mm

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/

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: "v22.12.27" 
  date: "30-dec-2022"
  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 
  
dashboard_import:
  package_import_url: github://huizebruin/s0tool/esphome/watermeter.yaml

      
#------------------------##------------------------##------------------------##------------------------#
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:  "0"             
            

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
      inverted: true
      mode:
        input: true
    on_press:
      - then:
          lambda: id(total_water_pulses) += 1;  

sensor:
#------------------------# Watermeter #------------------------#
# ⬇ watermeter pulsen ⬇ #
  - platform: pulse_counter
    pin: D2
    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

Open your Home Assistant instance and show your service developer tools.
Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is DEv-optie-600x472.jpg

Ga nu naar naar Service

Open your Home Assistant instance and show your service developer tools.
Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is service-600x213.jpg

Ga op de balk staan waar nu “Alarm_control****” staat.

Watermeter meterstand

Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is watermeter-stand-600x184.jpg

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

Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is kwh-meterstand-600x187.jpg

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

Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is Nutsmeter_Calibrate-600x208.jpg
Open your Home Assistant instance and show your service developer tools with a specific service selected.

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:

  1. Instellingen
  2. Dashboard
  3. Energie dashboard
  4. Wacht ongeveer een half uurtje en dan zal je de volgende stappen kunnen doen.
  5. waterverbruik en zoek dan : Watermeter Totaal
  6. 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

  1. klik op de 3 stippen
  2. klik op clean build files
  3. 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 .

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

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?

Abonneer
Abonneren op
guest
120 Reacties
Inline feedback
Bekijk alle reacties
PeterB

Dankzij de goede uitleg komen de pulsen mooi binnen in het energie dashboard.
Alleen is het verbruik 10 keer hoger dan de werkelijk verbruik hoeveelheid. Hoe kan ik dat aanpassen?

PeterB

Een correctie. HA geeft een te lage waarde aan. Een douchebeurt is bv maar 6 liter.
Ik heb de ESP geïnstalleerd via de s0tool. En dat ging prima.
Daar lijkt het probleem niet in te zitten. Is er nergens een parameter om het aantal pulsen per liter verbruik in te stellen?

Rob

Ook ik heb dankzij jouw mijn watermeter goed werkend gekregen
Dank voor het delen van de kennis.

John

Hallo huizebruintjes,

Bedankt voor deze tool, ben volop aan het stoeien met de tool.
o.a. om m’n analoge gasmeter uit te lezen en in de tool erbij te plaatsen
Ondanks m’n gepruts 🙂 ben ik al redelijk op weg, ik ben ook compleet nieuw met yaml dus makkelijk zijn de aanpassingen niet voor me.

Maar wat ik eigenlijk wilde vragen is omdat ik door m’n gerommel ook een dag meting van 472,71 m³ staat (niet echt handig in deze dure tijden) O_o
zou ik willen weten hoe ik een soort button (als ie al niet in de tool zit) willen maken om het verbruik per kwartier, uur, dag, etc kan resetten, deze zijn in HA namelijk ‘readonly’

Groeten John.

John

Top … daar werkt het, thnx

Peter

Leuke workshop, zou je zoiets ook toe kunnen passen voor een elektra tussen meter (met puls contact of led puls)?

120
0
Deel je mening of stel een vraag:x