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

3 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

Geef een reactie

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