DomoticzHow-toPython scripts

Watermeter uitlezen in Domoticz met een Python script

De meterstanden van stroom en gas kan ik eenvoudig naar Domoticz halen door Eneco’s Toon thermostaat te koppelen aan Domoticz. Het volgende idee was: Hoe kan ik de watermeter uitlezen in Domoticz? Als je onderstaande stappen volgt is dat eenvoudig te doen. Kosten? Een euro of 2 en een half uurtje vrije tijd!

Benodigdheden

Voorbereiding

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 Domoticz gestuurd dat er één liter water verbruikt is.

 

Inductieve NPN sensor

De NPN sensor heeft 3 draden (bruin/zwart/blauw). Het beste kunt je dupont female connectors aan de 3 draden maken. Ik had zelf geen losse connectors liggen, dus heb ik maar dupont kabeltjes aan de 3 draden gesoldeerd. De blauw draad moet op een GROUND-pin (bv. pin 39) aangesloten worden, de zwarte draad op een GPIO (bv. GPIO 21 = pin 40) en de bruine draad op een 5V-pin (pin 2 of 4). Hoewel het een 6-36 Volt sensor is werkt deze prima op 5 Volt op een Raspberry Pi. Zodra de NPN sensor op de Raspberry Pi aangesloten is hou je het blauwe uiteinde tegen een stukje metaal (bv. schroevendraaier) aan.

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 exact onder de sensor zit. Bij mij was dat laatste niet het geval. Het bleek dat de plastic kap van de watermeter te dik was om de draaischijf te detecteren. Wat nu?? De watermeter slopen is geen oplossing, aangezien deze eigendom is van het waterbedrijf. Op goed geluk heb ik een stuk schuurpapier gepakt en ben ik het blauwe uiteinde van de sensor gaan schuren. Stukje schuren, kijken of de led nu wel gaat branden, stukje schuren, etc., net zo lang totdat de sensor het draaischijfje kan detecteren.

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, maar de beste oplossing was nog veel eenvoudiger: een gaatje boren in de deksel van de watermeter, de sensor er doorheen halen en aan beide kanten vast draaien met twee moertjes. Zorg er uiteraard wel voor dat je het gaat je exact op de juiste plek in de deksel boort, dus precies boven het draaiende schijfje met een metalen halve maantje. Dit komt erg nauwkeurig!

 

Sensor in Domoticz

Uiteraard wil je in Domoticz zien hoeveel water je dagelijks verbruikt. Hiervoor moeten we een RFXMeter sensor aanmaken. Dit doe je door middel van JSON:


Uiteraard moet je het IP adres en het poort nummer aanpassen naar de waarde van jouw Raspberry Pi (handig is het om de Pi een vast IP adres te geven). IDX=29 staat voor het IDX nummer van Hardware “Dummy (Does nothing, use for virtual switches)”. Je krijgt nu een melding in de browser te zien dat de sensor aangemaakt is en welk idx de sensor heeft gekregen. Het idx-nummer hebben we bij de volgende stap nodig:


Mijn sensor had idx 178 gekregen, maar dit moet je dus aanpassen naar de waarde die je bij de vorige stap hebt gezien. Als het allemaal goed gegaan is krijg je onderstaande sensor (uiteraard met 0 liter) te zien onder Utility-tabblad:

 

 

Python script

Download hier het Python script en pak het uit met een extractor als WinRar. Met dit Python script lees je de GPIO uit en schrijf je iedere verbruikte liter water via JSON naar Domoticz. Je huidige stand van de watermeter kun je invullen regel 9 bij “Counter”. Op regel 12 vul je het IP adres en het poort nummer van je Raspberry Pi in en op regel 14 het idx-nummer van de zojuist aangemaakte RFXMeter sensor. Indien je de sensor op GPIO 21 (pin 40) hebt aangesloten dan hoef je verder niets meer aan te passen in het Python script. Mocht je een andere GPIO gebruiken dan moet je overal waar “40” staat de waarde vervangen door de door jou gebruikte pin. Plaats het script in de folder /home/pi/domoticz/scripts/.

 

Meterstand

De meterstand wordt bijgehouden in het bestand meterstand.txt. Hierdoor blijft de meterstand behouden bij een herstart van de Raspberry Pi (zonder dit bestand zou de meterstand telkens op 0 springen). Mocht de meterstand in Domoticz een keer, om wat voor reden dan ook, niet meer juist zijn dan kun je het bestand meterstand.txt aanpassen naar de juiste waarde. Bij de eerstvolgende update van de sensor is dit in Domoticz zichtbaar.

 

Crontab

Om het script automatisch te laten draaien gaan we een cronjob aanmaken in de crontab. Open de crontab met onderstaand commando:


Nu de crontab van de root-user geopend is voeg je onderstaande regel toen:


Sluit de crontab met “CTRL X” en bevestig dat je de wijziging wilt opslaan. Vanaf nu wordt het script automatisch na iedere reboot gestart. Om te controleren of het script daadwerkelijk gestart is kun je onderstaand commando ingeven:


In het overzicht wat je te zien krijgt moet de regel staan die je toegevoegd hebt aan de crontab. Mocht dat niet het geval zijn, dan kun je het script eventueel handmatig start, om te zien of het goed draait:


Vanaf nu kun je het waterverbruik in Domoticz monitoren!

 

Bron: pgangorp

69 gedachten over “Watermeter uitlezen in Domoticz met een Python script

  • Sander van der Knijff

    Hoi,

    wat een fijne beschrijving, heb de boel aan elkaar geklust en het draait gelijk!
    Ik heb alleen 1 vraag, ik heb momenteel zowel op de dag teller als op de totaal teller mijn totale verbuiks staan.
    De meter staat b.v. op: 990.555 liter, dus dat heb ik ingevuld bij counter in de .py file.
    Als ik nu in het dashboard kijk staat er bij het totaal en het dag verbruik hetzelfde getal, en dat staat ook in het txt file.
    Als ik in de log kijk schrijft hij netjes per uur het aantal liters, en dat klopt ook.
    Moet ik gewoon 24uur geduld hebben, of moet ik toch ergens nog iets anders invullen?
    Ik heb al vanalles geprobeerd met anders invullen, maar mis net de gouden tip nog….
    Alvast bedankt!

    Groeten, Sander

    Beantwoorden
  • Hoi Sander, vannacht na 0.00 uur zal het dag-verbruik weer goed staan.

    Beantwoorden
    • Sander van der Knijff

      Hoi Joost,

      ik verwachte al zoiets toen ik er een poosje over zat te denken, mede omdat op uur dat ik heb hem goed gezet, er 990 kuub was verbruikt, aha, prima.
      Dan zal het morgen goed staan.
      Ik heb overigens een Cyntech breakout bordje met flat cable besteld, kan ik er nog eens wat bij knopen… 🙂 Dat werkt erg netjes. Keurig bordje, moet er alleen nog een kastje bij maken.
      Heb de benadering schakelaar besteld M12, 6-# volt voldoende range en werkte in 1 keer.
      Bedankt voor de heldere uitleg, ben handig genoeg, met wat hulp snap ik code en wat het doet maar zelf schrijven is tijdrovend, en eigenlijk nog niet te doen.

      Beantwoorden
    • dag Joost. Ik heb de watermeteroplossing wel werkend met jouw script.
      Er zijn echter tellerafwijkingen, d.w.z. de teller geeft meer aan dan de watermeter.
      Ik zie geen afwijking welke evenredig is met de werkelijke liters.
      Op 1 moment heeft iet 220 liter geteld in de nacht.
      Op andere momenten wijkt ie enkele liters af.
      Ik probeer te achter halen of de sensor soms van slag is. Heb de sensor al iets meer naast het schijfje gepositioneerd.
      In jouw instructie sluit je de 5V sensor direct aan op de GPIO klopt dat?
      Gelet op de 5V voeding van de sensor via de Raspi lijkt met dat wat triggy. Immers de Raspi mag op GPIO max 3.3V hebben. Heb er dus een spanningsdeler tussen en de pulsen zijn nu op de GPIO 2V.
      Ik vraag mij nu af of wellicht de Interrupt Call back en de GPIO.add_event_detect met zijn bouncetime van 200msec wellicht een bottleneck vormt.
      Als ik het pythonscript handmatig run dan zie ik elke keer een JSON write van 1 liter gevolgd door de “Callback met quitting eenthandler because this was probably a false possitive.”
      Ik zie ook dat de sensorlamp bij geen verbruik langdurig aan staat soms en vraag me af of het niet mis gaat als ie net op het randje stilstaat en dan soms gaat flipperen.
      Mocht je enige suggestie hebben dan hou ik mij aanbevolen.
      Ben i.i.g. van plan om een extra sensor te kopen om problemen hierin uit te kunnen sluiten.
      Alvast bedankt voor het lezen en meedenken. Groet, Bert

      Beantwoorden
  • Kun je de kabel ook verlengen naar bijvoorbeeld 7-8meter of moet deze tussendoor versterkt worden?

    Beantwoorden
  • Melissen

    Hoe of waar vul je het eerste JSON-commando in?

    Ben helemaal niet bekend met de raspberry pi, maar gebruik PUTTY om deze te benaderen.

    Beantwoorden
  • Hi, ik ben geen python specialist maar heb met “2to3” en een paar andere kleine aanpassingen dit werkend gekregen! 🙂

    Alleen zit met de waarde die de sensor aangeeft in Domoticz. Als ik 1 liter verbruik, spingt de sensor 10 liter omhoog. Hij zit er dus een factor 10 naast. Ik heb de sensor exact aangemaakt volgens jouw JSON.

    Enig idee wat dat zou kunnen zijn?

    Beantwoorden
    • Als je meterstand met 10liter wordt verhoogt ipv 1ltr. Dan kun je dat aanpassen via:
      menu setup -> settings -> meters/counters ->RFXMeter/Counter Dividers.
      Daar vind je een regel over de watermeter. Standaard staat deze op 100. Maak hier 1000 van het zou moeten werken.

      Beantwoorden
    • Joost, Henri,

      Hier hetzelfde probleem blijk een oudere PI (B Rev 2.1 UK) te hebben met 26 pinnen.
      Volgens mij dus een PI 2. Als ik je goed begrijp moet ik de volgende regels aanpassen
      om eea nute laten werken. Tenminste als dit overeen komt met PI 1???

      Regel 32

      GPIO.setmode(GPIO.BCM)

      Regel 34

      GPIO.setup(22, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

      regel 41

      if GPIO.input(22) == 0:

      regel 66

      GPIO.add_event_detect(22, GPIO.RISING, callback = Interrupt, bouncetime = 200)

      Hoor graag van jullie zodat ik de laatste acties uit kan voeren Sensor iig werkend.

      @joost, krijg een delivery error op info@ehoco.nl

      Beantwoorden
    • Op mijn Pi 1 Model B Revision 1.0 blijft het script hangen en ik vermoed dat dit met bovestaande te maken heeft. Wat mij opvalt:

      Je gaat naar BCM (waarom?) en want als ik het goed begrijp ga je dan naar GPIO nummers ipv de Board = Pin nummers. Terwijl geef je aan van pin 40 naar naar 22 te gaan … is dat dan GPIO22 ?

      Beantwoorden
  • Raymond

    Hi Joost, Super dit Python script. Werkt perfect en ook na reboot van de Pi.
    In de “schakelaars” Tab goed terug te zien.
    Maar mijn layout is op het dashboard als plattegrond voor alle verdiepingen en tuin en schuur.
    Aangezien dit een “overige” sensor is en in apparaten als een “Unknown?” wordt weer gegeven kan ik hem niet toevoegen.
    Heb jij een suggestie?

    Thanks, Ray

    Beantwoorden
  • Goede avond,

    Bij het invoeren van het eerste JSON-commando krijg ik de volgende melding op mijn scherm.
    ‘401 Unauthorized’ Een andere browser gaf de zelfde melding. Enig idee wat er fout gaat en wat er aan gepast zou kunnen worden?

    Bvd. Niek

    Beantwoorden
    • Heb de zelfde foutmelding 401 Unauthorized als ik de json file inlees heb vast ip adres op RB en dat ook gewijzigd.
      Wat doe ik fout?

      Verder sensor al operationeel

      Beantwoorden
  • Hi Joost,
    Ik ben zeker niet goed in python maar ik krijg steeds dezelfde foutmelding:
    File “/home/pi/Domoticz/scripts/watermeter.py”, line 61
    print “JSON call = “+ str(url1)
    ^
    SyntaxError: Invalid syntax

    maar ik weet niet hoe ik dit moet oplossen enig idee wat ik zou kunnen doen?
    Met Vriendelijke Groet,
    Leon

    Beantwoorden
    • Hallo Peter, in het script hoeft dan niets gewijzigd te worden.
      Bij Setup > Settings > Local Networks moet je wel even de juiste ip-range zetten. Ik heb deze range erin gezet:

      192.168.2.*;127.0.0.*;10.8.0.*

      Dit betreft de LAN, Local en VPN range.

      Beantwoorden
  • Leuk project, maar met een NO NPN-sensor moet de weerstand in pull-up staan en niet pull-down (de sensor verbind naar GND gesloten positie) en het script moet ‘edge-falling’ detecteren (hoewel dat laatste meer voor de puristen is). Dit voorkomt vele false-positives die niet allemaal softwarematig kunnen worden voorkomen.

    Beantwoorden
  • Hi,
    Intressant en gaat het proberen. Heb alleen ergens begrepen dat de zwarte draad op GPIO 5 volt geeft en de PI hier niet (goed) tegen kan.
    Dit zou opgelost moeten worden door het solderen van een weerstand. Hier kom ik alleen niet verder.

    Wat is jou ervaring, zijn er problemen met de PI of gaat het gewoon goed.

    Hoor graag van je

    Beantwoorden
    • Als je in het bezit bent van een 3D-printer kun je deze sensor op dit “https://www.thingiverse.com/thing:3501337” plaatje monteren en vervolgens op de watermeter klikken

      Beantwoorden
  • Ik heb dit op een test raspberry uitgeprobeerd en het werkt helemaal.
    Nu heb een het op raspberry gezet waar het op moet gaan draaien en heb ik niks anders foutmeldingen.
    Alles al voor de 2de keer gedaan het helpt allemaal niet.
    De raspberry’s draaien beide op dezelf rasbian stretch versie.

    Ik krijg de volgende foutmelingen als ik het phyton script handmatig opstart en er een puls op GPIO komt te staan (dus waterverbruik)

    pi@TDC1-IoT-Server:~/domoticz/scripts $ sudo python /home/pi/domoticz/scripts/watermeter.py

    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 53, in Interrupt
    response1 = urllib2.urlopen(req1)
    File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
    return opener.open(url, data, timeout)
    File “/usr/lib/python2.7/urllib2.py”, line 435, in open
    response = meth(req, response)
    File “/usr/lib/python2.7/urllib2.py”, line 548, in http_response
    ‘http’, request, response, code, msg, hdrs)
    File “/usr/lib/python2.7/urllib2.py”, line 473, in error
    return self._call_chain(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 407, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 401: Unauthorized
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 53, in Interrupt
    response1 = urllib2.urlopen(req1)
    File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
    return opener.open(url, data, timeout)
    File “/usr/lib/python2.7/urllib2.py”, line 435, in open
    response = meth(req, response)
    File “/usr/lib/python2.7/urllib2.py”, line 548, in http_response
    ‘http’, request, response, code, msg, hdrs)
    File “/usr/lib/python2.7/urllib2.py”, line 473, in error
    return self._call_chain(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 407, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 401: Unauthorized
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 53, in Interrupt
    response1 = urllib2.urlopen(req1)
    File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
    return opener.open(url, data, timeout)
    File “/usr/lib/python2.7/urllib2.py”, line 435, in open
    response = meth(req, response)
    File “/usr/lib/python2.7/urllib2.py”, line 548, in http_response
    ‘http’, request, response, code, msg, hdrs)
    File “/usr/lib/python2.7/urllib2.py”, line 473, in error
    return self._call_chain(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 407, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 401: Unauthorized
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 53, in Interrupt
    response1 = urllib2.urlopen(req1)
    File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
    return opener.open(url, data, timeout)
    File “/usr/lib/python2.7/urllib2.py”, line 435, in open
    response = meth(req, response)
    File “/usr/lib/python2.7/urllib2.py”, line 548, in http_response
    ‘http’, request, response, code, msg, hdrs)
    File “/usr/lib/python2.7/urllib2.py”, line 473, in error
    return self._call_chain(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 407, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 401: Unauthorized
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 53, in Interrupt
    response1 = urllib2.urlopen(req1)
    File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
    return opener.open(url, data, timeout)
    File “/usr/lib/python2.7/urllib2.py”, line 435, in open
    response = meth(req, response)
    File “/usr/lib/python2.7/urllib2.py”, line 548, in http_response
    ‘http’, request, response, code, msg, hdrs)
    File “/usr/lib/python2.7/urllib2.py”, line 473, in error
    return self._call_chain(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 407, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 401: Unauthorized

    Heeft er iemand er toevallig nog een idee?

    Groeten Francois

    Beantwoorden
  • Ik ben zelf al even op onderzoek gegaan en ik weet waar het probleem zit.
    Dit phyton script houdt geen rekening met een wachtwoord op Domoticz.
    Als je wel een wachtwoord op Domoticz hebt, dan moet je in de Domoticz settings het IP adres opgeven bij “Local Networks (no username/password):” waar dit script op draait.
    Daarna is dit probleem opgelost.

    Groeten,
    Francois

    Beantwoorden
  • Joost prima artikel bedankt !
    Ik heb zo’n beetje dezelfde opstelling als jij:
    * RPI + LJ12A3-4-Z/BX Nabijheids sensor N/O NPN 4mm.

    Het LEDje van de NPN licht op bij metaal en ook op de watermeter maar ik krijg mbv de code geen signaal op mijn RPi. Het voltage bij zowel aanraken metaal als geen metaal blijft hetzelfde nl 4,22V oftewel …. geen omslag.
    Ik heb het daarna getest met een 9V batterij en daar zie ik wel een omslag (geen metaal 9,67V – metaal -0,63V). Kan het zijn dat dit zo’n type is wat moet werken op meer dan 5V. De range is nl van 6 V – 36 V.

    Heb jij een idee of weet je ms een NPN te koop die wél werkt op 5V?

    Beantwoorden
  • Hoe kan ik er voorzorgen dat mij log bestand niet meer het onderstaande laat zien? Maar alleen nog een fout code oid. Niets is ook goed.
    Welke regel in het script moet ik dan verwijderen of aanpassen. Nergers kan ik zo snel een regel vinden waar in staat dat er iets naar het log geschreven moet worden.

    =======
    2019-05-28 17:46:58.976 (Slimme Meter) Usage (Usage L1)
    2019-05-28 17:46:58.977 (Slimme Meter) Usage (Delivery L1)
    2019-05-28 17:47:08.964 (Slimme Meter) P1 Smart Meter (Stroomverbruik)
    2019-05-28 17:47:08.969 (Slimme Meter) General/Voltage (Voltage controle)
    2019-05-28 17:47:08.970 (Slimme Meter) Usage (Usage L1)
    2019-05-28 17:47:08.971 (Slimme Meter) Usage (Delivery L1)
    2019-05-28 17:47:18.964 (Slimme Meter) P1 Smart Meter (Stroomverbruik)
    =====

    Beantwoorden
    • Hoi Joep,

      Dit is de logging van je P1 kabel, heeft niets het script van de watermeter te maken.

      Beantwoorden
  • de uitlezing blijft bij mij op 0 hangen terwijl de waarde wel wordt verhoogt in de watermeter.txt file. wat gaat er fout ???

    Beantwoorden
    • @Robert, heb je het veld “Local Networks” onder Settings (in Domoticz) gevuld? Zo niet, vul daar eens 192.168.2.*;127.0.0.* in (uiteraard aanpassen als je een andere reeks interne IP-adressen hebt).

      Beantwoorden
      • Hallo Joost,

        Het is raar maar WAAR.
        Ik heb jou advies opgevolgd, en nu werkt het.
        Eerst nachten zoeken waar het aan kon liggen..
        BEDANKT voor je tip !!!!
        Groeten Michiel

        Beantwoorden
  • Ben onlangs verhuist en de NPN sensor werkte niet meer. Waarschijnlijk een iets andere watermeter, waarbij het metalen halve maantje iets verder van de plastic kap zit. Ik gebruik nu deze 5v NPN sensor, die gelukkig weer perfect werkt!

    Beantwoorden
  • Hoi Joost
    Lijkt een super uitleg!
    Als ik zoek naar een NPN sensor zie tig verschillende op Ali enz.
    Welke sensor gebruik jij? Mijn maantje zit ook wat diepe in watermeter

    Beantwoorden
  • vreemd heb ook nog even in een andere browser gekeken maar kan geen link zien.

    Beantwoorden
  • Perfecte beschrijving! Veel dank! was echt een leuk projectje 😉

    Mijn bevindingen:
    Ik heb wel 4 verschillende NPN sensors op Ali gekocht voordat die het deed. Kennelijk moet je wat geluk hebben dat die het doet (maar ja, voor 1,70 per sensor inclusief verzendkosten kun je daar niet echt moeilijk over doen)

    En ik vond het wel veel handwerk (json commando’s, script aanpassen om pin nummer en idx van de meter, zorgen dat het python script blijft draaien)

    Ik heb daarom het python script omgeschreven naar een domoticz plugin wat het allemaal wat makkelijker maakt:

    Nadat je de NPN sensor hebt aangesloten hoeft je alleen maar de plugin te installeren en te configureren (op de hardwarepagina van domoticz). Alle andere stappen kun je dan dus overslaan.

    De plugin is te downloaden via github (https://github.com/akamming/domoticz-watermeter).

    Beantwoorden
    • add the hardware. In the hardwarepage there is a description on how to configure the plugin


      Hoe krijg je dit voor elkaar? Om de plugin in te laden via Domoticz?

      Beantwoorden
  • Als je de NPN sensor direkt op een GPIO pin aansluit loop je dan niet de kans dat er 5 volt op komt te staan? Ik meen begrepen te hebben dat meer dan 3,3 volt tot schade kan leiden en dat je in dit geval van een 5 > 3.3 V level shifter gebruik moet maken.

    Beantwoorden
  • Dag Joost,
    Ik heb vorig jaar maart jou helder instructie gevolgd voor het uitlezen van mij watermeter en je script geïnstalleerd op een RPi 3B met debian er op. Dat liep tot gisteravond als een speer. Top!!!
    Rond middernacht was ineens de widget van de watermeter verdwenen. Voorafgaand hieraan had ik de avond ervoor twee extra RFX meter devices aangemaakt om de dagproductie van mijn Warmtepomp door te sturen naar Influx en Grafana. Om middernacht werd de waarde op die devices ververst, en het lijkt er op dat op hetzelfde moment het watermeterdevice verdwenen is. Ik heb je script enkele keren handmatig laten runnen vanuit Thonny maar krijg steeds deze foutmelding.

    Python 3.5.3 (/usr/bin/python3)
    >>> %Run watermeter.py
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/watermeter.py”, line 61
    print “JSON call = “+ str(url1)
    ^
    SyntaxError: invalid syntax
    >>>

    Wat ik al geprobeerd heb:
    Ik heb al een nieuw device aangemaakt met een ander idx nummer en het idx nummer in het script aangepast. Zelfde fout (regel 61). De foutmelding zegt mij echter niets. (niet thuis in python).
    Wat kan ik doen om dit probleem op te lossen?

    Groet Co

    Beantwoorden
  • Opgelost. Nieuwe RFX meter aangemaakt => script leeg gemaakt => oorspronkelijke script aangepast naan mijn IP en idx => script teruggekopieerd en opgeslagen => Rpi reboot en voilà hij doet het weer. Maar het blijft allemaal vreemd dat de oude idx zomaar ineens verdwenen was.

    Groet,
    Co

    Beantwoorden
  • Hallo,

    Is het ook mogelijk om de NPN sensor via de USB aansluiting op mijn Raspberry Pi aan te stuiten?
    En hoe moet dit dan?

    Beantwoorden
  • Het gebruik van een magnetische sensor is misschien een wat te dure oplossing voor dit probleem? Ik heb het niet geprobeerd, maar je zou eens kunnen kijken naar een optische sensormodule zoals deze: https://www.hobbyelectronica.nl/product/tcrt5000-module-optische-sensor/?gclid=Cj0KCQjwzZj2BRDVARIsABs3l9JXe5v-y_qPzBvkSZPA-op3Wrf-7vGJpw-qfL6NT0XCshf2IBX5aJsaAul9EALw_wcB
    Deze is kleiner en waarschijnlijk ook makkelijker te monteren. Met een beetje geluk is de reflectie van het ‘halve maantje’ voldoende contrasterend voor de sensor om het verschil op te pikken. De digitale uitgang met de instelpotmeter zouden ‘drop-in’ vervanging voor de naderingsschakelaar moeten zijn.

    Beantwoorden
  • Martin Boonstra

    Hier nu ook een Python script draaien i.c.m. de NPN sensor. Wat me opviel is dat er stiekem toch redelijk wat false-positives door de sensor geregistreerd worden. Zowel met het in dit artikel aangegeven script als de plugin van akamming.

    Het script van de plugin heb ik vanwege de eerder genoemde verbeteringen en betere integratie met Domoticz als basis genomen. Hier heb ik wat extra wijzigingen/checks op aangebracht.
    -Bij een ’trigger’ vergelijken of deze aan/uit waarde 300ms later nog steeds hetzelfde is (dit is wat anders dan debounce time).
    -De laatst bekende waarde (aan/uit) in een variabele ‘opslaan’ om bij een volgende trigger te vergelijken (als vorige ‘aan’ was, wordt een daarop volgende ‘aan’ genegeerd en moet er eerst een ‘uit’ geregistreerd zijn)
    -Altijd op zowel falling als rising reageren (dus both) om de laatst bekende waarde te updaten; vervolgens afhankelijk van de falling/rising setting de logica voor bijwerken meterstand uitvoeren of skippen.

    Heb het nu zo’n 2 dagen draaien met 1000+ liter (ja er moest een zwembadje gevuld worden met dit mooie weer) en heb een enkele liter afwijking tussen de tellers.

    Overigens werkte mijn 6V sensor niet met de 5V van Domoticz en heb ik er tijdelijk een 9V adapter aan hangen. In de sensor zit blijkbaar een 10kΩ weerstand kwam ik na wat doormeten en googlen achter, dus i.c.m. een 5100Ω weerstandje geeft de zwarte draad van de sensor een 3V signaal naar de Pi.

    Zal een pull request ervoor op Github plaatsen.

    Beantwoorden
  • iemand een idee waarom de last seen blijft hangen?
    als ik de kabel erin en eruit doe, de ground pin dan geeft ie een update in de last seen maar daarna niet meer….

    Beantwoorden
    • Heb hier ongeveer hetzelfde issue. NPN sensor functioneert hier al bijna twee jaar zonder echte problemen. Zo nu en dan een paar liter verschil. Sinds enkele dagen zijn de verschillen echter wel 100 liter of meer (te weinig) per dag. Heb het volledige script al vervangen, Pi opnieuw gestart, domoticz opnieuw gestart, maar de registratie blijft grillig. De ene keer wordt wel geteld de andere keer niet. Meestal na het handmatig updaten van meterstand_water.txt doen hij het even en geeft er dan weer de brui aan . Heel vreemd na twee jaar nagenoeg ongestoord werken. Nou ja, een keer afgelopen maart hele sensor weg en opnieuw moeten aan maken, maar sindsdien weer zonder probleem. Nu lijkt even niets meer te helpen. Heb je al een oplossing gevonden?

      Beantwoorden
  • Kabel erin/eruit geeft altijd een ’tik’ omdat er dan wisseling van stroom op de GPIO pin komt.

    Dit klinkt meer als sensoren die te weinig voeding krijgen om te kunnen detecteren. Sluit eens een multimeter aan op de zwarte en blauwe draad en meet eens of er een verschil zit in voltage tussen detectie en geen detectie van metaal. Ik heb nl. ook 2 stuks 6-36v NPN sensoren thuis liggen en die geven geen verschil in spanning met de voeding vanuit de Pi (hoewel het LED lampje op de sensor wel oplicht bij detectie metaal). Een (3e) 5v NPN sensor werkt wel (net als een 9v adapter voeding bij de 2 eerder genoemde).

    Beantwoorden
    • Maakt voor mij nu duidelijk waarom e.a. Niet werkt. Spanningsverschil heb ik inderdaad gemeten van maar 0,07 volt, niet toereikend dus. Een aantal NPN sensoren uitproberen is jouw advies. De spanning opvoeren is ook nog een optie schrijf je. Kun je uitleggen hoe dat dan werkt? Weet hier onvoldoende van.

      Beantwoorden
      • Een adapter pakken die tussen de 6 en 24v output geeft… let op: koppel dan geheel los van je Pi anders sloop je die door te hoog voltage.

        Beantwoorden
        • Bedankt Martin voor je snelle reactie. Helemaal los koppelen de voeding en de ground, de zwarte switch wordt nog wel gebruikt neem ik aan. Groet Gert

          Beantwoorden
          • Nee nee, alle 3 de draden loskoppelen van je Pi. Dan de bruine en blauwe draden met 6-36v adapter verbinden en een multimeter tussen zwart en blauw om spanningsverschil te meten wanneer je de sensor boven het metalen plaatje houdt..

          • Michael Jacobs

            Hardware id ontbreekt in de tutorial.

            Misschien even aanpassen?

  • Inmiddels alle spanningsproblemen (aanpassingen) achter mij gelaten. Gewoon een 5 volt NPN sensor kunnen vinden, werkt perfect!

    Beantwoorden
    • Hallo watermeters,

      Na jaren probleemloos mijn water verbruik te hebben gemeten zit ik nu al een poosje zonder.
      Ik heb een nieuwe SD moeten maken, en de PI updaten vorig jaar omdat de OS zover achter liep dat de nieuwe domoticz versie niet wilde draaien. Enfin dat is allemaal gelukt, maar de watermeter heeft problemen sinds.
      Ik heb de watermeter opnieuw geïnstalleerd/toegevoegd, en als ik hem handmatig start dan werkt het, maar de volgende dag staat de teller weer op 0 en komt er niets meer bij. Ik moet ook zeggen dat ik in de vorige installatie meer begreep hoe je een cron task aanmaakte, het ziet er wat andere uit en ik kom er ook niet echt uit hoe je daar wijzigingen in doe. De commando’s etc. Krijg ik niet voor elkaar of uitgezocht. Als ik het goed verwoord moet je een keer een interface type kiezen, er zijn opties begrijp ik, maar wat ik nu heb kan ik niet echt bedienen of instellen. Heb je (iemand) een goede tip voor mij. Ik zit hier een beetje vast, en het werkte zo leuk.
      B.v.d.

      Beantwoorden
  • Nils Nijenhuis

    Heel interessant onderwerp, ik wil dit zeker proberen.
    Echter heb ik domoticz op mijn Synology NAS draaien en niet op een Pi.

    Hoe zou je dan de 5 Volt NPN sensor moeten aansluiten?
    iemand een idee hoe dit moet?!

    b.v.d. Nils

    Beantwoorden
  • Het script (watermeter.py) blijft allleen maar actief/draaien als ik dit opstart in putty en putty blijft actief op de PC. Als ik putty afsluit of de PC sluit stopt ook het script cq het water verbruik wordt niet meer gerapporteerd.
    Als ik het script opnieuw opstart (via putty) loopt allles weer OK.
    Maar je wilt dus dat het waterverbruik ook wordt bijgehouden asl putty niet meeer actief is of als de als de PC uitstaat.
    Wie helpt mij?

    Johan

    Beantwoorden
  • Wat een leuk project.
    Alleen mijn huidig raspberry pi (met domoticz) staat te ver weg van de watermeter.
    Nou heb ik nog een raspberry pi 3 liggen kan ik deze dan koppelen aan de watermeter, en die weer in domoticz zetten?

    Beantwoorden
  • Leuk zeg ik ga het ook proberen. De sensor heb ik inmiddels binnen. Zal dit ook met Home Assistant werken of enkel Domoticz?

    Beantwoorden
  • Hoi,
    Leuk project, de sensor werkt en software matig zie ik de poort hoog worden en weer afvallen. Het python script voor de watermeter heb ik aangepast en op de juiste plek geïnstalleerd en ook de crontab heb ik aangemaakt. Bij het handmatig starten van het script krijg ik echter een foutmelding in regel 2: import RPi.GPIO as GPIO
    Import error: No module named RPi.GPIO
    Iemand een idee wat ik niet goed doe?
    Alvast bedankt.

    Beantwoorden
    • Ik heb hetzelfde issue. Volgens mij omdat python2 niet meer gesupport wordt.

      Beantwoorden
  • Werkte tijdenlang als een zonnetje. Maar met upgrade naar Bullseye werkt het niet meer lijkt het. Komt denk ik door het stoppen van python2.

    Enig idee of er een python3 versie van het script aanstaande is?

    Beantwoorden
    • Dit had ik ook door de upgrade en ik heb het hiermee opgelost:

      sudo apt install python-is-python2

      Ben ook wel benieuwd of er een goede 2 naar 3 vertaling komt of dat iemand die kan maken. ik heb er geen kaas van gegeten.

      Beantwoorden

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *