Kod: Markera allt
--Domoticz Script to get medium actual energy between energy counter readings and puts it on a dummy device
--First create a dummy energy meter.
--Then enter the details below
--Name of the real energy counter
energyCounter = 'Elförbrukning'
--Name of the created dummy energy meter with the new actual value
dummyEnergyMeter = 'Elförbrukning2'
--ID of the created dummy energy meter with the new actual value
dummyEnergyMeterid = 7
commandArray = {}
if devicechanged[energyCounter] then
--calculate new actual value
s = otherdevices_lastupdate[dummyEnergyMeter]
if s == nil then
print('First time script is ever triggered. Update only counter. Actual value will be updated next time.')
actual = 0
else
t = os.time{year=string.sub(s, 1, 4), month=string.sub(s, 6, 7), day=string.sub(s, 9, 10), hour=string.sub(s, 12, 13), min=string.sub(s, 15, 16), sec=string.sub(s, 18, 19)}
actual = (tonumber(otherdevices_svalues[energyCounter]) - tonumber(string.match(otherdevices_svalues[dummyEnergyMeter], "%d+%.*%d*;(%d+%.*%d*)")))/(os.difftime(os.time(), t)/3600)
end
--update dummy energy meter
commandArray[1] = {['UpdateDevice'] = dummyEnergyMeterid .. "|0|" .. actual .. ";" .. otherdevices_svalues[energyCounter]}
print(dummyEnergyMeter .. ": " .. actual .. " W, " .. otherdevices_svalues[energyCounter] .. " kWh")
end
return commandArray
Kod: Markera allt
2018-02-05 21:33:59.558 LUA: Elförbrukning2: 3993.75 W, 7183260 Wh
2018-02-05 21:33:59.564 EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_ActualEnergy.lua
2018-02-05 21:33:59.845 LUA: testscript: Elförbrukning2: nan W, 7183260 Wh
2018-02-05 21:33:59.851 EventSystem: Script event triggered: test1
...
2018-02-05 21:35:05.459 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_ActualEnergy.lua: ...e/pi/domoticz/scripts/lua/script_device_ActualEnergy.lua:22: attempt to perform arithmetic on a nil value
Kod: Markera allt
old:
string.match(otherdevices_svalues[dummyEnergyMeter], "%d+%.*%d*;(%d+%.*%d*)")
new:
string.match(otherdevices_svalues[dummyEnergyMeter], ";(%d+%.*%d*)")