Logic Machine Forum
Problem with require - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Problem with require (/showthread.php?tid=3084)



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.