Seite 1 von 2

Verständnisfrage Eingang Aktualisierung

Verfasst: Fr Mai 22, 2020 11:22 pm
von Piranha
Hallo Zusammen,

ich arbeite mich gerade in die Logik-Engin ein und komme Stück für Stück näher. Nun aber eine Anfänger-/Verständnisfrage:

Ich habe eine Zeitschaltuhr, die das Licht im Flur ab einer bestimmten Uhrzeit gedimmt einschalten soll, wenn der Präsenzmelder ausgelöst hat. Mein Problem ist, das die Logik über den Multiplexer die Werte für Präsenz erst setzt, wenn der Cron Timer die Uhrzeit erreicht hat. Der Multiplexer wird leider nicht ausgelöst, wenn sich der Input ändert. Was mache ich hier falsch?

Code: Alles auswählen


{
    "Level": [
        ["$StartZeit","string","0 * * * * *"],
        ["$StopZeit","string","30 * * * * *"],
        ["$Set","bool",false],
        ["$Res","bool",false],
        ["$Stat","int",0],
        ["$StatusOut","float",0.0],         
        ["$O_Night","float",0.0],
        ["$O_NightPresence","float",5.0],        
        ["$O_Day","float",0.0],
        ["$O_DayPresence","float",100.0],           
        ["$KonstFalse","bool",false],
        ["$I_Presence","bool",false],      
        ["$VAR<Inhibit?>", "bool", false]
    ],
    "Module": [
        ["Break",["$VAR<Inhibit?>"] ],
        ["Cron","-$KonstFalse","$Set",0,"$StartZeit"],
        ["Cron","-$KonstFalse","$Res",0,"$StopZeit"],
        ["BinaryMultiplexer",["$Set","$Res","$I_Presence"],"$Stat"],
        ["Multiplexer",["$StatusOut","$O_Day","$O_Night","$StatusOut","$StatusOut","$O_DayPresence","$O_NightPresence","$StatusOut"],"$StatusOut","$Stat"]
    ],
    "Input": [
    	["Präsenz","Bewegungserkennung","$I_Presence","c"]
    ],
    "Output": [
        ["Status","Ausgang der Zeitschaltuhr","$StatusOut","c"]
        //Debug
        //["_$Stat","$Stat","$Stat","c"]      
    ]
}

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 8:14 am
von Robosoc
Also auf den ersten Blick scheint mir erstmal alles korrekt. Kannst du noch beschreiben, in welchem Fällen / Zuständen Du eine Änderung getestet hast?

Ich könnte mir vorstellen, dass Dein Problem damit zusammenhängt, dass Du in vier Zuständen den Ausgang nicht änderst (multiplexer bleibt bei $StatusOut) und du den Ausgang aber mit c eingestellt hast... Senden nur bei Änderung...
dann würde es reichen den Ausgang auf A zu stellen... (oder wenigstens wegen der cron-timer auf ct)

Könnte mir auch vorstellen, dass bei Deinem Problem auf die Grafana Ansicht aus dem Dokmodus helfen könnte.

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 9:55 am
von Piranha
Hi Sven,

der Status des Multiplexer scheint richtig gemapped zu sein. Sobald die Zeitschaltuhr umschaltet (immer zur vollen oder halben Min), wird am Ausgang auch der richtige Status (Integer) angezeigt. Lediglich dazwischen wenn nur der Präsenzmelder eine Bewegung (zwischen der zeitlichen Umschaltung) auslöst, bewirkt das kein Auslösen der Logik und somit der Neuberechnung des Status. Der Status wird dann erst richtig aktualisiert, wenn die Zeit wieder umstellt.

Habe auch schon probiert den Ausgang auf CT zu stellen. Leider mit dem gleichen Effekt.

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 10:00 am
von Robert_Mini
Hallo Piranha!

Ich sehe da folgende Probleme:

1) dein Cron String: (30 * * * * *) sendet alle 30s. Für einen Zeitpunkt fehlen da zumindest Min und Std, dann enstpricht das täglich zum Zeitpunkt x.

2) Sendeoptionen: ich würde da mit "a" für always beginnen.

3) Dein Multiplexer:
Ich verstehe das Set/Res als Teil eines FlipFlops. Bin aber nicht sicher, ob sich das mit dem Präsenzeingang kombinieren lässt.

Vorschlag:
Ich würde Set/Res als reines Flip-Flop betreiben, das den Zustand mit dem Cron-Timer wechselt => neue Variable: $Nacht
Zusätzliches AND mit $Nacht und $Präsenz => EIN, sonst aus.

lg
Robert

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 11:46 am
von Piranha
Hallo Robert,

vielen Dank für deine Antwort. Bin noch nicht ganz sicher wie du das meinst bzw. wie ich es umsetzen kann. Sorry, bin noch ziemlich am Anfang mit dem Verständnis für die Logik-Engine.

1.) Das ist aktuell für Testzwecke noch beabsichtig. Wird dann in der finalen Version richtig geändert

2.) Habe ich probiert. Hat leider auch nicht geholfen.

3. + Vorschlag) Ich möchte abhängig vom Status Tag/Nacht + Präsenz einen unterschiedlichen Dimmwert (%) bzw. float übertragen. Wie realisiere ich das am besten mit deinem Vorschlag?

LG
Alex

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 12:40 pm
von Eraser
Ich habe diese Funktion bei mir auch in Verwendung.
Ab 22:00 wird das Licht per PM nur mehr auf 15% eingeschaltet, ab 06:00 wieder mit 100%, sofern die Mindesthelligkeit im Raum unterschritten ist.


Hier der Ausschnitt aus dem Logik-Editor.
1.PNG

Und hier die Custom-Logik dahinter.

Code: Alles auswählen

{
    "Level": [
        ["$Start","bool",true],
        ["$CronStringEin","string","0 0 22 * * *"],
        ["$CronStringAus","string","0 0 6 * * *"],
        ["$Ausgang","bool",false],
        ["$Ein","bool",false],
        ["$Aus","bool",false],
        ["$Status","integer",0],
        ["$KonstFalse","bool",false],
        ["$VAR<Inhibit?>", "bool", false]
    ],
    "Module": [
        ["Break", ["$VAR<Inhibit?>"]],
        ["Cron","$Start","$Ein",0,"$CronStringEin"],
        ["Cron","$Start","$Aus",0,"$CronStringAus"],
        ["BinaryMultiplexer",["$Ein","$Aus"],"$Status"],
        ["Multiplexer",["$Ausgang","-$KonstFalse","$KonstFalse"],"$Ausgang","$Status"]
    ],
    "Input": [
        ["Start/Stop", "Aktiviert/Deaktiviert die Zeitschaltuhr", "$Start", "c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
    ],
    "Output": [
        ["Out","Schaltuhr aktiv","$Ausgang","c"]
    ]
}
Der Ausgangswert geht dann bei meinen Dimmern auf einen seperaten Eingang für die maximale Helligkeit, mit der der Dimmer einschalten soll.

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 1:33 pm
von Robert_Mini
Hallo Piranha!

Bevor ich hier was vorbereite: kannst du bestätigen, wie das funktionieren soll?
Ich hätte verstanden:
- Präsenz schickt ein / aus
- Logik sende bei Ein am Tag/Dämmerung 100% und bei Nacht zB 30%
- Logik sende aus, wenn Präsenzmelder aus schickt

Richtig oder schickt der Präsenz parallel direkt auf Aktor, so dass die Logik "nachtriggert"?

lg
Robert

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 1:35 pm
von Piranha
Robert_Mini hat geschrieben: Sa Mai 23, 2020 1:33 pm - Präsenz schickt ein / aus
- Logik sende bei Ein am Tag/Dämmerung 100% und bei Nacht zB 30%
- Logik sende aus, wenn Präsenzmelder aus schickt
Hallo Robert und Wolfgang,

genau und richtig erfasst.

@Wolfgang: Super, das wäre für mich auch ok. Dann spare ich die Präsenzerfassung.

Grüße

Alex

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 2:24 pm
von Eraser
Vorteil davon ist, dass die Funktion von PM und Licht schalten auf KNX bleibt und nur die Komfort-Funktion über den Logikeditor läuft.

Re: Verständnisfrage Eingang Aktualisierung

Verfasst: Sa Mai 23, 2020 2:46 pm
von Robert_Mini
Hallo Piranha!

Hier ein Vorschlag, wenn du das wie oben beschrieben lösen willst.
Das enable muss fix auf true gesetzt werden, wenn man es nicht verwendet.

Hab's nicht getestet, sollte aber funktionieren.

lg
Robert

Code: Alles auswählen

{
    "Level": [
        ["$Start","bool",true],
        ["$CronStringEin","string","0 0 22 * * *"],
        ["$CronStringAus","string","0 0 6 * * *"],
        ["$Ausgang","bool",false],
        ["$Ein","bool",false],
        ["$Aus","bool",false],
        ["$Status","integer",0],
        ["$KonstFalse","bool",false],
        ["$Konst0","float",0.0],
        ["$VAR<Inhibit?>", "bool", false],
        ["$Praesenz","bool",false],
        ["$Output_Dim","float",0.0],
        ["$DimmWert1","float",0.0],
        ["$DimmWert2","float",0.0],
        ["$DimmWert_akt","float",0.0]  
    ],
    "Module": [
        ["Break", ["$VAR<Inhibit?>"]],
        ["Cron","$Start","$Ein",0,"$CronStringEin"],
        ["Cron","$Start","$Aus",0,"$CronStringAus"],
        ["BinaryMultiplexer",["$Ein","$Aus"],"$Status"],
        // Status Zeitfenster
        ["Multiplexer",["$Ausgang","-$KonstFalse","$KonstFalse"],"$Ausgang","$Status"],
        // Dimmwert festlegen
        ["Multiplexer",["$DimmWert1","$DimmWert2"],"$DimmWert_akt","$Ausgang"],
        // Ausgang abhängig vom Praesenzstatus mit 0 oder Dimmwert beschreiben
        ["Multiplexer",["$Konst0","$DimmWert_akt"],"$Output_Dim","$Praesenz"]
    ],
    "Input": [
        ["Präsenz", "Eingang des Praesenzmelders", "$Praesenz", "c"],
        ["Enable Timer", "Aktiviert/Deaktiviert die Zeitschaltuhr", "$Start", "c"],
        ["Dimmwert Tag", "Dimmwert für Tag/Dämmerung", "$DimmWert1", "c"],
        ["Dimmwert Nacht", "Dimmwert für Nacht", "$DimmWert2", "c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
    ],
    "Output": [
        ["Licht Schalten","Schaltuhr aktiv","$Output_Dim","a"],
        ["Status Schaltuhr","Schaltuhr aktiv","$Ausgang","c"]
    ]
}