Hauptmenü

wieder das leidige "if"

Begonnen von fh555, 08 Oktober 2014, 21:07:01

Vorheriges Thema - Nächstes Thema

fh555

Da finde ich für mich aber die Schreibweise


define schalter1machwas notify schalter1 { if ("ReadingsVal("schalter1","state", "not found") eq "0") { fhem "set B_Dose_Fenster_LED on" } }


wesentlich logischer. Erst "die Bedingung" und dann "mach was".

Danke noch einmal für deine Hilfe  ;D

Gruß Jens

Dietmar63

Hat sich der Erfinder von Perl auch gedacht.

In der Umgangsprache heißt es doch auch:
Zitatgeh nach Hause, wenn es 8 Uhr ist.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

fh555

#17
oder

Zitatwenn es 8:00 Uhr ist, geh nach Hause, denn es ist Feierabend, ansonsten musst du noch arbeiten

if .. then .. else  ;)

marvin78

Und wenn es kein "ansonsten" gibt, ist die Kurzschreibweise mit dem if hinten dran, einfacher und kürzer. Das ganze funktioniert ja auch mit "unless" etc.

ntruchsess

@fh555: besser so:

define schalter1machwas notify schalter1.(0|1) { fhem "set B_Dose_Fenster_LED ".($EVENT==0 ? "off" : "on") }


das erste Argument des notifys ist ein regulärer Ausdruck. Mit dem kannst Du den gewünschten Event genau passend rausfiltern, dann reagiert das notify nicht sinnlos auf die Transmission-state Änderungen und braucht den neuen Wert von 'state' auch nicht per ReadingsVal auslesen (weil er ja eh schon mit dem Event mitkommt).

Gruß,

Norbert
while (!asleep()) {sheep++};