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!
-
Benodigdheden
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 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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.utils.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.