Start-/Default-Werte von Variablen/Dummies/Schaltern

Begonnen von stobor, 09 November 2013, 20:41:57

Vorheriges Thema - Nächstes Thema

stobor

Hallo,

ich habe in der fhem.cfg u.a. Folgendes konfiguriert:

define isNACHT dummy
attr isNACHT webCmd on:off
define IST_NACHT at *{sunset("HORIZON=-0.833")} set isNACHT on
define IST_TAG at *{sunrise("HORIZON=-0.833")} set isNACHT off


und werte isNACHT so aus:

define PIR_Carport notify Bewegungsmelder:on {\
if (Value("PIR_Automatik") eq "on" && Value("isNACHT") eq "on") {\
  fhem "set Licht on-for-timer 192";;\
...


Nach einem FHEM- oder FritzBox-Neustart schaltet das Licht allerdigs auch tagsüber. Erst wenn tatsächlich das erste mal die Sunrise oder Sunset Schwelle erreicht wird, funktioniert alles so, wie es soll.

Welchen Wert hat denn in meinem Fall isNACHT direkt nach einem Neustart von FHEM oder der FritzBox?

Ich initialisiere bereits Werte beim Systemstart:

define FHEM_init_INITIALIZED notify global:INITIALIZED set Schreibtischlampe,PIR_Automatik,vBatWarningNOTSent on
define FHEM_init_REREADCFG notify global:REREADCFG set Schreibtischlampe,PIR_Automatik,vBatWarningNOTSent on


Wie könnte ich denn hier auch isNACHT mit initialisieren. Insb. da der Wert sich ja dynamisch ergibt?
Wie könnte ich den Wert sonst zumindest auf off setzen? Ich habe keine Ahnung, wie ich beim Initialisieren komplexere Strukturen anlegen kann.

Danke für Hilfe.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 27642
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Zrrronggg!

#1
Ich wollte schon hinschreiben:

define Startsequenz notify global:INITIALIZED.* {\
if (!isday()) {\
fhem("set ...

weil ich das verwende, um beim Neustart Dinge zu initialisieren in Abhängigkeit dabon, ob es Tag oder Nacht ist.

Und da fällt mir auf: "isday" kennst du oder?

Die Abweichung von
{sunset("HORIZON=-0.833")}
zu
!isday

dürfte nicht besonders gross sein.

Wenn du
define IST_NACHT at *{sunset("HORIZON=-0.833")} set isNACHT on
verwendest, weil die Umschaltuhrzeiten von isday nicht passen, kann man aber !isday vielleicht doch benutzen, um beim Neustart "isNACHT" näherungsweise richtig zu befüllen. Die Zeitliche Abweichung ist ja maximal HORIZON=-0.833, das dürften ja nur einige Minuten sein.

Beachte das isday auch Parameter kennt.
isday()
Und obwohl ich das noch nie versucht habe, würde ich an deiner Stelle mal
isday("HORIZON=-0.833")
versuchen, das könnte dir ja einiges an Code sparen.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL