Files
cariflex/tools/EVerest-main/config/nodered/config-sil-two-evse-flow.json
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

3057 lines
76 KiB
JSON

[
{
"id": "9aafbf849d4d6e12",
"type": "tab",
"label": "Debug",
"disabled": false,
"info": ""
},
{
"id": "e921db8897354328",
"type": "tab",
"label": "RFID",
"disabled": false,
"info": ""
},
{
"id": "ed603c51db9dcbb9",
"type": "tab",
"label": "Connector 1",
"disabled": false,
"info": ""
},
{
"id": "1922139a3ea7cac2",
"type": "tab",
"label": "Connector 2",
"disabled": false,
"info": ""
},
{
"id": "af1e1eeac9c4b704",
"type": "group",
"z": "ed603c51db9dcbb9",
"style": {
"stroke": "#999999",
"stroke-opacity": "1",
"fill": "none",
"fill-opacity": "1",
"label": true,
"label-position": "nw",
"color": "#a4a4a4"
},
"nodes": [
"1295e032d7ddbc20"
],
"x": 1114,
"y": 439,
"w": 152,
"h": 82
},
{
"id": "6459c14573f03fd2",
"type": "group",
"z": "1922139a3ea7cac2",
"style": {
"stroke": "#999999",
"stroke-opacity": "1",
"fill": "none",
"fill-opacity": "1",
"label": true,
"label-position": "nw",
"color": "#a4a4a4"
},
"nodes": [
"22139ab4759c1b51"
],
"x": 1094,
"y": 419,
"w": 152,
"h": 82
},
{
"id": "7140803fb3989089",
"type": "ui_base",
"theme": {
"name": "theme-custom",
"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": true,
"reset": false
},
"customTheme": {
"name": "EVerest",
"default": "#4B7930",
"baseColor": "#2a62ac",
"baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif",
"reset": false
},
"themeState": {
"base-color": {
"default": "#2a62ac",
"value": "#2a62ac",
"edited": true
},
"page-titlebar-backgroundColor": {
"value": "#2a62ac",
"edited": false
},
"page-backgroundColor": {
"value": "#111111",
"edited": false
},
"page-sidebar-backgroundColor": {
"value": "#333333",
"edited": false
},
"group-textColor": {
"value": "#4f88d4",
"edited": false
},
"group-borderColor": {
"value": "#555555",
"edited": false
},
"group-backgroundColor": {
"value": "#333333",
"edited": false
},
"widget-textColor": {
"value": "#eeeeee",
"edited": false
},
"widget-backgroundColor": {
"value": "#2a62ac",
"edited": false
},
"widget-borderColor": {
"value": "#333333",
"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": "EVerest",
"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": 6,
"py": 6
}
}
},
{
"id": "fc8686af.48d178",
"type": "mqtt-broker",
"name": "",
"broker": "localhost",
"port": "1883",
"clientid": "",
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"sessionExpiry": ""
},
{
"id": "5e36140d.127f1c",
"type": "ui_group",
"name": "PowerMeter",
"tab": "50c487c1.27e508",
"order": 2,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "ebbb0e3f.53fbf",
"type": "ui_group",
"name": "Actions",
"tab": "50c487c1.27e508",
"order": 2,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "1709edaf.162962",
"type": "ui_group",
"name": "Debug",
"tab": "50c487c1.27e508",
"order": 3,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "8d6f402b.8f007",
"type": "ui_group",
"name": "KeepAlive",
"tab": "50c487c1.27e508",
"order": 5,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "1ebee360.265b5d",
"type": "ui_group",
"name": "PowerMeter",
"tab": "50c487c1.27e508",
"order": 6,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "d3f19d5c.593e5",
"type": "ui_group",
"name": "State",
"tab": "50c487c1.27e508",
"order": 4,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "b364f7eb4621082b",
"type": "ui_group",
"name": "Connector 1 [ISO15118]",
"tab": "d3ada9fa4cf6ac53",
"order": 2,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "7cd2ccabb1265f7a",
"type": "ui_group",
"name": "RFID",
"tab": "d3ada9fa4cf6ac53",
"order": 1,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "21e40a4a97a50168",
"type": "ui_group",
"name": "Connector 2 [Basic Charging]",
"tab": "d3ada9fa4cf6ac53",
"order": 3,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "50c487c1.27e508",
"type": "ui_tab",
"name": "Debug",
"icon": "fa-fire",
"disabled": false,
"hidden": false
},
{
"id": "d3ada9fa4cf6ac53",
"type": "ui_tab",
"name": "Home",
"icon": "dashboard",
"order": 1,
"disabled": false,
"hidden": false
},
{
"id": "27225dc1005441da",
"type": "ui_spacer",
"z": "9aafbf849d4d6e12",
"name": "spacer",
"group": "27651fee38a05406",
"order": 4,
"width": 1,
"height": 1
},
{
"id": "7120e41583a9165f",
"type": "ui_spacer",
"z": "9aafbf849d4d6e12",
"name": "spacer",
"group": "27651fee38a05406",
"order": 4,
"width": 1,
"height": 1
},
{
"id": "efce370cfc8e4f9b",
"type": "ui_spacer",
"z": "9aafbf849d4d6e12",
"name": "spacer",
"group": "",
"order": 2,
"width": 6,
"height": 1
},
{
"id": "794d727ae2866f12",
"type": "ui_spacer",
"z": "9aafbf849d4d6e12",
"name": "spacer",
"group": "",
"order": 5,
"width": "6",
"height": "1"
},
{
"id": "c8955752ad17f297",
"type": "mqtt in",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/powermeter/vrmsL1",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 180,
"y": 100,
"wires": [
[
"b1d3d31a92c2c68d"
]
]
},
{
"id": "b1d3d31a92c2c68d",
"type": "ui_chart",
"z": "9aafbf849d4d6e12",
"name": "",
"group": "5e36140d.127f1c",
"order": 11,
"width": 0,
"height": 0,
"label": "vrmsL1",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm:ss",
"interpolate": "linear",
"nodata": "",
"dot": false,
"ymin": "",
"ymax": "",
"removeOlder": "60",
"removeOlderPoints": "",
"removeOlderUnit": "1",
"cutout": 0,
"useOneColor": false,
"useUTC": false,
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"outputs": 1,
"useDifferentColor": false,
"x": 400,
"y": 100,
"wires": [
[]
]
},
{
"id": "a4bef87a56ade625",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/enable",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 500,
"y": 440,
"wires": []
},
{
"id": "6c1a9684ee9cff1b",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/disable",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 500,
"y": 480,
"wires": []
},
{
"id": "7b7910abcebe9ea8",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "Enabled",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 120,
"y": 460,
"wires": [
[
"f68fa199eb0c13b0"
]
]
},
{
"id": "f68fa199eb0c13b0",
"type": "switch",
"z": "9aafbf849d4d6e12",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "true"
},
{
"t": "false"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 280,
"y": 460,
"wires": [
[
"a4bef87a56ade625"
],
[
"6c1a9684ee9cff1b"
]
]
},
{
"id": "be7373d5f1fc78e3",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "setThreePhases",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 140,
"y": 540,
"wires": [
[
"ee61573475970e13"
]
]
},
{
"id": "ee61573475970e13",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/set_three_phases",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 370,
"y": 540,
"wires": []
},
{
"id": "1e33ee217d09343a",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "enableRCD",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 130,
"y": 600,
"wires": [
[
"7f1db77313661cf3"
]
]
},
{
"id": "7f1db77313661cf3",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/enable_rcd",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 350,
"y": 600,
"wires": []
},
{
"id": "23610d2f3c1a674b",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "setHasVentilation",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 150,
"y": 660,
"wires": [
[
"d40cd5658151e3ca"
]
]
},
{
"id": "d40cd5658151e3ca",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/set_has_ventilation",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 420,
"y": 660,
"wires": []
},
{
"id": "d62a89349e2d9147",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/set_auth",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 380,
"y": 220,
"wires": []
},
{
"id": "49a61fca4e975f0d",
"type": "ui_button",
"z": "9aafbf849d4d6e12",
"name": "",
"group": "ebbb0e3f.53fbf",
"order": 1,
"width": 0,
"height": 0,
"passthru": false,
"label": "setAuth(USERID)",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "USERID",
"payloadType": "str",
"topic": "topic",
"topicType": "msg",
"x": 150,
"y": 220,
"wires": [
[
"d62a89349e2d9147"
]
]
},
{
"id": "4a20ae416f941363",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "switch3phWhileCharging",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 170,
"y": 720,
"wires": [
[
"9f997a83d8c5e502"
]
]
},
{
"id": "9f997a83d8c5e502",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/switch_three_phases_while_charging",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 530,
"y": 720,
"wires": []
},
{
"id": "b0dbe5826f92035e",
"type": "mqtt in",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/debug_json",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 160,
"y": 960,
"wires": [
[
"a62346afa82d2aa1"
]
]
},
{
"id": "a62346afa82d2aa1",
"type": "json",
"z": "9aafbf849d4d6e12",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 350,
"y": 960,
"wires": [
[
"971b16b8195f14bb"
]
]
},
{
"id": "971b16b8195f14bb",
"type": "function",
"z": "9aafbf849d4d6e12",
"name": "",
"func": "var json = msg.payload;\n\n\n//tab[top] = {'Variable' : top, 'Value' : pay};\n\n\nnewpayload = [];\nfor(var index in json) {\n newpayload.push({'Variable' : index, 'Value' : json[index]});\n}\n\nmsg.payload = newpayload;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 510,
"y": 960,
"wires": [
[
"b79f8c3549cdb63e"
]
]
},
{
"id": "b79f8c3549cdb63e",
"type": "ui_table",
"z": "9aafbf849d4d6e12",
"group": "1709edaf.162962",
"name": "Debug",
"order": 12,
"width": "6",
"height": "11",
"columns": [],
"outputs": 0,
"cts": false,
"x": 680,
"y": 960,
"wires": []
},
{
"id": "105b9eab50b4db7f",
"type": "mqtt in",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/keepalive_json",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 170,
"y": 1140,
"wires": [
[
"f9bce2148fd0d745"
]
]
},
{
"id": "f9bce2148fd0d745",
"type": "json",
"z": "9aafbf849d4d6e12",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 350,
"y": 1140,
"wires": [
[
"81c08d60fe305390"
]
]
},
{
"id": "81c08d60fe305390",
"type": "function",
"z": "9aafbf849d4d6e12",
"name": "",
"func": "var json = msg.payload;\n\n\n//tab[top] = {'Variable' : top, 'Value' : pay};\n\n\nnewpayload = [];\nfor(var index in json) {\n newpayload.push({'Variable' : index, 'Value' : json[index]});\n}\n\nmsg.payload = newpayload;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 510,
"y": 1140,
"wires": [
[
"24770a798c2cc78c"
]
]
},
{
"id": "24770a798c2cc78c",
"type": "ui_table",
"z": "9aafbf849d4d6e12",
"group": "8d6f402b.8f007",
"name": "KeepAlive",
"order": 12,
"width": "6",
"height": "4",
"columns": [],
"outputs": 0,
"cts": false,
"x": 690,
"y": 1140,
"wires": []
},
{
"id": "b2e6e05e396ff846",
"type": "mqtt in",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/powermeter_json",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 170,
"y": 1200,
"wires": [
[
"bff81951aab38e7c"
]
]
},
{
"id": "bff81951aab38e7c",
"type": "json",
"z": "9aafbf849d4d6e12",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 360,
"y": 1200,
"wires": [
[
"685dcdcf457910a6"
]
]
},
{
"id": "685dcdcf457910a6",
"type": "function",
"z": "9aafbf849d4d6e12",
"name": "",
"func": "var json = msg.payload;\n\n\n//tab[top] = {'Variable' : top, 'Value' : pay};\n\n\nnewpayload = [];\nfor(var index in json) {\n newpayload.push({'Variable' : index, 'Value' : json[index]});\n}\n\nmsg.payload = newpayload;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 520,
"y": 1200,
"wires": [
[
"854cee03b9be0de5"
]
]
},
{
"id": "854cee03b9be0de5",
"type": "ui_table",
"z": "9aafbf849d4d6e12",
"group": "1ebee360.265b5d",
"name": "PowerMeter",
"order": 12,
"width": "6",
"height": "11",
"columns": [],
"outputs": 0,
"cts": false,
"x": 710,
"y": 1200,
"wires": []
},
{
"id": "dd9a01731c23f076",
"type": "mqtt in",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/state/#",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 140,
"y": 1020,
"wires": [
[
"181994551d5096a8"
]
]
},
{
"id": "181994551d5096a8",
"type": "function",
"z": "9aafbf849d4d6e12",
"name": "",
"func": "let cur_topic_index = -1;\nlet topics_list_length = 0;\n\nvar topics_list = global.get(\"state_topics_list\");\nvar payload_list = global.get(\"state_payload_list\");\nvar new_payload = [];\n\nfor (var topics_list_index in topics_list) {\n if ( (topics_list[topics_list_index].indexOf(msg.topic) >= 0) && (topics_list[topics_list_index].length == msg.topic.length) ) {\n cur_topic_index = topics_list_index;\n break;\n }\n topics_list_length++;\n}\n\nif (cur_topic_index > -1) {\n payload_list[cur_topic_index] = msg.payload;\n} else {\n topics_list.push(msg.topic);\n payload_list.push(msg.payload);\n}\n\nglobal.set(\"state_topics_list\", topics_list);\nglobal.set(\"state_payload_list\", payload_list);\n\n\nfor (var index in payload_list) {\n new_payload.push({'Variable': topics_list[index].substr(16, topics_list[index].length), 'Value': payload_list[index]});\n}\n\nmsg.payload = new_payload;\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "// Code added here will be run once\n// whenever the node is started.\nglobal.set(\"state_topics_list\", []);\nglobal.set(\"state_payload_list\", []);",
"finalize": "",
"libs": [],
"x": 520,
"y": 1020,
"wires": [
[
"f05a2bcbad4e5e4f"
]
]
},
{
"id": "f05a2bcbad4e5e4f",
"type": "ui_table",
"z": "9aafbf849d4d6e12",
"group": "d3f19d5c.593e5",
"name": "State",
"order": 12,
"width": "6",
"height": "4",
"columns": [],
"outputs": 0,
"cts": false,
"x": 690,
"y": 1020,
"wires": []
},
{
"id": "626ae76afca27c10",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "enableHLC",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 130,
"y": 780,
"wires": [
[
"cb19212395df1ec4"
]
]
},
{
"id": "cb19212395df1ec4",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/enable_hlc",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 350,
"y": 780,
"wires": []
},
{
"id": "8761f22ed645e3d5",
"type": "ui_switch",
"z": "9aafbf849d4d6e12",
"name": "",
"label": "Simulation RCD",
"tooltip": "",
"group": "ebbb0e3f.53fbf",
"order": 5,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 140,
"y": 840,
"wires": [
[
"c423c5096c47f04a"
]
]
},
{
"id": "c423c5096c47f04a",
"type": "mqtt out",
"z": "9aafbf849d4d6e12",
"name": "",
"topic": "/external/cmd/enable_rcd",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 350,
"y": 840,
"wires": []
},
{
"id": "edcc986828bdfcc4",
"type": "comment",
"z": "9aafbf849d4d6e12",
"name": "Debug",
"info": "",
"x": 110,
"y": 40,
"wires": []
},
{
"id": "957c91b46df24e3a",
"type": "mqtt out",
"z": "e921db8897354328",
"name": "",
"topic": "everest_api/dummy_token_provider/cmd/provide",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 1000,
"y": 120,
"wires": []
},
{
"id": "765ecd7720d3a54e",
"type": "ui_dropdown",
"z": "e921db8897354328",
"name": "",
"label": "id_token",
"tooltip": "",
"place": "Select option",
"group": "7cd2ccabb1265f7a",
"order": 1,
"width": 0,
"height": 0,
"passthru": true,
"multiple": false,
"options": [
{
"label": "DEADBEEF",
"value": "DEADBEEF",
"type": "str"
},
{
"label": "ABC12345",
"value": "ABC12345",
"type": "str"
},
{
"label": "VID:AABBCCDDEEFF",
"value": "VID:AABBCCDDEEFF",
"type": "str"
}
],
"payload": "",
"topic": "id_token",
"topicType": "str",
"x": 410,
"y": 100,
"wires": [
[
"061c0a7744e15ba2"
]
]
},
{
"id": "352aa4429de054a6",
"type": "ui_switch",
"z": "e921db8897354328",
"name": "",
"label": "prevalidated",
"tooltip": "",
"group": "7cd2ccabb1265f7a",
"order": 3,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "prevalidated",
"topicType": "str",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 410,
"y": 220,
"wires": [
[
"061c0a7744e15ba2"
]
]
},
{
"id": "a950f5bfc61638ee",
"type": "ui_text_input",
"z": "e921db8897354328",
"name": "",
"label": "type (2-32)",
"tooltip": "",
"group": "7cd2ccabb1265f7a",
"order": 2,
"width": 0,
"height": 0,
"passthru": true,
"mode": "text",
"delay": 300,
"topic": "token_type",
"topicType": "str",
"x": 410,
"y": 160,
"wires": [
[
"061c0a7744e15ba2"
]
]
},
{
"id": "be6b6aec975d1d27",
"type": "debug",
"z": "e921db8897354328",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 890,
"y": 200,
"wires": []
},
{
"id": "054b87b685588c2c",
"type": "inject",
"z": "e921db8897354328",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "id_token",
"payload": "DEADBEEF",
"payloadType": "str",
"x": 180,
"y": 100,
"wires": [
[
"765ecd7720d3a54e"
]
]
},
{
"id": "045f2c88f1a7077e",
"type": "inject",
"z": "e921db8897354328",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "token_type",
"payload": "RFID",
"payloadType": "str",
"x": 200,
"y": 160,
"wires": [
[
"a950f5bfc61638ee"
]
]
},
{
"id": "b3b44ea9f00b7d45",
"type": "inject",
"z": "e921db8897354328",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "prevalidated",
"payload": "false",
"payloadType": "bool",
"x": 170,
"y": 220,
"wires": [
[
"352aa4429de054a6"
]
]
},
{
"id": "061c0a7744e15ba2",
"type": "function",
"z": "e921db8897354328",
"name": "Swipe token",
"func": "if (msg.topic.indexOf('id_token') > -1) flow.set('id_token', msg.payload);\nif (msg.topic.indexOf('token_type') > -1) flow.set('token_type', msg.payload);\nif (msg.topic.indexOf('prevalidated') > -1) flow.set('prevalidated', msg.payload);\nif (msg.topic.indexOf('connectors') > -1) flow.set('connectors', msg.payload);\nif (msg.topic.indexOf('complete') > -1) {\n msg.payload = {\n 'id_token': {\n 'value': flow.get('id_token'),\n 'type': 'ISO14443'\n},\n 'authorization_type': flow.get('token_type'),\n 'prevalidated': flow.get('prevalidated'),\n 'connectors': [flow.get('connectors')]\n };\n return msg;\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 690,
"y": 160,
"wires": [
[
"be6b6aec975d1d27",
"957c91b46df24e3a"
]
]
},
{
"id": "6cc9edbf2f3b9aa6",
"type": "ui_button",
"z": "e921db8897354328",
"name": "",
"group": "7cd2ccabb1265f7a",
"order": 4,
"width": 0,
"height": 0,
"passthru": false,
"label": "Swipe RFID",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "",
"payloadType": "str",
"topic": "complete",
"topicType": "str",
"x": 410,
"y": 380,
"wires": [
[
"061c0a7744e15ba2"
]
]
},
{
"id": "15f66c1947e2cb18",
"type": "inject",
"z": "e921db8897354328",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "connectors",
"payload": "1",
"payloadType": "num",
"x": 150,
"y": 300,
"wires": [
[
"deedf2d418fbc8fd"
]
]
},
{
"id": "deedf2d418fbc8fd",
"type": "ui_numeric",
"z": "e921db8897354328",
"name": "",
"label": "connectors",
"tooltip": "",
"group": "7cd2ccabb1265f7a",
"order": 0,
"width": "0",
"height": "0",
"wrap": false,
"passthru": true,
"topic": "connectors",
"topicType": "msg",
"format": "{{value}}",
"min": "1",
"max": 10,
"step": 1,
"x": 410,
"y": 300,
"wires": [
[
"061c0a7744e15ba2"
]
]
},
{
"id": "e8e1511b6239bfa2",
"type": "comment",
"z": "ed603c51db9dcbb9",
"name": "Initialize the Connector number",
"info": "",
"x": 230,
"y": 80,
"wires": []
},
{
"id": "23d875eef4c57fa8",
"type": "change",
"z": "ed603c51db9dcbb9",
"name": "",
"rules": [
{
"t": "set",
"p": "connector_number",
"pt": "flow",
"to": "1",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 440,
"y": 140,
"wires": [
[]
]
},
{
"id": "e99161497760c072",
"type": "inject",
"z": "ed603c51db9dcbb9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 190,
"y": 140,
"wires": [
[
"23d875eef4c57fa8"
]
]
},
{
"id": "b70c30908c955b81",
"type": "comment",
"z": "ed603c51db9dcbb9",
"name": "Data to show",
"info": "",
"x": 170,
"y": 200,
"wires": []
},
{
"id": "f96ccb60614f9f18",
"type": "mqtt out",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 890,
"y": 840,
"wires": []
},
{
"id": "3a5423dc1feed224",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 1,
"width": "3",
"height": "1",
"passthru": false,
"label": "Pause",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "",
"payloadType": "str",
"topic": "everest_external/nodered/#/cmd/pause_charging",
"topicType": "str",
"x": 150,
"y": 700,
"wires": [
[
"361b3d846c4e6673"
]
]
},
{
"id": "f042bc45e3742ef7",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 2,
"width": "3",
"height": "1",
"passthru": false,
"label": "Resume",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "",
"payloadType": "str",
"topic": "everest_external/nodered/#/cmd/resume_charging",
"topicType": "str",
"x": 160,
"y": 760,
"wires": [
[
"361b3d846c4e6673"
]
]
},
{
"id": "361b3d846c4e6673",
"type": "change",
"z": "ed603c51db9dcbb9",
"name": "Insert Connector number",
"rules": [
{
"t": "change",
"p": "topic",
"pt": "msg",
"from": "#",
"fromt": "str",
"to": "connector_number",
"tot": "flow"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 670,
"y": 840,
"wires": [
[
"f96ccb60614f9f18"
]
]
},
{
"id": "9c6d1a5e2ba43d36",
"type": "comment",
"z": "ed603c51db9dcbb9",
"name": "Commands",
"info": "",
"x": 170,
"y": 640,
"wires": []
},
{
"id": "51656271f4688a67",
"type": "mqtt in",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "everest_external/nodered/+/state/max_current",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 270,
"y": 280,
"wires": [
[
"f5ca89d3e6d1d1ba"
]
]
},
{
"id": "f5ca89d3e6d1d1ba",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 590,
"y": 280,
"wires": [
[
"1a019e35e580cbf4"
]
]
},
{
"id": "1a019e35e580cbf4",
"type": "ui_text",
"z": "ed603c51db9dcbb9",
"group": "b364f7eb4621082b",
"order": 3,
"width": 0,
"height": 0,
"name": "",
"label": "Max Current",
"format": "{{msg.payload | number: 1}}",
"layout": "row-spread",
"x": 890,
"y": 280,
"wires": []
},
{
"id": "799130c039278e9b",
"type": "ui_text",
"z": "ed603c51db9dcbb9",
"group": "b364f7eb4621082b",
"order": 5,
"width": 0,
"height": 0,
"name": "",
"label": "Energy Charged",
"format": "{{msg.payload | number:2}} kWh",
"layout": "row-spread",
"x": 880,
"y": 340,
"wires": []
},
{
"id": "a24c1a5f8bb6a5b5",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 340,
"wires": [
[
"799130c039278e9b"
]
]
},
{
"id": "7164db07c0a78327",
"type": "mqtt in",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "everest_external/nodered/+/powermeter/totalKWattHr",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 300,
"y": 340,
"wires": [
[
"a24c1a5f8bb6a5b5"
]
]
},
{
"id": "9715c97a5a212e0f",
"type": "mqtt in",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "everest_external/nodered/+/state/state_string",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 270,
"y": 440,
"wires": [
[
"0139c0ace0e5f706"
]
]
},
{
"id": "8059bceefd9dcdf7",
"type": "mqtt in",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "everest_external/nodered/+/powermeter/totalKw",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 280,
"y": 500,
"wires": [
[
"6941efd3ef8e1ac4"
]
]
},
{
"id": "72a90b471d6ebb44",
"type": "ui_level",
"z": "ed603c51db9dcbb9",
"group": "b364f7eb4621082b",
"order": 7,
"width": 0,
"height": 0,
"name": "",
"label": "Temperature:",
"colorHi": "#e60000",
"colorWarn": "#ff9900",
"colorNormal": "#00b33c",
"colorOff": "#595959",
"min": "-20",
"max": "85",
"segWarn": "65",
"segHigh": "75",
"unit": "",
"layout": "sh",
"channelA": "",
"channelB": "",
"decimals": 0,
"animations": "soft",
"shape": "3",
"colorschema": "valuedriven",
"textoptions": "default",
"colorText": "#eeeeee",
"fontLabel": "",
"fontValue": "",
"fontSmall": "",
"colorFromTheme": true,
"textAnimations": false,
"hideValue": false,
"tickmode": "segments",
"peakmode": false,
"property": "payload",
"peaktime": 3000,
"x": 1010,
"y": 560,
"wires": []
},
{
"id": "4b864ea8df7d27cf",
"type": "mqtt in",
"z": "ed603c51db9dcbb9",
"name": "",
"topic": "everest_external/nodered/+/state/temperature",
"qos": "0",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 280,
"y": 560,
"wires": [
[
"bc1b6adb5db9d7e4"
]
]
},
{
"id": "1ef49a48bf883748",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "",
"func": "if (msg.topic.indexOf('totalKw')>=0) {\n context.data.totalKw = msg.payload;\n}\nelse if (msg.topic.indexOf('state_string')>=0) {\n context.data.state_string = msg.payload;\n}\n\n//node.warn(msg.topic);\nmsg.payload = context.data.totalKw;\nmsg.label = context.data.state_string;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "// Code added here will be run once\n// whenever the node is started.\ncontext.data = {}",
"finalize": "",
"libs": [],
"x": 980,
"y": 480,
"wires": [
[
"5bd8abc274e70360",
"1295e032d7ddbc20"
]
]
},
{
"id": "5bd8abc274e70360",
"type": "debug",
"z": "ed603c51db9dcbb9",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1190,
"y": 380,
"wires": []
},
{
"id": "1295e032d7ddbc20",
"type": "ui_gauge",
"z": "ed603c51db9dcbb9",
"g": "af1e1eeac9c4b704",
"name": "",
"group": "b364f7eb4621082b",
"order": 6,
"width": 0,
"height": 0,
"gtype": "gage",
"title": "{{msg.label}}",
"label": "Kilowatt",
"format": "{{value}} kW",
"min": "0",
"max": "11",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1190,
"y": 480,
"wires": []
},
{
"id": "6941efd3ef8e1ac4",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 730,
"y": 500,
"wires": [
[
"1ef49a48bf883748"
]
]
},
{
"id": "0139c0ace0e5f706",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 730,
"y": 460,
"wires": [
[
"1ef49a48bf883748"
]
]
},
{
"id": "bc1b6adb5db9d7e4",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 710,
"y": 560,
"wires": [
[
"72a90b471d6ebb44"
]
]
},
{
"id": "348dfdc4b48ec881",
"type": "comment",
"z": "ed603c51db9dcbb9",
"name": "Simulation control",
"info": "",
"x": 190,
"y": 820,
"wires": []
},
{
"id": "352d9f34ae594f58",
"type": "ui_switch",
"z": "ed603c51db9dcbb9",
"name": "",
"label": "Simulation enable (HIL)",
"tooltip": "",
"group": "b364f7eb4621082b",
"order": 10,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "everest_external/nodered/#/carsim/cmd/enable",
"topicType": "str",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 210,
"y": 880,
"wires": [
[
"361b3d846c4e6673"
]
]
},
{
"id": "76be7e55a947f675",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 8,
"width": "3",
"height": "1",
"passthru": false,
"label": "Car Plugin",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "start",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/execute_charging_session",
"topicType": "str",
"x": 170,
"y": 980,
"wires": [
[
"620b0d248a89ece0"
]
]
},
{
"id": "42f4c4f916474559",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 9,
"width": "3",
"height": "1",
"passthru": false,
"label": "Stop & Unplug",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "stop",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/modify_charging_session",
"topicType": "str",
"x": 180,
"y": 940,
"wires": [
[
"620b0d248a89ece0"
]
]
},
{
"id": "cc45f1b73782292a",
"type": "ui_slider",
"z": "ed603c51db9dcbb9",
"name": "MaxCurrent Slider",
"label": "",
"tooltip": "",
"group": "b364f7eb4621082b",
"order": 4,
"width": 0,
"height": 0,
"passthru": false,
"outs": "all",
"topic": "everest_external/nodered/#/cmd/set_max_current",
"topicType": "str",
"min": "6",
"max": "32",
"step": "0.1",
"x": 450,
"y": 700,
"wires": [
[
"361b3d846c4e6673"
]
]
},
{
"id": "f2ae0c306f3052f9",
"type": "ui_dropdown",
"z": "ed603c51db9dcbb9",
"name": "",
"label": "Car Simulation",
"tooltip": "",
"place": "Select option",
"group": "b364f7eb4621082b",
"order": 10,
"width": 0,
"height": 0,
"passthru": true,
"multiple": false,
"options": [
{
"label": "AC 3ph 16A",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 36000#unplug#pause;sleep 3600#draw_power_regulated 16,3;sleep 36000",
"type": "str"
},
{
"label": "AC 1ph 32A",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 32,1;sleep 36000#unplug#pause;sleep 3600#draw_power_regulated 32,1;sleep 36000",
"type": "str"
},
{
"label": "AC Diode Fail",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 32,3;sleep 5;diode_fail;sleep 36000#unplug",
"type": "str"
},
{
"label": "AC Error E",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 3;error_e;sleep 36000#unplug",
"type": "str"
},
{
"label": "AC RCD Error",
"value": "sleep 1;rcd_current 10.3;sleep 10;rcd_current 0.1#unplug",
"type": "str"
},
{
"label": "AC ISO15118-2",
"value": "sleep 1;iso_wait_slac_matched;iso_start_v2g_session AC 86400 0;iso_wait_pwr_ready;iso_draw_power_regulated 16,3;iso_wait_for_stop 36000#iso_stop_charging;iso_wait_v2g_session_stopped;unplug#iso_pause_charging;iso_wait_for_resume#iso_start_bcb_toggle 3;iso_wait_pwm_is_running;iso_start_v2g_session AC 86400 0;iso_wait_pwr_ready;iso_draw_power_regulated 16,3;sleep 36000",
"type": "str"
},
{
"label": "DC ISO15118-2",
"value": "sleep 1;iso_wait_slac_matched;iso_start_v2g_session DC 86400 0;iso_wait_pwr_ready;iso_dc_power_on;iso_wait_for_stop 36000#iso_stop_charging;iso_wait_v2g_session_stopped;unplug#iso_pause_charging;iso_wait_for_resume#iso_start_bcb_toggle 3;iso_wait_pwm_is_running;iso_start_v2g_session DC 86400 0;iso_wait_pwr_ready;iso_dc_power_on;sleep 36000;",
"type": "str"
}
],
"payload": "",
"topic": "sim_commands",
"topicType": "str",
"x": 180,
"y": 1120,
"wires": [
[
"620b0d248a89ece0"
]
]
},
{
"id": "620b0d248a89ece0",
"type": "function",
"z": "ed603c51db9dcbb9",
"name": "Buffer sim commands",
"func": "if (msg.topic.indexOf('sim_commands') > -1) {\n const s = msg.payload.split('#');\n flow.set('sim_commands_start', s[0]);\n flow.set('sim_commands_stop', s[1]);\n flow.set('sim_commands_pause', s[2]);\n flow.set('sim_commands_resume', s[3]);\n} else if (msg.payload == 'start') {\n msg.payload = flow.get('sim_commands_start');\n return msg;\n} else if (msg.payload == 'stop') {\n msg.payload = flow.get('sim_commands_stop');\n return msg;\n} else if (msg.payload == 'pause') {\n msg.payload = flow.get('sim_commands_pause');\n return msg;\n} else if (msg.payload == 'resume') {\n msg.payload = flow.get('sim_commands_resume');\n return msg;\n} else {\n msg.payload = 'NONE';\n return msg;\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 440,
"y": 960,
"wires": [
[
"361b3d846c4e6673",
"cc42c210398a8d50",
"fb1511183c9a660f"
]
]
},
{
"id": "fb1511183c9a660f",
"type": "debug",
"z": "ed603c51db9dcbb9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 910,
"y": 920,
"wires": []
},
{
"id": "fef2be4575e66bda",
"type": "inject",
"z": "ed603c51db9dcbb9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "sim_commands",
"payload": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 36000#unplug#pause;sleep 3600#draw_power_regulated 16,3;sleep 36000",
"payloadType": "str",
"x": 150,
"y": 1180,
"wires": [
[
"f2ae0c306f3052f9"
]
]
},
{
"id": "cc42c210398a8d50",
"type": "debug",
"z": "ed603c51db9dcbb9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "topic",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 900,
"y": 960,
"wires": []
},
{
"id": "29aced2052ea8795",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 9,
"width": "3",
"height": "1",
"passthru": false,
"label": "EV Pause",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "",
"payload": "pause",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/modify_charging_session",
"topicType": "str",
"x": 160,
"y": 1020,
"wires": [
[
"620b0d248a89ece0"
]
]
},
{
"id": "f39e2131a37761a6",
"type": "ui_button",
"z": "ed603c51db9dcbb9",
"name": "",
"group": "b364f7eb4621082b",
"order": 9,
"width": "3",
"height": "1",
"passthru": false,
"label": "EV Resume",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "",
"payload": "resume",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/modify_charging_session",
"topicType": "str",
"x": 170,
"y": 1060,
"wires": [
[
"620b0d248a89ece0"
]
]
},
{
"id": "ecc79f3cd38a4ac7",
"type": "comment",
"z": "1922139a3ea7cac2",
"name": "Initialize the Connector number",
"info": "",
"x": 210,
"y": 60,
"wires": []
},
{
"id": "d98f9f6a2a628af8",
"type": "change",
"z": "1922139a3ea7cac2",
"name": "",
"rules": [
{
"t": "set",
"p": "connector_number",
"pt": "flow",
"to": "2",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 420,
"y": 120,
"wires": [
[]
]
},
{
"id": "b5681fe7ddcfb809",
"type": "inject",
"z": "1922139a3ea7cac2",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 170,
"y": 120,
"wires": [
[
"d98f9f6a2a628af8"
]
]
},
{
"id": "1cf693c49c5dd54f",
"type": "comment",
"z": "1922139a3ea7cac2",
"name": "Data to show",
"info": "",
"x": 150,
"y": 180,
"wires": []
},
{
"id": "2cfbe1b2a5481d9d",
"type": "mqtt in",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "everest_external/nodered/+/state/max_current",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 250,
"y": 260,
"wires": [
[
"2653d111a7a2fbf8"
]
]
},
{
"id": "2653d111a7a2fbf8",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 570,
"y": 260,
"wires": [
[
"8d44530a6ffa85d4"
]
]
},
{
"id": "8d44530a6ffa85d4",
"type": "ui_text",
"z": "1922139a3ea7cac2",
"group": "21e40a4a97a50168",
"order": 3,
"width": 0,
"height": 0,
"name": "",
"label": "Max Current",
"format": "{{msg.payload | number: 1}}",
"layout": "row-spread",
"x": 870,
"y": 260,
"wires": []
},
{
"id": "278d0137968bab01",
"type": "ui_text",
"z": "1922139a3ea7cac2",
"group": "21e40a4a97a50168",
"order": 5,
"width": 0,
"height": 0,
"name": "",
"label": "Energy Charged",
"format": "{{msg.payload | number:2}} kWh",
"layout": "row-spread",
"x": 860,
"y": 320,
"wires": []
},
{
"id": "b0aa9456cb82aa5e",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 630,
"y": 320,
"wires": [
[
"278d0137968bab01"
]
]
},
{
"id": "7ca5f3a2f6c6442b",
"type": "mqtt in",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "everest_external/nodered/+/powermeter/totalKWattHr",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 280,
"y": 320,
"wires": [
[
"b0aa9456cb82aa5e"
]
]
},
{
"id": "ba393fc06d165d2c",
"type": "mqtt in",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "everest_external/nodered/+/state/state_string",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 250,
"y": 420,
"wires": [
[
"e961b36955a2f4b2"
]
]
},
{
"id": "82bf4c3a0cd4e019",
"type": "mqtt in",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "everest_external/nodered/+/powermeter/totalKw",
"qos": "2",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 260,
"y": 480,
"wires": [
[
"19c5a9e152316998"
]
]
},
{
"id": "314120980ce5e5d9",
"type": "ui_level",
"z": "1922139a3ea7cac2",
"group": "21e40a4a97a50168",
"order": 7,
"width": 0,
"height": 0,
"name": "",
"label": "Temperature:",
"colorHi": "#e60000",
"colorWarn": "#ff9900",
"colorNormal": "#00b33c",
"colorOff": "#595959",
"min": "-20",
"max": "85",
"segWarn": "65",
"segHigh": "75",
"unit": "",
"layout": "sh",
"channelA": "",
"channelB": "",
"decimals": 0,
"animations": "soft",
"shape": "3",
"colorschema": "valuedriven",
"textoptions": "default",
"colorText": "#eeeeee",
"fontLabel": "",
"fontValue": "",
"fontSmall": "",
"colorFromTheme": true,
"textAnimations": false,
"hideValue": false,
"tickmode": "segments",
"peakmode": false,
"property": "payload",
"peaktime": 3000,
"x": 990,
"y": 540,
"wires": []
},
{
"id": "eb04639c71d52ca7",
"type": "mqtt in",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "everest_external/nodered/+/state/temperature",
"qos": "0",
"datatype": "auto",
"broker": "fc8686af.48d178",
"nl": false,
"rap": true,
"rh": 0,
"x": 260,
"y": 540,
"wires": [
[
"e3a491d163ef9631"
]
]
},
{
"id": "f7f91acafa1344ef",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "",
"func": "if (msg.topic.indexOf('totalKw')>=0) {\n context.data.totalKw = msg.payload;\n}\nelse if (msg.topic.indexOf('state_string')>=0) {\n context.data.state_string = msg.payload;\n}\n\n//node.warn(msg.topic);\nmsg.payload = context.data.totalKw;\nmsg.label = context.data.state_string;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "// Code added here will be run once\n// whenever the node is started.\ncontext.data = {}",
"finalize": "",
"libs": [],
"x": 960,
"y": 460,
"wires": [
[
"84fcecbd2169e979",
"22139ab4759c1b51"
]
]
},
{
"id": "84fcecbd2169e979",
"type": "debug",
"z": "1922139a3ea7cac2",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1170,
"y": 360,
"wires": []
},
{
"id": "19c5a9e152316998",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 710,
"y": 480,
"wires": [
[
"f7f91acafa1344ef"
]
]
},
{
"id": "e961b36955a2f4b2",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 710,
"y": 440,
"wires": [
[
"f7f91acafa1344ef"
]
]
},
{
"id": "e3a491d163ef9631",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Filter connector number",
"func": "if (msg.topic.indexOf(String(flow.get('connector_number'))) > -1) return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 690,
"y": 540,
"wires": [
[
"314120980ce5e5d9"
]
]
},
{
"id": "22139ab4759c1b51",
"type": "ui_gauge",
"z": "1922139a3ea7cac2",
"g": "6459c14573f03fd2",
"name": "",
"group": "21e40a4a97a50168",
"order": 6,
"width": 0,
"height": 0,
"gtype": "gage",
"title": "{{msg.label}}",
"label": "Kilowatt",
"format": "{{value}} kW",
"min": "0",
"max": "11",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1170,
"y": 460,
"wires": []
},
{
"id": "871a53340e257a24",
"type": "mqtt out",
"z": "1922139a3ea7cac2",
"name": "",
"topic": "",
"qos": "1",
"retain": "false",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "fc8686af.48d178",
"x": 890,
"y": 820,
"wires": []
},
{
"id": "d6aa7ecbf651cdc8",
"type": "ui_button",
"z": "1922139a3ea7cac2",
"name": "",
"group": "21e40a4a97a50168",
"order": 1,
"width": "3",
"height": "1",
"passthru": false,
"label": "Pause",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "",
"payloadType": "str",
"topic": "everest_external/nodered/#/cmd/pause_charging",
"topicType": "str",
"x": 150,
"y": 680,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "69de41290781f633",
"type": "ui_button",
"z": "1922139a3ea7cac2",
"name": "",
"group": "21e40a4a97a50168",
"order": 2,
"width": "3",
"height": "1",
"passthru": false,
"label": "Resume",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "",
"payloadType": "str",
"topic": "everest_external/nodered/#/cmd/resume_charging",
"topicType": "str",
"x": 160,
"y": 740,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "1a55c4272ab7ef25",
"type": "change",
"z": "1922139a3ea7cac2",
"name": "Insert Connector number",
"rules": [
{
"t": "change",
"p": "topic",
"pt": "msg",
"from": "#",
"fromt": "str",
"to": "connector_number",
"tot": "flow"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 670,
"y": 820,
"wires": [
[
"871a53340e257a24",
"3a84fa8a5b680643"
]
]
},
{
"id": "1f34c812528f61c2",
"type": "comment",
"z": "1922139a3ea7cac2",
"name": "Commands",
"info": "",
"x": 170,
"y": 620,
"wires": []
},
{
"id": "41449fc1144ed163",
"type": "comment",
"z": "1922139a3ea7cac2",
"name": "Simulation control",
"info": "",
"x": 190,
"y": 800,
"wires": []
},
{
"id": "8b728fabda00545f",
"type": "ui_switch",
"z": "1922139a3ea7cac2",
"name": "",
"label": "Simulation enable (HIL)",
"tooltip": "",
"group": "21e40a4a97a50168",
"order": 10,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "everest_external/nodered/#/carsim/cmd/enable",
"topicType": "str",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 210,
"y": 860,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "d54b331450b2ec12",
"type": "ui_button",
"z": "1922139a3ea7cac2",
"name": "",
"group": "21e40a4a97a50168",
"order": 8,
"width": "3",
"height": "1",
"passthru": false,
"label": "Car Plugin",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 36000;unplug",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/execute_charging_session",
"topicType": "str",
"x": 170,
"y": 960,
"wires": [
[
"cdef4125b099333e"
]
]
},
{
"id": "9f33338bd8c492d8",
"type": "ui_button",
"z": "1922139a3ea7cac2",
"name": "",
"group": "21e40a4a97a50168",
"order": 9,
"width": "3",
"height": "1",
"passthru": false,
"label": "Car unplug",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "",
"payload": "unplug",
"payloadType": "str",
"topic": "everest_external/nodered/#/carsim/cmd/modify_charging_session",
"topicType": "str",
"x": 170,
"y": 920,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "46ed28a1fb0c8abc",
"type": "ui_slider",
"z": "1922139a3ea7cac2",
"name": "MaxCurrent Slider",
"label": "",
"tooltip": "",
"group": "21e40a4a97a50168",
"order": 4,
"width": 0,
"height": 0,
"passthru": false,
"outs": "all",
"topic": "everest_external/nodered/#/cmd/set_max_current",
"topicType": "str",
"min": "6",
"max": "32",
"step": "0.1",
"x": 450,
"y": 680,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "3ce436b7f3df46a5",
"type": "ui_dropdown",
"z": "1922139a3ea7cac2",
"name": "",
"label": "Simulation",
"tooltip": "",
"place": "Select option",
"group": "21e40a4a97a50168",
"order": 10,
"width": 0,
"height": 0,
"passthru": true,
"multiple": false,
"options": [
{
"label": "AC 3ph 16A",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 36000;unplug",
"type": "str"
},
{
"label": "AC 1ph 32A",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 32,1;sleep 36000;unplug",
"type": "str"
},
{
"label": "AC Diode Fail",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 32,3;sleep 5;diode_fail;sleep 36000;unplug",
"type": "str"
},
{
"label": "AC Error E",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 3;error_e;sleep 36000;unplug",
"type": "str"
},
{
"label": "AC RCD Error",
"value": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 3;rcd_current 10.3;sleep 36000;unplug",
"type": "str"
}
],
"payload": "",
"topic": "sim_commands",
"topicType": "str",
"x": 170,
"y": 1020,
"wires": [
[
"cdef4125b099333e"
]
]
},
{
"id": "cdef4125b099333e",
"type": "function",
"z": "1922139a3ea7cac2",
"name": "Buffer sim commands",
"func": "if (msg.topic.indexOf('sim_commands') > -1) {\n flow.set('sim_commands', msg.payload);\n} else {\n msg.payload = flow.get('sim_commands');\n return msg;\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 440,
"y": 940,
"wires": [
[
"1a55c4272ab7ef25"
]
]
},
{
"id": "3a84fa8a5b680643",
"type": "debug",
"z": "1922139a3ea7cac2",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 910,
"y": 900,
"wires": []
},
{
"id": "63a055756688689a",
"type": "inject",
"z": "1922139a3ea7cac2",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "sim_commands",
"payload": "sleep 1;iec_wait_pwr_ready;sleep 1;draw_power_regulated 16,3;sleep 36000;unplug",
"payloadType": "str",
"x": 150,
"y": 1080,
"wires": [
[
"3ce436b7f3df46a5"
]
]
}
]