Seite 1 von 2

[V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: So Aug 11, 2024 6:53 pm
von starwarsfan
Hallo miteinander,

beim Editieren der Logiken habe ich immer wieder das Problem, dass gewisse Eingangswerte nach dem Editieren der Logik den Default-Wert der Logik haben, nicht aber den Wert, welcher "von aussen" mit der Logik verbunden ist resp. den Wert, welcher vor dem Editieren an den Inputs anlag. Bspw. habe ich auf der Visu diverse Pegelsteller, um Default-Werte einzustellen. Damit sind die Ausgänge dieser Pegelsteller mit den entsprechenden Eingängen der Logiken verbunden. Editiere ich die Logik, sind die Werte der Pegelsteller an der Logik weg und werden erst wieder aktualisiert, wenn ich diese auf der Visu kurz "bewege".

Der Effekt ist, dass damit die Logik nach dem Editieren falsche Werte hat. Ich war der Annahme, dass die aktivierte Persistenz genau dafür gedacht ist aber das hat keinen Effekt. Mach' ich hier noch etwas falsch? :confusion-scratchheadyellow:

Re: [v4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: So Aug 11, 2024 8:07 pm
von StefanW
Hi Yves,

Eine bearbeitete Logik wird - wie bei einer komplett neuen Logik - komplett neu angelegt und initialisiert. Bei Neuinitialisierung einer Logik weden keine "letzte bekannten Werte" aus dem Dispatcher gelesen und eingespeist, sondern erst diejenigen die künftig neu gesendet werden.

Mithin "work as designed". Persistenz gilt nur für laufende Logiken, nicht über Neuinitialisierungen hinweg.

Die Logik kann keine "Teil-Persistenz" nur für den unveränderten Teil verwalten, ist auch ein wenig viel verlangt.

Stefan

Re: [v4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: So Aug 11, 2024 8:34 pm
von starwarsfan
Hallo Stefan

alles klar, danke für die Klarstellung.
StefanW hat geschrieben: So Aug 11, 2024 8:07 pm Persistenz gilt nur für laufende Logiken, nicht über Neuinitialisierungen hinweg.
Wofür ist dann die Persistenz gedacht? Nur für den Neustart des TW?

Re: [v4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: So Aug 11, 2024 8:36 pm
von Sun1453
Soweit ich das verstanden habe für sauberen aber auch Stromlos Neustart als Hart.

Re: [v4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: So Aug 11, 2024 9:52 pm
von StefanW
Die Persistenz dient bei Neustart der Logik Engine und damit beim Restart jeder Logikzelle.

Dies kommt vor bei Updates, welche die Logikengine betreffen und beim Neustart nach Herunterfahren oder Stromausfall.

Eine Perstistenz für den nicht veränderten Teil von Logikzellen ist nicht möglich, weil es dafür keine Logik gibt, welche veränderte und nicht veränderte Anteile nach Umkonfiguration einer Logik sortiert und eine Bewertung für alle denkbaren Fälle vornimmt.

Stefan

Re: [V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: Mo Aug 12, 2024 6:01 pm
von starwarsfan
Hallo miteinander,

basierend auf obigem Problem: Wie löse ich das nun sinnvoll bei so Sachen, welche sich eben nicht ständig ändern? Ich habe viele verschiedene Inputwerte wie bspw. all die Reed-Status der Fenster und Türen. Wie kriege ich es hin, bei einer Änderung der Logik nicht durch das ganze Haus laufen und alle Fenster einmal öffnen zu müssen? :think:

Re: [V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: Mo Aug 12, 2024 6:17 pm
von jensgulow
Also ich habe für solche Werte jeweils einen "Intervallsender" dann bekommen die neu initialisierten Logiken zumindest nach Ablauf der Intervallzeit den letzten Wert wieder mit (in dem Falle hier die Präsenzmeldung)

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00",
    "Icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IS0tIFVwbG9hZGVkIHRvOiBTVkcgUmVwbywgd3d3LnN2Z3JlcG8uY29tLCBHZW5lcmF0b3I6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPg0KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik01IDkuNzc3NDZWMTYuMkM1IDE3Ljg4MDIgNSAxOC43MjAzIDUuMzI2OTggMTkuMzYyQzUuNjE0NiAxOS45MjY1IDYuMDczNTQgMjAuMzg1NCA2LjYzODAzIDIwLjY3M0M2Ljc4ODk0IDIwLjc0OTkgNi45NTA4MiAyMC44MDg3IDcuMTMyMDIgMjAuODUzN00yMSAxMkwxNS41NjY4IDUuOTYzOTlDMTQuMzMxMSA0LjU5MTIyIDEzLjcxMzMgMy45MDQ4NCAxMi45ODU2IDMuNjUxNDRDMTIuMzQ2NiAzLjQyODg4IDExLjY1MSAzLjQyODkzIDExLjAxMTkgMy42NTE1OUMxMC4yODQzIDMuOTA1MDkgOS42NjY2MSA0LjU5MTU3IDguNDMxMTQgNS45NjQ1MkwzIDEyTTE5IDUuMDAwMDJWMTYuMkMxOSAxNy44ODAyIDE5IDE4LjcyMDMgMTguNjczIDE5LjM2MkMxOC4zODU0IDE5LjkyNjUgMTcuOTI2NSAyMC4zODU0IDE3LjM2MiAyMC42NzNDMTcuMjExMSAyMC43NDk5IDE3LjA0OTIgMjAuODA4NyAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy42NTAxNyAxOC42NDQ4IDkuNjMzMDEgMTcgMTIgMTdDMTQuMzY3IDE3IDE2LjM0OTggMTguNjQ0OCAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy43MjEzMyAyMSA4LjUxNDk1IDIxIDkuOCAyMUgxNC4yQzE1LjQ4NSAyMSAxNi4yNzg3IDIxIDE2Ljg2OCAyMC44NTM3TTE0IDEyQzE0IDEzLjEwNDYgMTMuMTA0NiAxNCAxMiAxNEMxMC44OTU0IDE0IDEwIDEzLjEwNDYgMTAgMTJDMTAgMTAuODk1NCAxMC44OTU0IDEwIDEyIDEwQzEzLjEwNDYgMTAgMTQgMTAuODk1NCAxNCAxMloiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvc3ZnPg=="
  },
  "Level":[
    ["$Run","bool",true],
    ["$Select","integer",0],
    ["$Val","bool",false],
    ["$Clk","bool",false],
    ["$Clk_Val","bool",false],
    ["$Period","float",300],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break",["$VAR<Inhibit?>"]],
    ["Clocksignal","$Run","$Clk","$Period"],
    ["Multiplexer",["$Val","$Val"],"$Clk_Val","$Select"]
  ],
  "Input": [
    ["Eingang","Eingangswert","$Val","a"],
    ["Intervall in Sekunden","Zeit [s] zwischen Senden (standard 300 Sekunden, 5 Minuten)","$Period","c"],
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Ausgang","Per Intervall gesendeter Ausgangswert","$Clk_Val","ct"]
  ]
}

Re: [V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: Mo Aug 12, 2024 9:24 pm
von starwarsfan
Hallo Jens
jensgulow hat geschrieben: Mo Aug 12, 2024 6:17 pm Also ich habe für solche Werte jeweils einen "Intervallsender" dann bekommen die neu initialisierten Logiken zumindest nach Ablauf der Intervallzeit den letzten Wert wieder mit (in dem Falle hier die Präsenzmeldung)
Danke für die Idee, das werde ich mir mal genauer anschauen. :handgestures-thumbupright:

Re: [V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: Mo Aug 12, 2024 10:27 pm
von Robert_Mini
starwarsfan hat geschrieben: Mo Aug 12, 2024 6:01 pm Hallo miteinander,

basierend auf obigem Problem: Wie löse ich das nun sinnvoll bei so Sachen, welche sich eben nicht ständig ändern? Ich habe viele verschiedene Inputwerte wie bspw. all die Reed-Status der Fenster und Türen. Wie kriege ich es hin, bei einer Änderung der Logik nicht durch das ganze Haus laufen und alle Fenster einmal öffnen zu müssen? :think:
Ich setzte die Werte der Logik im DokMode oder setze den Default auf den aktuellen Wert, falls ich mehrfach editiere.

Damit komm ich gut zurecht, auch wenn ich mir oft ein Read von Dispatcher gewünscht hätte. Verstehe aber inzwischen auch, dass dies problematisch ist, weil es Effekte wie Reihenfolgeeinfuss etc. gibt.

Lg
Robert

Re: [V4.0.1] Fehlende Eingangswerte nach Logik-Änderung

Verfasst: Mo Aug 12, 2024 11:00 pm
von StefanW
Hi Robert,

richtig, der Reihenfolgenfluss ist das eine und womöglich auch der zeitliche Abstand das andere.

Man bräuchte also eine Replayfunktion, welche über den Dispatcher einen erneuten Versand anstößt (nur an die Logik oder an alle Verknüpfungen) diese in der vorherigen Réihenfolge abspielt. Problem sind Zeitfunktionen und welche Spuren solche manuellen Replays dann in Zeitserien, Protokollen usw. spielen.

ist alles nicht ganz einfach zu beantworten, aber auch nicht unmöglich. Wir wollen auch die Logik massiv verbessern und für Anfänger zugänglicher machen, da sind wir schon beschäftigt, aber eine solche Funktion hätte durchaus was, aber eben nicht trivial.

lg

Stefan