|
|
|
|
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.
|