25.6.2017 15:05   Gira Homeserver, Smarthome

Wie bereits im Beitrag zu den Philip Hue Lampen erwähnt steht in meiner Wohnung ein Gira Homeserver, welcher zur Visualisierung zuständig ist. Als KNX Schnittstelle (KNX <-> IP) setze ich einen Raspberry PI mit Smarthome.py ein.

Smarthome.py bietet ein SMA Plugin, dass zyklisch Werte von SMA Wechselrichtern via Bluetooth abfragen kann.
Die Einrichtung des Plugins kann hier nachgelesen werden. Nötig hierfür ist natürlich ein Bluetooth Dongle für den Raspberry Pi.

Smarthome.py zum Senden der Werte bewegen

Nach der Einrichtung des SMA Plugins müssen folgende Items zu Smarthome.py hinzugefügt werden:

[Inverter]
	[[Feeding_Power_in_W]]
    		type = num
    		sma = AC_P_TOTAL
  	[[Daily_Yield_in_Wh]]
    		type = num
    		sma = E_DAY
  	[[Total_Yield_in_Wh]]
    		type = num
    		sma = E_TOTAL
  	[[Daily_Yield_in_kWh_KNX]]
    		type = num
		eval = value / 1000
		eval_trigger = Inverter.Daily_Yield_in_Wh
		knx_dpt = 9
		knx_send = 7/1/3
  	[[Total_Yield_in_kWh_KNX]]
    		type = num
		eval = value / 1000
		eval_trigger = Inverter.Total_Yield_in_Wh
		knx_dpt = 9
		knx_send = 7/1/2

 

Über die „sma = …..“ Items werden die aktuellen Werte des Wechselrichters eingelesen. Die Items mit den Endungen „_KNX“ werden bei neuen Werten getriggered und teilen die Wh durch 1000 um daraus kWh zu machen. Diese werden über knx_send als 16 Bit Wert auf die entsprechende KNX Adresse geschrieben.

Nach einem smarthome.py –restart sollten die Items übernommen werden und die Werte auf dem Bus landen.

Homeserver Kommunikationsobjekt anlegen

Das Kommunikationsobjekt im Homeserver für die vom Raspberry übermittelten Werte muss so aussehen (entsprechend für Tag und Gesamt, sofern man Gesamt irgendwo nutzen möchte):

Homeserver Archive erstellen

Um im Quadclient Diagramme anzeigen zu können ist es zunächst nötig Archive anzulegen. Es wird jeweils ein Archiv für Stunde, Tag, Woche, Monat und Jahr benötigt.

Für Tag sieht dies z.B. so aus:

Die Bezeichnung kann frei gewählt werden, die Werte darunter sind jedoch extrem wichtig!

Das Archiv ist ein Ringspeicher. Es hat also eine bestimmte Anzahl an Daten Zeilen (hier 1440), die befüllt werden können. Ist der Speicher voll, wird das älteste Element überschrieben (FIFO).

Der Haken bei Zyklus muss gesetzt sein. Hierüber wird angegeben, dass alle 10 Minuten, alle Werte, die im Feld Spalten stehen, im Archiv gespeichert werden. Die Totzeit kann auf 0 stehen bleiben. Hierüber kann gesteuert werden, wie viele Sekunden nach einer Eintragung keine neue Eintragung erfolgen darf.

Unter Spalten muss nun noch das zuvor angelegte Kommunikationsobjekt für den Tagesertrag hinzugefügt werden.

Für Stunden, Wochen, Monate und das Jahresarchiv müssen folgende Werte verwendet werden:

Name Ringspeicher/Zykluszeit(Min)/Totzeit
Stunde 60/1/0
Tag 144/10/0
Woche 224/45/0
Monat 224/180/0
Jahr 224/2160/0

Die Zahlen sind deshalb so wichtig, da der Quadclient Diagramme nur zeichnet wenn ausreichend Daten in korrekten Intervallen vorliegen. Ist das Diagram also leer, sind wohl falsche Archiv Einstellungen schuld.

Nun sollten also alle 10 Minuten der aktuelle Tageswert in das Tagesarchiv geschrieben werden.

Quadclient Diagramm anlegen

Im Quadclient muss nun lediglich ein Diagramm Plugin in einem der Quadranten eingefügt werden und mit den erstellten Archiven verknüpft werden.

Ich habe hierfür folgende Konfiguration verwendet:

 

EIBADDR von Smarthome.py ändern

Damit der Homeserver das Kommunikationsobjekt überhaupt einliest ist es wichtig, dass der Homeserver und das Smarthome.py System (bzw. eibd) nicht die gleiche Physikalische Adresse besitzen.

In meinem Fall geht der Homeserver automatisch davon aus, dass er die Adresse 0.0.1 besitzt. Meine KNX Geräte haben alle Adressen im Adressbereich 1.X.XXX. Das Smarthome.py System geht per default auch davon aus, dass es 0.0.1 ist.

Dies kann in der eibd Konfiguration verändert werden. In der Datei /etc/init.d/eibd findet sich irgendwo die Anweisung „–eibaddr …..“. Dahinter ist meistens eine Variable (z.B. $EIB_ADDR) zu finden. Diese direkt hier durch 0.0.2 ersetzen (also –eibaddr 0.0.2). Den Wert der Variable zu ändern brachte bei mir keinen Erfolg, diese wird wohl nicht korrekt eingelesen.

Die Datei speichern und via /etc/init.d/eibd stop und anschließendem /etc/init.d/eibd start eibd neu starten. Anschließend kann man mit ps aux | grep eibd überprüfen ob das Argument nun korrekt übergeben wurde.

 

Nach Projekt Übertragung auf den Homeserver sollten sich die Archive mit der Zeit füllen und der Quadclient eine Diagram Kurve anzeigen.

© 2019 Sebastian Dernbach