Watermeter toevoegen aan Domoticz

De meterstanden van stroom en gas kunnen we eenvoudig met Domoticz uitlezen. Hoe mooi zou het zijn als dit ook met de watermeter zou kunnen. Er zijn dure aanvullingen voor de watermeter te bestellen die de pulsen uitlezen, maar met een simpele inductieve sensor kom je een heel eind.

Hoe werkt het
Op de watermeter zit een schijfje dat bij iedere liter water éénmaal rond draait. Op dat schijfje zit een half maantje van metaal. De inductieve sensor wordt boven het draaischijfje gemonteerd 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 (type: LJ12A3-4-Z/BX-5V)

Inductieve NPN sensor
De inductieve sensor, hierna te noemen als NPN-sensor, heeft 3 aansluitdraden (bruin/zwart/blauw). Deze moeten met de GPIO header pins van de Raspberry Pi verbonden worden. Voor deze montage kun je het beste Dupont female connectoren aan de 3 draden monteren/solderen.

Dupont female header pins

Sensor aansluiten op GPIO header pinnen
– De blauwe draad wordt op een GND-pin (bv. pin 39) aangesloten,
– De zwarte draad op een GPIO (bv. GPIO 21 = pin 40) en
– De bruine draad op een 5V-pin (pin 2).

Aansluittabel

De NPN-sensor (type: LJ12A3-4-Z/BX-5V) heeft een detectie afstand van 4mm en werkt op een spanning vanaf 5V . Op de 5 Volt van de Raspberry Pi blijkt de sensor ook prima te werken.

Afstand te groot
Mocht het met de bovengenoemde sensor niet lukken, de NPN-sensor is ook een beschikbaar met een 8mm detectie afstand. De specificaties van de LJ18A3-8-Z/BX-5V sensor zijn hetzelfde als de hierboven beschreven sensor.

Wil je een sensor met een grotere detectie afstand? Kijk dan hier. Er zijn wat zaken die je moet weten voordat je een sensor aanschaft.

Pull-down weerstand
De sensor geeft na het detecteren een 5V signaal af. Er zal een pull-down weerstand (10K) in het circuit opgenomen moeten worden om de stroom (5V/10.000Ω=0.5mA) te minimaliseren. Daarmee staat er wel 5V (HOOG) spanning, maar nauwelijks stroom op de GPIO poort.

Deze schakeling werkt prima om tijdelijk de sensor te testen, maar wordt afgeraden om deze permanent te gebruiken. Er is een kans dat de GPIO poort op den duur beschadigd raakt.

Sensor waarbij 5V via een pull-down weerstand op GPIO 21 is aangesloten

Level shifter (voorkeur!)
Zoals gezegd geeft de sensor na het detecteren een 5V signaal af. Zoals hierboven aangegeven kan deze in principe niet rechtstreeks op de GPIO poort van de Raspberry aangesloten worden omdat de kans op beschadiging groot is.

De GPIO-poort dient een HOOG logisch signaal van maximaal 3.3V te ontvangen. De beste manier om de sensor op de GPIO pin aan te sluiten is het gebruik van een level-shifter waarbij het logische 5V niveau naar 3.3V wordt omgezet. Voor de volledigheid wordt er nog een 10KΩ pull-down weerstand in het circuit opgenomen.

Klik hier voor meer informatie over de level shifter.

Sensor aangesloten via een level shifter en een pull-down weerstand

Sensortest – hardware
Zodra de NPN-sensor op de Raspberry Pi aangesloten is houd je het blauwe uiteinde van de sensor tegen een stukje metaal aan. Als de sensor qua voeding goed is aangesloten zal de led bovenop de sensor oplichten.

Vervolgens houd je de sensor boven het draaischijfje van de watermeter, bij het halve metalen maantje. Ook nu zou de led op de sensor moeten oplichten zodra het metalen gedeelte van het draaischijfje exact onder de sensor zit.

Mocht de sensor op de watermeter niet reageren, kan het zijn dat het glas van de watermeter te dik is om de draaischijf te detecteren. Dit komt voornamelijk voor bij de wat oude watermeters. Het alternatief is om een sensor met een grotere afstandsdetectie te nemen. Ook kun je het blauwe uiteinde van de sensor iets inkorten door wat plastic weg te schuren als het glas iets te dik blijkt (praktische tip van bouwers).

Sensortest – software
Om er zeker van te zijn dat het signaal van de sensor via de GPIO-pin (21) door de software gedetecteerd wordt, kun je het programma gpioStatus.py gebruiken. Aangezien dit een autonoom testprogramma is, hoef je hiervoor geen Domoticz geïnstalleerd te hebben. Het zip-bestand bevat bestanden voor Python 2 en Python 3.

Nadat je het bestand ge-unzipt hebt, start je het met:

python2 gpioStatusP2.py

of

python3 gpioStatusP3.py

In rust is het signaal HOOG. Bij detectie van metaal wordt het signaal LAAG.


LET OP! Als je gebruik maakt van het nieuwste Raspberry Pi OS, dan ontbreekt Python 2 omdat deze versie End-Of-Life is. De simpelste en meest praktische oplossing om van Python 2 gebruik te maken is het installeren van de Raspberry Pi OS (legacy) versie met Imager.


Sensor plaatsen
Zodra de NPN sensor het draaischijfje goed detecteert is het tijd om de NPN-sensor definitief op de watermeter de plaatsen. Belangrijk is dat de sensor recht boven het metalen draaischijf geplaatst wordt en zich zo dicht mogelijk boven het schijfje bevindt. Hieronder zie je mijn montage met een bevestigingsbeugel die je zelf eenvoudig kan maken. Het voordeel is dat dit een zgn. non-destructieve (zonder de meter aan te tasten) manier is om de sensor te plaatsen. Misschien is deze montage niet de charmantste, maar het heeft wel mijn voorkeur.

Goede manier om de sensor boven de watermeter te plaatsen

Sensor in Domoticz aanmaken

Plug-in beschikbaar
Sinds kort tijd is er een plug-in beschikbaar die de handmatige installatie overbodig maakt. De beschrijving van de installatie ervan staat onderaan de pagina. Wil je de handmatige installatie eerst proberen, dan kun je de tutorial vanaf hier vervolgen.

Je kunt de sensor in Domoticz opnemen en zien hoeveel water je dagelijks verbruikt. Hiervoor moet je in Domoticz een RFXMeter sensor aanmaken. Dit doe je door middel van een JSON (Java-script). Geef de volgende regel in de adresbalk van je browser op een apparaat dat in hetzelfde netwerk zit als de Raspberry Pi-Domoticz server:

http://192.168.0.14:8080/json.htm?type=createvirtualsensor&idx=29&sensorname=Water&sensortype=113

Uiteraard moet je het bovenstaande IP adres en het poort nummer aanpassen naar de waarde van jouw Raspberry Pi zoals je deze vanuit de Domoticz installatie teruggekoppeld hebt gekregen. Het is daarom handig om de Pi een vast IP-adres te geven.

Idx 29 wordt gebruikt om een virtuele sensor te creëren. Als een niet-bestaande hardware-IDX wordt gebruikt, wordt het gemaakte apparaat grijs weergegeven in de gebruikersinterface. Op zich niet erg, het apparaat zal het prima doen. Klik hier om te zien hoe je het apparaat wit weergeeft. Het wordt aangeraden om dit na deze tutorial te doen.

Sensortype 113 is het sensorid voor de RFXMeter.

Als het goed is krijg je nu een melding in de Domoticz 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 heeft idx 15 gekregen, deze moet je in de volgende link invullen. Dit doe je door in de link achter idx= de verkregen waarde in te vullen. Zoals je ziet staat deze nu op 15. In de opdrachtregel wordt aan de RFXMeter switchtype=2 toegevoegd, ofwel wordt daarmee sensortype ‘Water‘ toegekend.

http://192.168.0.14:8080/json.htm?type=setused&idx=15&name=RFXMeter&switchtype=2&used=true

Als het allemaal goed gegaan is krijg je in Domoticz onderstaande sensor (uiteraard met 0 liter) te zien in het Utility-tabblad.

Naslagwerk
Wil je nog eens nalezen hoe een virtuele sensor in domoticz aangemaakt wordt en wat de waarden betekenen, kijk dan hier.

Python script
Met het Python script ‘watermeter.py‘ lees je de GPIO (21) uit en wordt de waarde bijgeschreven aan meterstand_water.txt. Vervolgens wordt de opgeslagen totaalwaarde via JSON (java) aan Domoticz doorgezet.

Plaats het script in de folder /home/pi/domoticz/scripts/.

Je huidige stand van de watermeter kun je in het script op regel 9 invullen bij “Counter”. Op regel 12 vul je het IP adres en het poort nummer van de 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.

Meterstand
De meterstand wordt bijgehouden in het bestand meterstand_water.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_water.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, maar allereerst moet het script de juiste permissies hiervoor hebben. Ga naar de map scripts waarin het script watermeter.py staat en geef je het commando:

chmod 777 watermeter.py

Open nu de crontab met onderstaand commando:

sudo crontab -e

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

@reboot /usr/bin/python /home/pi/domoticz/scripts/watermeter.py >/var/log/cronlog.log 2>&1

Sluit de crontab met “CTRL X” en bevestig dat je de wijziging wilt opslaan. Vanaf nu wordt het script automatisch na iedere reboot gestart. Reboot de Raspberry Pi met:

sudo reboot

Draait het script?
Dit is het eerste dat je moet controleren als er geen verbruik in het Domoticz venster zichtbaar is, maar de LED op de sensor wel pulst . Om te controleren of het script daadwerkelijk gestart is kun je onderstaand commando ingeven:

grep cron /var/log/syslog

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 script zijn werk doet (tellerstand ophogen als sensor activeert en puls opslaan in meterstand_water.txt bestand):

sudo python /home/pi/domoticz/scripts/watermeter.py

Verbruik wat water door bijvoorbeeld het toilet door te trekken of de waterkraan te openen, je zult dan een terugkoppeling van het programma zien met de nieuwe meterstand.

Vanaf nu kun je het waterverbruik in Domoticz monitoren!

Meetwaarden configureren
Afhankelijk van de meting kan er een factorcorrectie nodig zijn omdat er een verkeerde waarde getoond wordt. Klik dan in Domotics op het waterdevice en aanpassen. Vul hier de juiste waarde in bij Meter deler. Zo nodig kun je ook een Meter Offset meegegeven zoals de stand van de watermeter. Ik heb het device Water genoemd.

~2% afwijking
De dagelijkse waarden geven een goed beeld van het waterverbruik. De afwijking van de Domoticz waarde in relatie tot de watermeter bedraagt zo’n 2%. Deze kun je eenvoudig meten door op het begin en eind van de dag (00:00 uur) de waterstand op de mechanische meter af te lezen en deze te vergelijken met de Domoticz waarde. De 2% afwijking kun je in het python script ‘watermeter.py‘ verwerken door de variabele Counter met 0.98 te vermenigvuldigen om een nog nauwkeurige waarde in Domoticz te krijgen.

De waterstanden. Je kunt goed zien wanneer de tuin besproeid is en de (vaat)was gedraaid heeft.

Domoticz de-installeren
Wil je Domoticz de-installeren, gebruik dan: sudo rm -r /home/pi/domoticz

Watersensor wordt grijs weergegeven
De sensor doet het prima, maar het viel me direct op dat na het aanmaken van de watermeter m.b.v. de JSON commando’s de sensor grijsachtig wordt weergegeven. Hoe je dit oplost wordt hier beschreven.

Watersensor label wordt donker weergegeven

Beugel voor sensormontage op watermeter
Voor de volledigheid beschrijf ik hier hoe je een passende beugel voor de sensor maakt en (nondestructief) monteert.

Watermeter met pulsmeting door naderingssensor

Plug-in beschikbaar om automatisch sensor in Domoticz te installeren
Sinds kort is er een plug-in beschikbaar die je in plaats van bovenstaande handleiding gebruiken kunt. Ook blijkt het de oplossing te kunnen zijn als de hardware tot en met het bestand van de watermeter goed werkt, maar je geen koppeling gerealiseerd krijgt met de RFX-sensor in Domoticz.

De ontwikkelaar worstelde met de handmatige stappen om de ​​watermeter in Domoticz te krijgen op sites waar deze tutorial van afgeleid is. Daarom heeft hij de volgende stappen geautomatiseerd door het python-script te herschrijven naar deze plug-in.

  • GPIO-pin wordt automatisch geëxporteerd (je hoeft de pin niet in shellscripts te exporteren voordat je domoticz start)
  • plug-in begint en stopt met domoticz, dus geen stappen om een ​​apart python-script actief te houden op je systeem, alles wordt afgehandeld binnen domoticz
  • Teller wordt automatisch aangemaakt, dus geen moeilijke json-commando’s om de teller handmatig aan te maken

De broninformatie is te vinden op https://github.com/akamming/domoticz-watermeter.

Beknopte installatie plug-in (zie ook github link)
– installeer de afhankelijkheid door het commando “sudo apt-get install python3-rpi.gpio” te geven
– ga naar je plugins-directory in de domoticz-directorie
– geef het commando “git clone https://github.com/akamming/domoticz-watermeter.git
– herstart Domoticz
– voeg de hardware toe als dat nog niet gedaan is. Op de (GitHub) hardwarepagina staat een beschrijving hoe de plug-in te configureren
– Zorg ervoor dat je rfxcom divider-instelling voor water (Setup -> Instellingen -> Tellerinstellingen) in Domoticz is ingesteld op 1000.

Have A Nice Day!

42 Reacties

  1. Hoi goed artikel erg duidelijk zelfs voor mij als leek. Gas en elektra was eigenlijk geen probleem. De watermeter is een grotere uitdaging. Het python script heb ik aangepast en de crontab heb ik toegevoegd, de watermeter zie ik in domoticz alleen wanneer ik het script handmatig start krijg ik een foutmelding in line 2
    import RPi.GPIO as GPIO
    ImportError: No module named RPi.GPIO

    Heb je enig idee wat ik niet goed doe?
    Alvast bedankt voor je antwoord.

    • Dag Leon, In de zgn. ‘lite’-OS versie wil de bibliotheek wel eens ontbreken. Het volgende commando zou moeten helpen. Het update de geïnstalleerde pakketten en installeert voor python 2 en 3 de rpi.gpio bibliotheek. Laat even weten of het gelukt is.
      ‘sudo apt-get update && sudo apt-get install python-rpi.gpio python3-rpi.gpio’

  2. Ik lees nogal eens op andere sites die deze methode gebruiken dat daar melding wordt gedaan van hangen / haperen. Het ronddraaiend plaatje stop dan net op de ‘verkeerde’ plaats waardoor deze onterecht doortelt. Herken jij dit probleem en hoe heb je dat opgelost?

    • Ik ken het probleem niet. Ik heb al meerdere sensoren geplaatst en overal werkt het prima. Als je de juiste sensor (5V!) gebruikt en je hebt ook een logische niveau-omzetter toegepast, in combinatie met een pull-up weerstand (noodzakelijk zonder niveau-omzetter) om de GPIO het juiste niveau (3,3V) aan te bieden, heb je een zuivere pulstelling. Ik zie projecten die niet met de juiste spanningsniveaus omgaan. Tja, dan is het maar afwachten of het goed blijft werken. Heb je een link voor me die ik kan bestuderen?

  3. Ben een beetje aan het experimenteren met mijn eerste Raspberry Pi (Zero W). De NPN NO inductive sensor heb ik aangesloten met de pull-down weerstand tussen blauw en zwart.

    Ik meet nu echter bij open sensor / geen metaal in de buurt een spanning van 3V als ik de spanningsmeter aansluit op de zwarte en bruine draad. Hou ik metaal bij de sensor dan verandert de spanning naar 5V. Ik ben me nog aan het verdiepen in hoe pulldown en pullup weerstanden werken, maar ik zou verwachten dat hij standaard 0 is en bij contact > 0.

    Tweede ding wat me opvalt is dat het testscript niet werkte. Hij gaf fouten over gebruik van tabs en spaties. Heb alle tabs vervangen door spaties en toen deed het script het bijna. In de regel waar ‘De status van de GPIO poort’ wordt geprint heb ik de haakjes weggehaald, zodat het begin van de regel wordt:

    print(“De status van de GPIO poort”,poort,”=033[1,32m 1/HOOG/True… etc

    Nu geeft het script aan dat de status HOOG is bij een sensor die geen signaal geeft en LAAG bij een sensor die metaal detecteert… lijkt nog niet te kloppen 🙂

    • Dag Friso,

      ik heb net het script gpioStatus.py nog even gedownload en in de terminal geprobeerd met de NPN-sensor. Het script gpioStatus.py gaf de waarden omgekeerd aan, dat is niet de bedoeling. Dit heb ik gecorrigeerd.
      – Als de sensor GEEN metaal detecteert, is het logische signaal HOOG.
      – Wordt er metaal door de sensor gedetecteerd, dan is het logische signaal LAAG.
      De signalen heb ik met de oscilloscoop nagemeten.

      Voor de Domoticz – Watermeter maakt het niet uit of het HOOG of LAAG is, als het signaal maar pulst, dan loopt de teller van de watermeter.

      Weet wel dat ik er een levelshifter tussen heb zitten. https://www.picademie.nl/index.php/2020/10/23/bi-directionele-logische-niveau-omzetter/
      5V met een pull-down weerstand op GPIO heeft niet mijn voorkeur.

      Ten aanzien van de spaties e.d. in het script heb ik in de terminal niets gemerkt. De terminal voert het script goed uit, ik heb geen meldingen.

      Wil je meer weten over pull-weerstanden, kijk dan eens hier: https://www.picademie.nl/index.php/2021/02/16/pull-up-pull-down/

      Dank voor je oplettendheid.

      • Thanks. Ik ga me er in verdiepen. Klopt het dat het script dat er nu op staat in principe identiek is aan het script dat er voor gisteren op stond? Ik heb ze even vergeleken, maar zie geen verschil.

        Het blijft wel vreemd dat hij bij mijn Raspberry Pi het script niet pakt en dat ik eerst die twee regels moet aanpassen.

        werkt niet: print (“De status van GPIO poort”),poort,(“=\033[1;32m 1/HOOG/True\033[1;m”)

        werkt wel: print (“De status van GPIO poort”,poort,”=\033[1;32m 1/HOOG/True\033[1;m”)

        Ik heb inderdaad ook een levenshifter liggen, maar die moet ik nog in elkaar solderen. Ook dat is nieuw voor me, dus moet ik even oefenen 🙂

        • Dag Friso,

          Het bestand gpioStatus.py is aangepast, dit kun je lezen op regel 3 van het script. Er is een verschil met hoe het was. HOOG is omgewisseld met LAAG. Misschien gebruik je het oude script nog omdat deze nog in je cache staat.

          De regel werkt prima in python 2.7.16. Jouw aanpassing op de regel werkt niet bij mij. Welke versie gebruik je?

          Python versie en code

          • Vreemd. Ik heb twee bestanden. In de bestanden staat de laatste wijzigingsdatum. Oude bestand is 15 oktober 2021 en nieuwe bestand 24 januari 2022. Voor de rest zijn de bestanden identiek…

            Compare: https://drive.google.com/file/d/1Xz5DGSyjE6pFwyZmPnDrNWMl2XZMUd1n/view?usp=sharing

            Op mijn Pi draait Python 3.9. Dat verklaart het verschil qua syntax. Tussen versie 2 en 3 is wel e.e.a. veranderd met het print statement. Als ik het script in een python validator (https://extendsclass.com/python-tester.html) plak dan geeft hij ook die identation error waar ik het eerder over had. Misschien gaat versie 2 hier ook makkelijker mee om.

          • Dag Friso,

            Gebruik het script dat nu op de website staat!

            In de distributie zit python versie 2.7.16 als standaard python in de terminal en voor Python 3 heeft deze versie 3.7.3. Uiteraard kun je deze zelf updaten. Je zal begrijpen dat de versies onderling niet compatible zijn.

            De scripts van de watermeter tutorial zijn ontwikkeld voor python 2.

            In mei 2022 heb ik het script herschreven. Het is nu beschikbaar voor Python 2 en 3. Beide download je in een keer op de pagina.

  4. Leuk artikel maar ik loop vast.
    De meter loopt niet op.
    Gpio status getest maar die loopt ook al vast.
    pi@raspberrypi:~ $ python gpioStatus.py
    File “/home/pi/gpioStatus.py”, line 17
    print (“\033[1;1;1m,\033c”)
    TabError: inconsistent use of tabs and spaces in indentation

    Bij het watermeter script krijg ik de volgende melding.
    pi@raspberrypi:~ $ sudo python /home/pi/domoticz/scripts/watermeter.py
    File “/home/pi/domoticz/scripts/watermeter.py”, line 61
    print “JSON call = “+ str(url1)
    ^
    SyntaxError: invalid syntax

    PLease help

    • Dag Martijn, welke versie Python gebruik je? Het script is voor Python2 bedoeld.
      Voor de zekerheid heb ik het programma net nog even getest. Het werkt zoals het bedoeld is.

      gpioStatus.py

      Bij Python3 krijg je inderdaad de melding die je opgeeft.

      Controleer jouw default Python versie:
      Type in de terminal: python [ENTER]
      Nu zie je de versie ervan.

      Wil je de default Python versie aanpassen?
      Geef dan het volgende commando en maak je keus:
      sudo update-alternatives –config python

      Opstarten met Python2
      python2 gpioStatus.py [ENTER]

      Laat even weten hoe het gegaan is. Succes!

      • Ik heb inderdaad python 3.9.2.
        Nieuw uit de doos haha.

        Als ik de default wil aanpassen geeft hij onderstaande melding.
        pi@raspberrypi:~ $ sudo update-alternatives -config python
        update-alternatives: error: unknown argument ‘-config’

        • Martijn,

          Kijk in jou systeem of RPi.GPIO in het pakket zit.
          Ga hiervoor naar de Start-knop -> Voorkeuren -> Add/Remove Software.
          Vul in het veld waar de cursor staat: RPi.GPIO
          Je ziet dan het softwareoverzicht dat in de bibliotheek van je systeem staat t.a.v. RPi.GPIO.

          Zoals je ziet staan bij mij de vinkjes bij de pakketten die geïnstalleerd zijn.
          Zet bij jouw overzicht vinkjes voor die software die je wilt installeren. Je kunt dezelfde als ik gebruik nemen.

          Add/Remove Software

          Probeer de scripts nog eens en kijk of je dezelfde meldingen krijgt.

          Succes!

          • OPGELOST!!
            Ofschoon in de nieuwste versie van het Raspberry Pi OS Python 2 niet meer opgenomen is, kan je een oudere versie op je RPi4 installeren waar Python 2 (en alles wat erbij hoort) meegeleverd wordt.

            Dus: SD-kaart formatteren en met Imager de Raspberry Pi OS (legacy) versie selecteren
            Legacy

            Ik heb het op mijn RPI4 getest en het werkt zoals het zou moeten. Succes!
            Ik hoor het wel.

        • Ik heb een volledig nieuwe installatie gedaan van het raspberry pi OS.
          Kan alleen module 1 en 5 van jou zien.
          De rest is dus niet geinstalleerd.
          Diverse opties geprobeerd om m alsnog geinstalleerd te krijgen maar krijg elke keer een melding (zoals ik in mijn vorige reactie ook al tikte) in de trend van het staat er al doe het er maar mee.

      • Martijn,

        Kijk in jou systeem of RPi.GPIO in het pakket zit.
        Ga hiervoor naar de Start-knop -> Voorkeuren -> Add/Remove Software.
        Vul in het veld waar de cursor staat: RPi.GPIO
        Je ziet dan het softwareoverzicht dat in de bibliotheek van je systeem staat t.a.v. RPi.GPIO.

        Zoals je ziet staan bij mij de vinkjes bij de pakketten die geïnstalleerd zijn.
        Zet bij jouw overzicht vinkjes voor die software die je wilt installeren. Je kunt dezelfde als ik gebruik nemen.

        Add/Remove Software

        Probeer de scripts nog eens en kijk of je dezelfde meldingen krijgt.

        Succes!

        • Hoi Martin,

          Ik heb alles nog eens onderzocht. Ik heb mijn RPi4 met het nieuwste image geïnstalleerd. Ook hier was Python 2 niet meer aanwezig, vanwege E.O.L. in 2020.

          Ik heb vervolgens handmatig de laatste Python versie geïnstalleerd, zie: https://www.picademie.nl/index.php/2022/03/22/python-2-installeren/ Dit werkt goed, maar de module RPi.GPIO kan niet meer geïnstalleerd worden omdat meerdere onderdelen, die gekoppeld zijn aan Python 2 niet meer beschikbaar zijn.

          Kortom: Het is NIET meer mogelijk op nieuwe images Python 2 scripts te draaien vanwege het ontbreken van Python 2 ondersteuning.

          Ik wil nog onderzoeken of de Raspberry Pi-Foundation oudere images beschikbaar stelt waar Python 2 nog in opgenomen is. Hier kom ik nog op terug.

          • OPGELOST!!
            Ofschoon in de nieuwste versie van het Raspberry Pi OS Python 2 niet meer opgenomen is, kan je een oudere versie op je RPi4 installeren waar Python 2 (en alles wat erbij hoort) meegeleverd wordt.

            Dus: SD-kaart formatteren en met Imager de Raspberry Pi OS (legacy) versie selecteren
            Legacy

            Ik heb het op mijn RPI4 getest en het Python 2 script gpioStatus.py werkt zoals het zou moeten. Succes! Ik hoor het wel.

  5. Hoi Martin,

    Ik heb alles nog eens onderzocht en mijn RPi4 opnieuw geïnstalleerd met het nieuwste OS-image. Ook hier was Python 2 niet meer aanwezig, vanwege E.O.L. in 2020. Ik heb vervolgens handmatig de laatste Python versie geïnstalleerd, zie: https://www.picademie.nl/index.php/2022/03/22/python-2-installeren/ Dit werkt goed, maar de module RPi.GPIO kon niet meer geïnstalleerd worden omdat meerdere onderdelen, die gekoppeld zijn aan Python 2 niet meer beschikbaar zijn.

    Conclusie: Het is NIET meer mogelijk op de nieuwste OS-image Python 2 scripts te draaien vanwege het ontbreken van Python 2 ondersteuning op de nieuwste OS-versie.

    Dus: Mocht je in de gelukkige omstandigheid zijn een oud OS-image te hebben liggen waar Python 2 met alle gekoppelde modules op staan? Koester het!

    Voor diegene die Python 2 wil gebruiken stelt de Raspberry Pi foundation een zgn. Legacy-image beschikbaar, waarbij Python 2 gewoon beschikbaar is. Deze kun je via de Imager op de SD-kaart installeren. Deze legacy versie wordt, hetzij beperkt, nog steeds onderhouden.

  6. Ja geweldig hij doet het. (gelukkig dan lag dat stukje niet aan mij)
    Ben dus weer een stap verder.
    Gpio status getest hij ziet de sensor maar nu kom ik bij crontab aan.
    er staat bij mij een standaard regeltje van min hour …. dus ik heb de benodigde regel eronder gezet.
    Met ctrl x afsluiten en opslaan, maar dan zegt hij Opslaan in bestand: /tmp/crontab_sw2d5xsq
    Heb een reboot geprobeerd maar hij start m niet. Waarschijnlijk omdat hij dus in een tmp map staat.
    🙁

    • Heb het script handmatig gestart en ik kan inderdaad zien dat er liters bijkomen dus het script werkt.
      Bij mijn meter word trouwens alleen maar de totaalstand elke keer veranderd het getal aan de bovenzijde in domoticz blijft op 0 staan.

      • Ik neem aan dat je het script watermeter.py bedoelt. In de directorie (/home/pi/domoticz/scripts/) van het script is het bestand meterstand_water.txt aangemaakt. Welke waarde staat hierin? Als het goed is wordt hier de pulstelling van je sensor, het aantal liters, bijgehouden. Domoticz leest deze waarde in en laat deze zien.

    • Hoi Martijn,

      Maak je geen zorgen over waar het daadwerkelijk wordt “opgeslagen” – Elke gebruiker kan zijn eigen crontab hebben, en hoewel deze bestanden in /var/spool/cron/crontabs staan, zijn ze niet bedoeld om rechtstreeks te worden bewerkt, dat gebeurt dan via een tmp-bestand.
      Bij het uitvoeren van sudo crontab -e, dus voor root, wordt de crontab opgeslagen in /var/spool/cron/crontabs/root.

      Wil je meer weten over Cron, kijk dan hier

      • Bedankt voor al je hulp. Hij geeft nu alles correct weer en doet netjes zn dingetje.

  7. Wie kan mij helpen met het enige probleem.

    Ik heb alles lopen zoals beschreven en het doet het ook. Als ik de kraan open doe dan komt er in de meterstand_water.txt heel netjes te staan dat ik water heb verbruikt. Alleen komen deze waardes (liters) niet in mijn RFXmeter te staan. Ik heb de juiste idx 369 gebruikt en ingevuld in de script, maar hij geeft gewoon niet weer.

    • Dag Dennis,

      Lastige storing. Ik heb wat meer informatie nodig om te kunnen helpen. Doorgaans werkt het in Domoticz prima als de meterstand de juiste waarde weergeeft. Mijn gevoel zegt dat idx 369 wel een erg hoge waarde is.
      – Welke Raspberry gebruik je?
      – Welk OS gebruik je?
      – Is de watermeter de enige sensor in je Domoticz?
      – Je zou op een andere SD-kaart de legacy OS kunnen installeren om te zien hoe het installeren dan gaat. Installeer dan alleen de watermeter.
      – De JSON (Java script) moet zorgvuldig geïnstalleerd worden. Als dat goed gedaan is, zou het moeten werken.

      • Dag HanD,

        ik heb een rpi 3b (deze draait al jaren perfect)
        De os is Raspbian GNU/Linux 10 (buster)
        Heb maar 1 sensor direct aangesloten aan de raspberry (de rest is via wemos ect)

        Het rare is dat als ik naar de map meterstand_water ga en daar staat dan 113 liter en ik ga water verbruiken en open dan weer die txt map dan zie ik dat er water is verbruikt en staat die op 115 liter. dus de meter doet het goed en alles wordt goed geregistreerd. Alleen geeft hij het niet door aan de RFXmeter.

        Dat de idx zo hoog is kan wel kloppen. Heb me domoticz al jaren draaien en dan voeg en verwijder je veel dingen.

        • Dag Dennis,

          Zoals je aangeeft start het script watermeter.py iedere keer na reboot en telt de verbruikte liters bij de laatste stand erbij in het bestand meterstand_water. Daarmee lijkt het hardware deel inclusief de scripts prima te werken.

          Mijns inziens werkt het bij jou niet omdat er geen koppeling is tussen het hardware object en de database.

          Je gaf aan dat je al veel ge-experimenteerd hebt met sensoren in Domoticz, vandaar het hoge idx-nummer. Een vervuilde sensor/idx-tabel in Domoticz draagt waarschijnlijk niet bij aan de oplossing van dit probleem. Wellicht is er een mogelijkheid om dit in Domotics op te schonen, beter nog…. Domoticz opnieuw te installeren.

          ====================================================================

          Koppelen hardware object aan de Domoticz database

          Na het aanmaken van de virtuele RFX-sensor in Domoticz krijg je een melding in de Domoticz browser te zien dat de sensor aangemaakt is en welk idx de sensor heeft gekregen.

          Dit idx-nummer heb je bij de volgende stap nodig. Met de idx wordt het hardware object aan de Domoticz database gekoppeld. In mijn voorbeeld heeft mijn sensor idx 15 gekregen. Wat is het idx-nummer bij jouw? Deze moet je in de volgende link invullen i.p.v. de waarde 15 die er nu staat! Dit doe je door in de onderstaande link achter idx= de verkregen waarde (jouw idx) in te vullen. Zoals je ziet staat deze nu op 15 (= mijn idx!). In de opdrachtregel wordt ook nog aan de RFXMeter switchtype=2 toegevoegd, ofwel wordt daarmee sensortype ‘Water‘ toegekend.

          Werk zorgvuldig! Geef de volgende link met jouw idx slechts 1x in! (De rode regel is een aaneengesloten regel, maar afgekapt door de paginabreedte).

          http://jouw_lokale_ip_adres:8080/json.htm?type=setused&idx=15&name=RFXMeter&switchtype=2&used=true

          Dit zou moeten werken! De tutorial is al door vele honderden gebruikers succesvol gevolgd. Er is geen reden waarom dit bij jouw anders zou moeten zijn.

          In het uiterste geval kan ik een SD-kaart met een werkende sensor in Domoticz voor je aanmaken en opsturen, maar wat is daar nou voor lol aan…..

          Ik hoor graag van je of het uiteindelijke gelukt is of niet.

          • Ik krijg idd ook dat de rfx goed is aangemaakt. Daarna netjes die link dat die hem omzet naar watermeter.

            Ik ga nog wat proberen. Domoticz opnieuwe doen zie ik niet zo zitten. heb er zo veel in zitten

          • Snap ik. Wellicht heb je nog ergens een SD-kaart liggen waar je de tutorial kunt testen zodat je zeker weet dat het werkt.

            Mocht je nog vragen hebben, hoor ik graag van je.

  8. Ik heb nu de plugin gebruikt en die werkt top. Gewoon via putty installeren en hij staat tussen de hardware. Gpio 21 selecteren en hij geeft de waardes van de meter door via een zelfde rfxmeter en slaat de gegevens ook op in de watermeter_stand map. Het blijft apart dat die het dan nu wel doet. Alles werkt dus hoe het moet. Alleen gaf die de waardes niet door aan de rfxmeter.

    Toch bedankt voor de hulp. Ik ga nog even onderzoeken waar het door kwam.

  9. Bedankt voor de heldere uitleg en schema. Ik heb een PNP variant van de sensor en vermoed dat de bedrading dan anders moet. Iemand een idee?

    • Dag Frank,

      Het verschil tussen de NPN- en PNP-sensor is dat het HOOG/LAAG-signaal op de uitgang tegenovergesteld van elkaar is. Hier is een filmpje waar dit uitgelegd wordt. De uitleg begint bij 2:56 minuten.

      Voor het circuit en de werking ervan maakt het niet uit wanneer de puls op de GPIO poort gezet wordt. Zowel bij een NPN- als een PNP-sensor zal er een pulswisseling iedere verbruikte liter aangeboden worden…. en die hebben we nodig!

      Het is ongevaarlijk om dit te testen met het circuit dat ik beschrijf. Het circuit blijft hetzelfde. Je kunt het I/O-signaal testen met het tooltje gpioStatus.py dat ik in de tutorial aanbied. Mocht je nog vragen hebben of er problemen mee ondervinden, laat het dan weten.

      Succes!

  10. Waarom zo’n ingewikkelde oplossing met een level-shifter? Ik heb hier honderden weerstanden en transistors liggen, maar geen level-shifter. Waarom niet gewoon een extra weerstand van 5k tussen de zwarte draad en GPIO21? Als de zwarte draad hoog wordt (5v) dan komt er geen 5 maar max 3,3 volt op de GPIO. Mis ik hier iets?

    • Dag Marcel,

      Als je een 5kΩ weerstand in serie zet met de 10kΩ pull-down weerstand en een GPIO-aftakking maakt op het punt waar de weerstanden met elkaar verbonden zijn, zal er 3,3V bij een ‘HOOG’ signaal beschikbaar zijn. Dat zal prima werken.

  11. Dag Han,
    Ik ben mijn installatie van Pi3b+ aan het verhuizen naar een nieuwe Pi4B+. Op de Pi4B+ is de 64bit versie (Bullseye) geïnstalleerd. Dat is noodzakelijk geworden omdat mijn influxdb database te groot werd en regelmatig stopte. Ik ben nu met de laatst lootjes bezig, waaronder het overzetten van watermeter.py. Maar ik krijg dat maar niet goed voor elkaar. Hierboven lees ik de waarschijnlijke oorzaak daarvan. Op de oude pi draait Python 2.7.16 op de nieuwe Python 3.9.2. Ik krijg dus die fout op regel 61. Is er een nieuwer script dat met dit probleem dealt?

  12. Ehhh, die pi4B+ heeft veel meer geheugen dan de Pi3B+ en dat heb ik nodig voor influxdb 😉

2 Trackbacks / Pingbacks

  1. Domoticz – Grijs label watersensor – Picademie.nl
  2. De foto-onderbreker – Picademie.nl

Reacties zijn gesloten.