FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Paul am 04 März 2014, 22:25:44

Titel: An die Perl Experten
Beitrag von: Paul am 04 März 2014, 22:25:44
Bedeutet die nachfolgenden Codeschnipsel das selbe ?

{if (Value("Flurlicht" eq "off") && ($hour <6 || $hour > 22))
{if (Value("Flurlicht" eq "off") && $hour <6) || (Value("Flurlicht" eq "off") && $hour > 22))

Also es soll geschaltet werden wenn Flurlicht aus ist und zwischen 23 - 5:59 Uhr

Titel: Antw:An die Perl Experten
Beitrag von: betateilchen am 04 März 2014, 22:55:59
Versuch macht kluch :) Probiers doch einfach aus, dann lernst Du was dabei.
Titel: Antw:An die Perl Experten
Beitrag von: Zephyr am 05 März 2014, 11:00:59
Ausprobieren im Zusammenhang mit Uhrzeitschaltungen ist vielleicht etwas unkomfortabel.

Aus meinem Restwissen über Logik aus dem Informatikunterricht heraus führen die beiden Codeschnipsel zum gleichen Ergebnis.
Titel: Antw:An die Perl Experten
Beitrag von: betateilchen am 05 März 2014, 11:12:34
mein logisches Verständnis führt zum gleichen Ergebnis.

Ausprobieren von Uhrzeitschaltungen funktioniert übrigens problemlos, wenn man die Tests einfach mit aktuellen Uhrzeiten durchführt. Im Moment ist es kurz nach elf, ich würde die Tests also mit "< 10" und ">12" machen um die grundsätzliche Funktionalität zu prüfen.
Titel: Antw:An die Perl Experten
Beitrag von: Paul am 05 März 2014, 20:27:20
Ich war auch der Überzeugung dass die Schnipsel richtig sind, aber warum bekomme ich dann bei dem Code eine Fehlermeldung?

BM_Flur {if (Value("Flurlicht" eq "off") && $hour <9) || (Value("Flurlicht" eq "off") && $hour > 16) {fhem "set Flurlicht dim81%%; set Flurlicht on-old-for-timer 120"}}

Ohne define weil aus Fhemweb kopiert.

Bitte sagt jetzt nicht da fehlt eine Klammer, ich habe mindestens 100 mal gezählt.

Fehlermeldung :


2014.03.05 20:21:02 3: bwFlur return value: syntax error at (eval 62570) line 1, near ") ||"
syntax error at (eval 62570) line 1, near "}}"
Titel: Antw:An die Perl Experten
Beitrag von: justme1968 am 05 März 2014, 20:28:36
weil deine Klammern an der falschen Stelle sind.

die schließende Klammer von value gehört vor das eq.

gruss
  andre
Titel: Antw:An die Perl Experten
Beitrag von: Paul am 05 März 2014, 21:07:14
Danke da fehlten noch mehr Klammern

BM_Flur {if (((Value("Flurlicht") eq "off") && $hour <9) || ((Value("Flurlicht") eq "off") && $hour > 16)) {fhem "set Flurlicht dim81%%; set Flurlicht on-old-for-timer 120"}}
Titel: Antw:An die Perl Experten
Beitrag von: justme1968 am 05 März 2014, 21:24:36
jetzt sind es eindeutig zu viele :)

Titel: Antw:An die Perl Experten
Beitrag von: Paul am 05 März 2014, 21:28:43
Aber jetzt klappt es. Habe mind. 2 Stunden mit den Klammern verbracht und hoffe wenn ich jetzt noch ein elsif einbaue das in 10 Minuten erledigt ist.