Seite 1 von 1

Statemachine - Treppenlicht

Verfasst: Mo Okt 26, 2020 9:52 am
von Piranha
allo Zusammen,

ich habe gerade folgendes Szenario:

Eine Treppe an der jeweils oben und unten ein Bewegungsmelder angebracht ist. Nun soll das Treppenlicht (für 15 Sek) jeweils von oben nach unten oder von unten nach oben ausgelöst werden. Allerdings soll der Timer nicht erneu gesetzt werden (Licht weitere 15 Sek. an), wenn am Treppenausgang der jeweils andere Bewegungsmelder ausgelöst wird.

Oder anders gefragt, kann ein bestehender und laufender Timer irgendwie beibehalten werden ohne von einer anderen Aktion überschrieben zu werden? Oder benötige ich da zwei unabhängige Statemachines?

Code: Alles auswählen

    ["Statemachine",
      [
        ["$EG_ON" , 0, 1,"$Time" ],
        ["$UG_ON" , 1, 1,   0    ],        
        [   0     , 1, 0,   0    ],     
        ["$EG_ON" , 1, 1,"$Time" ],
        ["$UG_ON" , 0, 2,"$Time" ], 
        [   0     , 2, 0,   0    ],
        ["$UG_ON" , 2, 2,"$Time" ]        
      ],
      "$State"
Ich habe das soweit mit der Statemachine umgesetzt, allerdings wird diese ja neu gestartet sobald der andere Bewegungsmelder am Treppenausgang erreicht wird.

Könnt ihr mir da weiterhelfen? Ein Break würde ja vermutlich auch den Timer anhalten.

LG

Alex

Re: Statemachine - Treppenlicht

Verfasst: Mo Okt 26, 2020 1:48 pm
von S. Kolbinger
Hallo Alex,

das sieht für mich auf den ersten Blick gut aus.
Meiner Meinung sollte es so funktionieren.
Piranha hat geschrieben: Mo Okt 26, 2020 9:52 am aallerdings wird diese ja neu gestartet sobald der andere Bewegungsmelder am Treppenausgang erreicht wird.
Wenn du innerhalb der 15Sek aus dem Bereich des anderen Bewegungsmelders raus bist, sollte es nicht mehr triggern.

Gruß,
Stefan

Re: Statemachine - Treppenlicht

Verfasst: Mo Okt 26, 2020 3:37 pm
von Piranha
Hallo Stefan,

tut es leider nicht. Beispiel:

- Bewegung von EG in UG = Licht geht an
- Auslösung von UG beim verlassen der Treppe löscht den existierenden und laufenden Timer, somit bleibt das Licht dauerhaft (Status 1) an und geht nicht mehr aus

Gruß
Alex

Re: Statemachine - Treppenlicht

Verfasst: Mo Okt 26, 2020 4:11 pm
von gbglace
Unabhängig der Softwarelösung des Logikeditors.

Eine solche Logik, die das Treppenlicht beim betreten der Treppe einschaltet und eine Treppenlichtzeit von in etwa genau oder etwas drüber der Zeit für den Durchlauf in eine Richtung hat, funktioniert nur, wenn Du Alleinnutzer der Treppe bist und kein vergesslicher Mensch der kurz vor unten nochmal umdreht. Weil in Deinem Szenario läuft Person 1 die Treppe runter und ganz kurz bevor die Treppenlichtzeit, die nicht retriggert wird, abläuft, betritt eine zweite Person die Treppe, mit dem Fuß auf der dritten Stufe darf diese Person dann im dunkeln die Treppe runter gehen insofern sind Treppenlichtautomaten meist retriggerbar ausgeführt, nicht unbedingt kumulierend verlängernd aber retriggerbar.

Und wenn Du eine sehr knapp bemessene Treppenlichtzykluszeit eingestellt hast, wem sollte es denn stören wenn das Licht noch 15 Sekunden nachleuchtet. Optisch für die Augen ist es auch angenehmer wenn nicht hinter dir alles direkt wieder dunkel wird und Du dich umdrehst und in eine dunkle Raumecke mit der Treppe schaust.

Re: Statemachine - Treppenlicht

Verfasst: Mo Okt 26, 2020 4:22 pm
von S. Kolbinger
Hi Alex,
Piranha hat geschrieben: Mo Okt 26, 2020 3:37 pm tut es leider nicht. Beispiel:

- Bewegung von EG in UG = Licht geht an
- Auslösung von UG beim verlassen der Treppe löscht den existierenden und laufenden Timer, somit bleibt das Licht dauerhaft (Status 1) an und geht nicht mehr aus
das hatte ich glatt übersehen.

Ich habe deine zweite Zeile gelöscht(und den Rest sortiert).
So sollte jetzt funktionieren:

Code: Alles auswählen

    ["Statemachine",
      [
        ["$EG_ON" , 0, 1,"$Time" ],
        ["$UG_ON" , 0, 2,"$Time" ], 
        [   0     , 1, 0,   0    ],     
        ["$EG_ON" , 1, 1,"$Time" ],
        [   0     , 2, 0,   0    ],
        ["$UG_ON" , 2, 2,"$Time" ]        
      ],
      "$State"

Re: Statemachine - Treppenlicht

Verfasst: Di Okt 27, 2020 7:09 pm
von Piranha
Hallo Stefan,

habe es ausprobiert. Leider triggert der PM bei verlassen erneut die Zeit. Bedeutet der erste Timer läuft und wird erneut getriggert/überschrieben, beim verlassen der Treppe. Status bleibt gleich bei entweder 1 oder 2, jedoch wird der Time neu gestartet.

Status müsste ja nach Auslösung und je nach Richtung 1 oder 2 sein. Nehmen wir mal EG_ON und 1 an. Nun wird beim Verlassen UG_ON ausgelöst:

Code: Alles auswählen

        ["$EG_ON" , 0, 1,"$Time" ],  //==> Trifft nicht zu, da Status 1
        ["$UG_ON" , 0, 2,"$Time" ],  //==> Trifft nicht zu, da Status 1
        [   0     , 1, 0,   0    ],  //==> Trifft nicht zu, da Bedingung 1
        ["$EG_ON" , 1, 1,"$Time" ],  //==> Trifft zu, da EG_ON noch 1 (Timer nicht abgelaufen) und Status 1 somit Timer erneut 10 Sekunden, Richtig??? 
        [   0     , 2, 0,   0    ],
        ["$UG_ON" , 2, 2,"$Time" ]      
Lässt sich das irgendwie lösen?

LG

Alex

Re: Statemachine - Treppenlicht

Verfasst: Do Okt 29, 2020 2:17 pm
von Piranha
Hallo Stefan,

liege ich da richtig mit meiner Annahme oben, lässt sich das ggf. irgendwie umgehen?

LG
Alex

Re: Statemachine - Treppenlicht

Verfasst: Do Okt 29, 2020 4:39 pm
von S. Kolbinger
Hi Alex,

ich sehe hier zwei Lösungsansätze:
  1. Man lässt diese Zeilen ganz weg:
    • ["$EG_ON" , 1, 1,"$Time" ]
    • ["$UG_ON" , 2, 2,"$Time" ]
    Für welchen Szenario sind diese geacht?
  2. Man wertet bei den Eingängen EG_ON und UG_ON noch aus, ob sie die Logik getriggert haben (Modul: "Triggered")
    und verknüpft das mit seinem jeweiligen Eingang über ein "AND". Das Ergebnis ist nur dann "True", wenn der PM gerade angesprungen ist.

Re: Statemachine - Treppenlicht

Verfasst: Sa Okt 31, 2020 10:11 am
von Piranha
1. Szenarien 1,1 und 2,2 waren gedacht um in dem Fall tatsächlich das Licht zu verlängern, sobald eine weitere Person von oben die Treppe betritt.

2. Funktioniert ja dann leider auch nicht. Da Triggered ja sofort auf False springt, sobald der andere PM ausgelöst hat und somit AND ebenfalls auf False geht und den Timer unterbricht.

Scheint schwierig zu sein das sinnvoll zu lösen. Muss mir überlegen ob ich das evtl. mit einer Sperre des jeweilig anderen PM irgendwie gelöst bekomme.

Trotzdem Danke für deine Unterstützung. Falls doch noch jemand eine Idee hat, gerne melden.

Re: Statemachine - Treppenlicht

Verfasst: Sa Okt 31, 2020 10:45 am
von gbglace
Piranha hat geschrieben: Sa Okt 31, 2020 10:11 am
Scheint schwierig zu sein das sinnvoll zu lösen. Muss mir überlegen ob ich das evtl. mit einer Sperre des jeweilig anderen PM irgendwie gelöst bekomme.
Auch das wird nicht funktionieren. Wenn du runter gehst hast zwar den PM unten gesperrt, so dass er nicht nachtriggert wenn du die Treppe verlässt. Aber wenn direkt in dem Moment wer von unten nach oben will dann hat derjenige auch auf halber Strecke das Licht dunkel auf der Treppe weil es eben nicht nachgetriggert wurde wegen der Sperre des unteren Melders.

Du kannst niemals sicher sagen wann der jeweils andere Melder gesperrt werden soll, sowie es mehr als eine Person gibt die potentiell die Treppe benutzt. Und selbst wenn Du alleine die Treppe benutzt. Wenn Dir spontan einfällt nochmal hoch zu müssen stehst auch auf halber Treppe im dunkeln.
Einfach ein gesundes Maß an grundsätzlicher Nachlaufzeit in den Meldern definieren und gut ist.

Du bräuchtest eine gesicherte Logik, es befindet sich eine Person zwischen den beiden Meldern, und so lange wie dies der Fall ist muss Licht sein.
Dazu wären oben und unten je zwei Lichtschranken notwendig die so nah beieinander sind um immer durchlaufen zu werden (auch bei spontaner Wende) und die Richtung auswertbar ist. Dann kannst quasi Zählen wie viele Bewegungen jeweils in die Treppe und wie viele Bewegungen raus aus Treppe waren, egal ob oben oder unten. Wenn 0 dann licht AUS, sonst AN.