Can someone help my converting this LUA script to dzVents ?
Many thanks in advance.
Code: Select all
-- Tijd en datum bepalen
local time = os.date("*t")
commandArray = {}
if time.hour == 12 and time.min == 00 then
-- Debugging
debug_on = "false" -- Zet debugging aan met "true" of uit met "false"
-- IDX van de virtuele Watermeter
IDXs = 1812 -- custom sensor "Stroomkosten huidig jaar"
IDXg = 1813 -- custom sensor "Gaskosten huidig jaar"
IDXw = 1814 -- custom sensor "Waterkosten huidig jaar"
IDXasg = 1815 -- custom sensor "Afrekening Stroom & Gas"
IDXaw = 1816 -- custom sensor "Afrekening Water"
IDXarsg = 1817 -- custom sensor "Afr. Stroom & Gas Realtime"
IDXarw = 1811 -- custom sensor "Afrekening Water Realtime"
-- Diverse tarieven
voorschot_Stroom_Gas = 1080.00 -- voorschot Stroom & Gas per jaar in Euro's
voorschot_Water = 196.00 -- voorschot Water per jaar in Euro's
levkos_stroom = 71.87 -- vaste leveringskosten Stroom per jaar
levkos_gas = 71.87 -- vaste leveringskosten gas per jaar
energiebelasting = -311.62 -- Verminderde_energiebelasting per jaar
netbeheerkosten_stroom = 230.27 -- Netbeheerkosten_stroom per jaar
netbeheerkosten_gas = 126.44 -- Netbeheerkosten_gas per jaar
vastrecht_water = 76.78 -- vastrecht_water per jaar
-- Ingangsdatum contract Stroom & Gas / Water
dag_stroom = 1 -- 1 voor eerste dag, 2 voor tweede dag, etc.
maand_stroom = 2 -- 1 voor januari, 2 voor februari, 3 voor maart, etc.
dag_water = 1 -- 1 voor eerste dag, 2 voor tweede dag, etc.
maand_water = 2 -- 1 voor januari, 2 voor februari, 3 voor maart, etc.
---------------------------------------------------------------------------------------
--------------------------- HIERONDER NIETS WIJZIGEN !!!!!! ---------------------------
---------------------------------------------------------------------------------------
--Functie datum sinds contractperiode
function timedifference (s) --- tijdverschil bepalen sinds laatste schakeling in sec
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
-- Functie afronding
function round(num, dec)
if num == 0 then
return 0
else
local mult = 10^(dec or 0)
return math.floor(num * mult + 0.5) / mult
end
end
-- Bepalen of een nieuw contractperiode ingaat
if (time.month == maand_stroom and time.day == dag_stroom and time.hour == 23 and time.min == 59) then
StroomkostenJaar = tonumber(0)
GaskostenJaar = tonumber(0)
print ("Nieuw contractperiode van STROOM & GAS is ingegaan!")
commandArray[1]={['SendNotification']='Nieuw contractperiode van STROOM & GAS is ingegaan! Pas eventueel de tarieven aan!'}
else
StroomkostenJaar = tonumber(uservariables["Stroomkosten_Jaar"])
GaskostenJaar = tonumber(uservariables["Gaskosten_Jaar"])
end
if (time.month == maand_water and time.day == dag_water and time.hour == 23 and time.min == 59) then
WaterkostenJaar = tonumber(0)
print ("Nieuw contractperiode van WATER is ingegaan!")
commandArray[2]={['SendNotification']='Nieuw contractperiode van WATER is ingegaan! Pas eventueel de tarieven aan!'}
else
WaterkostenJaar = tonumber(uservariables["Waterkosten_Jaar"])
end
-- Kosten van vandaag ophalen
local StroomkostenDag = tonumber(otherdevices['Stroomkosten'])
local GaskostenDag = tonumber(otherdevices['Gaskosten'])
local WaterkostenDag = tonumber(otherdevices['Waterkosten'])
-- Kosten berekenen vanaf begin contractperiode
local SKJ = StroomkostenJaar + StroomkostenDag
local GKJ = GaskostenJaar + GaskostenDag
local WKJ = WaterkostenJaar + WaterkostenDag
-- Kosten bereken te betalen / te ontvangen einde contractperiode
local aSG = StroomkostenJaar + StroomkostenDag + GaskostenJaar + GaskostenDag - voorschot_Stroom_Gas + levkos_stroom + levkos_gas + energiebelasting + netbeheerkosten_stroom + netbeheerkosten_gas
local aW = WaterkostenJaar + WaterkostenDag - voorschot_Water + vastrecht_water
-- Realtime kosten vs voorschot (Stroom & Gas)
local datum_stroom_nu = {year=time.year, month=time.month, day=time.day, hour=0, min=0, sec=0}
local datum_stroom_contract = {year=time.year, month=maand_stroom, day=dag_stroom, hour=0, min=0, sec=0}
if ((os.time(datum_stroom_contract)-os.time(datum_stroom_nu))/86400) > 0 then
contractdagen_stroom = ((os.time(datum_stroom_nu)-os.time(datum_stroom_contract))/86400)+366
else
contractdagen_stroom = ((os.time(datum_stroom_nu)-os.time(datum_stroom_contract))/86400)+1
end
local arSG = round((StroomkostenJaar + StroomkostenDag + GaskostenJaar + GaskostenDag + (levkos_stroom + levkos_gas + energiebelasting + netbeheerkosten_stroom + netbeheerkosten_gas - voorschot_Stroom_Gas)/365*contractdagen_stroom),2)
-- Realtime kosten vs voorschot (Water)
local datum_water_nu = {year=time.year, month=time.month, day=time.day, hour=0, min=0, sec=0}
local datum_water_contract = {year=time.year, month=maand_water, day=dag_water, hour=0, min=0, sec=0}
if ((os.time(datum_water_contract)-os.time(datum_water_nu))/86400) > 0 then
contractdagen_water = ((os.time(datum_water_nu)-os.time(datum_water_contract))/86400)+366
else
contractdagen_water = ((os.time(datum_water_nu)-os.time(datum_water_contract))/86400)+1
end
local arW = round((WaterkostenJaar + WaterkostenDag + (vastrecht_water - voorschot_Water)/365*contractdagen_water),2)
if debug_on == "true" then
print ("Contract stroom/gas loopt "..round(contractdagen_stroom,0).. " dagen")
print ("Contract water loopt "..round(contractdagen_water,0).. " dagen")
end
-- User variables bijwerken
commandArray[3]={['Variable:Stroomkosten_Jaar'] = tostring(SKJ)}
commandArray[4]={['Variable:Gaskosten_Jaar'] = tostring(GKJ)}
commandArray[5]={['Variable:Waterkosten_Jaar'] = tostring(WKJ)}
-- Devices kosten op jaarbasis bijwerken
commandArray[6]={['UpdateDevice'] = IDXs..'|0|'..tostring(SKJ)}
commandArray[7]={['UpdateDevice'] = IDXg..'|0|'..tostring(GKJ)}
commandArray[8]={['UpdateDevice'] = IDXw..'|0|'..tostring(WKJ)}
-- Devices te betalen / te ontvangen einde contractperiode bijwerken
commandArray[9]={['UpdateDevice'] = IDXasg..'|0|'..tostring(aSG)}
commandArray[10]={['UpdateDevice'] = IDXaw..'|0|'..tostring(aW)}
-- Devices te betalen / te ontvangen realtime bijwerken
commandArray[11]={['UpdateDevice'] = IDXarsg..'|0|'..tostring(arSG)}
commandArray[12]={['UpdateDevice'] = IDXarw..'|0|'..tostring(arW)}
end
return commandArray