Linux-Projekte für den Raspberry Pi
(in Python)
RWE Storage flex [rein LOKALER Datenzugang]




Schließlich ging alles doch schneller und einfacher als ich dachte.
Die Daten des Akku-Speichers konnte ich also nun lokal bekommen. Jetzt ging es an die Auswertung. Allerdings stellte sich hier doch ein Problem heraus. In den 'HTML GET' Headern, die mein Browser an den WEB-Server des Akku-Speichers sendet, sind verschiedene, ellenlange Zahlen enthalten. Damit wird vermutlich angezeigt, WAS alles zurückgemeldet werden soll.


GET /port_3480/data_request?id=lu_status&DataVersion=620566941&MinimumDelay=1000&Timeout=60& LoadTime=1481620560&rand=0.11419262291629095 HTTP/1.1

Links ein Beispiel.
Je nachdem was man als 'DataVersion' an den Akku-Server sendet, kommen unterschiedlich lange Daten zurück



Inzwischen habe ich 2 Verschiedene Versionen identifiziert, weiß aber noch nicht, WAS sich hinter den Zahlen verbirgt (vielleicht bekomme ich das auch noch mit der Zeit heraus?). Jedenfalls mußten die vom Akku-Seerver gelieferten Daten zunächst analysiert werden.

{ "startup": { "tasks": [ ] }, "devices": [ { "id": 3, "states": [ { "id": 89, "service": "urn:psi-storage-com:serviceId:Battery1", "variable": "WattsCharge", "value": "1719.381" }, { "id": 90, "service": "urn:psi-storage-com:serviceId:Battery1", "variable": "LastValidData", "value": "1481621805" }, { "id": 91, "service": "urn:psi-storage-com:serviceId:Battery1", "variable": "M02", "value": "1719.381" }, { "id": 92, "service": "urn:psi-storage-com:serviceId:Battery1", "

Dies ist nur der Beginn der zurückgelieferten Daten


Es stellte sich heraus, daß alles in Dictionaries und Listen organisiert ist. Damit kommt Python bestens zurecht. Die benötigten Daten stehe alle im Dictionary 'devices' (ist auch der überauss größte Datenposten).

Das Dictionary hat die rechts aufgelisteten Unterteilungen (keys)

ZwaveStatus
TimeStamp
LoadTime
UserData_DataVersion
DataVersion
startup
devices
LocalTime

Jede dieser 'Bereiche' hat diese Dictionary-Unterteilungen

<type 'dict'> ['states', 'status', 'Jobs', 'id', 'tooltip']

Und jeder dieser 'Elemente' hat nochmals ein Dictionary mit den Einträgen:

<type 'dict'> ['variable', 'value', 'id', 'service']

Hier sind nun endlich die tatsächlichen Variablen NAMEN und WERTE zu finden. Beispiel rechts:

==> variable; WattsDischarge
==> value; 240.6461
==> id; 15
==> service; urn:psi-storage-com:serviceId:Battery1


Man sieht also,so ganz trivial war die Dekodierung nicht, auch ist das Ganze ziemlich umfangreich. Wen es interessiert, ___HIER___ ist mal die komplette Liste mit Werten,, die ich inzwischen aus dem Akku-Server 'ziehen' kann.

Dann hieß es wieder einmal, die aus dem Akku-Server gewonnenen Daten mit denen im Browser angezeigten abzugleichen. Das hat doch länger gedauert als erwartet. Jedenfalls habe ich inzwischen die für mich wichtigen Werte identifiziert. Jetzt ging es daran, das Ganze auch auf das LCD-Display zu bekommen. Aber das war dann eigentlich nur noch 'Handarbeit'. Das Programm zur Ansteuerung des Displays, mit den Grafikbefehlen, hatte ich ja schon lange vorher entwickelt. Innerhalb von wenigen Stunden war alles erledigt. Na ja, sagen wir einmal: der erste Entwurf. Dann war wieder Feinarbeit angesagt. Bis mir die Grafik optisch zugesagt hat, ist dann doch noch der Rest des Tag vergangen.


Vom ersten Entwurf …


(SOC habe ich selbst auch erst suchen müssen-:
steht für
State Of Charge (Ladestatus))

(Ist so im Akkuspeicher eingetragen. Ich persönlich halte von Anglizismen nicht viel, und vermeide sie, wo ich kann, aber hier kam mit das Kürzel wegen Platzmangels gerade recht)




... bis zum heutigen Stand

hat sich nicht sooo viel geändert

Ich weiß, hier und da hakt es doch noch. Man kann immer noch was verbessern: Farbdisplay, Anordnung, Hintergrund, Titelzeilen invers hinterlegt, und, und, und.

Mir ist momentan das Wichtigste, daß ich jetzt alle Daten lokal, auf einen Blick sehen kann.

Nachsatz:
Die Bezeichnung
SOC wurde in der Enversion in BAT abgeändert


Da hatte ich doch glatt vergessen, die Seriennummer wieder unkenntlich zu machen! Hab's aber noch rechtzeitig vor dem Hochladen gemerkt.