[{"id":"3b7efe18cd531c19","type":"inject","z":"edeb94a459c4553a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":40,"wires":[["7b64fe195f2a3970","a0411929543fc4f9","c38dcd2e2cda9c9a"]]},{"id":"bbcf764afa516d23","type":"group","z":"edeb94a459c4553a","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["c38dcd2e2cda9c9a","47e797498ec6a66a","82b2701a3f914d03","daa43575d4a4499b","c17763b87ca98b64","753f5b5ec72f205f","b2e78f06cc0c0ce7","8b70a2f3df2855e2","8d2ad82651280bec","e3dc1025e7b51015","6e96d4c770f3fd42","2913461f2c99fb41","0dec92053f220fee","2d60b751da271662","ab6ffe28f44916b3","c4a509e15e6e6735","752791173add7c32","c229bc8a4dc9b9f4","1dda77cc6db32735","e9c8c0e3e2cf57db","ef01b78d8a188167","61726ac3ce74a942","645ef16a154e2f07","5d5b01e515b3ff5c","c766cc3ebf604bd1","17ca261874f36f24","dbfe319b284daaa9","b854d1eaff378b17","e2b33d726905cee1","542a16698617b34d","0dfd5841996181c4","6d927cbafd5759dc","3e7ef7e7e0f0e43d","cc6ab9e9f6220c4f","915a0149f3a87adb"],"x":314,"y":39,"w":1152,"h":922},{"id":"c38dcd2e2cda9c9a","type":"exec","z":"edeb94a459c4553a","g":"bbcf764afa516d23","command":"sudo timeout -s SIGINT 10s /usr/local/bin/victron-ble read D2:8E:92:63:A7:96@f336b7f5ee4f66ae7fc2b136c06a832d","addpay":false,"append":"","useSpawn":"true","timer":"","winHide":false,"oldrc":false,"name":"Exec","x":390,"y":140,"wires":[["47e797498ec6a66a"],[],[]]},{"id":"47e797498ec6a66a","type":"json","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"victron-ble to json","property":"payload","action":"","pretty":false,"x":570,"y":140,"wires":[["82b2701a3f914d03","6e96d4c770f3fd42","2913461f2c99fb41","0dec92053f220fee","2d60b751da271662","ab6ffe28f44916b3","1dda77cc6db32735","c229bc8a4dc9b9f4","752791173add7c32","ef01b78d8a188167","61726ac3ce74a942","c766cc3ebf604bd1","b854d1eaff378b17","e2b33d726905cee1"]]},{"id":"82b2701a3f914d03","type":"debug","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Debug Victron Smart Shunt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":840,"y":920,"wires":[]},{"id":"daa43575d4a4499b","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":10,"width":0,"height":0,"name":"Name","label":"Name","format":"{{msg.payload.name}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1390,"y":880,"wires":[]},{"id":"c17763b87ca98b64","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":7,"width":0,"height":0,"name":"Strom","label":"Strom","format":"{{msg.payload}} A","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1390,"y":560,"wires":[]},{"id":"753f5b5ec72f205f","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":8,"width":0,"height":0,"name":"Leistung","label":"Leistung","format":"{{msg.payload}} W","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1380,"y":640,"wires":[]},{"id":"b2e78f06cc0c0ce7","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":3,"width":"4","height":"1","name":"TTGO","label":"TTGO","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1390,"y":720,"wires":[]},{"id":"8b70a2f3df2855e2","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":2,"width":"2","height":"1","name":"SOC","label":"SOC","format":"{{msg.payload}} %","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1390,"y":120,"wires":[]},{"id":"8d2ad82651280bec","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":12,"width":0,"height":0,"name":"MAC","label":"MAC","format":"{{msg.payload.address}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1390,"y":840,"wires":[]},{"id":"e3dc1025e7b51015","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":4,"width":"6","height":"1","name":"Spannung Gesamt","label":"Spannung Gesamt","format":"{{msg.payload}} V","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1350,"y":200,"wires":[]},{"id":"6e96d4c770f3fd42","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"TTGO","func":"const minutes = msg.payload.payload.remaining_mins;\n\nfunction formatTime(minutes) {\n let weeks = Math.floor(minutes / (7 * 24 * 60));\n minutes %= (7 * 24 * 60);\n\n let days = Math.floor(minutes / (24 * 60));\n minutes %= (24 * 60);\n\n let hours = Math.floor(minutes / 60);\n minutes %= 60;\n\n // Construct the time string dynamically\n let result = [];\n if (weeks > 0) result.push(`${weeks} Woche${weeks > 1 ? 's' : ''}`);\n if (days > 0) result.push(`${days} Tag${days > 1 ? 'e' : ''}`);\n if (hours > 0) result.push(`${hours} Stunde${hours > 1 ? 'n' : ''}`);\n if (minutes > 0) result.push(`${minutes} Minute${minutes > 1 ? 's' : ''}`);\n\n return result.join(\", \");\n}\n\nif (minutes == -1) {\n msg.label = \"Time to Full\"\n global.set(\"VE_timetogo\", \"charging\");\n\n // Get values from global context\n let consumedAh = Number(global.get(\"VE_consumedAH\")); // Negative value (e.g., -55.55)\n let chargingCurrentA = Number(global.get(\"VE_Current\")); // Current in Amps\n\n // Prevent division by zero\n if (chargingCurrentA <= 0) {\n msg.payload = \"Not charging\";\n return msg;\n }\n\n // Calculate time in minutes\n let timeToFullMinutes = (consumedAh * -1) / chargingCurrentA / 0.016666666;\n\n // Convert minutes to weeks, days, hours, and minutes\n let weeks = Math.floor(timeToFullMinutes / 10080); // 10080 minutes in a week\n let days = Math.floor((timeToFullMinutes % 10080) / 1440); // 1440 minutes in a day\n let hours = Math.floor((timeToFullMinutes % 1440) / 60);\n let minutes = Math.round(timeToFullMinutes % 60);\n\n // Build the formatted result dynamically, omitting zero values\n let timeFormatted = [];\n\n if (weeks > 0) timeFormatted.push(`${weeks} week${weeks > 1 ? \"s\" : \"\"}`);\n if (days > 0) timeFormatted.push(`${days} day${days > 1 ? \"s\" : \"\"}`);\n if (hours > 0) timeFormatted.push(`${hours} hour${hours > 1 ? \"s\" : \"\"}`);\n if (minutes > 0) timeFormatted.push(`${minutes} minute${minutes > 1 ? \"s\" : \"\"}`);\n\n // If all values are 0, show \"less than a minute\"\n if (timeFormatted.length === 0) {\n timeFormatted.push(\"less than a minute\");\n }\n\n // Join values with commas\n msg.payload = timeFormatted.join(\", \");\n global.set(\"VE_TimeToFull\", msg.payload);\n}\nelse {\n msg.payload = formatTime(minutes)\n msg.label = \"Time To Go\"\n global.set(\"VE_timetogo\", msg.payload);\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":720,"wires":[["b2e78f06cc0c0ce7"]]},{"id":"2913461f2c99fb41","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Strom","func":"msg.payload = msg.payload.payload.current.toFixed(2);\n\nglobal.set(\"VE_Current\", msg.payload);\nglobal.set(\"BATTamps\", msg.payload);\nglobal.set(\"MainBattAmps\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":560,"wires":[["cc6ab9e9f6220c4f"]]},{"id":"0dec92053f220fee","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Spannung Gesamt","func":"msg.payload = msg.payload.payload.voltage;\n\nglobal.set(\"VE_Mainbattery\", msg.payload);\nglobal.set(\"BATTvolt\", msg.payload);\n//global.set(\"VE_BatteryVolt\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":200,"wires":[["e3dc1025e7b51015"]]},{"id":"2d60b751da271662","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"SOC","func":"msg.payload = msg.payload.payload.soc;\n\nglobal.set(\"VE_SOC\", msg.payload);\nglobal.set(\"BATTsoc\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":120,"wires":[["8b70a2f3df2855e2"]]},{"id":"ab6ffe28f44916b3","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Verbrauchte Ah","func":"msg.payload = msg.payload.payload.consumed_ah;\n\nglobal.set(\"VE_consumedAH\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":800,"wires":[["c4a509e15e6e6735"]]},{"id":"c4a509e15e6e6735","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":11,"width":0,"height":0,"name":"Verbrauchte Ah","label":"Verbrauchte Ah","format":"{{msg.payload}} Ah","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1360,"y":800,"wires":[]},{"id":"752791173add7c32","type":"debug","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Alarm","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.payload.alarm","targetType":"msg","statusVal":"","statusType":"auto","x":770,"y":840,"wires":[]},{"id":"c229bc8a4dc9b9f4","type":"debug","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Aux Mode","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.payload.aux_mode","targetType":"msg","statusVal":"","statusType":"auto","x":790,"y":880,"wires":[]},{"id":"1dda77cc6db32735","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"RSSI","func":"\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":760,"wires":[["e9c8c0e3e2cf57db"]]},{"id":"e9c8c0e3e2cf57db","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":9,"width":0,"height":0,"name":"RSSI","label":"RSSI","format":"{{msg.payload.rssi}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1390,"y":760,"wires":[]},{"id":"ef01b78d8a188167","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Leistung","func":"msg.payload = (msg.payload.payload.current * msg.payload.payload.voltage).toFixed(2);\nglobal.set(\"VE_Power\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":640,"wires":[["915a0149f3a87adb"]]},{"id":"61726ac3ce74a942","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Typenbezeichung","func":"msg.payload = msg.payload.payload.model_name;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":80,"wires":[["645ef16a154e2f07"]]},{"id":"645ef16a154e2f07","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":1,"width":0,"height":0,"name":"Typenbezeichnung","label":"Typenbezeichung","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1350,"y":80,"wires":[]},{"id":"5d5b01e515b3ff5c","type":"comment","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Victron Smart Shunt","info":"","x":430,"y":80,"wires":[]},{"id":"c766cc3ebf604bd1","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Spannung Batterie 1","func":"msg.payload = msg.payload.payload.midpoint_voltage.toFixed(2);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":280,"wires":[["6d927cbafd5759dc"]]},{"id":"17ca261874f36f24","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":5,"width":"3","height":"1","name":"Batterie(1)","label":"Batt(1)","format":"{{msg.payload}} V","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1370,"y":280,"wires":[]},{"id":"dbfe319b284daaa9","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"5bffe643c0265073","order":6,"width":"3","height":"1","name":"Batterie(2)","label":"Batt(2)","format":"{{msg.payload}} V","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":1370,"y":400,"wires":[]},{"id":"b854d1eaff378b17","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Spannung Batterie 2","func":"msg.payload = (msg.payload.payload.voltage - msg.payload.payload.midpoint_voltage).toFixed(2);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":400,"wires":[["3e7ef7e7e0f0e43d"]]},{"id":"e2b33d726905cee1","type":"function","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Spannung Diff in %","func":"let BatterieSpannungGesamt = msg.payload.payload.voltage;\nlet BatterieSpannung1 = msg.payload.payload.midpoint_voltage;\nlet BatterieSpannung2 = (msg.payload.payload.voltage - msg.payload.payload.midpoint_voltage);\n\nmsg.payload = (BatterieSpannung1 - BatterieSpannung2) / BatterieSpannungGesamt * 100;\n\nglobal.set(\"VE_Aux\", msg.payload);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":520,"wires":[[]]},{"id":"542a16698617b34d","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"d7b10e4dc1f23ce3","order":8,"width":"3","height":"1","name":"","label":"Batterie(1)","format":"{{msg.payload}} V","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1370,"y":320,"wires":[]},{"id":"0dfd5841996181c4","type":"ui_text","z":"edeb94a459c4553a","g":"bbcf764afa516d23","group":"d7b10e4dc1f23ce3","order":17,"width":"3","height":"1","name":"","label":"Batterie(2)","format":"{{msg.payload}} V","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1370,"y":440,"wires":[]},{"id":"6d927cbafd5759dc","type":"change","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Convert to Number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1030,"y":280,"wires":[["17ca261874f36f24","542a16698617b34d"]]},{"id":"3e7ef7e7e0f0e43d","type":"change","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Convert to Number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1030,"y":400,"wires":[["dbfe319b284daaa9","0dfd5841996181c4"]]},{"id":"cc6ab9e9f6220c4f","type":"change","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Convert to Number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":930,"y":560,"wires":[["c17763b87ca98b64"]]},{"id":"915a0149f3a87adb","type":"change","z":"edeb94a459c4553a","g":"bbcf764afa516d23","name":"Convert to Number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":950,"y":640,"wires":[["753f5b5ec72f205f"]]},{"id":"5bffe643c0265073","type":"ui_group","name":"Smart Shunt","tab":"a101d9ff5688fa9e","order":2,"disp":true,"width":"6","collapse":true,"className":""},{"id":"d7b10e4dc1f23ce3","type":"ui_group","name":"Victron Shunt","tab":"deee53a800de461d","order":1,"disp":true,"width":"6","collapse":true,"className":""},{"id":"a101d9ff5688fa9e","type":"ui_tab","name":"Victron BLE","icon":"mi-usb","order":7,"disabled":false,"hidden":false},{"id":"deee53a800de461d","type":"ui_tab","name":"Info","icon":"mi-info","order":1,"disabled":false,"hidden":false}]