Skip to content

Nutzung astronomischer Daten

Andi edited this page Aug 10, 2016 · 28 revisions

Übersicht

Grundlegende astronomische Daten werden bereits von den Systemitems bereitgestellt. Für die Nutzung in der Visualisierung und die Nutzung in KNX müssen die Daten ggf. unterschiedlich formatiert werden. In der Visualisierung genügt es, auf das Systemitem direkt zuzugreifen. KNX benötigt je nach DPT ein entsprechend vorformatiertes Item.

Visualisierung (SmartVisu)

Sonnenaufgang {{ basic.formula('Sonnenaufgang', 'env.location.sunrise', 'time') }}

Erläuterung:

env.location.sunrise ist dabei das Systemitem, dass von SmarthomeNG fertig bereitgestellt wird. Mit time wird dann nur noch die Ausgabe formatiert - in diesem Fall wird also die bereitgestellte Angabe 2016-08-11 06:02:56.375006+02:00 umformatiert in 06:02.

Item (SmarthomeNG)

[Zentral]
	[[Astronomie]]
		[[[Sonne]]]
			[[[[Berechnung]]]]
				type = bool
				visu = yes
				crontab = init = 1 | 30 2 * * = 1
				enforce_updates = true

			[[[[Aufgang]]]]
				type = foo
				visu = yes
				eval = sh.sun.rise().astimezone(sh.tzinfo())
				eval_trigger = Zentral.Astronomie.Sonne.Berechnung
				knx_dpt = 10
				knx_send = 0/2/10
				enforce_updates = true

Erläuterung:

In diesem Beispiel verwenden wir zwei Items. Das eigentliche Item für den Sonnenaufgang ist das Zentral.Astronomie.Sonne.Aufgang - Item. Damit der Sonnenaufgang bei diesem Item überhaupt berechnet wird, muss die Berechnung erst mal ausgelöst (getriggert) werden. Diese Triggerung wird über eval_trigger = Zentral.Astronomie.Sonne.Berechnung ausgelöst. Dabei wird durch das Item Zentral.Astronomie.Sonne.Berechnung, welches im oberen Codeausschnitt zu sehen ist, eine Neuberechnung des items Aufgang ausgelöst.

Beim Item für den Aufgang könnten wir nun natürlich auch das Systemitem env.location.sunrise verwenden, dieses Item stellt den Sonnenaufgang im KNX aber nicht immer in der gewünschten Formatierung dar. Daher wird in diesem Beispiel stattdessen die eigentliche (SmarthomeNG-) Funktion sh.sun.rise() aufgerufen und in diesem Fall noch um die Zeitzone korrigiert astimezone(sh.tzinfo()). Somit erhält man die gewünschte Zeitangabe datentypkonform für den DPT 10.001 in der Form Thursday, 06:02:56.

Die Triggerung dieser Berechnung wird im Zentral.Astronomie.Sonne.Berechnung - Item durch das Attribut crontab gesteuert. In diesem Beispiel erfolgt die Berechnung ein Mal täglich um 02.30, sowie beim Systemstart.


Fehlerquellen:

Die Formatierung des Items entspricht nicht dem KNX-Datentyp - dann bekommt man unklare Fehlermeldungen im Logfile, die meist daran liegen, dass z.B. ein Objekt erwartet wurde, aber eine Zeichenkette übergeben wurde, usw. und im KNX meist gar nichts. eval = sh.sun.rise().astimezone(sh.tzinfo()).strftime("%H:%M") ist zum Beispiel nicht geeignet, um den Wert in KNX als Datenpunttyp Time zu übertragen.

Die Triggerung wird nicht ausgelöst, wenn beim Item Berechnung geschrieben crontab = init | 30 2 * * wird (im Internet in einigen Beispielen so geschrieben).