Hauptmenü

sunset() in if-Abfrage

Begonnen von SebbelG, 20 Februar 2019, 14:28:38

Vorheriges Thema - Nächstes Thema

SebbelG

Hallo zusammen!

Ich möchte bei Ankunft zu Hause nach Sonnenuntergang Lichter einschalten lassen. Dazu wird per HomeKit ein Dummy-Device eingeschaltet, darüber ein Notify getriggert, welches eine Sub-Routine in der 99_myUtils.pm auslöst (weil verschiedene Personen ankommen können, möchte den Code zentral haben und nicht für jeden ein extra Notify mit dem kompletten Code).

Kann ich in der Sub-Routine in einer if-Abfrage die Zeit zwischen Sonnenuntergang und Sonnenaufgang herausbekommen? Bisher schaltet das Licht immer. Mache ich hier einen Fehler oder habe ich einen Denkfehler?

Dies ist der wichtige Teil mit einer Test-Nachricht per Telegram, das eigentliche sub ist umfangreicher:

sub Anwesenheit() {
if ([{sunset("REAL")}-{sunrise("REAL")}]) {
fhem("set teleBot message Lichter an.");
}
}


Vielen Dank.

pcbastler

Ich hab das mit

IF (!isday("HORIZON=2.0")) ...


gelöst.

SebbelG

So geht es, vielen Dank!

Aber ich würde auch gerne verstehen, warum die andere Variante nicht geht.  :-\

Otto123

Hi SebbelG,

dieser Code: [{sunset("REAL")}-{sunrise("REAL")}] ist irgendwo aus einem DOIF, das geht innerhalb Perl nicht so. Du solltest Fehlermeldungen haben!

Aber schau Dir auch ruhig an was dein Konstrukt ergibt, wirf dazu einfach die Bestandteile in die FHEM Kommandozeile, die kann nämlich Perl
{{sunset("REAL")}-{sunrise("REAL")}}
Damit Du verstehst, was Du mit if () abfragen wolltest.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: SebbelG am 20 Februar 2019, 15:14:30
Aber ich würde auch gerne verstehen, warum die andere Variante nicht geht.  :-\

Weil sunrise() den Sonnenaufgang von morgen liefert, wenn heute schon Sonnenaufgang war.

Doku lesen kann manchmal helfen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

SebbelG

Das stimmt, soweit war ich jetzt auch, mit sunset_abs() und sunrise_abs() sollte es ja gehen.
Ich komme leider mit dem Perl im if nicht ganz zurecht, ich bekomme den Vergleich der Zeiten nicht hin.

CoolTux

Es gibt die FHEM interne Funlktion IsDay. Einfach mal in der Kommandozeile in FHEMWEB eingeben

IsDay()


Dann solltest Du 0 oder gar nichts zurück bekommen wenn es Nacht ist.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Zitat von: SebbelG am 20 Februar 2019, 17:20:05
... mit dem Perl im if nicht ganz zurecht ...
if ist schon Perl  ;D und deine sub sowieso ...

Zeiten vergleichen ist nicht so die einfachste Sache - egal in welcher Programmiersprache. Im Wiki habe ich z.B. diesen Artikel für Dich gefunden.
https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit

Ansonsten nimm vielleicht auch mal ein Perlbuch zur Hand http://perldoc.perl.org/functions/time.html

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

nils_

Zitat von: CoolTux am 20 Februar 2019, 17:22:05
Es gibt die FHEM interne Funlktion IsDay. Einfach mal in der Kommandozeile in FHEMWEB eingeben

IsDay()


Dann solltest Du 0 oder gar nichts zurück bekommen wenn es Nacht ist.

isday()
also klein geschrieben, oder?
https://commandref.fhem.de/#SUNRISE_EL
viele Wege in FHEM es gibt!

CoolTux

Ja Sorry. Mein Fehler. Ich war durch mein eigenes IsDay abgelenkt.
Richtig muss es heißen

isday();



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net