Mr-Eigenstrom - Nulleinspeisung

 

D0HHH aus dem Internet
d0hhh.ramoip.de:10093 UDP
Conversbetrieb - CONV 0

Telegram - Convers

Nulleinspeisung über Node Red

Ziel ist, für die Nachtstunden die Grundversorgung aus dem Speicher zu nutzen. Tagsüber steht eine PV-Anlage für die solare Selbstnutzung.
Technische Information!

2x Sun 1000 1KW Wechselrichter (850Watt begrenzt).
1x 48 Volt 2,4 KW PV-Laderegler
4x Solarmodule a 400 Watt
2x Pylontech US5000

Div. Kleinmaterial wie Kabel etc.

Die Sun 1000 sind jeweils mit einer Zusatzplatine ausgestattet, die aus dem Projekt Trucki2 Shelly (GitHub) kommen. Dadurch ist die Möglichkeit gegeben, die Wechselrichter per MQTT anzusteuern.

Der Hausverbrauch wird über einen 3Phasen Energiezähler ausgelesen
EASTRON SDM630 Modbus-V2 MID über einen ESP mit Tasmota ausgelesen und per MQTT an den Node Red übergeben.

Da die Nachtschaltung nur dann funktionieren soll, wenn die andere Anlage (2,4KW) nichts mehr produziert, wird der Zustand der Hauptanlage abgefragt und die Nachteinspeisung ein bzw. ausgeschaltet.

Der Energiezähler, der die Hausversorgung misst, gibt die Gesamtleistung vor, diese wird dann auf beide Wechselrichter auf 2 Phasen verteilt.

Bedarf: Dort wird der Hausbedarf ermittelt! Hier dient ein SDM630 als Erfassung im Zählerschrank!
Dieser ist mit einer RS485 Schnittstelle an einen ESP verbunden und teilt dies per MQTT mit.
Da die Wechselrichter eine eingestellte Leistung von 850Watt haben, werden die maximalen 1000W nicht erreicht. Um eine Spanne zuhaben, wurden die Wechselrichter zusätzlich auf 1200 - 30 Watt begrenzt, da sie Wechselrichter immer eine kleine Strommenge ausspeisen (ca. 6 - 9 Watt). Somit ist eine Gewährleistung das ein minimaler Strombezug aus dem Netz kommt und nichts eingespeist wird. Alles, was über den Hausverbrauch von 1200 Watt geht, wird nicht über die Wechselrichter versorgt.

Bei der PV-Anlage handelt es sich um eine mit einem Kostal Wechselrichter! Da dieser eine Voll-Einspeise Funktion hat, deckt er über den Tag den Stromverbrauch und wird über JSON abgefragt. Hier gehe ich auf die Zustandsabfrage, ist der Kostal Wechselrichter "AUS", dann werden die 2 SUN1000 freigeschaltet und dürfen Energie ins Netz abgeben. Im Leerlauf sowie in der Einspeisung werden die SUN Wechselrichter nicht freigeschaltet.

In der kleinen Logik ist nicht viel los
Der Zähler und die PV treffen zusammen, bei der Leistungsfreigabe, wird es durch 2 geteilt, dann an beide Wechselrichter gesendet!

Der Filter nimmt die Wiederholungen raus und gibt sie nicht an die Wechselrichter weiter!

[
    {
        "id": "e3944640ba086ea2",
        "type": "group",
        "z": "34730b89f91c5d6c",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "ad2b409a741e11c4",
            "bf5e3d01980e618f",
            "2759d1f00ed20a61",
            "1b1c5ed8f8583029",
            "7dc2fe3e36a719ba",
            "5d7670ef74e3348f",
            "8594529880143f60",
            "1feba7548a022f30",
            "5a9bce26b31ebf1c"
        ],
        "x": 734,
        "y": 299,
        "w": 472,
        "h": 242
    },
    {
        "id": "ad2b409a741e11c4",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "200",
        "payloadType": "num",
        "x": 830,
        "y": 500,
        "wires": [
            [
                "1feba7548a022f30"
            ]
        ]
    },
    {
        "id": "bf5e3d01980e618f",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "0",
        "payloadType": "num",
        "x": 830,
        "y": 380,
        "wires": [
            [
                "1feba7548a022f30"
            ]
        ]
    },
    {
        "id": "2759d1f00ed20a61",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "100",
        "payloadType": "num",
        "x": 830,
        "y": 460,
        "wires": [
            [
                "1feba7548a022f30"
            ]
        ]
    },
    {
        "id": "1b1c5ed8f8583029",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "80",
        "payloadType": "num",
        "x": 830,
        "y": 420,
        "wires": [
            [
                "1feba7548a022f30"
            ]
        ]
    },
    {
        "id": "7dc2fe3e36a719ba",
        "type": "rbe",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "Blocker",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": true,
        "property": "payload",
        "topi": "topic",
        "x": 820,
        "y": 340,
        "wires": [
            [
                "1feba7548a022f30"
            ]
        ]
    },
    {
        "id": "5d7670ef74e3348f",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "Sun1000-1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1050,
        "y": 340,
        "wires": []
    },
    {
        "id": "8594529880143f60",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "Sun1000-2",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1050,
        "y": 420,
        "wires": []
    },
    {
        "id": "1feba7548a022f30",
        "type": "junction",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "x": 940,
        "y": 380,
        "wires": [
            [
                "5d7670ef74e3348f",
                "8594529880143f60"
            ]
        ]
    },
    {
        "id": "5a9bce26b31ebf1c",
        "type": "comment",
        "z": "34730b89f91c5d6c",
        "g": "e3944640ba086ea2",
        "name": "Ausgabe an die Wechselrichter",
        "info": "",
        "x": 1050,
        "y": 500,
        "wires": []
    },
    {
        "id": "aa4c882ef9a6a8c3",
        "type": "group",
        "z": "34730b89f91c5d6c",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "881bb93cf64933b7",
            "21e7b2cf7d9c6f54",
            "66a0b974e0c7053c",
            "f54ff4665033f0b6",
            "75ea2d673186e093",
            "0dcb359f32227aaf",
            "4689d82715bfb696"
        ],
        "x": 154,
        "y": 339,
        "w": 552,
        "h": 202
    },
    {
        "id": "881bb93cf64933b7",
        "type": "function",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "Volleinspeise status",
        "func": "var status = msg.payload.status;\n\nif (status === \"Aus\"){\n    msg.payload = 0;\n    msg.topic = \"pvstaus\";\n    return msg;\n}\nif (status === \"Leerlauf\"){\n    msg.payload = 1;\n    msg.topic = \"pvstaus\";\n    return msg;\n    }\nelse{\n    msg.payload = 2; \n    msg.topic = \"pvstaus\";\n    return msg;\n\n}\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 380,
        "wires": [
            [
                "21e7b2cf7d9c6f54",
                "2830be8c0c78f04a"
            ]
        ]
    },
    {
        "id": "21e7b2cf7d9c6f54",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV-Status 1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 590,
        "y": 420,
        "wires": []
    },
    {
        "id": "66a0b974e0c7053c",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV1 Arbeitspunkt",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload.status",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 570,
        "y": 500,
        "wires": []
    },
    {
        "id": "f54ff4665033f0b6",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV AUS",
        "props": [
            {
                "p": "payload.status",
                "v": "Aus",
                "vt": "str"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 350,
        "y": 420,
        "wires": [
            [
                "881bb93cf64933b7",
                "66a0b974e0c7053c"
            ]
        ]
    },
    {
        "id": "75ea2d673186e093",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV Leerlauf",
        "props": [
            {
                "p": "payload.status",
                "v": "Leerlauf",
                "vt": "str"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 330,
        "y": 460,
        "wires": [
            [
                "881bb93cf64933b7",
                "66a0b974e0c7053c"
            ]
        ]
    },
    {
        "id": "0dcb359f32227aaf",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV Einspeisung (MPP)",
        "props": [
            {
                "p": "payload.status",
                "v": "Einspeisung (MPP)",
                "vt": "str"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 300,
        "y": 500,
        "wires": [
            [
                "881bb93cf64933b7",
                "66a0b974e0c7053c"
            ]
        ]
    },
    {
        "id": "4689d82715bfb696",
        "type": "comment",
        "z": "34730b89f91c5d6c",
        "g": "aa4c882ef9a6a8c3",
        "name": "PV-Volleinspeisung",
        "info": "",
        "x": 270,
        "y": 380,
        "wires": []
    },
    {
        "id": "cbf5d1c93ef71121",
        "type": "group",
        "z": "34730b89f91c5d6c",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "b691623b018e11d6",
            "cb2b421f662d6bf7",
            "431e6873c28ba14e",
            "26a0ddb059a524f0",
            "08dd7eaac9b2d8db",
            "4127cebdf803c3c5",
            "b046d941b279d741",
            "ef4dfc78bbfaffbd",
            "377d322d30c6f557"
        ],
        "x": 154,
        "y": 79,
        "w": 552,
        "h": 242
    },
    {
        "id": "b691623b018e11d6",
        "type": "function",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "Begrenzung 1200watt -30",
        "func": "var power = msg.payload;\nif (power > 1200){\n    msg.payload = -30;\n    msg.topic = \"hvb\"\n    return msg;\n}\nelse{\n    msg.payload = power -30;\n    msg.topic = \"hvb\"\n    return msg;\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 550,
        "y": 280,
        "wires": [
            [
                "2830be8c0c78f04a",
                "431e6873c28ba14e"
            ]
        ]
    },
    {
        "id": "cb2b421f662d6bf7",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "Hausverbrauch",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 580,
        "y": 160,
        "wires": []
    },
    {
        "id": "431e6873c28ba14e",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "Freigabe",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 600,
        "y": 220,
        "wires": []
    },
    {
        "id": "26a0ddb059a524f0",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "500",
        "payloadType": "num",
        "x": 310,
        "y": 200,
        "wires": [
            [
                "ef4dfc78bbfaffbd"
            ]
        ]
    },
    {
        "id": "08dd7eaac9b2d8db",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1200",
        "payloadType": "num",
        "x": 310,
        "y": 240,
        "wires": [
            [
                "ef4dfc78bbfaffbd"
            ]
        ]
    },
    {
        "id": "4127cebdf803c3c5",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "2500",
        "payloadType": "num",
        "x": 310,
        "y": 280,
        "wires": [
            [
                "ef4dfc78bbfaffbd"
            ]
        ]
    },
    {
        "id": "b046d941b279d741",
        "type": "inject",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "100",
        "payloadType": "num",
        "x": 310,
        "y": 160,
        "wires": [
            [
                "ef4dfc78bbfaffbd"
            ]
        ]
    },
    {
        "id": "ef4dfc78bbfaffbd",
        "type": "junction",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "x": 400,
        "y": 220,
        "wires": [
            [
                "cb2b421f662d6bf7",
                "b691623b018e11d6"
            ]
        ]
    },
    {
        "id": "377d322d30c6f557",
        "type": "comment",
        "z": "34730b89f91c5d6c",
        "g": "cbf5d1c93ef71121",
        "name": "SDM630 Zähler Hausverbrauch",
        "info": "",
        "x": 310,
        "y": 120,
        "wires": []
    },
    {
        "id": "2201d87903f9371a",
        "type": "group",
        "z": "34730b89f91c5d6c",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "2830be8c0c78f04a",
            "d1373fd4f2048016",
            "31ca28de8a2fa35c",
            "6d1279fdf583418e"
        ],
        "x": 754,
        "y": 79,
        "w": 452,
        "h": 182
    },
    {
        "id": "2830be8c0c78f04a",
        "type": "join",
        "z": "34730b89f91c5d6c",
        "g": "2201d87903f9371a",
        "name": "",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": true,
        "timeout": "",
        "count": "2",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 850,
        "y": 160,
        "wires": [
            [
                "d1373fd4f2048016",
                "31ca28de8a2fa35c"
            ]
        ]
    },
    {
        "id": "d1373fd4f2048016",
        "type": "debug",
        "z": "34730b89f91c5d6c",
        "g": "2201d87903f9371a",
        "name": "Kontrollpunkt",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1090,
        "y": 160,
        "wires": []
    },
    {
        "id": "31ca28de8a2fa35c",
        "type": "function",
        "z": "34730b89f91c5d6c",
        "g": "2201d87903f9371a",
        "name": "Leistungsfreigabe /2",
        "func": "var pvs = msg.payload.pvstaus;\nvar hvb = msg.payload.hvb\nif (pvs  == 0) {\n    msg.payload = hvb / 2;\n    msg.topic = 'wrp';\n    return msg;\n}\nelse {\n    msg.payload == 0;\n    msg.topic = 'wrp';\n    return msg;\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 220,
        "wires": [
            [
                "7dc2fe3e36a719ba"
            ]
        ]
    },
    {
        "id": "6d1279fdf583418e",
        "type": "comment",
        "z": "34730b89f91c5d6c",
        "g": "2201d87903f9371a",
        "name": "kleine Logik",
        "info": "",
        "x": 850,
        "y": 120,
        "wires": []
    }
]

 

Zeitmesser

Visitorcounter

Heute 13

Gestern 30

Woche 78

Monat 562

Insgesamt 11959