Warum greif mein DoElseIf nicht?

Begonnen von Grml, 05 März 2017, 15:48:09

Vorheriges Thema - Nächstes Thema

Grml

Hallo zusammen,

ich stehe gerade wie der Ochs' vorm Berg und finde meinen Fehler nicht.
Das ist mein erstes DoIf, sicher habe ich noch nicht alles verstanden wie es eigentlich funktionieren sollte, auch im Zusammenhang mit Sunset/Sunrise.

Ich habe verschiedene Bewegungsmelder im Haus, die meine HUELights schalten. Abhängig von der Uhrzeit soll eine entsprechende Helligkeit in Prozent eingestellt werden.
Zwischen Sonnenuntergang (minus einer halben Stunde) und 23:59 soll die Helligkeit 50% betragen, zwischen 00:00 und Sonnenaufgang (plus einer Stunde) 10%.

So sieht mein DoIf dafür aus:
(
[{sunset(-1800,"16:00","")}-23:59] and
[2.Flur.Schlafzimmer.Motion.1:state] eq "motion" and
[2.Flur.Schlafzimmer.Motion.1:brightness] < 40
)
(
set 2.Flur.HUELight.Schlafzimmer pct 50%,
set 2.Flur.HUELight.Schlafzimmer on-for-timer 30
)
DOELSEIF
(
[00:00-{sunrise(3600,"","08:00")}] and
[2.Flur.Schlafzimmer.Motion.1:state] eq "motion" and
[2.Flur.Schlafzimmer.Motion.1:brightness] < 40
)
(
set 2.Flur.HUELight.Schlafzimmer pct 10%,
set 2.Flur.HUELight.Schlafzimmer on-for-timer 30
)
DOELSE ()


Latitude und Longitude habe ich gesetzt, die Werte werden auch sauber gespeichert.
Mein Problem ist nun: Wenn ich um 01.30 Uhr durchs Haus gehe sind meine Lichter immer noch bei 50%, nicht bei 10% wie im DoElseIf angegeben.

Wo liegt denn mein (Denk-)Fehler?

KernSani

Was ist denn der Wert von [2.Flur.Schlafzimmer.Motion.1:brightness]?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Grml

Zwischen 30 und 35. Also auf jeden Fall unter 40. Da ich ja bei beiden Abfragen auf kleiner 40 prüfe sollte das nicht das Problem sein. Entweder liegt mein Fehler irgendwo bei der Uhrzeit oder die zweite Schleife (also das DoElseIf) wird nicht angesprochen (weil eben Schleife 1 noch als gültig angesehen wird).

KernSani

ups, ja... :-)

Gib mal {sunset(-1800,"16:00","")} in die Kommandozeile ein... und dann probiere es mal mit {sunset(-1800,"16:00")}

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Grml

#4
Zitat von: KernSani am 05 März 2017, 16:38:05
Gib mal {sunset(-1800,"16:00","")} in die Kommandozeile ein...
Ergibt 24:00:00

Zitat
und dann probiere es mal mit {sunset(-1800,"16:00")}
Ergibt 18:40:07.

Du willst mir damit was sagen :) Vermutlich, dass meine erste Version mit den zweiten ,"" falsch ist. Aber so ganz bin ich von dem Schlauch auf dem ich stehe glaub noch nicht runter...
Darf man bei Sunset/Sunrise nicht benötigte Argumente *komplett* weglassen?
Und wie wäre das dann bei Sunrise? Wenn ich da die "Startzeit" weglasse, also auch ohne die Anführungszeichen, würde das zweite Argument ja zum ersten... (ich hoffe der Satz ist verständlich...)

KernSani

ZitatDarf man bei Sunset/Sunrise nicht benötigte Argumente *komplett* weglassen?
Du kannst nur Argumente von hinten weglassen.
Zitatd wie wäre das dann bei Sunrise? Wenn ich da die "Startzeit" weglasse, also auch ohne die Anführungszeichen, würde das zweite Argument ja zum ersten...
Genau, die Startzeit weglassen geht natürlich nicht. "" wird als 0 interpretiert (d.h. bei Sunrise ist deine Startzeit "00:00", was wohl nie eintreffen wird ;-))

Ist es damit gelöst?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Grml

Zitat von: KernSani am 05 März 2017, 18:05:57
Du kannst nur Argumente von hinten weglassen. Genau, die Startzeit weglassen geht natürlich nicht. "" wird als 0 interpretiert (d.h. bei Sunrise ist deine Startzeit "00:00", was wohl nie eintreffen wird ;-))
Ah, danke! Ich begebe mich dann mal von meinem Schlauch :-)

Zitat
Ist es damit gelöst?
Theoretisch ja. Praktisch teste ich das später ;-)

Grml

Zitat von: KernSani am 05 März 2017, 18:05:57
Ist es damit gelöst?
Kurze Rückmeldung: Ja, ist gelöst :) Vielen Dank!