Waterflowmeter in Domoticz

In een eerder artikel hebben hebben we uitgelegd hoe je een watermeter kunt uitlezen en het verbruik in Domoticz weer kunt geven. Het verbruik kun je per uur, dag, week, maand of jaar inzien. Maar wat nu als je het verbruik real-time wilt zien? Bijvoorbeeld als je de tuin aan het beregenen bent? Uiteraard heeft Ehoco hier een oplossing voor: de waterflowmeter!

Allereerst moet je jouw watermeter kunnen uitlezen in Domoticz. Daarna gaan we twee user variables aanmaken. Ga naar Settings > More Options > User variables. Maak user variable begin en begintijd aan, beiden van het type “Integer” en met een variable Value van 0 (onderstaand zie je mijn current values, deze moet je dus niet invullen!!).

Waterflowmeter in Domoticz

De volgende stap is om een virtuele sensor aan te maken. Ga naar Setup -> Hardware en kies bij Type voor Dummy. Je mag zeg een herkenbare naam kiezen:

Zodra de Dummy Hardware toegevoegd is kunnen de virtuele sensoren gaan aanmaken. Klik hiervoor op Create Virtual Sensors (in het donkerblauw).

Maak nu de virtuele sensor aan van het type “Waterflow” en geef “Waterflow” als naam van de sensor:

Waterflowmeter in Domoticz

 

Waterflowmeter script

De laatste stap is het script. Ga naar Setup > More Options > Events en kies voor een LUA event (van het type Device). Kopieer onderstaand script naar Domoticz. Op regel vier pas je het IDX aan naar het nummer dat jouw waterflow sensor gekregen heeft. Activeer het event en sla het op.

commandArray = {}

-- IDX Waterflow
jIDX = 235

-- Begintijd in uservariables zetten
if  (uservariables['begin'] == 0)
    then
        -- print ("begin instellen")
        commandArray['Variable:begin'] = tostring(1)
        commandArray['Variable:begintijd']= tostring(os.time())
end        

-- Decimalen
function round(num, numDecimalPlaces)
   local mult = 10^(numDecimalPlaces or 0)
   return math.floor(num * mult + 0.5) / mult
end

-- timedifference
function timedifference(s)
    year = string.sub(s, 1, 4)
    month = string.sub(s, 6, 7)
    day = string.sub(s, 9, 10)
    hour = string.sub(s, 12, 13)
    minutes = string.sub(s, 15, 16)
    seconds = string.sub(s, 18, 19)
    t1 = os.time()
    t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
    difference = os.difftime (t1, t2)
    return difference
end


-- Script
if (devicechanged['GPIO Watermeter'] == 'Off') then 
       btijd = uservariables['begintijd']
       duur = os.time() - btijd
       lpm = 60 /duur
       lpm = round(lpm, 2)
       commandArray['Variable:begintijd']= tostring(os.time())
       commandArray['UpdateDevice'] = ''..jIDX..'|0|'..lpm..''
   else
        -- Keep a live device and set flow to zero
        if otherdevices_lastupdate["GPIO Watermeter"] == nil then
           commandArray['UpdateDevice'] = ''..jIDX..'|0|'..flow..''
        elseif (timedifference(otherdevices_lastupdate["Waterverbruik"]) > 300) then
               print("Laatste waterverbruik is meer dan 5 minuten geleden, waterflow is 0")
               flow = 0
               commandArray['UpdateDevice'] = ''..jIDX..'|0|'..flow..''
        end
end       

return commandArray

 

Vanaf nu zal de waterflowmeter in Domoticz weergegeven worden, in onderstaand voorbeeld is het verbruik 12 liter per minuut.

Waterflowmeter in Domoticz

 

Bron: Melissen, domoticz forum

12 gedachten over “Waterflowmeter in Domoticz

  • 21 oktober 2018 om 15:52
    Permalink

    Ik heb kan eindelijk mijn watermeter uitlezen met jouw pythonscript. Super bedankt. Ik probeer ook direct je waterflowmeter maar krijg de volgende foutmelding terug in mijn log:
    ‘ Error: EventSystem: in Waterflow: [string “commandArray = {}…”]:22: bad argument #1 to ‘sub’ (string expected, got nil)’

    Weet jij wat dit kan zijn?

    Beantwoorden
    • 20 november 2018 om 10:02
      Permalink

      Remko,

      Ik had dit ook maar ik heb toen even het waterflow script verwijderd en alles opnieuw ingevoerd en nu werkt het.

      Beantwoorden
  • 29 oktober 2018 om 20:45
    Permalink

    Zou deze error veroorzaakt kunnen worden omdat ik mijn waterverbruik in domoticz inzichtelijk maak volgens het (ehoco) python script en dit waterflowscript gebaseerd is op het (waterverbruik) script?

    Beantwoorden
  • 3 januari 2019 om 15:21
    Permalink

    dit script veroorzaakt onevenredig veel logging. elke milliseconde wordt dit script blijkbaar getriggered terwijl naar mijn mening het script pas af moet gaan als er waterverbruik is. het device is ook netjes geupdate alleen maar als er verbruik is.

    kan er op de eoa manier misschien meer afhankelijkheden worden gecreeerd zodat ie niet zo vaak (nodeloos) afgaat?

    Beantwoorden
    • 3 januari 2019 om 15:51
      Permalink

      Waarschijnlijk heb je iets verkeerd gedaan. Hier wordt het alleen getriggert bij waterverbruik en na 5 minuten 1 keer.

      Beantwoorden
      • 4 januari 2019 om 11:27
        Permalink

        je hebt gelijk. mijn script zag er stuk langer uit dan die van jou. raar. heb je het script misschien geupdate?
        heb nu iig de versie van je site geplukt en erin gegooid en nu is de log vrij van al die waterflow executions.

        thanks!

        Beantwoorden
  • 29 januari 2019 om 12:22
    Permalink

    Perfect! Meter en Flow beide in 1 x goed.
    Grootse probleem was de NPN sensor, niet aan de praat te krijgen op 5 volt.
    12 volt voeding eraan gezet (+12 bruin – GND zwart)
    Om de Pi te beschermen toch maar even meten met 12 volt voeding, multimeter tussen blauw (+) en zwart (-) en voila: 3.1 volt ON – 0 volt OFF, ZONDER een 6.8K weerstand tussen BL/ZW
    BLAUW naar Pi pin 40, ZWART naar Pi PIN 39 op de Raspi en werkend!

    DANK!

    Beantwoorden
  • 12 maart 2019 om 21:59
    Permalink

    Hallo Joost,

    De waterflow meter werkt, alleen blijft deze op de laatst bekende waarde staan bijv: 7,5l/pm.

    Dit beïnvloed de grafieken, doe ik iets verkeerd ?

    mvg,
    Mark

    Beantwoorden
    • 15 mei 2019 om 12:20
      Permalink

      Verander op regel 47 ‘Waterverbruik’ in het engelse ‘Waterflow’ (zoals ook de virtuele sensor heet) en hij gaat keurig na 5 minuten naar nul.

      Beantwoorden
      • 15 mei 2019 om 18:27
        Permalink

        Dan gaat Waterflow inderdaad ook op nul, maar dat is niet zoals het script bedoeld is. Als device “Waterverbruik” (de device waarop je afleest hoeveel water je vandaag hebt verbruikt) 5 minuten geen update heeft gehad, dan moet Waterflow op nul springen. Hier werkt het prima, zoals het in bovenstaand script staat.

        Beantwoorden
  • 27 maart 2019 om 05:46
    Permalink

    Hoi Joost,

    Mijn watermeter werkt prima in Domoticz. Ik heb jouw script gebruikt, echter krijg ik de waterflow meter niet werkend. De user variabelen worden wel aangepast door gebruik van het script, echter blijft de virtuele sensor “Waterflow” op 0 staan. De IDX van de waterflow meter heb ik aangepast in het script. Wat zou de oorzaak kunnen zijn?

    Tweede vraag: in het script zie ik de naam van een sensor “GPIO Watermeter” staan. Moet dit worden aangepast naar de naam van de virtuele waterflow sensor of naar de naam van de watermeter sensor in Domoticz?

    Alvast bedankt voor je reactie

    Beantwoorden

Geef een reactie

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