Seite 1 von 2
Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 10:06
von Steinspiel
Moin,
Ich habe ein Problem mit einem Timer, kann aber den Fehler nicht finden. Vielleicht sieht jemand anderes wo ich was falsch gemacht habe:
Also: wenn eine Lampe (Flur_2) eingeschaltet wird muss ich prüfen ob eine weitere Lampe (Flur_1) schon eingeschaltet ist oder nicht.
Ist Flur_1 eingeschaltet, soll die Rule abbrechen ansonsten soll sie weiterlaufen. Die Prüfung
muss mit 5 sec Zeitverzögerung
nach einschalten von Flur_2 stattfinden, deshalb habe ich den Timer "tFlur_1_SICHERHEIT" gesetzt.
Soweit scheint die Rule zu funktionieren, Schau ich mir aber das Log an, zeigt sich das
keine 5 sec zwischen den LogInfos liegen, die Abfrage bzw. gegebenenfalls der Abbruch finden unmittelbar
nach einschalten von Flur_2 statt!
Habe ich eine Klammer falsch gesetzt?
der Teil meiner Rule mit dem Timer:
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
]
)
if(Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
return;
}
Auszug aus dem Log
Code: Alles auswählen
2020-05-20 09:44:01.214 [INFO ] [e.model.script.PROD_SPEZ_klein_rules] - --- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---
2020-05-20 09:44:01.216 [INFO ] [.model.script.PROD_SPEZ_klein_rules_] - --- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---
2020-05-20 09:44:01.224 [INFO ] [e.model.script.PROD_SPEZ_klein_rules] - --- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---
Danke...
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 10:39
von bastler
du hast die abfrage ob flur1 on ist nicht in die eckigen klammern genommen. darum wird nach fünf sekunden nur der timer wieder auf null gesetzt. wenn die abfrage auch erst nach fünf sekunden kommen soll dann glaub ich musst du es so machen:
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
if (Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
}
])
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 11:03
von Steinspiel
bastler hat geschrieben: ↑20. Mai 2020 10:39
[...]
du hast die abfrage ob flur1 on ist nicht in die eckigen klammern genommen. darum wird nach fünf sekunden nur der timer wieder auf null gesetzt.
Das hatte ich vergessen zu erwähnen: so wie Du es vorgeschlagen hast habe ich es schon probiert. Die 5 sec werden dann laut Log auch eingehalten, nur wenn der Abbruch erfolgt weil Flur_1 schon angeschaltet ist, dann bricht die Rule nicht ab sondern wird trotzdem fortgesetzt. Ich poste mal die ganze Rule, so wie Du sie jetzt vorgeschlagen hast, dann kann man vielleicht besser sehen was ich meinte.
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
var Timer tFlur_2_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_2 definieren: 40 sec Wartezeit für Flur_2
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
if(Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
return;
}
]
)
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT = createTimer(now.plusSeconds(35), [| // Timer auf 35 sec anlegen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_2 Timer wird auf 35 sec gesetzt ---") // LogInfo
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
if(Flur2_Power.state == ON) { // wenn Flur_2 nach 42 sec noch AN-geschaltet
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 ist nach 40 sec noch AN ---") // LogInfo
Flur2_Power.sendCommand(OFF) // Flur_2 AUS-schalten
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde nach 40 sec AUS-geschaltet ---") // LogInfo
}
if(Flur2_Power.state == OFF) { // wenn Flur_2 schon AUS-geschaltet ist
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 war nach 40 sec bereits AUS-geschaltet ---") // LogInfo
}
]
)
end
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 11:19
von bastler
ich bin nicht sicher ob ich das richtig verstehe was du machen willst
soll der 35 sekunden timer auch abgebrochen werden wenn nach 5 sekunden flur1 on ist? dann müsstest du oben statt dem "return" ein "tFlur_2_SICHERHEIT?.cancel" und darunter noch "tFlur_2_SICHERHEIT = null" schreiben. das return an dieser stelle bringt dir nichts weil ja der rest der funktion (weil außerhalb der eckigen klammer) eh sofort ausgeführt wurde und nicht erst nach 5 sekunden.
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
var Timer tFlur_2_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_2 definieren: 40 sec Wartezeit für Flur_2
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
if(Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
}
])
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT = createTimer(now.plusSeconds(35), [| // Timer auf 35 sec anlegen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_2 Timer wird auf 35 sec gesetzt ---") // LogInfo
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
if(Flur2_Power.state == ON) { // wenn Flur_2 nach 42 sec noch AN-geschaltet
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 ist nach 40 sec noch AN ---") // LogInfo
Flur2_Power.sendCommand(OFF) // Flur_2 AUS-schalten
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde nach 40 sec AUS-geschaltet ---") // LogInfo
}
if(Flur2_Power.state == OFF) { // wenn Flur_2 schon AUS-geschaltet ist
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 war nach 40 sec bereits AUS-geschaltet ---") // LogInfo
}
])
end
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 11:40
von Steinspiel
Mein Plan ist folgender:
Flur_2 wird EIN-geschaltet
Timer "tFlur_1_SICHERHEIT" - 5 sec warten, nach Ablauf
prüfen ob Flur_1 AN ist, wenn
JA -> Rule abbrechen = Fertig!
NEIN ->
Timer "Timer tFlur_2_SICHERHEIT" - 35 sec warten, nach Ablauf
Flur_2 AUS-schalten
Das mit dem 35 sec Timer, das Schalten usw funktioniert auch mit der Rule aus meiner ersten gepostetten Version, nur eben die 5 sec Wartezeit nicht.
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 12:01
von bastler
hm, hast du mal mein letztes beispiel probiert? ich habs hier mit meinen aktoren nachgestellt und ich würde meinen das funktioniert so wie du es brauchst. es ist halt so dass der 35 sekunden timer zwar gleichzeitig mit dem 5 sekunden timer startet, dann aber abgebrochen (und damit nicht ausgeführt) wird wenn flur1 an ist. das einzig verwirrende ist dein log-eintrag für die 35 sekunden, der gehört höher weil an der stelle wo du loggst sind die 35 sekunden schon vorbei:
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
var Timer tFlur_2_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_2 definieren: 40 sec Wartezeit für Flur_2
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
if(Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
}
])
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_2 Timer wird auf 35 sec gesetzt ---") // LogInfo
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT = createTimer(now.plusSeconds(35), [| // Timer auf 35 sec anlegen
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
if(Flur2_Power.state == ON) { // wenn Flur_2 nach 42 sec noch AN-geschaltet
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 ist nach 40 sec noch AN ---") // LogInfo
Flur2_Power.sendCommand(OFF) // Flur_2 AUS-schalten
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde nach 40 sec AUS-geschaltet ---") // LogInfo
}
if(Flur2_Power.state == OFF) { // wenn Flur_2 schon AUS-geschaltet ist
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 war nach 40 sec bereits AUS-geschaltet ---") // LogInfo
}
])
end
.. man könnte alternativ probieren ob man den zweiten timer in den ersten schachtelt, aber ich finde das keine "schöne" lösung.
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 12:57
von Tokamak
Die Lösung ist, nach 5 Sekunden den zweiten Timer zu starten (das ganze Logging lasse ich mal weg, dass verwirrt nur):
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null
var Timer tFlur_2_SICHERHEIT = null
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON
then
tFlur_1_SICHERHEIT?.cancel()
tFlur_1_SICHERHEIT=null
tFlur_2_SICHERHEIT?.cancel()
tFlur_2_SICHERHEIT=null
tFlur_1_SICHERHEIT=createTimer(now().plusSeconds(5),[|
if (Flur1_Power.state==OFF) {
tFlur_2_SICHERHEIT=createTimer(now().plusSeconds(35), [|
if (Flur2_Power.state==ON) Flur2_Power.sendCommand(OFF)
tFlur_2_SICHERHEIT=null
])
}
tFlur_1_SICHERHEIT=null
])
end
Eine weitere Möglichkeit ist, einen Timer zu verwenden, z.B.
Code: Alles auswählen
var Timer tFlur_SICHERHEIT = null
var Boolean bReschedule
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON
then
tFlur_SICHERHEIT?.cancel()
bReschedule=false
tFlur_SICHERHEIT=createTimer(now().plusSeconds(5),[|
if (!bReschedule) {
if (Flur1_Power.state==OFF) {
tFlur_SICHERHEIT.reschedule(now().plusSeconds(35))
bReschedule=true
return;
}
}
else {
if (Flur2_Power.state==ON) Flur2_Power.sendCommand(OFF)
}
tFlur_SICHERHEIT=null
])
end
Sollten die Timer nicht gecancelt werden, wenn währenddessen Flur2 wieder ausgeschaltet wird?
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 13:00
von bastler
ja genau tokamak, da hab ich auch gerade rumprobiert, das ist die verschachtelte version die ich nicht so schön finde, aber wenn es besser gefällt:
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
var Timer tFlur_2_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_2 definieren: 40 sec Wartezeit für Flur_2
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel // Gedenksekunde zunächst eventuell laufende Timer entfernen
tFlur_2_SICHERHEIT?.cancel // zunächst eventuell laufende Timer entfernen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT = createTimer(now.plusSeconds(5), [| // Gedenksekunde Timer auf 5 sec anlegen
tFlur_1_SICHERHEIT = null // Gedenksekunde Timer wieder auf NULL setzen
if(Flur1_Power.state == ON) { // Abfrage ob Flur1 auch an ist, wenn ja -> Abbruch
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Abbruch -> Flur_1 ist ebenfalls eingeschaltet ---") // LogInfo
}
else {
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_2 Timer wird auf 35 sec gesetzt ---") // LogInfo
tFlur_2_SICHERHEIT = createTimer(now.plusSeconds(35), [| // Timer auf 35 sec anlegen
tFlur_2_SICHERHEIT = null // Timer wieder auf NULL setzen
if(Flur2_Power.state == ON) { // wenn Flur_2 nach 40 sec noch AN-geschaltet
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 ist nach 40 sec noch AN ---") // LogInfo
Flur2_Power.sendCommand(OFF) // Flur_2 AUS-schalten
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde nach 40 sec AUS-geschaltet ---") // LogInfo
}
if(Flur2_Power.state == OFF) { // wenn Flur_2 schon AUS-geschaltet ist
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 war nach 40 sec bereits AUS-geschaltet ---") // LogInfo
}
])
}
])
end
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 14:00
von Tokamak
bastler hat geschrieben: ↑20. Mai 2020 13:00
ja genau tokamak, da hab ich auch gerade rumprobiert, das ist die verschachtelte version die ich nicht so schön finde, aber wenn es besser gefällt:
Sicher Geschmackssache. In meinen Augen ise es besser lesbar, weil sofort ersichtlich wird, unter welchen Bedingungen was geschieht.
Diese Threads sollen auch helfen, verschiedene Möglichkeiten zur Auswahl zu haben, zum Lernen und zum Finden des Stils, der einem am besten zusagt.
Der Code muss für den Entwickler auch nach Jahren noch verständlich sein. Daher sollte man die Code-Schnipsel aus dem Forum nicht nur unreflektiert kopieren, sondern es als Vorlage nehmen, um seinen Code selbst zu schreiben.
Re: Wieso funktioniert mein Timer nicht?
Verfasst: 20. Mai 2020 20:17
von Steinspiel
Moin,
Erst mal Sorry das ich mich erst jetzt wieder melde, musste heute Nachmittag überraschend los...
Und dann Danke für eure Hilfe! Die "aufgeräumte Lösung" von @Tokamak gefällt mir am besten. Zum besseren Verständniss für mich habe ich die noch mit LogInfos und Kommentaren versehen und wie man an meinem Log sieht, funktioniert es auch!
Eine (kosmetische) Frag bleibt für mich: an welcher Stelle müsste ich das LogInfo setzen "Abbruch -> Flur_1 ist AN" für genau diesen Fall? Muss dafür noch ein "if (Flur1_Power.state==ON)" eingefügt werden?
Code: Alles auswählen
var Timer tFlur_1_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_1 definieren: Gedenksekunde VOR Abfrage Flur:1 AN ?
var Timer tFlur_2_SICHERHEIT = null // Timervariable fuer SICHERHEIT Flur_2 definieren: 35 sec Wartezeit für Flur_2
rule "SICHERHEIT Flur_2 Licht_AUS"
when
Item Flur2_Power changed to ON // Wenn Flur_2 AN-geschaltet wird
then
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---") // LogInfo
tFlur_1_SICHERHEIT?.cancel() // zunächst laufende Timer entfernen
tFlur_1_SICHERHEIT=null // zunächst laufende Timer NULLen
tFlur_2_SICHERHEIT?.cancel() // zunächst laufende Timer entfernen
tFlur_2_SICHERHEIT=null // zunächst laufende Timer NULLen
logInfo("PROD_SPEZ_klein_rules_","--- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---") // Gedenksekunde LogInfo
tFlur_1_SICHERHEIT=createTimer(now().plusSeconds(5),[| // Timer auf 5 sec anlegen
if (Flur1_Power.state==OFF) { // wenn Flur_1 AUS
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_1 ist AUS-geschaltet Timer auf 35 sec ---") // LogInfo
tFlur_2_SICHERHEIT=createTimer(now().plusSeconds(35), [| // Timer auf 35 sec anlegen
if (Flur2_Power.state==ON) Flur2_Power.sendCommand(OFF) // wenn Flur_2 AN -> dann AUS
logInfo("PROD_SPEZ_klein_rules","--- SICHERHEIT--Flur_2 wurde nach 35 sec AUS-geschaltet ---") // LogInfo
tFlur_2_SICHERHEIT=null // zunächst laufende Timer NULLen
])
}
tFlur_1_SICHERHEIT=null // zunächst laufende Timer NULLen
])
end
mein Log
Code: Alles auswählen
2020-05-20 19:49:27.476 [ome.event.ItemCommandEvent] - Item 'Flur2_Power' received command ON
2020-05-20 19:49:27.494 [nt.ItemStatePredictedEvent] - Flur2_Power predicted to become ON
2020-05-20 19:49:27.524 [vent.ItemStateChangedEvent] - Flur2_Power changed from OFF to ON
2020-05-20 19:49:27.542 [vent.ItemStateChangedEvent] - Flur2_Brightness changed from 0 to 10
2020-05-20 19:49:27.874 [INFO ] [e.model.script.PROD_SPEZ_klein_rules] - --- SICHERHEIT--Flur_2 wurde EIN-geschaltet ---
2020-05-20 19:49:27.876 [INFO ] [.model.script.PROD_SPEZ_klein_rules_] - --- SICHERHEIT--Flur_1 Gedenksekunde fuer 5 sec gesetzt ---
2020-05-20 19:49:32.882 [INFO ] [e.model.script.PROD_SPEZ_klein_rules] - --- SICHERHEIT--Flur_1 ist AUS-geschaltet Timer auf 35 sec ---
2020-05-20 19:50:07.893 [INFO ] [e.model.script.PROD_SPEZ_klein_rules] - --- SICHERHEIT--Flur_2 wurde nach 35 sec AUS-geschaltet ---
2020-05-20 19:50:07.907 [ome.event.ItemCommandEvent] - Item 'Flur2_Power' received command OFF
2020-05-20 19:50:07.923 [nt.ItemStatePredictedEvent] - Flur2_Power predicted to become OFF
2020-05-20 19:50:07.946 [GroupItemStateChangedEvent] - Gr_flur changed from ON to OFF through Flur2_Power
2020-05-20 19:50:07.948 [vent.ItemStateChangedEvent] - Flur2_Power changed from ON to OFF
2020-05-20 19:50:07.964 [vent.ItemStateChangedEvent] - Flur2_Brightness changed from 10 to 0