Seite 2 von 2

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: So Dez 27, 2020 4:44 pm
von Robert_Mini
Würde mich auch interessieren!
Danke
Robert

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 6:37 pm
von S. Kolbinger
Hallo Dennis (@colder2017),
die Ursache war ein echt hinterhältiger Fehler :character-bowser:
Er tritt nur auf, wenn man denselben String für zwei (oder mehr) Cron-Module innerhalb einer Logik-Zelle verwendet.

Beispiel (bitte nicht ausprobieren, kann zu Absturz führen :angry-nono: ):

Code: Alles auswählen

{
  "nicht ausprobieren, kann zu Absturz führen" //das steht hier absichtlich zur Sicherheit
  "Level": [
       ["$Out1","bool",false],
       ["$Out2","bool",false],
       ["$OutAnd","bool",false],
       ["$CronString","string","0/5 * * * * *"],  // wird in beiden Cron-Modulen verwendet
       ["$bTrue","bool",true]
  ],
  "Input": [
  ],
  "Output": [
      ["Out1","Ausgang Cron 1","$Out1","a"],
      ["Out2","Ausgang Cron 2","$Out2","a"],
      ["OutAnd","Ausgang And verknüpft","$OutAnd","a"]
  ],
  "Module": [
      ["Cron","$bTrue","$Out1",0,"$CronString"],
      ["Cron","$bTrue","$Out2",0,"$CronString"],
      ["And",["$Out1","-$Out2"],"$OutAnd"]
  ]
}
Hier habe ich noch einen Fehler in der Auswertung des zweiten Cron-Moduls bei der Auswertung des Cron-Strings.
Der wird natülich in der nächsten Release gefixt. :roll:

Die sichere Alternative: Den String duplizieren:

Code: Alles auswählen

{
  "Level": [
       ["$Out1","bool",false],
       ["$Out2","bool",false],
       ["$OutAnd","bool",false],
       ["$CronString1","string","0/5 * * * * *"],
       ["$CronString2","string","0/5 * * * * *"],
       ["$bTrue","bool",true]
  ],
  "Input": [
  ],
  "Output": [
      ["Out1","Ausgang Cron 1","$Out1","a"],
      ["Out2","Ausgang Cron 2","$Out2","a"],
      ["OutAnd","Ausgang And verknüpft","$OutAnd","a"]
  ],
  "Module": [
      ["Cron","$bTrue","$Out1",0,"$CronString1"],
      ["Cron","$bTrue","$Out2",0,"$CronString2"],
      ["And",["$Out1","-$Out2"],"$OutAnd"]
  ]
}
Aber Achtung, die sichere Variante stürzt zwar nicht ab, hat aber ein nicht vorhersehbares Verhalten.
Da die beiden Cron-Trigger (quasi) gleichzeitig ablaufen, ist es rein zufällig (Race condition), welche Timer tatsächlich zuerst triggert.
Das ist vor allem dann von Bedeutung, wenn die Ausgänge (Timer getriggert/abgelaufen) weiter ausgewertet werden.
Siehe den Signalverlauf in Grafana:
Bildschirmfoto zu 2020-12-28 18-26-29.png
Von der Verwendung mehreren synchron triggernden Cron-Timern in einer Logik-Zelle, würde ich daher dringend abraten.
Meist lässt sich das anders einfacher lösen.

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 7:16 pm
von Robert_Mini
Das ist sehr spannend!
Ich wüsste aber jetzt nicht, wozu ich 2x Cron mit dem gleichen Zeitpunkt brauchen würde ...

Aber mit copy/Paste passieren eben solche Dinge.

Lg
Robert

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 7:50 pm
von Sun1453
Gut das der Fehler gefunden wurde und nach dem Fix nicht mehr auftreten kann. Copy Paste kann schon mal passieren.

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 7:55 pm
von S. Kolbinger
Hallo Dennis (@colder2017),

noch ein kurzer Nachtrag.

Wenn ich die beiden Logiken (#2 und #6, die ich löschen musste) richtig interpretiere,
handelt es sich dabei um die Erkennung für Tag/Nacht anhand der Uhrzeit.

Ich hätte hier einen Vorschlag, das ganze in einer einzigen Logik umzusetzen:

Code: Alles auswählen

{
  "Level": [
       ["$Tag","bool",false],
       ["$CronMorgen","string","0 49 05 * * *"],
       ["$CronAbend","string","0 0 18 * * *"],
       ["$NextMorgen","int",0],     // nächster Triggerzeitpunkt für Start-Morgen
       ["$NextAbend","int",0],      // nächster Triggerzeitpunkt für Start-Abend
       ["$True","bool",true],
       ["$DelayAfterSave","float",0.01],
       ["$JustSaved","bool",true]
  ],
  "Input": [
  ],
  "Output": [
      ["Tag/Nacht","True=Tag False=Nacht","$Tag","a"]
  ],
  "Module": [
      ["Cron","$True",0,"$NextMorgen","$CronMorgen"],
      ["Cron","$True",0,"$NextAbend","$CronAbend"],
      ["Comparator","$NextMorgen","$Tag","$NextAbend"],
      ["Monoflop","$JustSaved",0,"$JustSaved","$DelayAfterSave",0]  // triggert nur einmalig gleich nach dem Speichern, damit der Ausgang sofort richtig ist
  ]
}

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 8:12 pm
von Robert_Mini
Muss ich auch probieren.
Meines Wissens wird ein Monoflop beim Speichern nicht getriggert, daher verwende ich dafür ein Clocksignal.

Generell würde eine Option Triggern beim Speichern dem LE 2.0 gut tun. Denn auch wenn man Startwerte mit True angibt, bleibt der Ausgang einer zb AND Logik auf falsch.
Gerade bei Triggeroption „c“ ist das mühsam (generell sollten Ein/Ausgänge analog dem KNX-Stack mit undef initialisiert werden, damit der erste empfangene Wert false auch als change erkannt wird).

Lg
Robert

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mo Dez 28, 2020 10:32 pm
von colder2017
Hallo zusammen,

ok spannend und sehr gut, dass der Fehler eingegrenzt werden konnte. Da ich selber aus der IT komme ist mir klar, dass man nie alle guten Ideen der User im Vorhinein abfangen kann :)

Meiner Erinnerung nach hatte ich den Zeit String nicht doppelt genutzt, sondern das next doppelt genutzt, kann das? Sollte ich dennoch die selbe Zeit für die beiden Cron Trigger genutzt haben, dann lag es an der Uhrzeit zu der Ich das gebaut habe.

Ich wollte auf jeden Fall mit zwei Uhrzeiten zwei Unterschiedliche Einstellungen der Heizung und meiner Glastaster fahren. ;)

So der ursprüngliche Gedanke.

Danke für deine weiteren Verbesserungshinweise, werde das morgen mal in Ruhe einbauen.

DANKE

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Di Dez 29, 2020 2:15 pm
von Sun1453
@colder2017 was hast du mit den glastaster denn gemacht? Vielleicht hilft mir das. Danke schon mal fürs erklären.

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mi Dez 30, 2020 9:29 pm
von colder2017
@Sun1453 am mdt Glastaster sollen parallel zu den Heizmodi für die Kinderzimmer die Tag/Nacht Einstellungen umgeschaltet werden, damit die dunkel sind wenn Schlafenszeit ist ;)

Also nichts wildes

Re: Version 1.6 RC8 - Logik Subsystem startet nicht / stürzt sofort ab

Verfasst: Mi Dez 30, 2020 9:57 pm
von Sun1453
@colder2017 wie hast du das umgesetzt? Bin da noch am bauen. Schalte die in den Tagmodus und in den Nacht Modus sollen die geschalten werden wenn sie noch auf Tag sind. Also mit Überprüfung ob im Tag Modus oder nicht.