Wert eines dummy in einer if-Abfrage

Begonnen von ujaudio, 04 Mai 2015, 07:29:58

Vorheriges Thema - Nächstes Thema

ujaudio

Ich habe einen dummy pb_ventilation definiert, der 3 Werte annehmen kann: on, off und auto
Dann gibt es ein notify mit folgender DEF:
pb_Raumsensor {
  if (("pb_ventilation" eq "auto") && (ReadingsVal("pb_Raumsensor","humidity",0) > 65))
    {fhem("set pb_ventiswitch1 on"); fhem("set pb_ventiswitch2 on")}
  elsif (("pb_ventilation" eq "auto") && (ReadingsVal("pb_Raumsensor","humidity",0) < 60))
    {fhem("set pb_ventiswitch1 off"); fhem("set pb_ventiswitch2 off")}
}

Die Abfrage ob der dummy pb_ventilation den Wert auto hat ist aber nie erfüllt. Was habe ich denn da wieder falsch verstanden?
Einen lieben Gruß
Jürgen

Hollo

Probier mal aus, wenn Du den Dummy-Wert mit Value ausliest...

pb_Raumsensor {
  if (Value("pb_ventilation") eq "auto" && ReadingsVal("pb_Raumsensor","humidity",0) > 65)
    {fhem("set pb_ventiswitch1 on"); fhem("set pb_ventiswitch2 on")}
  elsif (Value("pb_ventilation") eq "auto" && ReadingsVal("pb_Raumsensor","humidity",0) < 60)
    {fhem("set pb_ventiswitch1 off"); fhem("set pb_ventiswitch2 off")}
}

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Wernieman

Warum gehst Du anschließend über perl-fhem und nicht Direkt?

Ist hier zwar eine Lösung für einen Taster, aber Drucker ist auch in Dummy
Drucker_Taster.* IF ([Drucker] eq "on") (set Drucker off) ELSE (set Drucker on)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Puschel74

ZitatDie Abfrage ob der dummy pb_ventilation den Wert auto hat ist aber nie erfüllt.
Als kleiner Tipp:
"pb_ventilation" eq "auto"
Das wird NIE erfüllt sein da pb_ventilation nicht gleich auto ist.
pb_ventilation ist nunmal einfach nur gleich pb_ventilation und sonst nichts (Stringvergleich).

ZitatWas habe ich denn da wieder falsch verstanden?
Vermutlich das Einsteiger.pdf

Aber Hollo und Wernieman haben dir ja bereits geholfen und mein Tipp soll dir ja nur für deine zukünftigen "Probleme" als "Nachdenkhilfe" dienen.
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.

ujaudio

Danke an alle 3!

Das mit dem Value steht im Einsteiger-pdf auf Seite 39 und das habe ich gelesen und ausprobiert und es hat (scheinbar!) auch nicht funktioniert - deshalb habe ich das wieder verworfen. In Wirklichkeit habe ich einen anderen Fehler gemacht.

Eine Frage hätte ich aber noch:
[<name>] ist das gleiche wie Value("<name")?
Einen lieben Gruß
Jürgen

Puschel74

Zitat von: ujaudio am 04 Mai 2015, 21:24:25
Eine Frage hätte ich aber noch:
[<name>] ist das gleiche wie Value("<name")?
Nein.
[<name>] funktioniert nur bei IF und DOIF (da FHEM-Module von Damian --> genaueres dazu siehe commandref - auch auf deutsch).
Value("<name") funktioniert nur bei if (da if = Perl siehe Perlhandbuch, wobei Value("name") nur in FHEM funktioniert da von Rudi implementiert).

Für den korrekten Syntax ist der User verantwortlich.
Innerhalb eines IF, DOIF kann auch Perlcode verwendet werden.
Innerhalb eines notify, at kann KEIN IF oder DOIF verwendet werden.
Letzteres ist aber nur eine Vermutung da ich IF und DOIF nicht verwende.
Fragen zu IF und DOIF sollten unter Automatisierung in den jeweiligen Beiträgen dazu gesucht werden resp. dort gestellt werden.

FHEM ist case sensitiv und unterscheidet peinlichst genau zwischen if und IF.
Selbiges sollte auch der User machen.
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.

scooty

Zitat von: Puschel74 am 05 Mai 2015, 05:28:08
Innerhalb eines notify, at kann KEIN IF oder DOIF verwendet werden.
Letzteres ist aber nur eine Vermutung da ich IF und DOIF nicht verwende.
Halb falsch vermutet  ;)
Innerhalb eines notify, at und sogar DOIF kann IF verwendet werden, ist ja ein reiner FHEM-Befehl.

Viele Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol