Hauptmenü

Schalten wenn und

Begonnen von hyper2910, 02 Februar 2016, 22:33:14

Vorheriges Thema - Nächstes Thema

hyper2910

Hallo,

Habe ein paar Probleme mit einer Zeitschaltuhr.

Die einfache Schaltung geht, aber erweitert um eine Anwesenheit nicht, hat jemand eine Idee?


Funktioniert

{ fhem("set Alarmanlagen_Dummy closed") if (!$we) }


Keine Funktion

{ fhem("set Alarmanlagen_Dummy closed") if (!$we) && ([DirkAnwesend] eq:"present") }
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

franky08

eq:
Richtig eq und Leerzeichen

und die Klammersetzung stimmt nicht
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Bennemannc

Hallo,

das es nachgestelltes if gibt, habe ich mittlerweile gelernt - mögen tu ich es immer noch nicht. Den : hinter eq verstehe ich nicht - zudem würde ich die beiden Bedingungen nach dem if klammern um auszuschließen, das perl da etwas anderes draus macht.
Warum alle Welt runter auf Perl geht um Vergleiche zu machen - es gibt doch genug Möglichkeiten das mit fhem zu machen. Entweder IF oder DOIF - wobei ich in diesem Fall mir mal DOIF ansehen würde.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

betateilchen

Zitat von: Bennemannc am 02 Februar 2016, 22:40:38
Warum alle Welt runter auf Perl geht um Vergleiche zu machen

Weil perl einfach logischer zu verstehen ist. Aber wenn schon perl, dann bitte konsequent.

{ fhem("set Alarmanlagen_Dummy closed") if ((!$we) && Value("DirkAnwesend") eq "present") }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

turo

Genau! Perl rules!

Und wer das nachgestellte if nicht mag, zieht es eben nach vorne:
{ !$we && Value("DirkAnwesend") eq "present" && fhem("set Alarmanlagen_Dummy closed") }
3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

marvin78

Zitat{ !$we && Value("DirkAnwesend") eq "present" && fhem("set Alarmanlagen_Dummy closed") }

@turo: Ist das dein Ernst?

turo

Äh? Ja? Das tut doch! (Oder hätte ich doch erst meinen Kaffee zu Ende trinken sollen?) Nutzt die short circuit evaluation des "&&" Operators.
3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

marvin78

Ich meinte eher, das hier im Anfängerforum zu posten. Kann man machen, ein if kann man aber auch anders voran stellen. Ich möchte mal wissen, welchen Anfänger das nicht verwirrt.

turo

#8
OK, da könntest Du Recht haben, dass das für manchen etwas harter Tobak ist. Aber "Anfängerforum" heisst doch nicht unbedingt "Programmieranfänger-Forum"? Und eine alternative Lösung mag ja für manchen der Anreiz sein, sich mal etwas tiefer mit Perl zu beschäftigen.

Es fehlte vielleicht der Disclaimer: "Das ist eine Alternative! Die müsst Ihr nicht verstehen! Sucht Euch die Lösung aus, die Ihr mögt und versteht und auch handhaben könnt!"

(Ich wollte eigentlich primär auf das "ich mag kein nachgestelltes if" eingehen.)
3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

hyper2910

Hallo,

Danke nochmals für die Hilfe,  dies hat es auch getan, bis vor ca. Einer Woche.

Irgendwie schaltet nichts mehr. Haben sich irgendwelche Änderungen eingeschlichen welche ich im Urlaub übersehen habe?

*22:00:00 { fhem("set Alarmanlagen_Dummy closed") if ((!$we) && Value("DirkAnwesend") eq "present") }
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,