[ { "id": "18025bad2123c860", "type": "function", "z": "f871887bedfe6c15", "name": "Inverter Automatic", "func": " var SOMMER;\n var TAG;\n var NACHT;\n var ABEND;\n var MORGEN;\n var AUTO = context.AUTO;\n var MP = context.MP;\n var DATE = new Date();\n var DATE1 = context.DATE;\n var SOC = global.get(\"SOC\");\n var SOLL = global.get(\"SOLL\");\n var PV = global.get(\"PV\");\n var HAND = context.HAND;\n var STUNDE = DATE.getHours();\n var MONAT = DATE.getMonth()+1;\n var JAHR = DATE.getFullYear();\n switch (msg.topic) {\n case \"handsteuerung\":\n HAND = msg.payload;\n break;\n }\n SOMMER = (MONAT>3 && MONAT<10);\n NACHT = (STUNDE<7 || STUNDE>20);\n TAG = (STUNDE>9 && STUNDE<19);\n ABEND = (STUNDE>80);\n MORGEN=STUNDE>8 && STUNDE<11;\nif ( HAND==0 || ((SOC<20 && !AUTO) || (AUTO && SOC<25)) || ((SOC>90 && !AUTO)||(AUTO && SOC>80)) ) {\n AUTO = true;\n // mp = 2 Inverter on\n if (SOMMER) {\n if (SOC<30) MP=3;\n else if (SOC>35 && PV>1000) MP=2;\n } else {\n if (SOC3500 && SOLL>20) MP=2;\n else if (SOLL>40 && PV>2000) MP=2;\n else if (SOC>SOLL-5 && PV>2000) MP=2;\n else if (SOC>SOLL+10 && TAG) MP=2;\n else if (SOC>SOLL+30 && NACHT) MP=2;\n else if (SOC>SOLL+15 && MORGEN) MP=2;\n }\n} else {\n MP = HAND;\n AUTO=false;\n}\n if (context.MP!=MP && HAND==0) {\n var SEK = (DATE.getTime()-DATE1.getTime())/1000;\n SOC1=(context.SOC1-SOC);\n var MP1=MP;\n if (((SEK<1800 && SOC1<5 && SOC1>-5) || (SOC1<=2 && SOC1>=-2)) && HAND==0 && SOC>20) {\n MP=context.MP;\n } else {\n context.DATE=DATE;\n context.SOC1=SOC;\n }\n node.warn(\"Time: \"+SEK+\" MP neu: \"+MP1+\" MP alt: \"+context.MP+\" MP: \"+MP+\" SOC: \"+SOC+\" SOC1: \"+SOC1+\" PV: \"+PV)\n }\n context.MP = MP;\n global.set(\"MP\",MP);\n context.AUTO = AUTO;\n context.HAND = HAND;\n//node.warn(\"HAND: \"+HAND+\" SOC: \"+SOC+\" MP: \"+MP+\" AUTO: \"+AUTO+\" msg:\"+msg.payload+\" Topic: \"+msg.topic);\n// node.warn(\"Sommer: \"+SOMMER);\n// node.warn(\"Stunde \"+STUNDE);\n msg.payload = MP;\n msg.SOMMER = SOMMER;\n msg.NACHT = NACHT;\n msg.PV = PV;\nreturn msg;\n", "outputs": 1, "noerr": 0, "initialize": "// Der Code hier wird ausgeführt,\n// wenn der Node gestartet wird\ncontext.MP=2;\ncontext.DATE = new Date();\ncontext.HAND=0;\ncontext.SOC=0;\ncontext.SOC1=0;\ncontext.PV=0;\ncontext.AUTO=false;\ncontext.SOLL=30;\n//context.TIMER = New Date();\n", "finalize": "", "libs": [], "x": 490, "y": 220, "wires": [ [ "357e605774995ef0", "b800ca85da670309" ] ] }, { "id": "357e605774995ef0", "type": "victron-output-vebus", "z": "f871887bedfe6c15", "service": "com.victronenergy.vebus.ttyS4", "path": "/Mode", "serviceObj": { "service": "com.victronenergy.vebus.ttyS4", "name": "multiplus_2", "paths": [ { "path": "/Ac/ActiveIn/CurrentLimit", "type": "float", "name": "Active input current limit (A)", "writable": true }, { "path": "/Ac/In/1/CurrentLimit", "type": "float", "name": "Input 1 current limit (A)", "writable": true }, { "path": "/Mode", "type": "enum", "name": "Switch Position", "enum": { "1": "Charger Only", "2": "Inverter Only", "3": "On", "4": "Off" }, "writable": true }, { "path": "/Soc", "type": "float", "name": "VE.Bus state of charge (%)", "writable": true }, { "path": "/SystemReset", "type": "enum", "name": "VE.Bus Reset", "enum": { "0": "No", "1": "Yes" }, "writable": true } ] }, "pathObj": { "path": "/Mode", "type": "enum", "name": "Switch Position", "enum": { "1": "Charger Only", "2": "Inverter Only", "3": "On", "4": "Off" }, "writable": true }, "initial": "3", "name": "", "x": 760, "y": 220, "wires": [] }, { "id": "b800ca85da670309", "type": "change", "z": "f871887bedfe6c15", "name": "Status Umwandlung", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "Charger Only", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "2", "fromt": "num", "to": "Inverter Only", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "3", "fromt": "num", "to": "On", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "4", "fromt": "num", "to": "Off", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 740, "y": 180, "wires": [ [ "45da94bc59a766b4" ] ] }, { "id": "45da94bc59a766b4", "type": "ui_text", "z": "f871887bedfe6c15", "group": "050ca3972d372a0e", "order": 11, "width": "3", "height": "1", "name": "", "label": "Multiplus Set", "format": "{{msg.payload}}", "layout": "row-spread", "className": "", "x": 950, "y": 180, "wires": [] }, { "id": "050ca3972d372a0e", "type": "ui_group", "name": "Multiplus II", "tab": "0789bfe512fc16d1", "order": 4, "disp": true, "width": "6", "collapse": false, "className": "" }, { "id": "0789bfe512fc16d1", "type": "ui_tab", "name": "Uebersicht", "icon": "dashboard", "order": 1, "disabled": false, "hidden": false } ]