Script friert ein /stürzt ab auf Raspberry

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.
Benutzeravatar
__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
WZBFL
User
Beiträge: 13
Registriert: Montag 10. Juli 2023, 09:19

wenn ich den Header mit eintrage, kommt als response zumindest schonmal "200". Auch wenn der Inverter weiterhin nichts empfängt. bzw nicht drauf reagieren möchte
WZBFL
User
Beiträge: 13
Registriert: Montag 10. Juli 2023, 09:19

__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.
Hi, hast du noch eine Idee wegen dem header? Oder warum es nicht funzt?
WZBFL
User
Beiträge: 13
Registriert: Montag 10. Juli 2023, 09:19

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()
so funzt es jetzt. ABER:

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"}'}
so hat er es erwartet:

Code: Alles auswählen

{"id": 11111, "cmd": "limit_nonpersistent_absolute", "val": 20}l
ich beobachte mal das script, ob es nun immernoch abstüzt.
WZBFL
User
Beiträge: 13
Registriert: Montag 10. Juli 2023, 09:19

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
Zwischendurch passiert einfach mal das.... Aber offenbar scheint sich die Unit von selbst neu zu starten, was Sie vorher nicht getan hat.

Bin immer noch Ratlos, wie der Absturz passiert. Denn es gibt mal wieder keine Meldung
nezzcarth
User
Beiträge: 1638
Registriert: Samstag 16. April 2011, 12:47

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