Seite 2 von 2

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Dienstag 18. Juli 2023, 10:48
von __blackjack__
@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.

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Dienstag 18. Juli 2023, 12:43
von WZBFL
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

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Mittwoch 19. Juli 2023, 09:11
von WZBFL
__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?

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Mittwoch 19. Juli 2023, 13:22
von WZBFL

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.

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Mittwoch 19. Juli 2023, 14:03
von WZBFL

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

Re: Script friert ein /stürzt ab auf Raspberry

Verfasst: Mittwoch 19. Juli 2023, 16:36
von nezzcarth
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.