Script friert ein /stürzt ab auf Raspberry
- __blackjack__
- User
- Beiträge: 13122
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@WZBFL: `set` ist ein Datentyp. Sowas wie eine Liste, nur das die Elemente keine Reihenfolge haben und jedes Element nur einmal vorkommen kann. Wie mathematische Mengen. Und Du steckst die Inverternummer als einziges Element in so eine Menge und versuchst das dann als JSON zu serialisieren, was nicht geht, weil es in JSON nichts gibt worauf das Set abgebildet werden kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hi, hast du noch eine Idee wegen dem header? Oder warum es nicht funzt?__blackjack__ hat geschrieben: ↑Dienstag 18. Juli 2023, 10:48 @WZBFL: `set` ist ein Datentyp. Sowas wie eine Liste, nur das die Elemente keine Reihenfolge haben und jedes Element nur einmal vorkommen kann. Wie mathematische Mengen. Und Du steckst die Inverternummer als einziges Element in so eine Menge und versuchst das dann als JSON zu serialisieren, was nicht geht, weil es in JSON nichts gibt worauf das Set abgebildet werden kann.
Code: Alles auswählen
def set_inverter_limit(ahoi_ip, value):
data=json.dumps(
{
"id": INVERTER_ID,
"cmd": "limit_nonpersistent_absolute",
"val": value,
},
)
response = requests.post(
f"http://{ahoi_ip}/api/ctrl",
data=data ,timeout=None
)
logger.info(response.json())
response.raise_for_status()
return response.json()
Ich musste "Type" entfernen, da dies bei response = success immer zu Fehler geführt hat.
Warum der Inverter immer fehler zurückgemeldet hat war: dass "Data" nicht nochmal intern die Struktur Data haben durfte.
das war das problem:
Code: Alles auswählen
{'data': '{"serial": "11111", "limit_type": 0, "limit_value": "20"}'}
Code: Alles auswählen
{"id": 11111, "cmd": "limit_nonpersistent_absolute", "val": 20}l
Code: Alles auswählen
Jul 19 15:00:37 raspvpn python3[32256]: 2023-07-19 15:00:37.596 | INFO | __main__:main:106 - Setze Inverterlimit von 158 W auf 201 W...
Jul 19 15:00:37 raspvpn python3[32256]: 2023-07-19 15:00:37.622 | INFO | __main__:main:109 - Konfiguration gesendet 201
Jul 19 15:00:52 raspvpn systemd[1]: nulleinspeisung.service: Succeeded.
Jul 19 15:00:53 raspvpn systemd[1]: nulleinspeisung.service: Service RestartSec=100ms expired, scheduling restart.
Jul 19 15:00:53 raspvpn systemd[1]: nulleinspeisung.service: Scheduled restart job, restart counter is at 3.
Jul 19 15:00:53 raspvpn systemd[1]: Stopped Nulleinspeisung Service.
Jul 19 15:00:53 raspvpn systemd[1]: Started Nulleinspeisung Service.
Jul 19 15:00:54 raspvpn python3[2371]: 2023-07-19 15:00:54.632 | INFO | __main__:main:78 - Bezug: 33 W, Produktion: 0 W, Verbrauch: 33 W
Jul 19 15:00:54 raspvpn python3[2371]: 2023-07-19 15:00:54.634 | INFO | __main__:main:99 - Setpoint berechnet: 33 W + 164 W - 5 W = 197 W
Jul 19 15:00:54 raspvpn python3[2371]: 2023-07-19 15:00:54.635 | INFO | __main__:main:106 - Setze Inverterlimit von 164 W auf 197 W...
Jul 19 15:00:54 raspvpn python3[2371]: 2023-07-19 15:00:54.953 | INFO | __main__:main:109 - Konfiguration gesendet 197
Bin immer noch Ratlos, wie der Absturz passiert. Denn es gibt mal wieder keine Meldung
Zumindest mir ist jetzt nicht ganz klar, welche Änderungen du noch durchgeführt hast und wie der Code aktuell aussieht. Irgendwas passiert da ja scheinbar, dass das die Schleife 15 Sekunden nach der letzten Log-Message verlassen wird und aus dem letzten vollständigen Code erschließt sich mir nicht unmittelbar, was das sein könnte. Daher gerne noch mal den vollständigen Code, der auch wirklich zum Einsatz kommt, zeigen. Ansonsten ist es oft auch aufschlussreich, das Skript noch mal direkt, ohne Systemd, laufen zu lassen und zu beobachten.