Hallo zusammen,
ich versuche gerade einen Aktor mit zwei Zufallszahlen zu schalten. Er soll so lange on sein, wie die Zufallszahl1 es angibt und so lange off sein, wie die Zufallszahl2 es angibt. Das Ganze soll sich jedoch so lange mit sich ändernden Zufallszahlen wiederholen, bis ein bestimmtes Ereignis eintritt, zum Beipsiel Lampe1 wird off geschaltet. Dementsprechend soll es immer aktiv sein, wenn Lampe1 on ist.
Bisher habe ich es mit folgendem Notify versucht:
Lampe1 {
if (ReadingsVal("Lampe1","STATE",0) eq "1") {
my $zahl1 = int(rand(200) +20 );
my $zahl2 = int(rand(100) +20 );
fhem('sleep '.$zahl1.';set Aktor on;sleep '.$zahl2.';set Aktor off');
}
}
Das funktioniert so weit auch gut, allerdings weiß ich nun nicht, wie ich das zuverlässig als Schleife hinbekomme. Vllt. ist ein Notify dafür auch nicht geeignet?
Es soll sich halt immer wiederholen bis Lampe1 off geschaltet wird.
Ich danke euch!
Hat keiner eine Idee? :(
Moin,
Du solltest das auslösende Event anpassen, damit das notify nur bei Lampe = 1 getriggert wird. Insofern ist mein Syntax aber nur geraten. Dann eine while Schleife bis die Lampe wieder aus ist.
Lampe1:1{
while (ReadingsVal("Lampe1","STATE",0) eq "0") {
my $zahl1 = int(rand(200) +20 );
my $zahl2 = int(rand(100) +20 );
fhem('sleep '.$zahl1.';set Aktor on;sleep '.$zahl2.';set Aktor off');
}
}
Ob das wirklich mit einem notify so gut geht weiß ich nicht. Das wird ja quasi getriggert und rennt dann ewig.
Vielleicht schaust mal ob es nicht mit einem DOIF besser geht und dabei alles von Event gesteuert wird und keine Endlosschleife läuft.
Gruß Otto
Nur Geduld, hier gibt es keine hotline.
DOIF hat in der commandref ein Beispiel für das wiederholte senden einer Frost Nachricht. Vielleicht kannst du das für dich umschreiben. Weiterhin kannst du die Zufallszahl dort im wait Attribut unterbringen.
oder schau dir RandomTimer an.
gruss
andre
Zitat von: veLenoSo am 13 November 2016, 09:53:52
Hat keiner eine Idee? :(
Und? Schon was umgesetzt? :P
Zitat von: igami am 14 November 2016, 05:42:44
Und? Schon was umgesetzt? :P
Frech? :P
Aber ja, ich habe Ottos Vorschlag probiert umzusetzen. Leider ohne Erfolg, FHEM wollte daraufhin nicht mehr mit mir kommunizieren 8)
Deinen Ansatz habe ich mir bislang nur in der Doku angesehen, da hatte ich bislang noch keine zündende Idee, wie das damit funktionieren könnte..
Zitat von: veLenoSo am 14 November 2016, 07:13:13
Frech? :P
Aber ja, ich habe Ottos Vorschlag probiert umzusetzen. Leider ohne Erfolg, FHEM wollte daraufhin nicht mehr mit mir kommunizieren 8)
Deinen Ansatz habe ich mir bislang nur in der Doku angesehen, da hatte ich bislang noch keine zündende Idee, wie das damit funktionieren könnte..
Postest Du mal bitte den Event der Lampe1 auf den Du starten willst?
Ich kann mir allerdings auch gut vorstellen (habe das noch nie probiert) das FHEM total blockiert während die Schleife läuft.
Insofern rate ich auch eher zum DOIF.
Gruß Otto