Daten aus Webportal

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DatMichi
User
Beiträge: 25
Registriert: Montag 25. Mai 2015, 20:35

Hallo,

ich habe einen SENEC Batteriespeicher für unsere Photovoltaikanlage. Dieser hat einen Webserver den ich mittels IP aufrufen kann. Jetzt möchte ich die Daten aber mittels Python Script auslesen.
Dazu habe ich auch etwas gefunden.

Unter: https://gist.github.com/smashnet/82ad0b ... 49ba08f88a

Das funktioniert auch alles soweit. Aber ich bekomme folgendes Ergebnis
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind Datenstrukturen - Wörterbücher und Listen. Ich empfehle ein Tutorial zum Umgang mit denen durchzuarbeiten. Dann sollte sich die Struktur, und wie man mit ihr arbeitet, erschließen.
DatMichi
User
Beiträge: 25
Registriert: Montag 25. Mai 2015, 20:35

__deets__ hat geschrieben: Samstag 18. September 2021, 14:15 Das sind Datenstrukturen - Wörterbücher und Listen. Ich empfehle ein Tutorial zum Umgang mit denen durchzuarbeiten. Dann sollte sich die Struktur, und wie man mit ihr arbeitet, erschließen.
Ich danke dir.
Beim Suchen bin ich auf https://hellocoding.de/blog/coding-lang ... -verwenden gestoßen und habe ich die Lösung gefunden.

Code: Alles auswählen

if __name__ == "__main__":
    api = Senec("IP_OF_YOUR_SENEC_APPLIANCE")
    jsontxt = json.dumps(api.get_values())
    obj = json.loads(jsontxt)
    print(obj['STATISTIC']['CURRENT_STATE'])
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

"api.get_values()" liefert Dir bereits ein Dictionary. Schau Dir noch einmal an, was die Zeilen 3 und 4 bewirken.
DatMichi
User
Beiträge: 25
Registriert: Montag 25. Mai 2015, 20:35

Ich komme nicht drauf....

Code: Alles auswählen

print((str(api.get_all_values(["ENERGY"]["GUI_GRID_POW"]))))

Code: Alles auswählen

print((api.get_all_values(["ENERGY"]["GUI_GRID_POW"])))

Das ist die Fehlermeldung die ich bekomme

Traceback (most recent call last):
File "SpeicherZ.py", line 212, in <module>
print((str(api.get_all_values(["ENERGY"]["GUI_GRID_POW"]))))
TypeError: list indices must be integers or slices, not str
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DatMichi: Das ist ja auch nicht wirklich überraschend:

Code: Alles auswählen

In [338]: ["ENERGY"]["GUI_GRID_POW"]                                            
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-338-2578f77319f4> in <module>
----> 1 ["ENERGY"]["GUI_GRID_POW"]

TypeError: list indices must be integers or slices, not str
Was hättest Du denn erwartet was dieser Teilausdruck als Ergebnis hätte?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
DatMichi
User
Beiträge: 25
Registriert: Montag 25. Mai 2015, 20:35

Erwartet hätte ich die Werte die ich mit meiner Lösung auch bekommen hätte.
Lege ich von Hand ein Wörtbuch an klappt das so.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DatMichi: Das kannst Du aber nicht erwarten wenn Du diesen Teilausdruck da rein schreibst. Der für sich ist halt schon mal falsch. Du müsstest zumindest mal erkennen, dass der Unsinnig ist und was da passiert,an der Stelle und das Du eigentlich was anderes wolltest. Es mag zwar nur nach einer Kleinigkeit aussehen, aber Programmiersprachen sind da sehr genau. Da kann man nicht ungefähr was schreiben und hoffen da passiert das was man eigentlich meinte.

Edit: Vielleicht noch mal: Was hast Du da erwartet, und zwar ganz konkret bei dem Teilausdruck, und warum hast Du das erwartet, und erklär mal was da tatsächlich passiert. Das Gesamtziel ist mir und anderen Lesern ja klar. Du musst da halt Schritt für Schritt hin, und wenn es nicht klappt, musst Du den Schritt ermitteln an dem sich das nicht so verhält wie Du erwartest, und dann herausfinden warum das so ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten