Warum geht es so - aber nicht so ... ?

Begonnen von Jogi, 12 November 2013, 13:58:54

Vorheriges Thema - Nächstes Thema

Jogi

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?

Rohan

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

Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Jogi

#2
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.

Rohan

#3
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.
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Jogi

Ja - leider  8)  :-[

Ich werde es aber nachher gleich nochmals überprüfen.

Jogi

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.  :)

Jogi

#6
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

Puschel74

Hallo,

klar kannst du den Dummy manuel immer auf on setzen.
Das wird durch das notify nicht abgefangen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Jogi

Wie mache ich es aber dann ??
Ich möchte eine Einschaltsperre für die Pumpe realisieren.  ???

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Jogi

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?

Puschel74

Hallo,

du wirst um ein zweites notify auf Zeitsperre nicht herum kommen vermute ich mal.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Jogi

#12
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  >:(

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Jogi