Bestand: 2x SMA Tripower (17,49kWh) // Neu: Victron MP2 + Raspberry VenusOS + 16x Lishen 272Ah

Danke für die tolle Beschreibung!

1 „Gefällt mir“

Update 08.12.2023

Kurzer Update aus der dunklen Jahreszeit. Der Akku läuft nun noch nicht ganz 12 Monate.

Meine Zellen haben sich über die Sommermonate trotz Top Balancing inzwischen gut auseinandergelebt ?
Die Zelle #12 hatte zeitweise 170mV Spannungsdifferenz zur Top Zelle.
Lade die Zellen #12 und #13 jetzt manuell ein wenig mit dem Labornetzteil und habe die Balacing Leistung auf 2.9V gestellt.
Den Multiplus habe ich inzwischen auf "Charge only" laufen, sodass die Zellen erstmal wieder aufgeladen werden.

Mein Speicher wird also noch komplett geprüft. Einige Muttern waren auch nicht mehr mit dem passenden Drehmoment fest.

Zudem läuft unsere Tecalor Wärmepumpe inzwischen und ich muss noch eine Gewisse Balance finden.
Überlege zudem unseren wasserführenden Kamin nicht in den Brauchwasser, sondern in den Rücklauf der Wärmepumpe einzubinden.
Ich glaube, dass würde die Effizienz noch mal steigern.

Update 19.07.2024 - Fehlerfall

Hallo Community,

heute möchte ich den ersten Fehlerfall mit euch teilen.
Lets go!

heute kam es zu einem Fehlerfall meiner Installation, den ich nur durch Zufall entdeckt habe. Mit Blick auf meine Remote Console stellte ich fest, dass mein Akku trotz PV Überschuss nicht mehr geladen wird. Ich dachte mir "Reboot tut gut". Da ich nicht vor Ort war, hatte ich dies fix über die Remote Console Softwareseitig vorgenommen. Danach war mein MP2 nicht mehr erreichbar. Merkwüdig, aber gut. Hatte ich das nächste ToDo für das anstehende Wochenende auf der Liste.
Zuhause angekommen habe ich festgestellt, dass die Sicherung raus geflogen ist. Jetzt wurde ich stuzig. FI und alle anderen Sicherung waren drin.
Abgesichert mit 25A und 4mm² NYM Kabel. Entfernung keine 5 Meter. Die Fehlersuche ging los...

Erstmal alles AC Seitig kontrolliert. Leitungen sitzen fest, sowohl die Sicherung als auch am MP2. In Summe AC-Seitig keine Auffälligkeiten.

Okay, dann halt doch mal über den Kippschalter einen physischen Neustart. Sicherung wieder rein, MP2 Aus- und wieder Eingeschaltet. Nach einem kurzen Augenblick wieder die Sicherung raus, kein Relaistest und nichts. Zum Glück hatte ich im Hinterkopf, dass der Akku mit entsprechender Spannung angeschlossen sein muss. Vermutung lag also nahe, dass irgendwas mit meinem Akku ist.
Kurzer Check in Grafana, ob die Zellen irgendwas besonderes geloggt haben. Negativ. Der MP2 hat zwar nicht mehr geladen aber der SOC verweilte bei 51%. Die Zellen hatten alle um die 3,3V. Kein Fehler im BMS, kein Fehler am Akku. Zumindest, wenn man der Software vertraut. Als nächstes wollte ich dann mit meinem Multimeter die Infos der Software validieren. Gesagt, getan. Am Akku direkt lagen auch über 52V an. Die Fragezeichen in meinem Kopf wurden größer und größer.
Weiter gings dann im Ausschlussverfahren, jede Verbindungsstelle prüfen. Die nächste Verbindungsstelle wäre dann die Schmelzsicherung.
Hier auch keine Auffälligkeit. Spannung lag an und die Sicherung war optisch unauffällig.

Danach kam dann der Batterietrennschalter. Erst den Eingang gemessen, fehlerfrei! Ausgang 16V... AHA!
Schalter also ein paar mal aus- und wieder eingeschaltet. 16V zeige mein Multimeter an.
Beide Kabel angeschraubt und provisorisch über eine Mutter verbunden, Sicherung wieder rein, Anderson-Stecker wieder verbunden und Mutiplus gestartet.
Klack, klack, klack....BRRRR. Er läd! Kurz wieder ein Blick auf die Software, passt alles wieder!

Batterieschalter.. seht selbst, made in China. Bestell über AliExpress.
Definitiv nicht für die Dauerlast geeignet (war bis 200A beworben).

Ein neuer ist bereits bestellt, mit 99% Sicherheit wieder aus China, aber diesmal über Amazon.

Im Nachgang habe ich dann noch das VenusOS Version 3.4 aufgespielt und die neuste Serialbattery installiert und konfiguriert.
Zusätzlich habe ich noch mal alle Schrauben nachgezogen, wobei hier keine Auffällig war.
Unterm Strich ... Et lüppt wieder.

1 „Gefällt mir“

Da mir ja auch schon ein Batterieschalter abgeraucht ist ( 1000A Made in China ) habe ich einen Hella Trennschalter verbaut, in der Hoffnung, dass er hält.

Update 31.12.2024

Zum Jahresabschluss noch mal ein kleines Update und Way-Forward.

Status DIY Akku

Der Akku ist jetzt knapp 2 Jahre in Betrieb, zwei Zellen zeigen mir zumindest dezente Alterungserscheinungen. Zelle 5&7 sind hier auffällig.

Beim (ent)-laden waren die beiden Zellen inkl. Zelldrift der limitierende Faktor. Zelle 5 hatte ich dann mal nachgeladen (hab es leider etwas zu gut gemeint :grin: )


Zelle 7 habe ich im Nachgang noch mal hochgezogen, um den Zelldrift ein wenig einzufangen.

Man sieht aber Teilweise inzwischen einen ordentlichen Drift und Imbalance, welche ich jetzt wieder einfangen möchte. Spitzenwerte 185mV!!! :face_with_spiral_eyes:

Ich werde heute Nacht einmal den Akku voll machen ( Tibberpreis -> 20cent/kWh) und morgen früh den Akku außer betrieb nehmen und die Zellen wieder angleichen.

Way Forward

Aktuell bin ich noch bei Tibber mit einem Jahresverbrauch von 5630kWh (Netzbezug). Der Tesla und die WP schlagen gut rein, vor allem die WP, wenn vom Dach nichts kommt. Dezember und Januar sind in Summe ca. 3000kWh.
Tibber Stromkosten im Jahr 1900€.

Aktuell läuft der Check bei Octopus Energy um die "go" Zeiten effektiver zu nutzen.
Bei keinen 20cent/kWh von 0-5Uhr lässt sich hier der Akku voll machen und tagsüber wieder einspeisen. Ich rechne mit 4cent Cycle Kosten pro kWh und 80% Effizienz. Das wären dann immer noch 6,4 Cent Preisvorteil gegenüber dem "normalpreis".

Die WP würde ich ebenfalls zu konfigurieren, dass bis 5Uhr der Puffer noch mal 3-4 Grad höher läuft. Aktuelle "Max. Soll Temp Puffer" liegt bei 36.6°C bei 1.2°C Außentemperatur (getriggert durch den Radiator Heizkreis). Hier würde ich dann auf 40°C bis 42°C hochgehen.

Gemessen wird alles mit DS18B20 Sensoren die über die Shellys oder ESP32 angebunden sind. Einige Werte der WP (Soll-Werte z.b) hole ich mir über einen Webscraper und lese diesen via NodeRed in eine InfluxDB ein.

In diesem Sinne, euch allen einen guten Start ins kommende Jahr :champagne: :rocket:

Nabend in die Runde,

es ist mal wieder Zeit für ein Update nach gut einem Jahr. Hatte mir vorgenommen ein bisschen langfristiger zu berichten.

Im Dezember steht bei mir die alljährliche Akku Wartung an (Sichtprüfung, Verbindungsstellen, Muttern nachziehen, Zellen prüfen etc.).

Nach fast drei Jahren ist WestNetz jetzt auch mal mein MaSt Eintrag zum Speicher aufgefallen und hat Unterlagen angefragt. Ich habe alles übersendet und jetzt warte ich vermutlich die nächsten 3 Jahr auf Rückmeldung :smiley:

Stromanbieter ist seit Januar 2025 Octopus Energy die mir aber innerhalb des Jahres keinen Smart Meter verbauen konnten. Nicht schlimm, 28cent/kWh als Endpreis kann mir gerade auch niemand anderes bieten + die 10€ Gutschrift im Monat für nächtliches Laden unseres E-Flitzers.
Den Tibber Pulse nutze ich aber weiterhin, um die Daten meines bisherigen Digitalen Zählers abzugreifen. Funktioniert auch ohne Kunde zu sein :wink:

zum Akku:

Das JK BMS läuft und läuft und läuft…
2Y 322D 21H run time ohne Ausfälle oder Einschränkungen.
Wenn ich mich nicht verrechnet habe, dann habe ich mit dem Akku jetzt knapp 8000kWh Netzbezug kompensiert.

Min Voltage: 2.70V
Max. Voltage: 3.55V

Ich merke allerdings, dass einige Zellen gefühlt deutlich weniger Kapazität haben und merklich gealtert sind. Diese sind früher leer bzw. eher voll. Ich habe jetzt keinen Cycle Test gemacht, allerdings den IR gemessen, der weiterhin tadellos bei 12-13mOhm liegt.

Der Akku läuft eigentlich das ganze Jahr blind, ohne dass ich mich aktiv damit beschäftige. Als Ergebnis kommt da nach den Sommermonaten eine massive dysbalance der Zellen zum Vorschein, sobald der Akku wirklich länger “leer” ist. In der Spitze bei ca 250mV (Zelle 7 vs. Zelle 1) im Winter. Im Sommer lade ich bis 3.55V und da liegt der Drift bei ca. 10mV.

In der Konsequenz habe ich in den Wintermonaten das Balacing bereits deutlich niedriger angesetzt, weil die Zellen in den Monaten nicht voll werden und so das Spannungsniveau der Zellen gleich bleibt. Sieht man auf dem Bild auch schön, wie der Balancer arbeitet (die kleinen Peaks kommen vom manuellen nachladen einzelner Zellen).

In dem Beispiel 2.70V vs. 2.95V.

Die Lösung könnte natürlich sein, den Ladezyklus abzuändern, sodass eine andere (Ent-)Ladeschlussspannung eingehalten wird.
Beispielsweise 2.9V bis 3.45V.

Software:

Ich habe gestern in dem Zuge zum einen VenusOS auf v3.67 geupdatet und auch dbus-Serialbattery mal auf die neuste Version gehoben. Letzteres hat sich aus meiner Sicht massiv weiterentwickelt.

Darüber hinaus musste ich für das neue Venus GUI auch den shm-et340 emulator updaten, da mir die Netzwerte in der neue GUI nicht angezeigt wurden. Hier musste ich mich erstmal wieder einlesen, damit ich den alten Dienst aus dem System werfen konnte. Lief ja jetzt gut drei Jahre einwandfrei.

Visualisierung läuft weiterhin über NodeRed + Influx & Grafana. Keine Änderung und verrichtet auf die RaPi 4 seinen Dienst einwandfrei.

Off Topic:

Anonsten habe noch 4 weitere 455 Watt Module an die Fassade der Dachterrasse angebracht.
Hoymiles Wechselrichter inkl. Ahoy DTU auf ESP32 Basis für die Drahtlose Kommunikation . Ebenfalls alles in VenusOS integriert und via MQTT auch in Grafana visualisiert.

Et lüppt.

In diesem Sinne… ich hoffe ihr hattet alle schöne Feiertage.
Kommt am Mittwoch alle gut ins kommende Jahr.

Grüße
Tim

04.02.2026 - EV Charger Implementierung via Shelly 3EM, NodeRed & VenusOS

Nachdem ich mich wieder ein wenig mit meinem Setup beschäftigt hatte, wollte ich meine “Dumme” Wallbox in VenusOS visualisieren. Konkret eine Zappy V2.0 ohne Gateway. Ich hatte lediglich den Shelly 3EM zur Messung des Verbrauches.

Für die Visualisierung nutze ich den EV-Charger Emulator von Mr Manuel, welcher die Wallbox auf Basis von MQTT integriert. Die Installation via SSH ist fix gemacht.
Man muss noch den MQTT Broker hinterlegen und die MQTT Topic

Problem ist, der Shelly 3EM funktioniert nur via MQTT oder Cloud. Eine parallele Nutzung ist nicht vorgesehen. Da ich auf nichts verzichten möchte, rufe ich die Daten via HTTP-Request über “shelly-ip/status” ab und wandle diesen über NodeRed in ein JSON Object.

Das Script von Mr.Manuel braucht als Mindestanforderung die Leistung “Power”.
Alternativ die Leistung der einzelnen Phasen und weitere Werte, die individuell genutzt werden können. Status, StartStop, Mode und co machen bei meiner Wallbox keinen Sinn.

/// Mindestanforderung, damit das Script funktioniert 

{
    "Ac": {
        "Power": 321.6
    }
}

/// ODER ergänzt durch folgende Werte
 

{
    "Ac": {
        "Power": 12000.0,
        "L1": {
            "Power": 4000.0
        },
        "L2": {
            "Power": 4000.0
        },
        "L3": {
            "Power": 4000.0
        },
        "Energy": {
            "Forward": 342.4
        }
    },
    "Current": 17.39,
    "MaxCurrent": 32,
    "SetCurrent": 16,
    "AutoStart": 1,
    "ChargingTime": 63,
    "EnableDisplay": 1,
    "Mode": 1,
    "StartStop": 1,
    "Status": 1
}

Bedeutet ich muss mit einer Function Node aus den übermittelten Werten des HTTP Request die MQTT Message entsprechend zuliefern. Falls also jemand den Bedarf hat, seine Dumme Wallbox mit einem Shelly3EM zu emulieren gibt es hier den Code der Function-Node:

Leistung aller Phasen
Strom aller Phasen
Geladene Energie
Nullung von Strom und Leistung bei Werten <5 Watt & <0,7A

const emeters = msg.payload.emeters;

// Sicherheitscheck
if (!Array.isArray(emeters) || emeters.length < 3) {
    node.error("emeters Array fehlt oder ist unvollständig", msg);
    return null;
}

// Leistungen je Phase
const L1 = emeters[0].power;
const L2 = emeters[1].power;
const L3 = emeters[2].power;

// Gesamtleistung
let totalPower = L1 + L2 + L3;

// Schwellwert für Gesamtleistung
if (totalPower < 5) {
    totalPower = 0;
}

// Energie Forward: Summe aller Phasen (Wh → kWh)
const energyForward = emeters.reduce((sum, e) => sum + (e.total || 0), 0) / 1000;

// Strom: Summe aller Phasen
let totalCurrent = emeters.reduce((sum, e) => sum + (e.current || 0), 0);

// Schwellwert für Strom
if (totalCurrent < 0.7) {
    totalCurrent = 0;
}

msg.payload = {
    Ac: {
        Power: totalPower,
        L1: { Power: L1 },
        L2: { Power: L2 },
        L3: { Power: L3 },
        Energy: {
            Forward: energyForward
        }
    },
    Current: Number(totalCurrent.toFixed(2))
};

return msg;

Am Ende wird das Ergebnis nur noch via MQTT gepublished.

Charger ist sichtbar und liefert auch entsprechende Daten, sobald geladen wird :slight_smile:

Flow kann ich bei Bedarf anhängen :slight_smile:

1 „Gefällt mir“

07.02.2026 - Nächstes BasteleiHuawei PSU4850A

Ich bin kostengünstig an die oben genannte PSU gekommen (0€). Das Gleichrichter gibt konstant 53.5V aus bei 50A Strom. Ich habe leider aktuell keine Huawei PMU zum steuern, daher möchte ich die gerne über einen Zwischenstecker betreiben. Ist erstmal nur Spielerei und mir ist bewusst, dass ein Shelly oder Tasmota Plug nicht dauerhaft für die Leistung geeignet ist.

Hintergrund wäre die maximale Ladeleistung abseits den Multiplus zu steigern und den Multiplus ab einem Gewissen Überschuss zu entlasten

Falls aber jemand grundsätzlich Interesse daran hat, sowas via NodeRed zu steuern. Geht mit jedem DC Ladegerät. Der Flow ist mit ChatGPT geschrieben und ich habe ihn mit einem ShellyPlugS getestet (an einer Lampe - der Plug S darf max 12A!) // Nutzung auf eigene Verantwortung

Herausforderung: Logik entwerfen, wann das Netzteil einschaltet und wann dieses Ausschalten soll.

Die Daten kommen alle über MQTT Broker via Victron auf dem VenusOS.
Sowohl die Spannung der Batterie, als auch die Ladeleistung des MP2.

Idee & Anforderung:

  • Netzteil schaltet ein, sobald der Victron X-Watt in den Akku schiebt (beispielhaft 2000W)
  • Netzteil schaltet aus, sobald 53.5V erreicht werden
  • Damit dauerhaftes ein- und ausschalten verhindert wird wollte ich eine Hysterese eingebaut wissen. Das Netzteil wird wieder freigegeben, wenn 52V Akku Spannung erreicht werden.
  • Safety Feature, sofern MQTT mal die biege macht oder die Verbindung flöten geht, soll nach 2min ein “Power Off” gesendet werden.
    • Läuft bei mir doppelt und ist im Export Flow nicht ersichtlich (der Flow sendet Power 0 und ich schalte den Shelly zusätzlich über einen HTTP Request ab)
  1. Hysterese-Spannung:
    • Sperre an: ≥ 53.5 V

    • Sperre aus: < 52 V

  2. Power-Check:
    • Power > 2000 → nur wenn Sperre nicht aktiv
  3. Sicherheitsnode:
    • Prüft alle 5 Sekunden, wann zuletzt MQTT-Nachricht kam

    • Keine Nachricht in 2 Minuten → automatisch Power auf 0 (OFF)

JSON NodeRed
[
    {
        "id": "8883c09ad914bd99",
        "type": "debug",
        "z": "bcdd18924eac1e07",
        "name": "Debug-Ausgabe",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "x": 1480,
        "y": 200,
        "wires": []
    },
    {
        "id": "acc5f7dc5bc18204",
        "type": "switch",
        "z": "bcdd18924eac1e07",
        "name": "Wenn Spannung ≥ 53.5V",
        "property": "payload.spannung",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gte",
                "v": "54",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 940,
        "y": 220,
        "wires": [
            [
                "8883c09ad914bd99",
                "d06c78f138500796"
            ]
        ]
    },
    {
        "id": "003da192fc0169a0",
        "type": "switch",
        "z": "bcdd18924eac1e07",
        "name": "Wenn Power ≥ 2000",
        "property": "payload.power",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gte",
                "v": "2000",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 920,
        "y": 140,
        "wires": [
            [
                "8883c09ad914bd99",
                "0f9bed59fc605cb5"
            ]
        ]
    },
    {
        "id": "93f53cba95942cfb",
        "type": "function",
        "z": "bcdd18924eac1e07",
        "name": "Spannung prüfen & Sperre (Hysterese)",
        "func": "msg.payload.spannung = msg.payload.value;\ndelete msg.payload.value;\n\n// Sicherheits-Timer zurücksetzen\nflow.set('lastMQTT', Date.now());\n\n// aktuelle Sperre abrufen\nlet sperre = flow.get(\"spannungZuHoch\") || false;\n\n// Sperre setzen, wenn Spannung >= 53.5\nif (msg.payload.spannung >= 53.5) {\n    sperre = true;\n}\n\n// Sperre zurücksetzen, wenn Spannung < 52\nif (msg.payload.spannung < 52) {\n    sperre = false;\n}\n\n// Sperre speichern\nflow.set(\"spannungZuHoch\", sperre);\n\nreturn msg;\n",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 630,
        "y": 220,
        "wires": [
            [
                "acc5f7dc5bc18204"
            ]
        ]
    },
    {
        "id": "bdf95059b2d2cab1",
        "type": "function",
        "z": "bcdd18924eac1e07",
        "name": "Power prüfen (Sperre beachten)",
        "func": "// Sicherheits-Timer zurücksetzen\nflow.set('lastMQTT', Date.now());\n\n// Sperre prüfen\nif (flow.get(\"spannungZuHoch\") === true) {\n    return null; // Power blockiert\n}\n\nmsg.payload.power = msg.payload.value;\ndelete msg.payload.value;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 630,
        "y": 140,
        "wires": [
            [
                "003da192fc0169a0"
            ]
        ]
    },
    {
        "id": "ce9fd761aee84ca7",
        "type": "inject",
        "z": "bcdd18924eac1e07",
        "name": "Check Safety Timeout alle 5s",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "5",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 290,
        "y": 280,
        "wires": [
            [
                "b888c97b04de2ad0"
            ]
        ]
    },
    {
        "id": "b888c97b04de2ad0",
        "type": "function",
        "z": "bcdd18924eac1e07",
        "name": "Sicherheitsnode: 2min Timeout",
        "func": "let last = flow.get('lastMQTT') || 0;\n\n// 2 Minuten = 120000 ms\nif (Date.now() - last > 120000) {\n    // Timeout überschritten → Power OFF\n    return { payload: 0, note: 'Safety Timeout' };\n}\nreturn null;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 640,
        "y": 280,
        "wires": [
            [
                "d06c78f138500796"
            ]
        ]
    },
    {
        "id": "3eae9fde7ae6bc99",
        "type": "mqtt in",
        "z": "bcdd18924eac1e07",
        "name": "MQTT Voltage",
        "topic": "N/e45f01a2b4d4/system/0/Dc/Battery/Voltage",
        "qos": "2",
        "datatype": "auto-detect",
        "broker": "eb7dbabef2e64fb0",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 320,
        "y": 220,
        "wires": [
            [
                "93f53cba95942cfb"
            ]
        ]
    },
    {
        "id": "4c5f5fe1a23dd684",
        "type": "mqtt in",
        "z": "bcdd18924eac1e07",
        "name": "MQTT Power",
        "topic": "N/e45f01a2b4d4/system/0/Dc/Battery/Power",
        "qos": "0",
        "datatype": "auto-detect",
        "broker": "eb7dbabef2e64fb0",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 310,
        "y": 140,
        "wires": [
            [
                "bdf95059b2d2cab1"
            ]
        ]
    },
    {
        "id": "d06c78f138500796",
        "type": "http request",
        "z": "bcdd18924eac1e07",
        "name": "Shelly Ausschalten Spannug >54V",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://192.168.0.43/relay/0?turn=off",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": true,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1240,
        "y": 280,
        "wires": [
            []
        ]
    },
    {
        "id": "0f9bed59fc605cb5",
        "type": "http request",
        "z": "bcdd18924eac1e07",
        "name": "Shelly einschalten Power >2000W",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://192.168.0.43/relay/0?turn=on",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": true,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1240,
        "y": 120,
        "wires": [
            []
        ]
    },
    {
        "id": "eb7dbabef2e64fb0",
        "type": "mqtt-broker",
        "name": "Cerbo GX",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

Die nächste Iteration wäre ein keep-alive am Shelly, damit der Shelly selbst schaltet, sobald irgendwas nicht läuft (MQTT Message fehlt, Broker nicht erreichbar, innerhalb von X-Minuten kein Signal erhalten). Bin mir noch nicht sicher, ob und wie.

Fotos und Update folgt…