Lampe schaltet nicht wenn es dunkel ist

Begonnen von iceman, 29 Mai 2018, 09:38:04

Vorheriges Thema - Nächstes Thema

iceman

Hallo zusammen,

ich schalte meine Gartenleuchten mit FHEM. Die gehen nach Sonnenuntergang an und um 0:00 Uhr wieder aus. Jetzt wollte ich die Lampen um 3:00 Uhr wieder anschalten, wenn es noch dunkel ist und wenn sie an sind wieder ausschalten, wenn es wieder hell ist.

Hier mein Code dazu:

define garten_leuchten_1_an at *{sunset("CIVIL",0,"17:00","23:30")} { fhem("set GARTEN_LAMPE on ;; set TELEGRAM_BOT message Gartenleuchten an")}

define garten_leuchten_2_aus at *00:00 { fhem("set GARTEN_LAMPE off ;; set TELEGRAM_BOT message Gartenleuchten aus")}

define garten_leuchten_3_an at *03:00 { if(!isday())  { fhem("set GARTEN_LAMPE on ;; set TELEGRAM_BOT message Gartenleuchten an")} else { set TELEGRAM_BOT message Gartenleuchten bleiben aus")}}

define garten_leuchten_4_aus at *{sunrise("CIVIL",0,"03:30","09:00")} {if({fhem("get GARTEN_LAMPE param state")} ne "off") { fhem("set GARTEN_LAMPE off ;; set TELEGRAM_BOT message Gartenleuchten aus")} else { set TELEGRAM_BOT message Gartenleuchten bleiben aus")}}


Das Anschalten, sowie das Ausschalten um 0:00 Uhr funktioniert. die beiden letzten Defines werden allerdings nicht ausgeführt. Da ich weder eine Telegramm Message bekomme, noch die Lampen an/aus gehen.

Was mach ich falsch?

Danke schonmal für draufgucken!  ;)

frank

zu3/4) jeder fhem befehl muss in perl mit der "fhem()" funktion aufgerufen werden. also auch im else block.

zu4) in der if bedingung die geschweiften klammern entfernen. du bist bereits im perl modus.

ausserdem kan man in fhem.log fehler erkennen. also öfter mal reinschauen, zb auch über den eventmonitor mit file.log option.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

iceman

Vielen Dank Frank.

ich werde das heute abend mal so einbauen.

betateilchen

Zitat von: iceman am 29 Mai 2018, 09:38:04
define garten_leuchten_4_aus at *{sunrise("CIVIL",0,"03:30","09:00")}

Wohnst Du am Nordpol? Ich frage nur, weil es wenige Orte auf der Erde gibt, wo man eine Einschränkung des Sonnenaufgangs auf den Zeitraum zwischen 03:30 und 09:00 Uhr sinnvoll einsetzen kann  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

iceman

#4
ZitatWohnst Du am Nordpol?

;D Man weiß ja nie was so passiert. Momentan wird als Zeitpunkt wenn es hell wird 4:20 Uhr ausgespuckt und wir haben noch keinen Sommer... ;)

Ha, laut sonnenverlauf.de die der früheste Zeitpunt 3:57 Uhr und der späteste 7:50 Uhr. Also doch garnicht mal soooo schlecht gewesen.

iceman

Moin zusammen,

ich hab's bisher noch nicht zum Laufen bekommen. Momentan vermute ich ja, dass isday() nicht so funktioniert wie es beschrieben ist. Könnt Ihr mir nochmal auf die Sprünge helfen? momentan sieht die Zeile wie folgt aus:

define garten_leuchten_3_an at *03:00 { if(!isday()) fhem("set Gartenleuchten on")}

Sie soll um 3:00 Uhr das Licht anschalten, wenn es nicht Tag ist.

Im Log kann ich keinen Fehler finden und auch in Everything steht drin, dass um 3:00 Uhr die Lampe angeschaltet wird. Was Sie aber nicht wird...

Oder hat jemand einen Tipp wie ich das am besten Teste?

Otto123

#6
Moin,

wie Frank schon sagt: im Log nach Fehlern schauen und versuchen diese Meldungen zu verstehen. isday funktioniert schon wie beschrieben, bloß Dein Code funktioniert nicht.

Allgemeine Form Perl if
{if (Bedingung) {Befehl}}
Allgemein Form FHEM IF
IF (Bedingung) (Befehl)

{ if(!isday()) {fhem("set Gartenleuchten on")}}oder so rum wenn Du Klammern sparen willst{ fhem("set Gartenleuchten on") if(!isday())}

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

falsch:

{ if(!isday()) fhem("set Gartenleuchten on")}

richtig - Variante 1:

{ if(!isday()) {fhem("set Gartenleuchten on")} }

richtig - Variante 2, mit viel weniger Klammern:

{ fhem("set Gartenleuchten on") unless isday() }

Und wenn Du in sunrise() mit CIVIL arbeitest, solltest Du das auch bei isday() tun, sonst schlägst Du als nächstes hier auf, weil da unterschiedliche Zeiten auftauchen.

(Nachts um 3 zu prüfen, ob es schon Tag ist, halte ich nach wie vor für unsinnig.)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

iceman

#8
Danke, ich dachte ich hätte zu mindest Variante 1 schon mal ausprobiert. Werde das aber noch mal checken.

Im Log steht nichts drin. Das hatte ich vergessen heute morgen zu schreiben.

Das mit dem "CIVIL" ist mir schon klar. Deswegen hätte ich nicht genervt... ;) ;D

Otto123

Hi,

wenn ich dein define nehme und es bei mir einwerfe kommt in der FHEM Oberfläche:syntax error at (eval 260988) line 1, near ") fhem"und im Log steht
2018.05.31 13:19:41 1: PERL WARNING: Bareword found where operator expected at (eval 260988) line 1, near ") fhem"
2018.05.31 13:19:41 3: eval: {return undef; { if(!isday()) fhem("set Aktor01 on")}}
2018.05.31 13:19:41 1: PERL WARNING: (Missing operator before fhem?)
2018.05.31 13:19:41 3: eval: {return undef; { if(!isday()) fhem("set Aktor01 on")}}
2018.05.31 13:19:41 1: ERROR evaluating {return undef; { if(!isday()) fhem("set Aktor01 on")}}: syntax error at (eval 260988) line 1, near ") fhem"

2018.05.31 13:19:41 1: define garten_leuchten_3_an at *03:00 { if(!isday()) fhem("set Aktor01 on")}: syntax error at (eval 260988) line 1, near ") fhem"

Dann wird Dein FHEM wohl völlig anders funktionieren als meins.  :o

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

iceman

Wow, das verwundert mich jetzt echt. Denn ich bekomme bisher wirklich keine Errors.

Könnte ich es sein, dass ich den Loglevel (wenn es sowas gibt) mal verstellt hab? Mein Fhem läuft seit 2016 (mit entsprechenden Updates natürlich) durch...

Otto123

Moin,

wenn Du attr global verbose 0 eingestellt hast bekommst Du keine Meldungen mehr im Log.
Aber die Meldung in der Weboberfläche, wenn der define Befehl über die Kommandozeile von FHEM eingegeben wird, bleibt.

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: Otto123 am 01 Juni 2018, 09:21:46
... wenn der define Befehl über die Kommandozeile von FHEM eingegeben wird, bleibt.

sicher das genau dies getan wurde?  :o
viele Wege in FHEM es gibt!