Waterflowmeter in Domoticz (dzVents)

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 met het LUA-script of Python-script.

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 dzVents event. Kopieer onderstaand script naar Domoticz. Op regel vijf zet je de naam van je watermeter neer. Op regel 18 zet je de naam van jouw waterflow-meter neer. Activeer het event en sla het op.

return 
{
    on = {
        devices = {
            'Watermeter'  -- change to name of your watermeter
        },
    },
    data = 
    {
        water = 
        { 
            initial = {},
        },
    },

    execute = function(dz, item)
        local factor = 1          -- this might need to be changed depending on if your meter is in liters or m3 or different. 
        local waterFlow = dz.devices('Waterflow')
       local waterTotal = tonumber(item.sValue) * factor -- watermeter can be of type counter or custom sensor sValue works for both

        if dz.data.water.total ~= nil then  -- first reading does not update the flowmeter 
            waterFlow.cancelQueuedCommands()
            local pastTime = dz.time.dDate - dz.data.water.lastTime -- seconds since last time
            local waterFlowValue = dz.round((( waterTotal - dz.data.water.total ) * 60) / pastTime, 2)  -- liter / min
            waterFlow.updateWaterflow(waterFlowValue)
            waterFlow.updateWaterflow(0).afterSec(60)  -- if no new data within 60 seconds the reset flow to 0
        end

        dz.data.water.total = waterTotal 
        dz.data.water.lastTime = dz.time.dDate

    end
}

 

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

Waterflowmeter in Domoticz

2 gedachten over “Waterflowmeter in Domoticz (dzVents)

  • 19 januari 2020 om 20:50
    Permalink

    Hallo Joost,

    Ik heb het script gebruikt in Domoticz. Wat voor soort dzVents script moet ik gebruiken? Ik kan uit verschillende soorten kiezen.

    De naam van mijn watermeter is: Water. De naam van de Waterflow meter is: Waterflow. Ik krijg echter een error in de log:

    2020-01-19 20:46:11.345 Status: dzVents: Info: Handling events for: “Water”, value: “804”
    2020-01-19 20:46:11.345 Status: dzVents: Info: —— Start internal script: Script #1: Device: “Water (Dummy )”, Index: 1066
    2020-01-19 20:46:11.346 Status: dzVents: Error (2.4.19): An error occured when calling event handler Script #1
    2020-01-19 20:46:11.346 Status: dzVents: Error (2.4.19): …domoticz/scripts/dzVents/generated_scripts/Script #1.lua:18: attempt to perform arithmetic on a nil value
    2020-01-19 20:46:11.347 Status: dzVents: Info: —— Finished Script #1

    Kun jij me hiermee helpen? Alvast bedankt

    Beantwoorden
    • 20 januari 2020 om 20:18
      Permalink

      Bij dzVents-scripts maakt het niet uit wat je kiest (in tegenstelling tot LUA-scripts).
      Heb je het script één-op-één overgenomen? Het is nl. vreemd dat je op regel 18 een foutmelding krijgt. Wellicht is het beter om de namen van je devices aan te passen, zodat ze overeenkomen met het script.

      Beantwoorden

Geef een reactie

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