Convert this script to dzVents possible and easy?

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

Post Reply
RduPre
Posts: 53
Joined: Thursday 11 August 2016 18:41
Target OS: Raspberry Pi / ODroid
Domoticz version: beta
Location: The Netherlands
Contact:

Convert this script to dzVents possible and easy?

Post by RduPre »

Hi,

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
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest