Fibaro Debug für Skriptzeile

Hallo
wie sieht der Befehl für einen Debug von folgender Codezeile aus ?

and (tonumber(os.date("%H%M")) >= tagstart and tonumber(os.date("%H%M")) <= tagende)

Gruss Splinter

Hi,

was willst du da debuggen? Es handelt sich doch um eine if-Bedingung, ergo kannst du doch in der Schleife eine debug-Ausgabe machen.

Ansonsten kannst du natürlich auch eine Debug-Ausgabe so machen:

fibaro:debug(tonumber(os.date("%H%M")) >= tagstart and tonumber(os.date("%H%M")) <= tagende)

Da kommt dann halt true oder false bei raus. Keine Ahnung, ob du das so willst.

Gruß

Hi,

ich dacht durch eine DEBUG würde mir die Skriptzeile verständlicher…

and (tonumber(os.date("%H%M")) >= tagstart and tonumber(os.date("%H%M")) <= tagende)

also ich dachte mir das so um es mal für mich zu übersetzen…

und (tonumber(os.date(Stunden/Minuten)) größer/gleich Uhrzeit Tagstart und tonumber (os.date(Stunden/Minuten)) kleiner/gleich tagende)

Ich hatte mal ein Skript geposte da musst ich ein or durch ein and ersetzen

und ich versuche jetzt mal mehr zeit zu investieren um diese Lua Sprache zu lernen…

und ich dachte mir wenn diese Skritzeilen in worte fast ist es leichter zu verstehen und umzusetzten.

Durch so einen DEBUG sieht man was im Hintergrund passiert finde das zum lernen Hilfreich.

--[[
%% properties
302 value
%% globals
--]]
 
-- VARIABLEN Konfiguration (Bewegungsmelder muss oben unter %% properties aufgeführt sein) löst die szene aus
-----------------------------------------------------------------------------------------------------------------------------------------
local scene = 333 -- ID dieser Szene
local motion = 302 -- ID des Bewegungssensors
local radio = 274 -- ID der Lampe
 
local tagstart = 0520 -- 22:00 = 2200
local tagende = 2000-- 07:00 = 0700
local starttimer = 180 -- Radio an Zeit +min 60sec Schlaftimer bei Busch Jäger Radio

---------------------Script-----------------
fibaro:debug("Start1")
if (fibaro:countScenes()>1) then
    fibaro:debug("Stope Scene weil ein weiteres mal ausgeführt wurde");
    fibaro:abort();
end
 
-- SCHALTE Radio EIN
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) 
  and (tonumber(os.date("%H%M")) >= tagstart and tonumber(os.date("%H%M")) <= tagende) then 
     fibaro:call(radio, "pressButton", "1") -- Radio Sauerland wird eingeschalten
     fibaro:sleep(1000) -- warten 
     fibaro:call(radio, "pressButton", "4") -- Volumen wird auf 8 eingestellt
     fibaro:debug('Starte Radio Sauerland');
   
-- timer start
    timer = os.time();
    while os.time() - timer < starttimer do
        fibaro:sleep(1000);
        
-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
        if (tonumber(fibaro:getValue(motion, "value"))) > 0 then
            timer = os.time();
        end
end
  fibaro:call(radio, "pressButton", "3"); -- Schlaftimer wird gestartet;
end
    fibaro:debug('Schalte Schlaftimer ein, keine Bewegung mehr im Raum');
    fibaro:killScenes(scene);
local tagstart = 0520 -- 22:00 = 2200
local tagende = 2000-- 07:00 = 0700
local starttimer = 180 -- Radio an Zeit +min 60sec Schlaftimer bei Busch Jäger Radio

Hier habe ich Tagstart 0520 und Tagende 2000.

Das Sript ist für mein BAadezimmerradio.

Ziel war das es nur zwischen 5:20Uhr Morgens und 20:00Uhr Abend angehen soll.

Und hier kommt wieder dieses or oder and zu Tage…

and (tonumber(os.date("%H%M")) >= tagstart and tonumber(os.date("%H%M")) <= tagende) then

and (tonumber(os.date("%H%M")) >= tagstart or tonumber(os.date("%H%M")) <= tagende) then

Nur verstehen tu ich das ganz irgenwie nicht so richtig…

Wenn da or steht geht das Radio immer an, auch nach 20 uhr…

Ich hoffe ich habe mich verständlcih ausgedrückt…schreiben ist nicht immer so leicht wie sprechen :slight_smile:

Gruss Splinter

Dann gib dir doch das os.date aus und vergleiche die Werte:

fibaro:debug(os.date("%H%M"))

Gruß