Kein Scenenstart nach Neustart oder Backup

Hallo

Ich hatte einen Fehler und möchte Euch davor warnen !
Folgendes Problem :
Ich hatte festgestellt das scenen die mit
fibaro.scene(„execute“, {programm_ID})
gestartet werden, nicht Starten wenn vorher ein Restart oder Backub erstellt wurde.
Erst eine Veränderung in der Szene die gestartet werden soll und deren Abspeicherung behebt das Problem.
Das habe ich erst gemerkt nach dem einige Rolladen nich gefahren sind und Heizungen ballerten obwohl das Fenster auf war.
Nach dem ich eine Ablaufüberprüfung in Main und Szenen eingebaut habe konnte ich das verifizieren.
Jetzt wird zwangsweise von der Main der Ablauf der Szenen kontrolliert und die Laufzeit überwacht.
Eine sehr unschöne Sache !!

Nach einigen Supportmails hin und her und Online Fehlersuchen wahr noch keine Lösung gefunden.
Erst Heute Morgen kam mir der Rettende Gedanke !

Ich habe den Fehler gefunden warum die Szenen nach einem Neustart/Backup nicht Starten und erst eine Änderung in den Scenen das behebt !
Ich hatte auf der Declarationsseite nur Komentarzeilen sonst nichts.
Nach dem ich „{}“ eingefügt habe, wahr der Fehler behoben.
Jetzt starten die Scenen wie gewohnt auch nach einem Neustart oder Backup.
Ein Dummer Fehler mit sehr Ärgerlicher Auswirkung.

Hier aber das Programm das den Start und den Ablauf einer Szene überwacht.

--Eine Globale Variabel PingPong muss angelegt werden !
----------------------------------------------------------------
function programmstart(programm_ID,max_laufzeit)
    max_laufzeit = tonumber(max_laufzeit)
    fibaro.setGlobalVariable("PingPong","1")
    starttime = os.time()
    fibaro.scene("execute", {programm_ID})-- Start testszene
    repeat
        pingpong = tonumber(fibaro.getGlobalVariable("PingPong"))
        mom_time = os.time()
        t_diff = (mom_time - starttime)
    until pingpong == 0 or t_diff > max_laufzeit
    if t_diff > 0 then --sprich länger als 1s
        print("Laufzeit ",programm_ID," = ",t_diff," s")
    end
    if t_diff > max_laufzeit then
        print("Fehlerhafter Programmstart von ID = ",programm_ID)
    end
end --function programmstart
----------------------------------------------------------------
programmstart(366,3) -- 366 ist die ID der Szene die gestartet werden soll, 3 ist die maximale Laufzeit
--Das muss in der Szene stehen die gestartet werden soll in dem Beispiel ist es die szene 366

--Programmablauf bestätigen für Main! in die Szene ( hier ID366) am Ende einfügen
-------------------------------------
fibaro.setGlobalVariable("PingPong","0")
-------------------------------------

Gruß Frank

2 Like

Hallo

Ich scheine das Problem mit der Speicherbelegung teilweise gelöst zu haben.
Diese Speicherbelegung die bei >92% zu dem Startproblem und Unstabilem Ablauf geführt hat könnte folgende Ursache gehabt haben.

Folgenden Programmablauf hatte ich :

  1. ein cron Trigger rief mein Main Programm auf und das 1 x pro Minute.
  2. Dieses Main Programm rief nacheinander einzelne Programmblöcke mit einem fibaro.scene(„execute“, {programm_ID}) auf.
  3. Zwischen den Einzelnen Aufrufen hatte ich ein fibaro.sleep(2000) stehen.

Das größte Problem trat dann auf als ich den 6 Programmblock so aufgerufen hatte.
Zum Schluss hatte ich das Oben beschriebene Problem.

Da es nicht schwer ist von so einem Programmaufbau zu einem einzelnen Programmaufbau zu wechseln habe ich das Main Programm gekürzt und jedem Programmblock einen einzelnen cron Trigger von 1 minute eingebaut.
Siehe da das Problem trat nicht mehr auf, nach dem ich ein mal Neu gestartet hatte blieb der Speicher auf 63% und stieg auch in den nächsten 2 Tagen nicht höher als 68%. ??!!

Erreichen wollte ich eigentlich das nicht mehrere Programme zur gleichen Zeit laufen damit die CPU-Auslastung nicht zu hoch wird.
Das hatte auch so weit funktionierte bist auf das Speicherproblem.

Jetzt habe ich zwar ab und an eine CPU-Auslastung von 100% einige Sekunden lang aber das hält sich in Grenzen und betrifft auch nicht alle CPU´s.

Ich hoffe das die Information einigen weiter hilft.

Es scheint also so zu sein, das der Programmaufbau den Fehler begünstigt hat.
Erklären kann ich mir das nicht, nur Reproduzieren den ein zurückspielen eines Alten Bachups erzeugte wieder das gleiche Problem.

Das so eine Kleine Änderung so eine Große Auswirkung hat kann man sich schlecht vorstellen.

Gruss Frank