Hallo, ich habe (sicher eine absolute Anfänger-) Frage (Syntax-Problem):
Ich habe mit:
font=courier]define Pumpe dummy
attr Pumpe setList off on
define Zeitsperre dummy
attr Zeitsperre setList off on[/font]
zwei Dummy's angelegt und weiter eingegeben:
define PumpeON notify Pumpe.on { \
fhem ("set Pumpe on") ;; \
fhem ("set Zeitsperre on") ;; \
fhem ("define PumpeOFF at +00:00:30 set Pumpe off") ;; \
fhem ("define ZeitsperreOFF at +00:00:50 set Zeitsperre off") ;; }
Wenn ich nun den Schalter "Pumpe" einschalte, geht "Pumpe" nach 30 sek und "Zeitsperre" nach 50 sek auf "off".
Das ist ok so.
Wenn ich nun den Anfang ändere auf:
define PumpeON notify Pumpe.on { \
if (Value ("Zeitsperre") ne "on") { \
fhem ("set Pumpe on") ;; \
fhem ("set Zeitsperre on") ;; \
fhem ("define PumpeOFF at +00:00:30 set Pumpe off") ;; \
fhem ("define ZeitsperreOFF at +00:00:50 set Zeitsperre off") ;; }
sollte eigentlich beim Auslösen von "Pumpe" geschaut werden, ob "Zeitsperre" noch "on" ist und dann (wenn "on") die folgenden Aktionen verhindern. Wenn "Zeitsperre "off" ist sollte der Einschaltvorgang (wie oben) funktionieren.
Soweit die Theorie.
In der Praxis wird bei mir aber nur "Pumpe" eingeschalten ausgeführt ... und nix weiter.
Warum?
Hi Jogi,
Zitat von: Jogi am 12 November 2013, 13:58:54
fhem (define PumpeOFF at +00:00:30 set Pumpe off") ;; \
Da fehlen für mich die öffnenden Anführungsstriche. Du hast nur welche hinter off. Auch wenn es scheinbar funktioniert. Dieser Fehler findet sich mehrfach in deinem geposteten Code.
Zitat
if (Value ("Zeitsperre") ne "on" { \
Da fehlt für mich die schließende runde Klammer hinter "on".
Was steht im fhem.log, wenn diese Schnipsel ausgeführt werden?
Gruß
Thomas
Sorry, ich konnte den Text nicht einkopieren (mußte ihn neu schreiben - fragt jetzt bitte nicht warum!).
Danach habe ich es nach unten kopiert - daher ggf. der mehrfache Fehler mit den " und der fehlenden Klammer.
Ich ändere das mal schnell, nicht das noch jemand drüber stolpert ...
Im Original war bei mir der Programmcode aber richtig und vollständig (grad überprüft).
Das Log werde ich nachher mal reinstellen.
Hi,
und die schließende runde Klammer am Ende der if-Bedingung ist auch ein Übertragungsfehler?
Gruß
Thomas
Edith trägt nach: Den hast du ja auch ergänzt. Also bleibt nur: Genauen Code, 1:1, sonst geht nix mit Syntaxcheck aus der Ferne.
Ja - leider 8) :-[
Ich werde es aber nachher gleich nochmals überprüfen.
Da hatte sich vermutlich doch ein Fehler eingeschlichen .... jetzt klappt es.
Ich habe die Befehle jetzt zuerst in eine Textdatei geschrieben und dann von dort in die Eingabezeile kopiert.
Events:
2013-11-12 17:30:45 dummy Zeitsperre on
2013-11-12 17:30:45 Global global DEFINED PumpeOFF
2013-11-12 17:30:45 Global global DEFINED ZeitsperreOFF
2013-11-12 17:30:45 dummy Pumpe on
2013-11-12 17:30:45 dummy Pumpe on
2013-11-12 17:31:15 dummy Pumpe off
2013-11-12 17:31:15 Global global DELETED PumpeOFF
2013-11-12 17:31:35 dummy Zeitsperre off
2013-11-12 17:31:35 Global global DELETED ZeitsperreOFF
Das Skript soll für die Steuerung der Ziurkulationspumpe dienen.
Vielen Dank für die Hilfe. :)
Aber ganz so wie gewünscht funktioniert es trotzdem nicht.
Ich kann den Dummy-Schalter "Pumpe" trotzdem einschalten (auf ON), auch wenn die "Zeitsperre" noch ON ist.
Da muss wohl noch ein anderer Denkfehler drin sein.
2013-11-12 18:00:48 dummy Zeitsperre on Pumpe ON
2013-11-12 18:00:48 Global global DEFINED PumpeOFF
2013-11-12 18:00:48 Global global DEFINED ZeitsperreOFF
2013-11-12 18:00:48 dummy Pumpe on
2013-11-12 18:00:48 dummy Pumpe on
2013-11-12 18:01:08 dummy Pumpe off
2013-11-12 18:01:08 Global global DELETED PumpeOFF Pumpe schaltet automatisch OFF / Zeitsperre noch ON
2013-11-12 18:01:13 dummy Pumpe on Pumpe lässt sich trotzdem wieder ON schalten ... und bleibt ewig an
2013-11-12 18:02:48 dummy Zeitsperre off
2013-11-12 18:02:48 Global global DELETED ZeitsperreOFF
Hallo,
klar kannst du den Dummy manuel immer auf on setzen.
Das wird durch das notify nicht abgefangen.
Grüße
Wie mache ich es aber dann ??
Ich möchte eine Einschaltsperre für die Pumpe realisieren. ???
Hallo,
ganz unbedarft würd ich hergehen und bei Zeitsperre = on ein attr Pumpe setList off absetzen und bei Zeitsperre = off ein attr Pumpe setList off on
Sobald Zeitsperre auf off steht nimmst du der Pumpe das on weg und kannst dann auch manuell nichtmehr auf on setzen.
Ein set Pumpe on
in der FHEM-Befehlszeile geht aber dann immer noch.
Grüße
Das " fhem ("attr Pumpe setList off") ;;
habe ich eingefügt.
Somit kann ich die Pumpe nicht erneut auf ON schalten.
Wie platziere ich aber dann das "attr Pumpe setList off on" ,dass es mit dem Setzen
von "Zeitverzögerung" gleichzeitig ausgeführt wird?
Hallo,
du wirst um ein zweites notify auf Zeitsperre nicht herum kommen vermute ich mal.
Grüße
So funktioniert es jetzt erst einmal (mit dummy's zumindest) - für mich ein erster großer Schritt - für die Experten hier sicher trivial ...
# PumpeON
define PumpeON notify Pumpe.on { if (Value ("Zeitsperre") ne "on") { \
fhem ("set Pumpe on") ;; fhem ("set Zeitsperre on") ;; \
fhem ("attr Pumpe setList off") ;; \
fhem ("define PumpeOFF at +00:00:20 set Pumpe off") ;; \
fhem ("define ZeitsperreOFF at +00:01:00 set Zeitsperre off") ;; \
fhem ("define ListON at +00:01:02 attr Pumpe setList off on") }}
Jetzt gehe ich erst mal in die Werkstatt um meine 2 Taster-Bausätze zusammenzulöten.
Der am Sonntag bestellte (und sofort verfügbare) HM-Lan-Adapter ist immer noch nicht auf dem Postweg unterwegs >:(
Hallo,
sorry für den Eingriff aber mit Tags finde ich die Texte übersichtlicher (da man sieht wo der Code anfängt und wo er aufhört).
Grüße
Überzeugt .... : ;)