[ { "id": "172866a9820f49e3", "type": "tab", "label": "controller_calibration_charge", "disabled": false, "info": "", "env": [] }, { "id": "58aeeaac02a3a4c7", "type": "tab", "label": "Innovenergy Controller", "disabled": false, "info": "", "env": [] }, { "id": "449f3115316b1767", "type": "tab", "label": "parse_warnings_and_alarms", "disabled": false, "info": "", "env": [] }, { "id": "9744d7fd57e81fe3", "type": "tab", "label": "Node Red Dashboard", "disabled": false, "info": "", "env": [] }, { "id": "victron-client-id", "type": "victron-client", "showValues": true, "contextStore": true }, { "id": "e177392401620838", "type": "ui_group", "name": "Controller and Battery Info", "tab": "157862d37ae585b5", "order": 2, "disp": true, "width": "13", "collapse": false, "className": "" }, { "id": "157862d37ae585b5", "type": "ui_tab", "name": "Home", "icon": "check", "disabled": false, "hidden": false }, { "id": "e0e675d533a148b7", "type": "ui_base", "theme": { "name": "theme-light", "lightTheme": { "default": "#0094CE", "baseColor": "#0094CE", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif", "edited": true, "reset": false }, "darkTheme": { "default": "#097479", "baseColor": "#097479", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif", "edited": false }, "customTheme": { "name": "Untitled Theme 1", "default": "#4B7930", "baseColor": "#4B7930", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif", "reset": false }, "themeState": { "base-color": { "default": "#0094CE", "value": "#0094CE", "edited": false }, "page-titlebar-backgroundColor": { "value": "#0094CE", "edited": false }, "page-backgroundColor": { "value": "#fafafa", "edited": false }, "page-sidebar-backgroundColor": { "value": "#ffffff", "edited": false }, "group-textColor": { "value": "#1bbfff", "edited": false }, "group-borderColor": { "value": "#ffffff", "edited": false }, "group-backgroundColor": { "value": "#ffffff", "edited": false }, "widget-textColor": { "value": "#111111", "edited": false }, "widget-backgroundColor": { "value": "#0094ce", "edited": false }, "widget-borderColor": { "value": "#ffffff", "edited": false }, "base-font": { "value": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif" } }, "angularTheme": { "primary": "indigo", "accents": "blue", "warn": "red", "background": "grey", "palette": "light" } }, "site": { "name": "Node-RED Dashboard", "hideToolbar": "false", "allowSwipe": "false", "lockMenu": "false", "allowTempTheme": "true", "dateFormat": "DD/MM/YYYY", "sizes": { "sx": 48, "sy": 48, "gx": 6, "gy": 6, "cx": 6, "cy": 6, "px": 0, "py": 0 } } }, { "id": "3290bd5996bd3175", "type": "ui_group", "name": "Easy Input", "tab": "157862d37ae585b5", "order": 3, "disp": true, "width": 13, "collapse": false, "className": "" }, { "id": "d610b26df84f336e", "type": "ui_group", "name": "Calibration Charge", "tab": "157862d37ae585b5", "order": 1, "disp": true, "width": "13", "collapse": false, "className": "" }, { "id": "0a24f718e758d2a9", "type": "ui_switch", "z": "172866a9820f49e3", "name": "Start Calibration Charge Now", "label": "Start Calibration Charge Now", "tooltip": "", "group": "d610b26df84f336e", "order": 5, "width": 0, "height": 0, "passthru": true, "decouple": "false", "topic": "#:(file)::start_calibration_charge_now_button", "topicType": "global", "style": "", "onvalue": "true", "onvalueType": "bool", "onicon": "", "oncolor": "", "offvalue": "false", "offvalueType": "bool", "officon": "", "offcolor": "", "animate": false, "className": "", "x": 2440, "y": 100, "wires": [ [ "51c9f1ddaeb25f25", "e41f78fc126646c2" ] ] }, { "id": "51c9f1ddaeb25f25", "type": "switch", "z": "172866a9820f49e3", "name": "Button is on", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 2670, "y": 100, "wires": [ [ "e78b1ea309a603a6" ] ] }, { "id": "f020fbc3bd8d0451", "type": "switch", "z": "172866a9820f49e3", "name": "Need to do calibration charge or not", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0", "vt": "num" }, { "t": "eq", "v": "1", "vt": "num" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 1620, "y": 240, "wires": [ [ "68751648fdf25a8c", "4b29ed333812c24a", "92c2d1b3e084decd", "1c9f62ea01d98941" ], [ "9f12c0b1b50b4ce1", "652a29107ef4c403" ], [ "26b43f1b059c7c77", "281c467e3b39527d" ] ] }, { "id": "f43f9fdbb0ed174c", "type": "ui_text", "z": "172866a9820f49e3", "group": "d610b26df84f336e", "order": 2, "width": 0, "height": 0, "name": "Time To Calibration Charge", "label": "Time To Calibration Charge", "format": "{{msg.payload}}", "layout": "row-spread", "className": "", "style": false, "font": "", "fontSize": 16, "color": "#000000", "x": 3360, "y": 420, "wires": [] }, { "id": "fa6c2442f6246ea7", "type": "ui_text_input", "z": "172866a9820f49e3", "name": "Calibration Charge Start Time (hh:mm)", "label": "Calibration Charge Start Time (hh:mm:ss.sss)", "tooltip": "", "group": "d610b26df84f336e", "order": 4, "width": 0, "height": 0, "passthru": true, "mode": "time", "delay": "0", "topic": "#:(file)::calibration_charge_start_time", "sendOnBlur": false, "className": "", "topicType": "global", "x": 510, "y": 80, "wires": [ [ "3240485c8287ba94" ] ] }, { "id": "e41f78fc126646c2", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::start_calibration_charge_now_button", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2780, "y": 40, "wires": [ [ "dc2cc7ea2fa34e60" ] ] }, { "id": "dc2cc7ea2fa34e60", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for calibration button", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3180, "y": 40, "wires": [] }, { "id": "3240485c8287ba94", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::calibration_charge_start_time", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 80, "wires": [ [ "9777d2795825c36e" ] ] }, { "id": "e78b1ea309a603a6", "type": "change", "z": "172866a9820f49e3", "name": "Set \"Calibration charge now\" to Time To CalibrationCharge", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "Calibration charge now", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3010, "y": 100, "wires": [ [ "f43f9fdbb0ed174c" ] ] }, { "id": "f2947dcdf2aaa2d7", "type": "victron-input-custom", "z": "172866a9820f49e3", "service": "com.victronenergy.settings", "path": "/Settings/Controller/LastEOC", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/Controller/LastEOC", "name": "/Settings/Controller/LastEOC", "type": "number" }, "name": "", "onlyChanges": false, "x": 550, "y": 280, "wires": [ [ "ce55ad5eec4e4fcd", "520ed5df0f889c12" ] ] }, { "id": "92c2d1b3e084decd", "type": "change", "z": "172866a9820f49e3", "name": "Get current timestamp to update LastEoc", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "", "tot": "date" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2140, "y": 200, "wires": [ [ "e316195db1497dd6" ] ] }, { "id": "a7cf225ccec6aceb", "type": "victron-output-custom", "z": "172866a9820f49e3", "service": "com.victronenergy.settings", "path": "/Settings/Controller/LastEOC", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/Controller/LastEOC", "name": "/Settings/Controller/LastEOC", "type": "number" }, "name": "", "onlyChanges": false, "x": 2790, "y": 200, "wires": [] }, { "id": "e316195db1497dd6", "type": "function", "z": "172866a9820f49e3", "name": "Millisecond_to_second", "func": "current_timestamp_in_second=Math.floor(msg.payload/1000);\nmsg.payload = current_timestamp_in_second;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2440, "y": 200, "wires": [ [ "a7cf225ccec6aceb" ] ] }, { "id": "2e11958f0143dec0", "type": "comment", "z": "172866a9820f49e3", "name": "EOC reached ", "info": "", "x": 1890, "y": 220, "wires": [] }, { "id": "877947e6fd87acc6", "type": "comment", "z": "172866a9820f49e3", "name": "Do calibration charge now", "info": "", "x": 2270, "y": 400, "wires": [] }, { "id": "a5e4b756a68c1b09", "type": "comment", "z": "172866a9820f49e3", "name": "Still some time left to do calibration charge", "info": "", "x": 2280, "y": 600, "wires": [] }, { "id": "2f1db37da138e532", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for calibration charge function", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload.count", "statusType": "auto", "x": 1630, "y": 140, "wires": [] }, { "id": "4b29ed333812c24a", "type": "change", "z": "172866a9820f49e3", "name": "EOC reached", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "EOC reached", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2060, "y": 240, "wires": [ [ "f43f9fdbb0ed174c" ] ] }, { "id": "9f12c0b1b50b4ce1", "type": "change", "z": "172866a9820f49e3", "name": "Calibration charge now", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "Calibration charge now", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2520, "y": 420, "wires": [ [ "f43f9fdbb0ed174c" ] ] }, { "id": "329547301dcbd8fd", "type": "ui_dropdown", "z": "172866a9820f49e3", "name": "Calibration Charge Day", "label": "Calibration Charge Day", "tooltip": "", "place": "", "group": "d610b26df84f336e", "order": 3, "width": 0, "height": 0, "passthru": true, "multiple": false, "options": [ { "label": "Sunday", "value": 0, "type": "num" }, { "label": "Monday", "value": 1, "type": "num" }, { "label": "Tuesday", "value": 2, "type": "num" }, { "label": "Wednesday", "value": 3, "type": "num" }, { "label": "Thursday", "value": 4, "type": "num" }, { "label": "Friday", "value": 5, "type": "num" }, { "label": "Saturday", "value": 6, "type": "num" } ], "payload": "", "topic": "#:(file)::calibration_charge_weekday", "topicType": "global", "className": "", "x": 510, "y": 180, "wires": [ [ "1c86e1cdef14e122" ] ] }, { "id": "1c86e1cdef14e122", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::calibration_charge_start_weekday", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 890, "y": 180, "wires": [ [ "9777d2795825c36e" ] ] }, { "id": "ce55ad5eec4e4fcd", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for LastEOC", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 970, "y": 320, "wires": [] }, { "id": "b72b6b4568f60ba4", "type": "inject", "z": "172866a9820f49e3", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "#:(file)::calibration_charge_start_time", "payloadType": "global", "x": 150, "y": 80, "wires": [ [ "fa6c2442f6246ea7" ] ] }, { "id": "3b641a3d5b50366c", "type": "inject", "z": "172866a9820f49e3", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "#:(file)::calibration_charge_start_weekday", "payloadType": "global", "x": 160, "y": 180, "wires": [ [ "329547301dcbd8fd" ] ] }, { "id": "841f883bd864e9eb", "type": "inject", "z": "172866a9820f49e3", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "5", "crontab": "", "once": true, "onceDelay": "0", "topic": "", "payload": "#:(file)::start_calibration_charge_now_button", "payloadType": "global", "x": 2030, "y": 80, "wires": [ [ "0a24f718e758d2a9" ] ] }, { "id": "9777d2795825c36e", "type": "function", "z": "172866a9820f49e3", "name": "Cal time left to do calibration charge", "func": "// Get minutes per day\nvar minutes_per_day = 1440;\n\n// Cal maximum minutes without calibration charge\nvar max_days_wihthout_EOC = 7;\nmax_minutes_without_EOC = max_days_wihthout_EOC*minutes_per_day;\n\n// Get LastEOC for the last EOC reached battery\nLastEOC =global.get('LastEOC','file');\n\n// Get EOC reached status for all batteries\nEOCReached_list = global.get('EOCReached','file');\n\nif (EOCReached_list.every(item => item === true)){// all batteries reach EOC\n msg.payload=0; // stop calibration charge\n return msg;\n}\n\n// Get calibration charge time (hh:mm) from user setting via Node Red Dashboard\nif(global.get('calibration_charge_start_time','file')!= null){\n minutes_from_midnight_calibration_charge = Math.floor(global.get('calibration_charge_start_time','file'));\n}else{\n minutes_from_midnight_calibration_charge = 32400000;//default value from 09:00\n}\n\n// Get calibration charge weekday from user setting via Node Red Dashboard\nif(global.get('calibration_charge_start_weekday','file')!=null){\n weekday_calibration_charge = global.get('calibration_charge_start_weekday','file');\n}else{\n weekday_calibration_charge = 0;//default value from Sunday\n}\n\n// Cal next calibration time\nfunction nextScheduleDay(adate, w) {\n var daysToAdd = (w - adate.getDay() + 7) % 7;\n var nextDate = new Date(adate);\n nextDate.setDate(adate.getDate() + daysToAdd);\n nextDate.setHours(0);\n nextDate.setMinutes(0);\n nextDate.setSeconds(0);\n return nextDate;\n}\n\n// Main function\nfunction chargeWindows(currentTime, weekday, starttime, LastEOC) {\n var d1 = nextScheduleDay(currentTime, weekday);\n\n // Convert starttime to a Date object\n var startTime = new Date(starttime);\n\n // Calculate the next ScheduleDay considering if the sum of timeToTOC and timeLeftMinutes is less than 7 days\n var timeLeftMinutes = Math.floor(((d1.getTime() + starttime)/1000-LastEOC)/60);\n\n if ( timeLeftMinutes < 6* minutes_per_day) {\n // If the sum is less than 7 days and larger than 1 day, push next ScheduleDay to next week\n d1.setDate(d1.getDate() + 7);\n }\n\n var startDateTimeD1 = new Date(d1);\n startDateTimeD1.setHours(startTime.getUTCHours(), startTime.getUTCMinutes(), 0, 0);\n\n // Check if current time is within the charge window\n if (currentTime < startDateTimeD1) {\n // Calculate time left until the end of the window\n var timeLeftMillis = startDateTimeD1 - currentTime;\n var daysLeft = Math.floor(timeLeftMillis / (1000 * 60 * 60 * 24));\n var hoursLeft = Math.floor((timeLeftMillis % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n var minutesLeft = Math.ceil((timeLeftMillis % (1000 * 60 * 60)) / (1000 * 60));\n \n days_str = (daysLeft > 0) ? (daysLeft + \"d\") : \"\";\n hours_str = (hoursLeft > 0) ? (hoursLeft + \"h\") : \"\";\n minutes_str = (minutesLeft > 0) ? (minutesLeft + \"m\") : \"\";\n \n time_to_calibration_str = days_str+hours_str+minutes_str;\n\n return time_to_calibration_str; // still some time left to do calibration charge\n } else {\n return 1; // it's time to do calibration charge\n }\n}\n\nvar today = new Date(); // Assuming today's date\nvar timeLeft = chargeWindows(today, weekday_calibration_charge, minutes_from_midnight_calibration_charge, LastEOC);\n\nmsg.payload = timeLeft;\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1280, "y": 200, "wires": [ [ "2f1db37da138e532", "f020fbc3bd8d0451" ] ] }, { "id": "68751648fdf25a8c", "type": "function", "z": "172866a9820f49e3", "name": "Turn off calibration charge now button when EOC", "func": "if(global.get('start_calibration_charge_now_button','file')==true)\n{\n msg.payload = false;\n}else{\n msg.payload = false;\n}\n\nreturn msg;\n\n", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2090, "y": 140, "wires": [ [ "0a24f718e758d2a9" ] ] }, { "id": "26b43f1b059c7c77", "type": "function", "z": "172866a9820f49e3", "name": "Check whether the calibration charge now button is on", "func": "if(global.get('start_calibration_charge_now_button','file')==true)\n{\n text= \"Calibration charge now\";\n}else{\n text = msg.payload;\n}\nmsg.payload = text;\n\nreturn msg;\n", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2620, "y": 660, "wires": [ [ "f43f9fdbb0ed174c" ] ] }, { "id": "520ed5df0f889c12", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::LastEOC", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 970, "y": 260, "wires": [ [ "9777d2795825c36e" ] ] }, { "id": "652a29107ef4c403", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::start_calibration_charge_now", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2580, "y": 460, "wires": [ [ "f5bba4f7a2152d29" ] ] }, { "id": "1f497b3cf623d247", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::start_calibration_charge_now", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2980, "y": 720, "wires": [ [ "edf42d9f5ebd6332" ] ] }, { "id": "281c467e3b39527d", "type": "change", "z": "172866a9820f49e3", "name": "set global.start_calibration_charge_now to 0", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2590, "y": 720, "wires": [ [ "1f497b3cf623d247" ] ] }, { "id": "1c9f62ea01d98941", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::start_calibration_charge_now", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2420, "y": 240, "wires": [ [ "8a1706f0a4eed2ac" ] ] }, { "id": "8a1706f0a4eed2ac", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for calibration", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 2720, "y": 240, "wires": [] }, { "id": "f5bba4f7a2152d29", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for calibration", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 2860, "y": 460, "wires": [] }, { "id": "edf42d9f5ebd6332", "type": "debug", "z": "172866a9820f49e3", "name": "Debug for calibration", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3300, "y": 720, "wires": [] }, { "id": "8a45f7d38dde66b3", "type": "victron-input-custom", "z": "172866a9820f49e3", "service": "com.victronenergy.battery/1", "path": "/EOCReached", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/EOCReached", "name": "/EOCReached", "type": "object" }, "name": "", "onlyChanges": false, "x": 420, "y": 400, "wires": [ [ "45c35e2b5c560d3e" ] ] }, { "id": "45c35e2b5c560d3e", "type": "function", "z": "172866a9820f49e3", "name": "Parse EOCReached list", "func": "EOCReched_list = [];\n\nEOCReached = msg.payload;\n\n//equals to the number of battery\nn=EOCReached.length;\n\nfor (i = 0; i < n; i++) {\n EOCReched_list.push(EOCReached[i][1][0]);\n}\n\nmsg.payload = EOCReched_list;\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 710, "y": 400, "wires": [ [ "ee9ba7412a0f3ebf" ] ] }, { "id": "ee9ba7412a0f3ebf", "type": "change", "z": "172866a9820f49e3", "name": "", "rules": [ { "t": "set", "p": "#:(file)::EOCReached", "pt": "global", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 950, "y": 400, "wires": [ [ "9777d2795825c36e" ] ] }, { "id": "2e3be5eb090fdd73", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "name": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "type": "number" }, "name": "", "onlyChanges": false, "x": 310, "y": 200, "wires": [ [ "4f65d582fda98737" ] ] }, { "id": "4f65d582fda98737", "type": "change", "z": "58aeeaac02a3a4c7", "name": "min_soc", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "min_soc", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 680, "y": 200, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "ef77ee764778ffbe", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/Dc/0/Power", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "com.victronenergy.battery (1)" }, "pathObj": { "path": "/Dc/0/Power", "name": "/Dc/0/Power", "type": "number" }, "name": "", "onlyChanges": false, "x": 200, "y": 260, "wires": [ [ "11f86fe39b580847" ] ] }, { "id": "11f86fe39b580847", "type": "change", "z": "58aeeaac02a3a4c7", "name": "battery_power", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "battery_power", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 260, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "464455af5139ee7f", "type": "join", "z": "58aeeaac02a3a4c7", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "18", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 980, "y": 420, "wires": [ [ "4f18dc53efd7160c" ] ] }, { "id": "709a15b9236b4bb4", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L1_AcPowerSetpoint", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L1_AcPowerSetpoint", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 760, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "50510b712eae0e61", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L2_AcPowerSetpoint", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L2_AcPowerSetpoint", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 840, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "3cef16a03dd3e544", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L3_AcPowerSetpoint", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L3_AcPowerSetpoint", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 920, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "d0ef21f7ad8bb7e8", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/Info/MaxChargePower", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "com.victronenergy.battery (1)" }, "pathObj": { "path": "/Info/MaxChargePower", "name": "/Info/MaxChargePower", "type": "number" }, "name": "", "onlyChanges": false, "x": 240, "y": 320, "wires": [ [ "3d579fc76adc2ef1" ] ] }, { "id": "59bc7383091afa19", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/MaxChargePower", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/MaxChargePower", "name": "/Settings/CGwacs/MaxChargePower", "type": "number" }, "name": "", "onlyChanges": false, "x": 270, "y": 380, "wires": [ [ "85210ce266308ef5" ] ] }, { "id": "3d579fc76adc2ef1", "type": "change", "z": "58aeeaac02a3a4c7", "name": "max_battery_charge_power", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "max_battery_charge_power", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 320, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "85210ce266308ef5", "type": "change", "z": "58aeeaac02a3a4c7", "name": "max_configured_charge_power", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "max_configured_charge_power", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 650, "y": 380, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "b02c86727cdd38f1", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/LowestSoc", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/LowestSoc", "name": "/LowestSoc", "type": "number" }, "name": "", "onlyChanges": false, "x": 170, "y": 140, "wires": [ [ "0f2babd5674b678d" ] ] }, { "id": "0f2babd5674b678d", "type": "change", "z": "58aeeaac02a3a4c7", "name": "lowest_soc", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "lowest_soc", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 510, "y": 140, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "077dbfcbe7cdd57c", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/NumOfBatteries", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/NumOfBatteries", "name": "/NumOfBatteries", "type": "number" }, "name": "", "onlyChanges": false, "x": 190, "y": 80, "wires": [ [ "350ade5849cfef37" ] ] }, { "id": "350ade5849cfef37", "type": "change", "z": "58aeeaac02a3a4c7", "name": "num_batteries", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "num_batteries", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 460, "y": 80, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "2066c1a0f48b4e2c", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Get corrected inverter power setpoint", "func": "msg.payload = msg.payload.inverter_setpower;\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2690, "y": 380, "wires": [ [ "cff4cb998f39466b", "4ad6bb1ca25ee32a", "44d34af9d1e68b87", "d4ab83f8c5fbbd6d" ] ] }, { "id": "49537ad0e4d9df8a", "type": "victron-output-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/Hub4Mode", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/Hub4Mode", "name": "/Settings/CGwacs/Hub4Mode", "type": "number" }, "name": "", "onlyChanges": false, "x": 3110, "y": 600, "wires": [] }, { "id": "b4b77872b62e2859", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Get ESS mode", "func": "msg.payload = msg.payload.ess_mode;\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2620, "y": 600, "wires": [ [ "49537ad0e4d9df8a", "97a1f6a992a29081" ] ] }, { "id": "97a1f6a992a29081", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "Debug for ESS mode", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3000, "y": 680, "wires": [] }, { "id": "ab6599f35fcbdbe6", "type": "change", "z": "58aeeaac02a3a4c7", "name": "PVs_Power", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "PVs_Power", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1320, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "addbeff162b8a3af", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.system/0", "path": "/Dc/Pv/Power", "serviceObj": { "service": "com.victronenergy.system/0", "name": "com.victronenergy.system (0)" }, "pathObj": { "path": "/Dc/Pv/Power", "name": "/Dc/Pv/Power", "type": "number" }, "name": "", "onlyChanges": false, "x": 210, "y": 1320, "wires": [ [ "ab6599f35fcbdbe6" ] ] }, { "id": "f3cd46b93ff1e4f8", "type": "victron-output-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/BatteryLife/State", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/BatteryLife/State", "name": "/Settings/CGwacs/BatteryLife/State", "type": "number" }, "name": "", "onlyChanges": false, "x": 3130, "y": 740, "wires": [] }, { "id": "4557b1dedb6f1222", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "Battery Related Info", "info": "", "x": 130, "y": 20, "wires": [] }, { "id": "7f963f0a2d2c6e74", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "Ac Power Setpoint", "info": "", "x": 130, "y": 720, "wires": [] }, { "id": "bff640c85ce35e30", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "Ac Out", "info": "", "x": 90, "y": 1000, "wires": [] }, { "id": "7538736cb44e6df3", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "PV Power", "info": "", "x": 100, "y": 1260, "wires": [] }, { "id": "2d500c6d04672fb7", "type": "victron-output-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/MaxDischargePower", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/MaxDischargePower", "name": "/Settings/CGwacs/MaxDischargePower", "type": "number" }, "name": "", "onlyChanges": false, "x": 3140, "y": 200, "wires": [] }, { "id": "376d4eea80df1146", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "Debug for max inverter discharge power", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3060, "y": 260, "wires": [] }, { "id": "e121ac014fa242c5", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Get max inverter discharge power", "func": "msg.payload = msg.payload.max_inverter_discharge_power;\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2680, "y": 260, "wires": [ [ "2d500c6d04672fb7", "376d4eea80df1146" ] ] }, { "id": "d2d01224ca8ace19", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "Max Discharge Power of Inverter(Battery+PV)", "info": "", "x": 3070, "y": 160, "wires": [] }, { "id": "9b93fb5a4717969a", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Battery Controller", "func": "// get inverter num of phases\nif(msg.payload.num_phases == null){\n num_phases = 10000000000;// mimic to make power setpoint be 0 when there is no inverter phase there \n}else{\n num_phases = msg.payload.num_phases;\n}\n\n// get max charge power\nif(msg.payload.max_configured_charge_power == null ||msg.payload.max_configured_charge_power<0){\n max_charge_power=msg.payload.max_battery_charge_power;\n}else{\n max_charge_power=Math.min(msg.payload.max_configured_charge_power,msg.payload.max_battery_charge_power);\n}\n\n// get battery number\nif(msg.payload.num_batteries == null){\n n_batteries = 0;\n}else{\n n_batteries = msg.payload.num_batteries;\n}\n\n// get current battery power\nif(msg.payload.battery_power == null){\n battery_power = 0;\n}else{\n battery_power = msg.payload.battery_power;\n}\n\n// get current power setpoint\nif(msg.payload.L1_AcPowerSetpoint == null){\n L1_AcPowerSetpoint = 0;\n}else{\n L1_AcPowerSetpoint=msg.payload.L1_AcPowerSetpoint;\n}\n\nif(msg.payload.L2_AcPowerSetpoint == null){\n L2_AcPowerSetpoint = 0;\n}else{\n L2_AcPowerSetpoint=msg.payload.L2_AcPowerSetpoint;\n}\n\nif(msg.payload.L3_AcPowerSetpoint == null){\n L3_AcPowerSetpoint = 0;\n}else{\n L3_AcPowerSetpoint=msg.payload.L3_AcPowerSetpoint;\n}\n\ninverter_power_setpoint= L1_AcPowerSetpoint+L2_AcPowerSetpoint+L3_AcPowerSetpoint;\n\n// get AC Out whihc is critical loads\nif(msg.payload.L1_AC_Out == null ||msg.payload.L2_AC_Out == null || msg.payload.L3_AC_Out == null){\n AC_out=0;\n}else{\n AC_out = msg.payload.L1_AC_Out + msg.payload.L2_AC_Out+msg.payload.L3_AC_Out;\n}\n\n// get PV production\nif(msg.payload.PVs_Power == null){\n PV_production = 0;\n}else{\n PV_production = msg.payload.PVs_Power;\n}\n\n// cal calculated max inverter power based on limb strings<=1 and DC Bus voltage >=44V when discharging, further details in flow 3\nconfigured_max_inverter_power = num_phases*10000;//3000W for each phase\nmax_discharge_current_batteries = 15*(5*n_batteries-msg.payload.num_limb_string);\nDC_BUS_Voltage = msg.payload.DC_BUS_Voltage;\n\nif(44.1 value === true)){ // heat battery controller\n inverter_setpower = AC_out+max_charge_power;\n max_inverter_discharge_power = PV_production;\n ess_mode =3;\n controller_info = \"Heat Battery\";\n}else{// ESS self-consumption controller\n inverter_setpower = inverter_power_setpoint;\n max_inverter_discharge_power = cal_max_inverter_discharge_power;\n ess_mode =1;\n controller_info = \"ESS self-consumption\";\n}\n\npowerperphase = Math.floor(inverter_setpower/num_phases);\n\nmsg.payload.inverter_setpower = powerperphase;\nmsg.payload.ess_mode = ess_mode;\nmsg.payload.controller_info = controller_info;\nmsg.payload.max_inverter_discharge_power = max_inverter_discharge_power;\nmsg.payload.batterylife_state = batterylife_state;\nmsg.payload.test = test;\n\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2030, "y": 400, "wires": [ [ "c40f347a74b9ef10", "b4b77872b62e2859", "8575f4390d7502bb", "2066c1a0f48b4e2c", "e121ac014fa242c5", "52f0fa857f1d3a3c", "283f5123601abd28" ] ] }, { "id": "cff4cb998f39466b", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "Debug for inverter setpower per phase", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3050, "y": 520, "wires": [] }, { "id": "cec2a974333eba22", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/BatteryLife/State", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/BatteryLife/State", "name": "/Settings/CGwacs/BatteryLife/State", "type": "number" }, "name": "", "onlyChanges": false, "x": 270, "y": 1420, "wires": [ [ "be763dce41576f9e" ] ] }, { "id": "38382b8faa6c7815", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.system/0", "path": "/Ac/ConsumptionOnOutput/L1/Power", "serviceObj": { "service": "com.victronenergy.system/0", "name": "com.victronenergy.system (0)" }, "pathObj": { "path": "/Ac/ConsumptionOnOutput/L1/Power", "name": "/Ac/ConsumptionOnOutput/L1/Power", "type": "number" }, "name": "", "onlyChanges": false, "x": 280, "y": 1060, "wires": [ [ "a1259e21e55c65c2" ] ] }, { "id": "d699d371b43d31bf", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.system/0", "path": "/Ac/ConsumptionOnOutput/L2/Power", "serviceObj": { "service": "com.victronenergy.system/0", "name": "com.victronenergy.system (0)" }, "pathObj": { "path": "/Ac/ConsumptionOnOutput/L2/Power", "name": "/Ac/ConsumptionOnOutput/L2/Power", "type": "number" }, "name": "", "onlyChanges": false, "x": 280, "y": 1120, "wires": [ [ "44e14a9bd8752baf" ] ] }, { "id": "673e40916f461638", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.system/0", "path": "/Ac/ConsumptionOnOutput/L3/Power", "serviceObj": { "service": "com.victronenergy.system/0", "name": "com.victronenergy.system (0)" }, "pathObj": { "path": "/Ac/ConsumptionOnOutput/L3/Power", "name": "/Ac/ConsumptionOnOutput/L3/Power", "type": "number" }, "name": "", "onlyChanges": false, "x": 280, "y": 1180, "wires": [ [ "152f4a870150b8cf" ] ] }, { "id": "a1259e21e55c65c2", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L1_AC_Out", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L1_AC_Out", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 1060, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "44e14a9bd8752baf", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L2_AC_Out", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L2_AC_Out", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 1120, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "152f4a870150b8cf", "type": "change", "z": "58aeeaac02a3a4c7", "name": "L3_AC_Out", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L3_AC_Out", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 1180, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "8e5473644f92db1a", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "BatteryLife State", "info": "", "x": 120, "y": 1380, "wires": [] }, { "id": "be763dce41576f9e", "type": "change", "z": "58aeeaac02a3a4c7", "name": "batterylife_state", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "batterylife_state", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 1420, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "ac1ab9c301afc8b1", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "Debug for batterylife state", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3010, "y": 800, "wires": [] }, { "id": "8575f4390d7502bb", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Get batterylife state", "func": "msg.payload = msg.payload.batterylife_state;\n//sg.payload = 10;\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 2630, "y": 740, "wires": [ [ "ac1ab9c301afc8b1", "f3cd46b93ff1e4f8" ] ] }, { "id": "e8fb7b9a4581ed30", "type": "change", "z": "58aeeaac02a3a4c7", "name": "num_phases", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "num_phases", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 610, "y": 1560, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "add21597ac06fa4e", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "Num of Phase", "info": "", "x": 110, "y": 1500, "wires": [] }, { "id": "5b2a12a31ab376c0", "type": "change", "z": "58aeeaac02a3a4c7", "name": "DC_BUS_Voltage", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "DC_BUS_Voltage", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 660, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "6053a5629faaab1a", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/NumOfLimbStrings", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/NumOfLimbStrings", "name": "/NumOfLimbStrings", "type": "object" }, "name": "", "onlyChanges": false, "x": 200, "y": 500, "wires": [ [ "714817160d66b48f" ] ] }, { "id": "73eb6ddddb8d3431", "type": "comment", "z": "58aeeaac02a3a4c7", "name": "DBus Voltage", "info": "", "x": 110, "y": 620, "wires": [] }, { "id": "fe54eaf69a7fe10f", "type": "switch", "z": "58aeeaac02a3a4c7", "name": "only_move_on_when_batteries_are_healthy", "property": "payload.num_limb_string", "propertyType": "msg", "rules": [ { "t": "gte", "v": "0", "vt": "str" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 1630, "y": 440, "wires": [ [ "9b93fb5a4717969a" ], [ "bcfea00921e46714", "ae0a6a009c8b9781" ] ] }, { "id": "714817160d66b48f", "type": "change", "z": "58aeeaac02a3a4c7", "name": "limb_string_list", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "limb_string_list", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 500, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "bcfea00921e46714", "type": "debug", "z": "58aeeaac02a3a4c7", "name": " >=2 limb strings", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 2020, "y": 540, "wires": [] }, { "id": "fcb98057e9e5a076", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "num_limb_string", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload.num_limb_string", "targetType": "msg", "statusVal": "payload.num_limb_string", "statusType": "auto", "x": 1540, "y": 480, "wires": [] }, { "id": "933a8eed519beb7a", "type": "ui_text", "z": "58aeeaac02a3a4c7", "group": "e177392401620838", "order": 3, "width": 0, "height": 0, "name": "", "label": "Battery Health", "format": "{{msg.payload.battery_health}}", "layout": "row-spread", "className": "", "style": false, "font": "Arial,Arial,Helvetica,sans-serif", "fontSize": "20", "color": "#000000", "x": 1540, "y": 360, "wires": [] }, { "id": "4f18dc53efd7160c", "type": "function", "z": "58aeeaac02a3a4c7", "name": "get_total_number_of_limb_strings", "func": "let total_num_limb_string=0;\nlimb_string_list = msg.payload.limb_string_list;\nmain_switch_state_list = msg.payload.main_switch_state;\nbattery_health = [];\nflag = 1;\nif (limb_string_list == null){\n msg.payload.battery_health = \"BMS connection lost!\";\n msg.payload.num_limb_string = -1\n return msg;\n}\n\nfor (let i = 0; i < limb_string_list.length; i++) {\n num_limb_string = limb_string_list[i][1][0];\n \n if(num_limb_string>1){\n flag = -1;\n }\n \n if(num_limb_string<=1){\n total_num_limb_string+=num_limb_string;\n }\n \n battery_health.push(\"Battery \"+(i+2)+\" has \" + num_limb_string+ \" limb strings.\");\n}\n\nconst updateNumLimbString = (total, flag) => flag === 1 ? total : -1;\nmsg.payload.num_limb_string = updateNumLimbString(total_num_limb_string, flag);\nmsg.payload.battery_health = battery_health;\n\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1240, "y": 420, "wires": [ [ "933a8eed519beb7a", "fcb98057e9e5a076", "9b93fb5a4717969a" ] ] }, { "id": "c40f347a74b9ef10", "type": "ui_text", "z": "58aeeaac02a3a4c7", "group": "e177392401620838", "order": 1, "width": 0, "height": 0, "name": "Controller Info", "label": "Controller Info", "format": "{{msg.payload.controller_info}}", "layout": "row-spread", "className": "", "style": false, "font": "Arial,Arial,Helvetica,sans-serif", "fontSize": "20", "color": "#000000", "x": 2620, "y": 160, "wires": [] }, { "id": "fbdb4518063f2fd0", "type": "victron-input-vebus", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Ac/NumberOfPhases", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Ac/NumberOfPhases", "type": "float", "name": "Phase count" }, "name": "", "onlyChanges": false, "x": 190, "y": 1560, "wires": [ [ "e8fb7b9a4581ed30" ] ] }, { "id": "52f0fa857f1d3a3c", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "Debug for controller info", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload.controller_info", "targetType": "msg", "statusVal": "payload.controller_info", "statusType": "auto", "x": 2650, "y": 200, "wires": [] }, { "id": "92ad8226f257785c", "type": "victron-input-vebus", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Dc/0/Voltage", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Dc/0/Voltage", "type": "float", "name": "Battery voltage (V)" }, "name": "", "onlyChanges": false, "roundValues": "0", "x": 210, "y": 660, "wires": [ [ "5b2a12a31ab376c0" ] ] }, { "id": "02257e9416d1a7fa", "type": "victron-input-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L1/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L1/AcPowerSetpoint", "type": "integer", "name": "AC Power L1 setpoint (W)" }, "name": "", "onlyChanges": false, "x": 230, "y": 760, "wires": [ [ "709a15b9236b4bb4" ] ] }, { "id": "f2117fb0ac8584e0", "type": "victron-input-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L2/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L2/AcPowerSetpoint", "type": "integer", "name": "AC Power L2 setpoint (W)" }, "name": "", "onlyChanges": false, "x": 230, "y": 840, "wires": [ [ "50510b712eae0e61" ] ] }, { "id": "4c40824190b88353", "type": "victron-input-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L3/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L3/AcPowerSetpoint", "type": "integer", "name": "AC Power L3 setpoint (W)" }, "name": "", "onlyChanges": false, "x": 230, "y": 920, "wires": [ [ "3cef16a03dd3e544" ] ] }, { "id": "d4ab83f8c5fbbd6d", "type": "victron-output-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L3/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L3/AcPowerSetpoint", "type": "integer", "name": "AC Power L3 setpoint (W)", "writable": true }, "name": "", "onlyChanges": false, "x": 3090, "y": 460, "wires": [] }, { "id": "44d34af9d1e68b87", "type": "victron-output-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L2/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L2/AcPowerSetpoint", "type": "integer", "name": "AC Power L2 setpoint (W)", "writable": true }, "name": "", "onlyChanges": false, "x": 3090, "y": 400, "wires": [] }, { "id": "4ad6bb1ca25ee32a", "type": "victron-output-ess", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.vebus/276", "path": "/Hub4/L1/AcPowerSetpoint", "serviceObj": { "service": "com.victronenergy.vebus/276", "name": "MultiGrid 48/3000/35-50" }, "pathObj": { "path": "/Hub4/L1/AcPowerSetpoint", "type": "integer", "name": "AC Power L1 setpoint (W)", "writable": true }, "name": "", "onlyChanges": false, "x": 3090, "y": 340, "wires": [] }, { "id": "283f5123601abd28", "type": "debug", "z": "58aeeaac02a3a4c7", "name": "power_to_hold_min_soc", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload.test", "targetType": "msg", "statusVal": "payload.test", "statusType": "auto", "x": 2360, "y": 160, "wires": [] }, { "id": "ae0a6a009c8b9781", "type": "change", "z": "58aeeaac02a3a4c7", "name": "Please replace battery first!", "rules": [ { "t": "set", "p": "payload.controller_info", "pt": "msg", "to": "Please replace battery first!", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2060, "y": 620, "wires": [ [ "c40f347a74b9ef10" ] ] }, { "id": "53bdfc638f96e640", "type": "victron-input-custom", "z": "58aeeaac02a3a4c7", "service": "com.victronenergy.battery/1", "path": "/BatteryCold", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/BatteryCold", "name": "/BatteryCold", "type": "object" }, "name": "", "onlyChanges": false, "x": 180, "y": 440, "wires": [ [ "4c26a8ddb2e1881c" ] ] }, { "id": "4c26a8ddb2e1881c", "type": "function", "z": "58aeeaac02a3a4c7", "name": "Parse BatteryCold list", "func": "BatteryCold_list = [];\n\nBatteryCold = msg.payload;\n\n//equals to the number of battery\nn=BatteryCold.length;\n\nfor (i = 0; i < n; i++) {\n BatteryCold_list.push(BatteryCold[i][1][0]);\n}\n\nmsg.payload = BatteryCold_list;\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 480, "y": 440, "wires": [ [ "0f50a64d808a5b06" ] ] }, { "id": "0f50a64d808a5b06", "type": "change", "z": "58aeeaac02a3a4c7", "name": "BatteryCold", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "BatteryCold", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 690, "y": 440, "wires": [ [ "464455af5139ee7f" ] ] }, { "id": "bf31818b5561403e", "type": "comment", "z": "449f3115316b1767", "name": "Parse Alarms: 26", "info": "", "x": 240, "y": 80, "wires": [] }, { "id": "6cfdcab40b355672", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/CME", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/CME", "name": "/AlarmFlags/CME", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 920, "wires": [ [ "48d69f82af0f511b" ] ] }, { "id": "0d3303a79e289d82", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/DATA", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/DATA", "name": "/AlarmFlags/DATA", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1480, "wires": [ [ "b0769222c0c81594" ] ] }, { "id": "563074cf40579013", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/FUSE", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/FUSE", "name": "/AlarmFlags/FUSE", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 680, "wires": [ [ "ea496aafa62fca89" ] ] }, { "id": "51b00c9cd2fbe1b1", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/HEBT", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/HEBT", "name": "/AlarmFlags/HEBT", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1580, "wires": [ [ "2687afa4a3fb4fdd" ] ] }, { "id": "70e342a4485f1343", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/HTFS", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/HTFS", "name": "/AlarmFlags/HTFS", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1440, "wires": [ [ "63715023d827fc1e" ] ] }, { "id": "23c6de3f75ca40f7", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/HTRE", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/HTRE", "name": "/AlarmFlags/HTRE", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 740, "wires": [ [ "48a80e06931ecc03" ] ] }, { "id": "22e2996f04a6a03b", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/HWEM", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/HWEM", "name": "/AlarmFlags/HWEM", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1040, "wires": [ [ "8b5302ef345a5ade" ] ] }, { "id": "9ae9fbd4b39b8fd9", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/HWFL", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/HWFL", "name": "/AlarmFlags/HWFL", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 980, "wires": [ [ "c6162a8cbc2fa1dc" ] ] }, { "id": "cc6841127ddbf006", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/IDM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/IDM2", "name": "/AlarmFlags/IDM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 500, "wires": [ [ "5da7a58078b2d992" ] ] }, { "id": "d60a6034a1e15ff7", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/ISOB", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/ISOB", "name": "/AlarmFlags/ISOB", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 560, "wires": [ [ "145932ec555401dd" ] ] }, { "id": "1617808449c51a48", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/LMPA", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/LMPA", "name": "/AlarmFlags/LMPA", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1540, "wires": [ [ "47401c80b95f2d5f" ] ] }, { "id": "211ea82f9826409d", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/MID2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/MID2", "name": "/AlarmFlags/MID2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1380, "wires": [ [ "52aa4d1b9994d41f" ] ] }, { "id": "324aea697f08ab86", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/MSWE", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/MSWE", "name": "/AlarmFlags/MSWE", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 620, "wires": [ [ "7020aeefc2b065f7" ] ] }, { "id": "2aef1941d39c2783", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/STRE", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/STRE", "name": "/AlarmFlags/STRE", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 860, "wires": [ [ "ea1c84dce431e761" ] ] }, { "id": "73fde116548e1d39", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/TCPE", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/TCPE", "name": "/AlarmFlags/TCPE", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 800, "wires": [ [ "f5dd3b77cf306c42" ] ] }, { "id": "c5eaf605d4d54f6d", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/TaM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/TaM2", "name": "/AlarmFlags/TaM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 200, "wires": [ [ "f0bd6424378e6521" ] ] }, { "id": "3e3a5c9dae5a45c8", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/Tam", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/Tam", "name": "/AlarmFlags/Tam", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 140, "wires": [ [ "651cbb5a7a3b7c86" ] ] }, { "id": "42e7c69a41b04403", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/TbM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/TbM2", "name": "/AlarmFlags/TbM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 320, "wires": [ [ "940370b80f41928c" ] ] }, { "id": "5e766a107066d90e", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/Tbm", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/Tbm", "name": "/AlarmFlags/Tbm", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 260, "wires": [ [ "fccbcd60339ffc71" ] ] }, { "id": "5d32609a7b711e03", "type": "function", "z": "449f3115316b1767", "name": "Parse_alarms_and_warnings", "func": "//battery health list\nbattery_health = [];\n\n//alarm list initialization\nTam_list = [];\nTaM2_list=[];\nTbm_list=[];\nTbM2_list=[];\nVBm2_list=[];\nVBM2_list=[];\nIDM2_list=[];\nISOB_list=[];\nMSWE_list=[];\nFUSE_list=[];\nHTRE_list=[];\nTCPE_list=[];\nSTRE_list=[];\nCME_list=[];\nHWFL_list=[];\nHWEM_list=[];\nThM_list=[];\nvsm2_list=[];\nvsM2_list=[];\niCM2_list=[];\niDM2_list=[];\nMID2_list=[];\nHTFS_list=[];\nDATA_list=[];\nLMPA_list=[];\nHEBT_list=[];\n\n//warning list initialization\nTaM1_list=[];\nTbM1_list=[];\nVBm1_list=[];\nVBM1_list=[];\nIDM1_list=[];\nvsm1_list=[];\nvsM1_list=[];\niCM1_list=[];\niDM1_list=[];\nMID1_list=[];\nBLPW_list=[];\nCCBF_list=[];\nAh_W_list=[];\nMPMM_list=[];\nTCdi_list=[];\nLMPW_list=[];\nTOCW_list=[];\n\n//read alarm data\nalarm_Tam = msg.payload.Tam;\nalarm_TaM2 = msg.payload.TaM2;\nalarm_Tbm = msg.payload.Tbm;\nalarm_TbM2 = msg.payload.TbM2;\nalarm_VBm2 = msg.payload.VBm2;\nalarm_VBM2 = msg.payload.VBM2;\nalarm_IDM2 = msg.payload.IDM2;\nalarm_ISOB = msg.payload.ISOB;\nalarm_MSWE = msg.payload.MSWE;\nalarm_FUSE = msg.payload.FUSE;\nalarm_HTRE = msg.payload.HTRE;\nalarm_TCPE = msg.payload.TCPE;\nalarm_STRE = msg.payload.STRE;\nalarm_CME = msg.payload.CME;\nalarm_HWFL = msg.payload.HWFL;\nalarm_HWEM = msg.payload.HWEM;\nalarm_ThM = msg.payload.ThM;\nalarm_vsm2 = msg.payload.vsm2;\nalarm_vsM2 = msg.payload.vsM2;\nalarm_iCM2 = msg.payload.iCM2;\nalarm_iDM2 = msg.payload.iDM2;\nalarm_MID2 = msg.payload.MID2;\nalarm_HTFS = msg.payload.HTFS;\nalarm_DATA = msg.payload.DATA;\nalarm_LMPA = msg.payload.LMPA;\nalarm_HEBT = msg.payload.HEBT;\n\n//read warning data\nwar_TaM1=msg.payload.TaM1;\nwar_TbM1=msg.payload.TbM1;\nwar_VBm1=msg.payload.VBm1;\nwar_VBM1=msg.payload.VBM1;\nwar_IDM1=msg.payload.IDM1;\nwar_vsm1=msg.payload.vsm1;\nwar_vsM1=msg.payload.vsM1;\nwar_iCM1=msg.payload.iCM1;\nwar_iDM1=msg.payload.iDM1;\nwar_MID1=msg.payload.MID1;\nwar_BLPW=msg.payload.BLPW;\nwar_CCBF=msg.payload.CCBF;\nwar_Ah_W=msg.payload.Ah_W;\nwar_MPMM=msg.payload.MPMM;\nwar_TCdi=msg.payload.TCdi;\nwar_LMPW=msg.payload.LMPW;\nwar_TOCW=msg.payload.TOCW;\n\n//equals to the number of battery\nif(alarm_Tam == null){\n msg.payload = \"Battery lost!\"\n return msg;\n}else{\n n=alarm_Tam.length;\n}\n\nfor (i = 0; i < n; i++) {\n Tam_list.push(alarm_Tam[i][1][0]);\n TaM2_list.push(alarm_TaM2[i][1][0]);\n Tbm_list.push(alarm_Tbm[i][1][0]);\n TbM2_list.push(alarm_TbM2[i][1][0]);\n VBm2_list.push(alarm_VBm2[i][1][0]);\n VBM2_list.push(alarm_VBM2[i][1][0]);\n IDM2_list.push(alarm_IDM2[i][1][0]);\n ISOB_list.push(alarm_ISOB[i][1][0]);\n MSWE_list.push(alarm_MSWE[i][1][0]);\n FUSE_list.push(alarm_FUSE[i][1][0]);\n HTRE_list.push(alarm_HTRE[i][1][0]);\n TCPE_list.push(alarm_TCPE[i][1][0]);\n STRE_list.push(alarm_STRE[i][1][0]);\n CME_list.push(alarm_CME[i][1][0]);\n HWFL_list.push(alarm_HWFL[i][1][0]);\n HWEM_list.push(alarm_HWEM[i][1][0]);\n ThM_list.push(alarm_ThM[i][1][0]);\n vsm2_list.push(alarm_vsm2[i][1][0]);\n vsM2_list.push(alarm_vsM2[i][1][0]);\n iCM2_list.push(alarm_iCM2[i][1][0]);\n iDM2_list.push(alarm_iDM2[i][1][0]);\n MID2_list.push(alarm_MID2[i][1][0]);\n HTFS_list.push(alarm_HTFS[i][1][0]);\n DATA_list.push(alarm_DATA[i][1][0]);\n LMPA_list.push(alarm_LMPA[i][1][0]);\n HEBT_list.push(alarm_HEBT[i][1][0]);\n \n TaM1_list.push(war_TaM1[i][1][0]);\n TbM1_list.push(war_TbM1[i][1][0]);\n VBm1_list.push(war_VBm1[i][1][0]);\n VBM1_list.push(war_VBM1[i][1][0]);\n IDM1_list.push(war_IDM1[i][1][0]);\n vsm1_list.push(war_vsm1[i][1][0]);\n vsM1_list.push(war_vsM1[i][1][0]);\n iCM1_list.push(war_iCM1[i][1][0]);\n iDM1_list.push(war_iDM1[i][1][0]);\n MID1_list.push(war_TaM1[i][1][0]);\n BLPW_list.push(war_BLPW[i][1][0]);\n CCBF_list.push(war_CCBF[i][1][0]);\n Ah_W_list.push(war_Ah_W[i][1][0]);\n MPMM_list.push(war_MPMM[i][1][0]);\n TCdi_list.push(war_TCdi[i][1][0]);\n LMPW_list.push(war_LMPW[i][1][0]);\n TOCW_list.push(war_TOCW[i][1][0]);\n}\n\nif(Tam_list.includes(true)){\n battery_health.push(\"Recoverable: BMS temperature too low\");\n}\n\nif(TaM2_list.includes(true)){\n battery_health.push(\"Recoverable: BMS temperature too high\");\n}\n\nif(Tbm_list.includes(true)){\n battery_health.push(\"Recoverable: Battery temperature too low\");\n}\n\nif(TbM2_list.includes(true)){\n battery_health.push(\"Recoverable: Battery temperature too high\");\n}\n\nif(VBm2_list.includes(true)){\n battery_health.push(\"Recoverable: Bus voltage too low\");\n}\n\nif(VBM2_list.includes(true)){\n battery_health.push(\"Recoverable: Bus voltage too high\");\n}\n\nif(IDM2_list.includes(true)){\n battery_health.push(\"Recoverable: Discharge current too high\");\n}\n\nif(ISOB_list.includes(true)){\n battery_health.push(\"Unrecoverable: Electrical insulation failure\");\n}\n\nif(MSWE_list.includes(true)){\n battery_health.push(\"Unrecoverable: Main switch failure\");\n}\n\nif(FUSE_list.includes(true)){\n battery_health.push(\"Unrecoverable: Main fuse blown\");\n}\n\nif(HTRE_list.includes(true)){\n battery_health.push(\"Recoverable: Battery failed to warm up\");\n}\n\nif(TCPE_list.includes(true)){\n battery_health.push(\"Unrecoverable: Temperature sensor failure\");\n}\n\nif(STRE_list.includes(true)){\n battery_health.push(\"Recoverable: Voltage measurement circuit fails\");\n}\n\nif(CME_list.includes(true)){\n battery_health.push(\"Recoverable: Current sensor failure\");\n} \n\nif(HWFL_list.includes(true)){\n battery_health.push(\"Recoverable: BMS hardware failure\");\n} \n\nif(HWEM_list.includes(true)){\n battery_health.push(\"Recoverable: Hardware protection tripped\");\n}\n\nif(ThM_list.includes(true)){\n battery_health.push(\"Recoverable: Heatsink temperature too high\");\n}\n\nif(vsm2_list.includes(true)){\n battery_health.push(\"Unrecoverable: Low string voltage failure\");\n}\n\nif(vsM2_list.includes(true)){\n battery_health.push(\"Recoverable: String voltage too high\");\n}\n\nif(iCM2_list.includes(true)){\n battery_health.push(\"Unrecoverable: Charge current too high\");\n}\n\nif(iDM2_list.includes(true)){\n battery_health.push(\"Recoverable: Discharge current too high\");\n} \n\nif(MID2_list.includes(true)){\n battery_health.push(\"Recoverable: String voltage unbalance too high\");\n} \n\nif(HTFS_list.includes(true)){\n battery_health.push(\"Unrecoverable: Heater Fuse Blown\");\n} \n\nif(DATA_list.includes(true)){\n battery_health.push(\"Unrecoverable: Parameters out of range\");\n} \n\nif(LMPA_list.includes(true)){\n battery_health.push(\"Unrecoverable: String voltages unbalance alarm\");\n} \n\nif(HEBT_list.includes(true)){\n battery_health.push(\"Recoverable: Loss of heartbeat\");\n} \n\nif(TaM1_list.includes(true)){\n battery_health.push(\"Warning: BMS temperature high\");\n} \n\nif(TbM1_list.includes(true)){\n battery_health.push(\"Warning: Battery temperature high\");\n} \n\nif(VBm1_list.includes(true)){\n battery_health.push(\"Warning: Bus voltage low\");\n} \n\nif(VBM1_list.includes(true)){\n battery_health.push(\"Warning: Bus voltage high\");\n} \n\nif(IDM1_list.includes(true)){\n battery_health.push(\"Warning: Discharge current high\");\n} \n\nif(vsm1_list.includes(true)){\n battery_health.push(\"Warning: String voltage too low\");\n} \n\nif(vsM1_list.includes(true)){\n battery_health.push(\"Warning: String voltage high\");\n}\n\nif(iCM1_list.includes(true)){\n battery_health.push(\"Warning: Charge current high\");\n} \n\nif(iDM1_list.includes(true)){\n battery_health.push(\"Warning: Discharge current high\");\n} \n\nif(MID1_list.includes(true)){\n battery_health.push(\"Warning: String voltages unbalanced\");\n} \n\nif(BLPW_list.includes(true)){\n battery_health.push(\"Warning: Not enough charging power on bus\");\n} \n\nif(CCBF_list.includes(true)){\n battery_health.push(\"Warning: Internal charger hardware failure\");\n} \n\nif(Ah_W_list.includes(true)){\n battery_health.push(\"Warning: String SOC low\");\n} \n\nif(MPMM_list.includes(true)){\n battery_health.push(\"Warning: Midpoint wiring problem\");\n} \n\nif(TCdi_list.includes(true)){\n battery_health.push(\"Warning: Temperature difference between strings high\");\n} \n\nif(LMPW_list.includes(true)){\n battery_health.push(\"Warning: String voltages unbalance warning\");\n} \n\nif(TOCW_list.includes(true)){\n battery_health.push(\"Warning: Top of Charge requested\");\n}\n\nif(battery_health.length === 0){\n battery_health.push(\"No warning and no alarm\");\n}\n\nmsg.payload = battery_health;\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1120, "y": 1700, "wires": [ [ "9950564581b5af4e", "c8f9fbd1a718e92b" ] ] }, { "id": "651cbb5a7a3b7c86", "type": "change", "z": "449f3115316b1767", "name": "Tam", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Tam", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 140, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "714cafa3bd1315f1", "type": "join", "z": "449f3115316b1767", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "43", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 860, "y": 1700, "wires": [ [ "5d32609a7b711e03" ] ] }, { "id": "f0bd6424378e6521", "type": "change", "z": "449f3115316b1767", "name": "TaM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TaM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 200, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "9950564581b5af4e", "type": "ui_text", "z": "449f3115316b1767", "group": "e177392401620838", "order": 4, "width": 0, "height": 0, "name": "", "label": "Warnings and Alarms", "format": "{{msg.payload}}", "layout": "row-spread", "className": "", "style": false, "font": "Arial,Arial,Helvetica,sans-serif", "fontSize": "20", "color": "#000000", "x": 1400, "y": 1700, "wires": [] }, { "id": "fccbcd60339ffc71", "type": "change", "z": "449f3115316b1767", "name": "Tbm", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Tbm", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 260, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "b87eb54e5438f25d", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/VBm2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/VBm2", "name": "/AlarmFlags/VBm2", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 380, "wires": [ [ "1935d7ec73a6e600" ] ] }, { "id": "c7506cd384e34f9f", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/VBM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/VBM2", "name": "/AlarmFlags/VBM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 440, "wires": [ [ "da45a83ea0455f32" ] ] }, { "id": "6892a20f1aa2b6e5", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/ThM", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/ThM", "name": "/AlarmFlags/ThM", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1100, "wires": [ [ "0eea322902b7925f" ] ] }, { "id": "98888650ea5d2a96", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/vsm2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/vsm2", "name": "/AlarmFlags/vsm2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1160, "wires": [ [ "d5c9a8c50fc8d0f4" ] ] }, { "id": "c3f7ef97557d7615", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/vsM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/vsM2", "name": "/AlarmFlags/vsM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1220, "wires": [ [ "69f4c090bfb3b6a7" ] ] }, { "id": "8634dd2bb374e7dc", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/iCM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/iCM2", "name": "/AlarmFlags/iCM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1280, "wires": [ [ "3a8599bc483c79aa" ] ] }, { "id": "7fa84f8332c8fb96", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/AlarmFlags/iDM2", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/AlarmFlags/iDM2", "name": "/AlarmFlags/iDM2", "type": "object" }, "name": "", "onlyChanges": false, "x": 310, "y": 1340, "wires": [ [ "d274893e4a47892d" ] ] }, { "id": "940370b80f41928c", "type": "change", "z": "449f3115316b1767", "name": "TbM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TbM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 320, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "1935d7ec73a6e600", "type": "change", "z": "449f3115316b1767", "name": "VBm2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "VBm2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 380, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "da45a83ea0455f32", "type": "change", "z": "449f3115316b1767", "name": "VBM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "VBM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 440, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "5da7a58078b2d992", "type": "change", "z": "449f3115316b1767", "name": "IDM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "IDM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 500, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "145932ec555401dd", "type": "change", "z": "449f3115316b1767", "name": "ISOB", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "ISOB", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 560, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "7020aeefc2b065f7", "type": "change", "z": "449f3115316b1767", "name": "MSWE", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "MSWE", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 560, "y": 620, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "ea496aafa62fca89", "type": "change", "z": "449f3115316b1767", "name": "FUSE", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "FUSE", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 680, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "48a80e06931ecc03", "type": "change", "z": "449f3115316b1767", "name": "HTRE", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "HTRE", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 740, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "f5dd3b77cf306c42", "type": "change", "z": "449f3115316b1767", "name": "TCPE", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TCPE", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 800, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "ea1c84dce431e761", "type": "change", "z": "449f3115316b1767", "name": "STRE", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "STRE", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 860, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "48d69f82af0f511b", "type": "change", "z": "449f3115316b1767", "name": "CME", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "CME", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 920, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "c6162a8cbc2fa1dc", "type": "change", "z": "449f3115316b1767", "name": "HWFL", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "HWFL", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 980, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "8b5302ef345a5ade", "type": "change", "z": "449f3115316b1767", "name": "HWEM", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "HWEM", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 560, "y": 1040, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "0eea322902b7925f", "type": "change", "z": "449f3115316b1767", "name": "ThM", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "ThM", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1100, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "d5c9a8c50fc8d0f4", "type": "change", "z": "449f3115316b1767", "name": "vsm2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "vsm2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1160, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "69f4c090bfb3b6a7", "type": "change", "z": "449f3115316b1767", "name": "vsM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "vsM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1220, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "3a8599bc483c79aa", "type": "change", "z": "449f3115316b1767", "name": "iCM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "iCM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1280, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "d274893e4a47892d", "type": "change", "z": "449f3115316b1767", "name": "iDM2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "iDM2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1340, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "52aa4d1b9994d41f", "type": "change", "z": "449f3115316b1767", "name": "MID2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "MID2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1380, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "63715023d827fc1e", "type": "change", "z": "449f3115316b1767", "name": "HTFS", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "HTFS", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1440, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "b0769222c0c81594", "type": "change", "z": "449f3115316b1767", "name": "DATA", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "DATA", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1480, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "47401c80b95f2d5f", "type": "change", "z": "449f3115316b1767", "name": "LMPA", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "LMPA", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1540, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "2687afa4a3fb4fdd", "type": "change", "z": "449f3115316b1767", "name": "HEBT", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "HEBT", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1580, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "50d6cb46307252fa", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/TaM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/TaM1", "name": "/WarningFlags/TaM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1700, "wires": [ [ "3f7e9f9d738dbdbd" ] ] }, { "id": "70096fd1a8d1e527", "type": "comment", "z": "449f3115316b1767", "name": "Parse Warnings: 17", "info": "", "x": 250, "y": 1660, "wires": [] }, { "id": "028062370fed913e", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/TbM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/TbM1", "name": "/WarningFlags/TbM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1760, "wires": [ [ "d810e3509532a76d" ] ] }, { "id": "1b22f9619f20aef4", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/VBm1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/VBm1", "name": "/WarningFlags/VBm1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1820, "wires": [ [ "aec3c11c306fc487" ] ] }, { "id": "b1b68c7e0f04d624", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/VBM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/VBM1", "name": "/WarningFlags/VBM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1880, "wires": [ [ "1a27a18f8afcc0fd" ] ] }, { "id": "fc32c5e6a2a29520", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/IDM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/IDM1", "name": "/WarningFlags/IDM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 1940, "wires": [ [ "933f082d544c7d43" ] ] }, { "id": "bd531ea175cf9396", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/vsm1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/vsm1", "name": "/WarningFlags/vsm1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2000, "wires": [ [ "b68dfa2ca1af5042" ] ] }, { "id": "849842cd109d005a", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/vsM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/vsM1", "name": "/WarningFlags/vsM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2060, "wires": [ [ "646620aa94a5a58b" ] ] }, { "id": "62e7d8499b663da4", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/iCM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/iCM1", "name": "/WarningFlags/iCM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2120, "wires": [ [ "2f126354727a23bf" ] ] }, { "id": "9dd7fb6509c7f419", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/iDM1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/iDM1", "name": "/WarningFlags/iDM1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2180, "wires": [ [ "633fb1e3fb40aa85" ] ] }, { "id": "7d7ae3d9bcd23f66", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/MID1", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/MID1", "name": "/WarningFlags/MID1", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2240, "wires": [ [ "59be305aa99ae241" ] ] }, { "id": "091b46b7dbb1bc8c", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/BLPW", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/BLPW", "name": "/WarningFlags/BLPW", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2300, "wires": [ [ "fb2f75ab6931515f" ] ] }, { "id": "083488e978f234a8", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/CCBF", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/CCBF", "name": "/WarningFlags/CCBF", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2360, "wires": [ [ "6248c986d96c6ad6" ] ] }, { "id": "b20ac5ae742b5138", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/Ah_W", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/Ah_W", "name": "/WarningFlags/Ah_W", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2420, "wires": [ [ "aa8070809a252db6" ] ] }, { "id": "71b228354309c56f", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/MPMM", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/MPMM", "name": "/WarningFlags/MPMM", "type": "object" }, "name": "", "onlyChanges": false, "x": 330, "y": 2480, "wires": [ [ "4faab6568a5d4404" ] ] }, { "id": "ad7f9ba97722ce51", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/TCdi", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/TCdi", "name": "/WarningFlags/TCdi", "type": "object" }, "name": "", "onlyChanges": false, "x": 320, "y": 2540, "wires": [ [ "52365fad40a27f93" ] ] }, { "id": "a8d7dd081a0fdf21", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/LMPW", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/LMPW", "name": "/WarningFlags/LMPW", "type": "object" }, "name": "", "onlyChanges": false, "x": 330, "y": 2600, "wires": [ [ "df72d64cca5dd3cd" ] ] }, { "id": "3087d4cf9e009296", "type": "victron-input-custom", "z": "449f3115316b1767", "service": "com.victronenergy.battery/1", "path": "/WarningFlags/TOCW", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/WarningFlags/TOCW", "name": "/WarningFlags/TOCW", "type": "object" }, "name": "", "onlyChanges": false, "x": 330, "y": 2660, "wires": [ [ "52110469fa1648e6" ] ] }, { "id": "3f7e9f9d738dbdbd", "type": "change", "z": "449f3115316b1767", "name": "TaM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TaM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1700, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "d810e3509532a76d", "type": "change", "z": "449f3115316b1767", "name": "TbM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TbM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1760, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "aec3c11c306fc487", "type": "change", "z": "449f3115316b1767", "name": "VBm1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "VBm1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1820, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "1a27a18f8afcc0fd", "type": "change", "z": "449f3115316b1767", "name": "VBM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "VBM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1880, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "933f082d544c7d43", "type": "change", "z": "449f3115316b1767", "name": "IDM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "IDM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 1940, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "b68dfa2ca1af5042", "type": "change", "z": "449f3115316b1767", "name": "vsm1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "vsm1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2000, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "646620aa94a5a58b", "type": "change", "z": "449f3115316b1767", "name": "vsM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "vsM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2060, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "2f126354727a23bf", "type": "change", "z": "449f3115316b1767", "name": "iCM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "iCM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2120, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "633fb1e3fb40aa85", "type": "change", "z": "449f3115316b1767", "name": "iDM1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "iDM1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2180, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "59be305aa99ae241", "type": "change", "z": "449f3115316b1767", "name": "MID1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "MID1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2240, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "fb2f75ab6931515f", "type": "change", "z": "449f3115316b1767", "name": "BLPW", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "BLPW", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2300, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "6248c986d96c6ad6", "type": "change", "z": "449f3115316b1767", "name": "CCBF", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "CCBF", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2360, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "aa8070809a252db6", "type": "change", "z": "449f3115316b1767", "name": "Ah_W", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Ah_W", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2420, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "4faab6568a5d4404", "type": "change", "z": "449f3115316b1767", "name": "MPMM", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "MPMM", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 2480, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "52365fad40a27f93", "type": "change", "z": "449f3115316b1767", "name": "TCdi", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TCdi", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 2540, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "df72d64cca5dd3cd", "type": "change", "z": "449f3115316b1767", "name": "LMPW", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "LMPW", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 2600, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "52110469fa1648e6", "type": "change", "z": "449f3115316b1767", "name": "TOCW", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "TOCW", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 2660, "wires": [ [ "714cafa3bd1315f1" ] ] }, { "id": "c8f9fbd1a718e92b", "type": "debug", "z": "449f3115316b1767", "name": "Debug for warnings and alarms", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1430, "y": 1640, "wires": [] }, { "id": "1d4797e6a377f6bd", "type": "ui_text_input", "z": "9744d7fd57e81fe3", "name": "Grid Setpoint", "label": "Grid Setpoint", "tooltip": "", "group": "3290bd5996bd3175", "order": 1, "width": 0, "height": 0, "passthru": true, "mode": "number", "delay": "0", "topic": "topic", "sendOnBlur": false, "className": "", "topicType": "msg", "x": 710, "y": 320, "wires": [ [ "47479c689064cedc" ] ] }, { "id": "47479c689064cedc", "type": "victron-output-custom", "z": "9744d7fd57e81fe3", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/AcPowerSetPoint", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/AcPowerSetPoint", "name": "/Settings/CGwacs/AcPowerSetPoint", "type": "number" }, "name": "", "onlyChanges": false, "x": 1070, "y": 320, "wires": [] }, { "id": "556390611f6a678e", "type": "victron-input-custom", "z": "9744d7fd57e81fe3", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/AcPowerSetPoint", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/AcPowerSetPoint", "name": "/Settings/CGwacs/AcPowerSetPoint", "type": "number" }, "name": "", "onlyChanges": true, "x": 350, "y": 320, "wires": [ [ "1d4797e6a377f6bd" ] ] }, { "id": "b0ce481c0c609c63", "type": "victron-input-custom", "z": "9744d7fd57e81fe3", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "name": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "type": "number" }, "name": "", "onlyChanges": true, "x": 390, "y": 380, "wires": [ [ "69cd8accae6fa947" ] ] }, { "id": "69cd8accae6fa947", "type": "ui_text_input", "z": "9744d7fd57e81fe3", "name": "Min SOC", "label": "Min SOC", "tooltip": "", "group": "3290bd5996bd3175", "order": 2, "width": 0, "height": 0, "passthru": true, "mode": "number", "delay": "0", "topic": "topic", "sendOnBlur": false, "className": "", "topicType": "msg", "x": 760, "y": 380, "wires": [ [ "c13e22a0d82b1d03" ] ] }, { "id": "c13e22a0d82b1d03", "type": "victron-output-custom", "z": "9744d7fd57e81fe3", "service": "com.victronenergy.settings", "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "serviceObj": { "service": "com.victronenergy.settings", "name": "com.victronenergy.settings" }, "pathObj": { "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "name": "/Settings/CGwacs/BatteryLife/MinimumSocLimit", "type": "number" }, "name": "", "onlyChanges": false, "x": 1130, "y": 380, "wires": [] }, { "id": "0b3ff7262ff95b26", "type": "ui_template", "z": "9744d7fd57e81fe3", "group": "e177392401620838", "name": "Battery Monitor", "order": 5, "width": 0, "height": 0, "format": " Battery Monitor \n", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 200, "y": 500, "wires": [ [] ], "icon": "node-red/arrow-in.svg" }, { "id": "d45cda2314ed0452", "type": "victron-input-custom", "z": "9744d7fd57e81fe3", "service": "com.victronenergy.battery/1", "path": "/Soc", "serviceObj": { "service": "com.victronenergy.battery/1", "name": "FZS 48TL200 x2 (1)" }, "pathObj": { "path": "/Soc", "name": "/Soc", "type": "number" }, "name": "", "onlyChanges": false, "x": 230, "y": 440, "wires": [ [ "2ba3d56099bc52e7" ] ] }, { "id": "2ba3d56099bc52e7", "type": "ui_text", "z": "9744d7fd57e81fe3", "group": "3290bd5996bd3175", "order": 3, "width": 0, "height": 0, "name": "SOC", "label": "SOC", "format": "{{msg.payload}}", "layout": "row-spread", "className": "", "style": false, "font": "", "fontSize": 16, "color": "#000000", "x": 430, "y": 440, "wires": [] } ]