addEvent() um dynamisch Event erstellen zu lassen (Sonnenaufgang-Schaltung)

Hi,

derzeit stehe ich vor der Frage wie ich die Rolladen bei Sonnenaufgang automatisch herauffahren lassen kann.

Meine erste Idee regelmäßig nachts ein Event laufen zu lassen, dass ein einmaliges Event für den Zeitpunkt des Sonnenaufgangs erstellt, war nicht erfolgreich:

$id = 'Create daily sunrise event';
$hg->addEvent(
	array(
		'TYPE' => 1,
		'ID' => $id,
		'ENABLED' => true,
		'EVENTTIME' => 1800,
		'RECUREVERY' => 86400,
		'EVENTMETHOD' => 'addEvent',
		'EVENTMETHODPARAMS' => array (array('TYPE' => 1, 'ID' => 'sunrise event', 'ENABLED' => true, 'EVENTTIME' => $hg->getValue(902, 1, 'SUNRISE') + 1800, 'EVENTMETHOD' => 'setSystemVariable', 'EVENTMETHODPARAMS' => array ('night_flag', false))),
	)
);

Das Event sollte also den Zeitpunkt des Sonnenaufgangs über OpenWeatherMap (ID 902) auslesen und ein entsprechendes einmaliges Event erstellen, das dann wiederum ein Flag setzt.

Hat sich bei diesem Ansatz lediglich ein kleiner Fehler eingeschlichen oder bin ich vollkommen auf dem Holzweg. Eventuell geht es aber auch viel simpler…

Für Hinweise zur Ergreifung des (potentiellen) Fehlers, wäre ich sehr dankbar.

Gruß
Criena

Vielleicht habe ich Dein Problem nicht ganz verstanden, aber meiner Meinung nach machst Du das zu kompliziert.
Ich starte nachts ebenfalls ein Skript, das bei allen Rollladen abhängig von Sonnenaufgang/untergang (und ein paar anderen Parametern) je ein Event für das Herauffahren und Herunterfahren setzt. Ein extra Flag ist hier nicht nötig.
Nebenbei bemerkt werden Sonnenaufgang/-untergang auch bereits von PHP bereitgestellt: http://php.net/manual/de/function.date-sun-info.php

2 Likes

Nimm doch node-blue und den timer aus dem register time.
Klappt prima und ist schnell zusammen geklickt…

2 Likes

Hi @DasKleingedruckte,

den Flag benötige ich, weil ich die Rolladen nicht einfach runterfahren lassen möchte, sondern von weiteren Faktoren abhängig mache.

Du lässt nachts also ein Script laufen und rufst addEvent im Script statt direkt über EVENTMETHOD auf. Das ist in der Tat eine Lösung. Danke!

@trilu: Node-blue wollte ich nach Möglichkeit eigentlich umgehen (als alter Coder…), aber der Timer ist ja wirklich genial. Ich dachte node-blue wäre mehr oder weniger ein Wrapper für die RPC-Funktionen, aber da steckt ja viel mehr dahinter!
Hast du einen Screenshot wie du das zusammengebaut hast? Mir fehlt noch ein wenig das Verständnis wie die Verbindungen zusammengehören.

Danke
Criena

node blue ist wirklich klasse für sowas - bin eigentlich auch mehr am schreiben als klicken…
Garden_Deco ist nur eine variable als enabler für die Zeitschaltung. true heisst, der Timer is aktiv, bei false wirds ignoriert…

2 Likes

Ok, danke das hat mir geholfen.

Wenn ich es richtig verstanden habe, genügt mir im Grunde der folgende Aufbau.

Untitled

“On” habe ich mit sunset und “off” mit sunrise verknüpft. Heute abend mal schauen ob das Flag korrekt gesetzt wird. Das Steuerelement setzt auf OpenWeatherMap auf, auch gut zu wissen.

Nochmals danke an alle!

2 Likes

sieht gut aus - kann aber sein das du ein enable vorne anlegen musst

1 Like

Das EN vorne ist standardmäßig aktiviert. Nur falls ein false dort angelegt wird, wird dieses von dem timer-Knoten gespeichert und ist auch nach dem Löschen des Einganges noch gesetzt bis wieder ein true angelegt wird. Solange aber nie etwas am Eingang verbunden war, ist alles gut.

Könnte man z. B. von 6:00 Uhr bis 22:00Uhr den enable Eingang auf true setzen?

Wenn dann im Timer sunrise und sunset gesetzt ist, dann würden die Rollos bei Sonnenaufgang, nicht aber vor 6:00 Uhr aufgehen und bei Sonnenuntergang, spätestens aber um 22:00 Uhr untergehen.

Wenn man einen Timer hat, der Wochentags (Mo-Fr) von 6:00-22:00 Uhr an ist und am Wochenende (Sa-So) von 7:30-22:00 Uhr, dann könnte man Wochentag und Wochenende unterschiedliche Zeiten vorgeben.

Wie macht man das aber zusätzlich mit Urlaub und Feiertag aus einem Kalender?

Klar kann man das :slight_smile: .
Ich mache das ähnlich mit zwei Timern. Einem für den Sonnenaufgang und einem für den Sonnenuntergang. Bei Sonnenaufgang wird der eine True und 90 Minuten später false. Ausgewertet werden dann mit einem Switch die Flanken. Bei fallender Flanke geht der Rolladen spätestens hoch. Ansonsten eben, wenn während er True liefert ein Bewegungsereignis in der Wohnung ausgelöst wird (jemand ist wach und es ist nicht mehr mitten in der Nacht).

flows.json.txt (4,2 KB)

Die Berücksichtigung eines Kalenders ist leider noch nicht implementiert.
Da sich nun allerdings auch Node-Red-Knoten installieren lassen, dürfte sich da bestimmt etwas finden. node-red-contrib-ical-events :thinking:

Wenn es nicht ganz so genau sein muss, kann man die Zeiten auch berechnen. Geht bestimmt auch zu scripten.
Mache ich auf einem ESP schon jahrelang so …

Calculating sunrise and sunset

Dafür gibts doch den Timer-Node in node-blue?

Bildschirmfoto 2021-01-12 um 11.41.32

Bildschirmfoto 2021-01-12 um 11.41.53

3 Likes