FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ujaudio am 04 Mai 2015, 07:29:58

Titel: Wert eines dummy in einer if-Abfrage
Beitrag von: ujaudio am 04 Mai 2015, 07:29:58
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?
Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: Hollo am 04 Mai 2015, 08:44:28
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")}
}

Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: Wernieman am 04 Mai 2015, 15:15:40
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)
Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: Puschel74 am 04 Mai 2015, 20:05:10
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.
Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: ujaudio am 04 Mai 2015, 21:24:25
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")?
Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: Puschel74 am 05 Mai 2015, 05:28:08
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.
Titel: Antw:Wert eines dummy in einer if-Abfrage
Beitrag von: scooty am 05 Mai 2015, 08:01:20
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