Sunrise und Sunset Variabel gestalten

Begonnen von butaluk, 27 September 2016, 22:34:59

Vorheriges Thema - Nächstes Thema

Ellert

Zitat von: Damian am 30 September 2016, 19:07:59
Nein.

In der vorherigen DOIF-Version vom April werden Readings innerhalb von Zeitfunktionen in geschweiften Klammern nicht ersetzt.


Es gibt dann eine Fehlermeldung, weil das Reading nicht aufgelöst wird.
Gut, die Unterscheidung mit den geschweiften Klammern, war mir nicht bewusst, ich habe es nie verwendet.

Ich verwende die eckigen Klammern bisher nur in normalen Funktionen, das hat schon vorher geklappt.

OffTopic:
Ich verwende zur Rolladensteuerung eine Funktion isInRange(<kleiner Wert>,[Twilight:azimuth],<großer Wert>), um mir die Wiederholug des Readings zu sparen [Twilight:azimuth] > kleiner _Wert and [Twilight:azimuth] < großer_Wert

Wäre es sinnvoll im DOIF einen Kettenvergleich einzubauen?  :) ['kl.Wert < [Vergleichswert] < gr.Wert']

Damian

Zitat von: Ellert am 30 September 2016, 19:55:23
Gut, die Unterscheidung mit den geschweiften Klammern, war mir nicht bewusst, ich habe es nie verwendet.

Ich verwende die eckigen Klammern bisher nur in normalen Funktionen, das hat schon vorher geklappt.

OffTopic:
Ich verwende zur Rolladensteuerung eine Funktion isInRange(<kleiner Wert>,[Twilight:azimuth],<großer Wert>), um mir die Wiederholug des Readings zu sparen [Twilight:azimuth] > kleiner _Wert and [Twilight:azimuth] < großer_Wert

Wäre es sinnvoll im DOIF einen Kettenvergleich einzubauen?  :) ['kl.Wert < [Vergleichswert] < gr.Wert']

Ist leider nicht ohne Weiteres möglich. Die Mächtigkeit des Moduls beruht in erster Linie auf der Mächtigkeit von Perl. Es ist im Grunde ein Präprozessor für den Perl-Interpreter und der lässt solche Vergleiche nicht zu.


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#17
Zitat von: Damian am 30 September 2016, 20:05:29
Ist leider nicht ohne Weiteres möglich. Die Mächtigkeit des Moduls beruht in erster Linie auf der Mächtigkeit von Perl. Es ist im Grunde ein Präprozessor für den Perl-Interpreter und der lässt solche Vergleiche nicht zu.
Das hatte ich fast erwartet. Das Perl keinen Kettenvergleich kennt ist mir beim Nachforschen auch aufgefallen. In Perl würde für ganzzahlige Werte Smartmatch funktionieren {250 ~~ [200..300]} im DOIF geht dies (int([Twilight:azimuth]) ~~ [200..300]) wegen der eckigen Klammern leider nicht.

Das würde allerdings funktionieren (int([Twilight:azimuth]) =~ join("|",(200..300)))

Damian

Zitat von: Ellert am 30 September 2016, 21:02:08
Das hatte ich fast erwartet. Das Perl keinen Kettenvergleich kennt ist mir beim Nachforschen auch aufgefallen. In Perl würde für ganzzahlige Werte Smartmatch funktionieren {250 ~~ [200..300]} im DOIF geht dies (int([Twilight:azimuth]) ~~ [200..300]) wegen der eckigen Klammern leider nicht.

Das würde allerdings funktionieren (int([Twilight:azimuth]) =~ join("|",(200..300)))

Solche Vergleiche sind aber nicht zu empfehlen!

if ($i>=0 and $i<=1000)

ist ca. tausend Mal schneller in der Abarbeitung als

if ($i ~~ [0..1000])

;)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

butaluk

Hi,
habe DOIF updatet, die Regelung funktioniert leider immer noch nicht.
Die Vorschläge habe ich auch ausprobiert. Die Rollos fahren nicht runter und es gibt keine LogFile einträge des bezüglich.

Ellert

Schau mal hier, vielleicht hilft das weiter: https://forum.fhem.de/index.php/topic,58237.0.html und lies bitte Antwort 7.