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.
Met onderstaand stappenplan voeg je eenvoudig je watermeter toe aan Home Assistant.
- 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.
- Knutsel de pulsteller in elkaar met de nabijheidssensor
Maak een WiFi pulsteller op basis van een Wemos D1 mini/ESP8266 met nabijheidssensor en esphome
- Configureer Home Assistant
Esphome maakt de sensoren aan in Home Assistant
- 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.
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
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.
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.
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 :
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.
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.
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.
De browser maakt verbinding met je COM poorten en vraagt welke COM poort je Wemos is. Klik op de juiste en het flashen begint.
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!
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?
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
Hallo Wouter.
Ook wederom een leuk artikel.
Bedankt dat je een link hebt geplaatst.
Wobbe van Huizebruin.nl
Maker van de S0tool.
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 ?
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
Dag wouter
binary_sensor blijkt geen filter multiply toe te staan
de accuracy is aangepast naar 0.05 maar heeft geen effect in HA
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
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
Hoi Marnix,
Goeie vraag. Ik heb dat eigenlijk nog nooit gedaan.
Je kunt zoals ik het lees, een bepaalde entity purgen. Zie:
https://www.home-assistant.io/integrations/recorder/#service-purge_entities
Voor de zekerheid eerst ff een back up maken ?
Groet Wouter
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?
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
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.
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
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…
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
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.
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 🙂
Hoi Wouter ik krijg in HA in het dashboard overal ${friendly_name} te zien, weet je hoe ik dat weg krijg
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
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
Hi Wouter,
Het is opgelost.
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
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 “
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
Hoi Remco,
Bedankt voor je toevoeging! Dat kan toekomstige lezers veel uitzoekwerk besparen!
Groet Wouter
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
Dag Rob,
Check even je indentations.
https://esphome.io/guides/configuration-types#config-pin-schema
Groet Wouter
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?
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
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
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.
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.
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
Super tip @Remco. ESPHome 2023.12.x heeft inderdaad deze check erin zitten.
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?
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
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.
Mooi dat geeft ook hoop voor mijn booster ?
Ik kom er nu zelfs achter dat ik een 5v sensor heb besteld, dus achteraf was ook de booster zelfs niet nodig.
Haha ja dat is helemaal makkelijk, kun je de booster voor een ander projectje gebruiken
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?
Er bestaat ook een sensor welke op 5V werkt. Dat scheelt weer een hoop gedoe met een step-up convertor.
(https://opencircuit.nl/product/lj18a3-8-z-bx-5v-nabijheids-sensor-n-o-npn-8mm)
Tevens wordt er onterecht vermeld dat de sensor 300mA verbruikt.
Ik heb dit nagemeten, maar de sensor verbruikt in rust 0,5mA en bij activering zonder belasting ca 3mA.
De schakelkant mag maximaal belast worden met 300mA.
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.
Thanks, dat merkte ik laatst ook al. Met die toevoeging werkt de update naar de nieuwere versies inderdaad weer
Bedankt voor je reactie Nick! Zo blijft iedereen op de hoogte en hoeft niet steeds het wiel opnieuw uitgevonden te worden! ?
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.
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
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