Problem with require - DGrandes - 30.12.2020
Hi,
I have a problem with a library. I don´t know how exactly works require but a function doesn´t work sometimes.
In my library user.Varios I have a function like this:
Code: local TemporizadoresActivos = {
{
{Nombre = "ACK_Temp_Extractor_Aseo", Input = "1/1/115", Output = "1/1/15", Tiempo = "0/3/31", DG_Tempo_Activo = "34/6/1", DG_Tempo = "34/6/101", Condicion = '3/4/141', ACKCondicion = '3/4/41', T_Activo = false},
},
{
},
}
function Revisar_Temporizadores ()
now = os.time()
for i = 1,#TemporizadoresActivos, 1 do
local tf = "_on"
if i == 2 then tf = "_off" end
for _, pir in ipairs(TemporizadoresActivos[i]) do
if next(pir) then
--log(pir)
key = 'pir_timer_' .. pir.Input .. tf
delta = now - storage.get(key, 0)
if grp.getvalue(pir.DG_Tempo_Activo) and pir.T_Activo then
grp.checkupdate(pir.DG_Tempo,delta)
end
t = grp.getvalue(pir.Tiempo)*60
if pir.Condicion == nil then
if delta > t then
if pir.Output ~= nil then
grp.checkwrite(pir.Output, 0)
end
grp.checkupdate(pir.DG_Tempo_Activo,false)
end
end
end
end -
end
end
And from resident script (15seg) I call this function
Code: require('user.Varios')
local Revisar_Temporizadores ()
But sometimes objects doesn´t update and when I save again resident script they update correctly. I don´t change nothing in function only save again.
Why does this happend?
Thanks
RE: Problem with require - admin - 30.12.2020
Check Error log entries. The scripts you've posted are incorrect. There's "-" sign in line 31 of the library and local Revisar_Temporizadores () is not valid syntax.
RE: Problem with require - DGrandes - 30.12.2020
Sorry... I change some parts to reduce the code and I put wrong...
No mistakes in syntax and no mistakes in error log
This is the original code in user.varios
Code: function Revisar_Temporizadores ()
now = os.time()
for i = 1,#TemporizadoresActivos, 1 do
local tf = "_on"
if i == 2 then tf = "_off" end
for _, pir in ipairs(TemporizadoresActivos[i]) do
if next(pir) then
--log(pir)
CrearDG ("ACK_Temp_"..pir.Nombre, pir.DG_Tempo_Activo, dt.bool,"ACK_Tiempo_Activo")
CrearDG ("Delta_"..pir.Nombre, pir.DG_Tempo, dt.uint32)
key = 'pir_timer_' .. pir.Input .. tf
delta = now - storage.get(key, 0)
if grp.getvalue(pir.DG_Tempo_Activo) and pir.T_Activo then
grp.checkupdate(pir.DG_Tempo,delta)
end
t = grp.getvalue(pir.Tiempo)*60
if pir.Condicion == nil then
if delta > t then
if pir.Output ~= nil then
grp.checkwrite(pir.Output, 0)
end
grp.checkupdate(pir.DG_Tempo_Activo,false)
end
else
local cumple = (grp.getvalue(pir.Condicion) - 200) > grp.getvalue(pir.ACKCondicion)
if (delta > t) and (cumple) then
grp.checkwrite(pir.Output, 0)
grp.checkupdate(pir.DG_Tempo_Activo,false)
elseif (delta > t) and (not cumple) and ((grp.getvalue(pir.DG_Tempo_Activo))) then
storage.set(key, now)
end
end
end
end --End for temporizadores on off
end --End for temporizadores
return ("Temporizadores Revisados")
end --End funcion
And this in resident
Code: require('user.Varios')
local Revisados = Revisar_Temporizadores ()
RE: Problem with require - admin - 04.01.2021
Add some extra log() calls to your script to check where a logic error might be.
|