Hauptmenü

sleep beenden !

Begonnen von maxxim, 15 Juni 2015, 23:56:31

Vorheriges Thema - Nächstes Thema

maxxim

Hallo zusammen,

ich habe folgendes konfiguriert und zwar aktiviert man den dummy  "Licht_Intervall",  so werden mehrere Lichter mit Pause dazwischen ein- und ausgeschaltet.

Eine Beispielkonfiguration :

define Licht_Intervall dummy
attr Licht_Intervall eventMap /on:Activ/off:Inactiv/
attr Licht_Intervall room xy
attr Licht_Intervall webCmd on:off



define Licht_an_aus notify Licht_Intervall { if ( Value ("Licht_Intervall") eq "Activ" ) { fhem ("set Wohnzimmer_Licht on-for-timer 20;; sleep 10;;\


set Arbeitszimmer_Licht on-for-timer 20;; sleep 10;; set Kueche_Licht on") } else { fhem("set Wohnzimmer_Licht off;; set Arbeitszimmer_Licht off;;\
set Kueche_Licht off")}}


Meine Frage ist nun, wie kann ich das ausschalten bzw. unterbrechen?

Momentan ist es so, dass wenn man bei "Licht_Intervall" auf "off" klickt, dann gehen die Lichter kurz aus aber weil die sleep-Prozesse noch laufen. gehen die Lichet nach sleep 10 sek. wieder an ! 

Ich wäre sehr dankbar, wenn mir jemand helfen könnte .

Gruß
Max

Wuppi68

ich würde das blinken anders lösen ....

define blinker at +*00:00:40 set Wohnzimmer_Licht on-for-timer 20

und mit

set blinker active
bzw
set blinker inactve

wird es aus und eingeschaltet
FHEM unter Proxmox als VM

maxxim

#2
Danke für deine Antwort !

Das Unterbrechen mit set blinker Inactiv finktioniert leider nicht oder ich wende das nicht richtig an !

Wenn man auf "off" klickt, passiert gar nichts, das Intervall läuft weiter.

So sieht der Code aus :


define Licht_on_off notify Licht_Intervall { if (Value ("Licht_Intervall") eq "Activ")\


{ fhem ("define blinker at +*00:00:20 set Wohnzimmer_Licht on-for-timer 10")} else { fhem ("set blinker Inactiv")}}



Danke und Gruß
max

Wuppi68

geht den set blinker active/inactive aus der Kommandozeile oben im Browser?
FHEM unter Proxmox als VM

maxxim

nein das geht nicht !

Wuppi68

Zitat von: maxxim am 16 Juni 2015, 15:39:50
nein das geht nicht !

ok und was bekommst Du für eine Meldung?
Was steht im Logfile?

nach dem define vom AT muss die Lampe schon einmal blinken - tut sie das auch?

Nur noch einmal kurz wegen der Logik

1. AT definieren --> Blinker für Lampe XY ist im System hinterlegt und rennt auch sofort los !!!
2. set ... inactive --> schaltet den Blinker ab
3. set ... active --> schaltet den Blinker ein

für 1) brauchst Du keine weiteren if oder so
if brauchst Du dann nur für 2) und 3)

und ganz wichtig Inactive ist nicht inactive und auch nicht Inaktiv
FHEM unter Proxmox als VM

maxxim

#6
Also die Fehlermeldung in der Logfile lautet : no set implemented for blinker.

Ich habe jetzt ein einfaches Beispiel und zwar nach dem Aktivieren vom "Licht_Intervall" geht das Licht an und erst nach 30 sek. wird es
wieder ausgeschaltet (das funktioniert). Wenn ich aber innerhalb von 30 sek. beim "Licht_Intervall" auf off klicke, um das Ganze zu unterbrechen, müsste der Befehl set blinker inactive abgeschickt werden und der Vorgang müsste abgebrochen werden, und das passiert leider nicht :


define Licht_on_off notify Licht_Intervall { if (Value ("Licht_Intervall") eq "Activ")


{ fhem ("set Wohnzimmer_Licht on;; define blinker at +00:00:30 set Wohnzimmer_Licht off")} else { fhem ("set blinker inactive")}}


Ist der Code falsch ?

Noch ein Beispiel, alle 10 sek. bleibt das Licht für 30 sek. an und das funktioniert auch nur das Unterbrechen nicht !


define Licht_on_off notify Licht_Intervall { if (Value ("Licht_Intervall") eq "Activ")


{ fhem ("define blinker at +*00:00:10 set Wohn on-for-timer 30")} else { fhem ("set blinker inactive")}}



Danke und Gruß
max

flurin

#7
Hallo maxxim

Solche Fälle habe ich mit DOIF umgesetzt:


define du_count dummy



define di_step DOIF ([Licht_Intervall:?Activ]) (set Wohnzimmer_Licht on-for-timer 20, setreading du_count state 1)
DOELSEIF ([?Licht_Intervall] eq "Activ" and [du_count] == 1) (set Arbeitszimmer_Licht on-for-timer 20, setreading du_count state 2)
DOELSEIF ([?Licht_Intervall] eq "Activ" and [du_count] == 2) (set Kueche_Licht on, setreading du_count state 0)
attr di_step wait 0:10:10


Der erste Befehl wird sofort ausgeführt, der 2. und 3. nach 10 Sek. Pause.
Die Befehle werden nur ausgeführt, solange Licht_Intervall=Activ ist.

Gruss
flurin

Wuppi68

define blinker at +*00:00:40 set Wohnzimmer_Licht on-for-timer 20
set blinker inactive
define Licht_on_off notify Licht_Intervall { if (Value ("Licht_Intervall") eq "Activ")  { fhem ("set blinker active")} else { fhem ("set blinker inactive")}}


so sollte es eigentlich gehen

Zeile 1 --> blinker definieren
Zeile 2 --> blinker inactive schalten
Zeile 3 --> Ein oder ausschalten

wenn dieses nicht gehen sollte, kannst Du auch das Attribut disable benutzen

attr blinker disable 0
attr blinker disable 1
FHEM unter Proxmox als VM

maxxim

Hallo flurin,

vielen Danke für deine Antwort !

Es tut sich leider nichts, der erste Befehl wird auch nicht ausgeführt.
In der Logfile steht folgendes :


di_step: reading does not exist: [Licht_Intervall:?Activ]


Gruß
max

flurin

Zitat von: maxxim am 16 Juni 2015, 22:06:19
Hallo flurin,

vielen Danke für deine Antwort !

Es tut sich leider nichts, der erste Befehl wird auch nicht ausgeführt.
In der Logfile steht folgendes :


di_step: reading does not exist: [Licht_Intervall:?Activ]


Gruß
max

Seltsam, bei mir geht es.

Du hast doch noch dein dummy wie oben definiert?


define Licht_Intervall dummy
attr Licht_Intervall eventMap /on:Activ/off:Inactiv/
attr Licht_Intervall room xy
attr Licht_Intervall webCmd on:off

maxxim

ja, es ist alles genauso eingegeben !

flurin

#12
Zitat von: maxxim am 16 Juni 2015, 22:20:11
ja, es ist alles genauso eingegeben !

Hast du die neuste DOIF Version?


version DOIF


Evtl. "shutdown restart" ausführen

maxxim

#13
Sorry, aber wie finde ich die Version heraus ?

"shutdown restart"  hat leider nicht geholfen !

flurin

Zitat von: maxxim am 16 Juni 2015, 22:37:55
Sorry, aber wie finde ich die Version heraus ?

Ergänze zuerst dein Dummy mit setList on off:


define Licht_Intervall dummy
attr Licht_Intervall eventMap /on:Activ/off:Inactiv/
attr Licht_Intervall room xy
attr Licht_Intervall webCmd on:off
attr Licht_Intervall setList on off


Im Eingabefeld eingeben:


version DOIF


Anzeige:

# $Id: 98_DOIF.pm 8432 2015-04-13 19:34:11Z damian-s $