HOMEMODE: cmd bei Twilight Änderung wird nicht jedes Mal ausgeführt

Begonnen von trinitywhm, 18 Mai 2018, 22:10:11

Vorheriges Thema - Nächstes Thema

trinitywhm

Hi Dan,
ich mal wieder. Wollte meine Lichtsteuerung am Abend und Morgen von twilight-sunrise/sunset auf cmdTwilight abändern, weil ich auf den twilight-Wert direkt gehen wollte. Im Wiki steht:
ZitatHomeCMDtwilight
Befehle die bei Änderung der Dämmerung ausgeführt werden sollen
Auslöser: Änderung Dämmerung

Jetzt habe ich (auch um für mich erstmal den richtigen Wert rauszufinden) zunächst eine Textausgabe eingebaut, die immer ausgeführt werden soll, und danach eine IF-Abfrage für größer/kleiner einem Helligkeitswert:
{
fhem ("msg text DEBUG twilght event %TWILIGHT% %MODE% %PRESENT%");
if (%TWILIGHT% < 60 && "%MODE%" ne "asleep" && "%PRESENT%" eq 1){
#Schrankwand nur anmachen wenn jemand zu Hause ist
fhem ("set WZ_Lichtszenen scene Fernsehen");

#Abendroutine der Kinder holen
my $ar = ReadingsVal("doif_AbendroutineKIZ","abendroutineKIZ","");

#Lichtszene entsprechend der Kinder-Schlafstätten setzen
fhem ("set LS_NachtlichtSzenen scene $ar");
fhem ("setreading SZ_Lichtszenen state Nachtlicht");
}
elsif (%TWILIGHT% > 60){
fhem("set TYPE=LightScene scene AllesAus");
}
}


So, mit diesen Infos und Einstellungen hätte ich erwartet dass jedes Mal wenn sich der Wert von Twilight ändert, auch dieser CMD ausgeführt wird. Aber das wird er leider nicht. Zur Dämmerung heute abend wurde z.B. nur viermal eine Nachricht versendet. Also für mein Verständnis nur viermal dieser CMD ausgeführt. Und rund um den auszuführenden Wert gab es eben um 21:00 Uhr eine Nachricht mit 72,5 und dann erst wieder um 21:45 Uhr mit 39,6. Genau in diesem Zeitabschnitt hatte ich halt erwartet dass die Lampen bei mir angehen.

Hab ich die Funktion falsch verstanden? Muss ich das anders angehen?
UPDATE: Und ja, ich habe das wohl falsch verstanden. Habe eben versucht diese vier Zeiten nachzuvollziehen und der CMD wird nur ausgeführt wenn es einen neuen Dämmerungszustand gibt. Dann verstehe ich aber nicht ganz wie ich in Abhängigkeit des twilight-Wertes schalten kann. Denn der Dämmerungszustand ss ist mir noch zu hell und ss-civil ist mir schon fast zu dunkel. Dazwischen liegt aber auch ne dreiviertel Stunde. Würde gerne dazwischen das Licht einschalten.

Hat hierzu jemand eine Idee?

DeeSPe

HomeCMDtwilight reagiert in der aktuellen Version von HOMEMODE tatsächlich nur auf das Reading "aktEvent" vom Twilight-Device.
Gegenfrage: Was muss man denn nur abhängig vom "twilight"-Reading steuern?
Meist kommen doch mehrere Bedingungen zusammen und Du kannst die %TWILIGHT%-Variable auch in anderen HomeCMDs einsetzen.
z.B. (HomeCMDmode-awoken):
{
  if (%TWILIGHT% < 50)
  {
    fhem "set .....";
  }
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

trinitywhm

In dem Fall wollte ich tatsächlich auf Basis des Twilight-Wertes die Lichter anschalten. Da bin ich mittlerweile aber doch wieder auf eines der sunset-Werte gegangen. Denn eine andere Bedingung in der ich das sinnvoll nutzen kann, habe ich erstmal nicht. Aber wer weiß, vielleicht kommt mir da noch eine Idee.

Nur zum Verständniss. Ich habe bisher Probleme beim elsif-Zweig. Die Lichter werden nicht ausgeschaltet. Liegt es an dieser if-Bedingung oder sollte ich schauen ob mit meinen HUE-Leuchten alles stimmt und sie erreichbar sind usw.
{
if ("%TWILIGHTEVENT%" eq "ss_indoor" && "%MODE%" ne "asleep" && "%PRESENT%" eq 1){
#Schrankwand nur anmachen wenn jemand zu Hause ist
fhem ("set WZ_Lichtszenen scene Fernsehen");

#Abendroutine der Kinder holen
my $ar = ReadingsVal("doif_AbendroutineKIZ","abendroutineKIZ","");

        #Lichtszene entsprechend der Kinder-Schlafstätten setzen
fhem ("set LS_NachtlichtSzenen scene $ar");
fhem ("setreading SZ_Lichtszenen state Nachtlicht");
        }
elsif ("%TWILIGHTEVENT%" eq "sr_indoor"){
fhem("set TYPE=LightScene scene AllesAus");
        }
}