Skip to content

Nutzung astronomischer Daten

msinn edited this page Jan 15, 2021 · 28 revisions

Diese Wiki Seite ist veraltet

Diese Seite wird nicht mehr weiter gepflegt

Die Dokumentation unter www.smarthomeNG.de/user enthält die aktuellen Informationen.

 

Ü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") oder sh.env.location.sunrise() ist zum Beispiel nicht geeignet, um den Wert in KNX als Datenpunkttyp Time zu übertragen.

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


Offene Punkte:

Alle auf diesem Weg berechneten Werte sind nach meiner bisherigen Erfahrung noch nicht stabil und manchmal falsch, ev. verschluckt sich SmarthomeNG manchmal bei der Berechnung.

Die Berechnung der Items Tag und Nacht erfolgt SmarthomeNG-intern über sh.sun.rise(-6).day, für KNX wäre es sinnvoll, die Systemitems Tag und Nacht parametergesteuert zu erzeugen (also die -6 über das Item festlegen zu können), weil z.B. für Flurlichtsteuerung o.ä. vielleicht schon 1h vor Sonnenuntergang die "Nacht" beginnen soll.

Ob in den Items visu = yes überhaupt notwendig ist, habe ich noch nicht verifiziert.