FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Raschi1210 am 17 Februar 2016, 11:10:58

Titel: Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: Raschi1210 am 17 Februar 2016, 11:10:58
Hallo,
ich baute mir ein script welches mit ein sms sendet wenn die Waschmaschine fertig war.
Der Status wurde über eine fotodiode erkannt.
Nun habe ich jedoch eine neue Waschmaschine und diese hat kein lämpchen mehr für fertig.
Nun müsste ich es so machen, dass das Script erst ausgeführt wird wenn:
- der Status auf "open" wechselt
- ABER sich in den letzten 10 Sekunden nicht geändert hat
GRUND ist:
Beim Einschalten der Waschmaschine blinkt dieses Lämpchen, beim Waschen leuchtet dieses Lämpchen und wenn es fertig ist, ist es AUS.

So habe ich es derzeit in fhem eingebunden, aber da wird das Script natürlich bei jeder änderung ausgeführt.
define Waschmaschine_fertig notify Sensor_Waschmaschine:open {if($value{SMS_Gateway} eq "on"){system "/opt/fhem/scripte/fertigWaschm.sh"}}
Titel: Antw:Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: Puschel74 am 17 Februar 2016, 11:14:57
$value ist out und wurde durch Value ersetzt.
watchdog wäre eine Möglichkeit.
Titel: Antw:Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: Raschi1210 am 17 Februar 2016, 14:33:57
Habe das mal mit Watchog versucht (Test) aber irgendwie klappt das nicht
Hiermit sollte Testschalter ja ON gehen wenn der Sensor auf status "open" geht, aber nur wenn 10 Sekunden zuvor kein "closed" kommt... Sehe ich das richtig?
define Waschmaschine_fertig watchdog Sensor_Waschmaschine:open 00:00:10 Sensor_Waschmaschine:closed set Testschalter on

...
Titel: Antw:Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: ph1959de am 17 Februar 2016, 14:43:19
Schau mal, ob bei den vielen DOIF-Beispielen (Deutsche Version der commandref) eines dabei ist, das Du für Deinen Anwendungsfall verwenden kannst.

Gruß, Peter
Titel: Antw:Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: Ellert am 17 Februar 2016, 14:58:28
Mit DOIF:

di DOIF ([WM] ne "open")
DOELSEIF ([WM] eq "open") (mach das)


und die Attribute

wait 0:10
do always


Solange WM nicht "open" ist hat DOIF den Status cmd_1, wenn WM gleich "open ist" kommt nach 10 s cmd_2, es sei denn, innerhalb der 10 s wird WM wieder ungleich "open"
Titel: Antw:Ausführung eines Skripts erst wenn sich status länger als 10 Sek. nicht ändert
Beitrag von: Raschi1210 am 17 Februar 2016, 15:14:15
Danke für die Info.. habs aber jetzt so gelöst (setstate ... defined hatte ich nicht angegeben und somit nur einmal ausgeführt)
define Waschmaschine_fertig watchdog Sensor_Waschmaschine:open 00:00:10 Sensor_Waschmaschine:closed set Testschalter on;; setstate Waschmaschine_fertig defined