Hey guys,
because NodeRed is much cooler and better than HA i would share my energy dashboard 2.0 here:
[{"id":"8c814d11632cb2ab","type":"tab","label":"Energiefluß","disabled":false,"info":"","env":[]},{"id":"8adf1fb36c94dbac","type":"range","z":"8c814d11632cb2ab","minin":"10","maxin":"1200","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1070,"y":580,"wires":[["ac3a6aca884cc57c"]]},{"id":"ac3a6aca884cc57c","type":"change","z":"8c814d11632cb2ab","name":"PBAT","rules":[{"t":"set","p":"PBAT","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":580,"wires":[[]]},{"id":"986b3a2604e06d42","type":"switch","z":"8c814d11632cb2ab","name":"LAd-Ela","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"num"},{"t":"lt","v":"-20","vt":"num"},{"t":"btwn","v":"20","vt":"num","v2":"-20","v2t":"num"}],"checkall":"true","repair":false,"outputs":3,"x":840,"y":620,"wires":[["8adf1fb36c94dbac"],["3fcb591ce616ea85"],["642bbf7687f1afef"]],"outputLabels":["Lad","Ela","0"]},{"id":"6602a38d177edffd","type":"change","z":"8c814d11632cb2ab","name":"PBAT","rules":[{"t":"set","p":"PBAT","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1450,"y":620,"wires":[[]]},{"id":"a139a0a95059b456","type":"function","z":"8c814d11632cb2ab","name":"P_Bat - P_MPPT","func":"var P_MPPT=msg.payload;\nvar P_Bat=flow.get(\"P_Bat\");\nmsg.payload=P_Bat-P_MPPT;\n\nflow.set(\"P_8\",P_Bat);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":610,"y":620,"wires":[["986b3a2604e06d42"]]},{"id":"7b4fd791ab7257d3","type":"link in","z":"8c814d11632cb2ab","name":"PV -> Akku","links":["b64e7ae7ffc7e462"],"x":140,"y":620,"wires":[["5472b0a0a7f34c2b","13a8775f18ff1bfd","7654a001432ce943"]],"outputLabels":["Solar in Akku"],"l":true},{"id":"642bbf7687f1afef","type":"function","z":"8c814d11632cb2ab","name":"PBAT=20","func":"flow.set(\"PBAT\",20);\nreturn null;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1080,"y":660,"wires":[[]]},{"id":"3fcb591ce616ea85","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1070,"y":620,"wires":[["37c2e87cf83dbc15"]]},{"id":"37c2e87cf83dbc15","type":"range","z":"8c814d11632cb2ab","minin":"10","maxin":"1200","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1190,"y":620,"wires":[["8bb5bcd877ae19bf"]]},{"id":"8bb5bcd877ae19bf","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1310,"y":620,"wires":[["6602a38d177edffd"]]},{"id":"fd4ec0e61007b843","type":"range","z":"8c814d11632cb2ab","minin":"10","maxin":"3000","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1070,"y":700,"wires":[["b75b8b5474207a54"]]},{"id":"b75b8b5474207a54","type":"change","z":"8c814d11632cb2ab","name":"PNETZ","rules":[{"t":"set","p":"PNETZ","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1220,"y":700,"wires":[[]]},{"id":"4bfb1a4d8377e585","type":"switch","z":"8c814d11632cb2ab","name":"Einsp Rücksp","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"num"},{"t":"lt","v":"-20","vt":"num"},{"t":"btwn","v":"20","vt":"num","v2":"-20","v2t":"num"}],"checkall":"true","repair":false,"outputs":3,"x":860,"y":740,"wires":[["fd4ec0e61007b843"],["fd131b3906725673"],["623c9e73990ca00d"]],"outputLabels":["Lad","Ela","0"]},{"id":"9ab59619c8ab7150","type":"change","z":"8c814d11632cb2ab","name":"PNETZ","rules":[{"t":"set","p":"PNETZ","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1480,"y":740,"wires":[[]]},{"id":"623c9e73990ca00d","type":"function","z":"8c814d11632cb2ab","name":"PNETZ=20","func":"flow.set(\"PNETZ\",20);\nreturn null;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1090,"y":780,"wires":[[]]},{"id":"fd131b3906725673","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1070,"y":740,"wires":[["152211484ef6ced2"]]},{"id":"152211484ef6ced2","type":"range","z":"8c814d11632cb2ab","minin":"10","maxin":"3000","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1190,"y":740,"wires":[["31ce00ad72b8164d"]]},{"id":"31ce00ad72b8164d","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1310,"y":740,"wires":[["9ab59619c8ab7150"]]},{"id":"283bc9633350a585","type":"change","z":"8c814d11632cb2ab","name":"P4","rules":[{"t":"set","p":"P_4","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":740,"wires":[["f67d2713dc7dc48f"]]},{"id":"0d933367c3b9b694","type":"link in","z":"8c814d11632cb2ab","name":"Netzstrom","links":["f71d21b418fb0274"],"x":140,"y":740,"wires":[["283bc9633350a585"]],"l":true},{"id":"f17889a92be15068","type":"function","z":"8c814d11632cb2ab","name":"Power Card","func":"msg.P1 = Number(flow.get(\"Temp_Außen\")).toFixed(1) + \"°C\";\nmsg.soc = Number(flow.get(\"SOC\")).toFixed(0)+\"%\";\nmsg.soc_icon=\"battery_5_bar\";\nif (flow.get(\"SOC\")>0) {msg.soc_icon=\"battery_0_bar\";}\nif (flow.get(\"SOC\") > 10) { msg.soc_icon=\"battery_1_bar\";}\nif (flow.get(\"SOC\") > 24) { msg.soc_icon=\"battery_2_bar\";}\nif (flow.get(\"SOC\") > 39) { msg.soc_icon=\"battery_3_bar\";}\nif (flow.get(\"SOC\") > 59) { msg.soc_icon=\"battery_4_bar\";}\nif (flow.get(\"SOC\")>79) {msg.soc_icon=\"battery_5_bar\";}\nif (flow.get(\"SOC\") > 90) { msg.soc_icon=\"battery_full\";}\nmsg.P8=flow.get(\"P_8\");\n msg.P8= Number(msg.P8).toFixed(0);\n msg.P3=flow.get(\"P_3\");\n msg.P3 = Number(msg.P3).toFixed(0);\nmsg.P2=flow.get(\"P_2\");\n msg.P2 = Number(msg.P2).toFixed(0);\nmsg.P4=-1*flow.get(\"P_4\");\n msg.P4 = Number(msg.P4).toFixed(0);\nmsg.P6=flow.get(\"P_6\");\n msg.P6 = Number(msg.P6).toFixed(0);\n msg.P9=flow.get(\"P_9\");\n msg.P9= Number(msg.P9).toFixed(1);\nmsg.P_erzeugung=flow.get(\"P_erzeugung\");\nmsg.P_erzeugung = Number(msg.P_erzeugung).toFixed(1);\nmsg.P_verbrauch = flow.get(\"P_verbrauch\");\n msg.P_verbrauch = Number(msg.P_verbrauch).toFixed(1);\nmsg.P_Bat = Number(flow.get(\"P_blue_line\")).toFixed(0);\n/*msg.varPV3 = Number(flow.get(\"varPV3\")).toFixed(0);*/\nmsg.w_blue=11;\nmsg.v_blue=flow.get(\"PBAT\");\nmsg.d_blue=\"reverse\";\nif (msg.v_blue>0){\nif (msg.v_blue==20) {msg.v_blue=0; msg.w_blue=2}}\nelse {\n msg.d_blue=\"normal\";\n msg.v_blue=-msg.v_blue;\n if (msg.v_blue==20) {msg.v_blue=0; msg.w_blue=2}\n }\nmsg.w_grey2=14;\nmsg.v_grey2=flow.get(\"PNETZ\");\nmsg.d_grey2=\"reverse\";\nif (msg.v_grey2>0){\nif (msg.v_grey2==20) {msg.v_grey2=0; msg.w_grey2=2}}\nelse {\n msg.d_grey2=\"normal\";\n msg.v_grey2=-msg.v_grey2;\n if (msg.v_grey2==20) {msg.v_grey2=0; msg.w_grey2=2}\n }\nmsg.v_grey2 = msg.v_grey2 *1.2 //langsamer da lange Strecke \n/* Linie ausgeblendet\nmsg.d_red1=\"normal\";\nmsg.v_red1=msg.payload;\nmsg.w_red1=10; */\nmsg.w_yellow1=10;\nmsg.w_yellow2=10;\nmsg.w_yellow3=10;\nmsg.v_yellow1=flow.get(\"PV1\");\nif (msg.v_yellow1==20) {msg.v_yellow1=0; msg.w_yellow1=2}\nmsg.v_yellow2=flow.get(\"PV2\");\nif (msg.v_yellow2==20) {msg.v_yellow2=0; msg.w_yellow2=2}\nmsg.v_yellow3=flow.get(\"PV3\");\nif (msg.v_yellow3==20) {msg.v_yellow3=0; msg.w_yellow3=2}\n\nmsg.w_red2=10;\nmsg.v_red2=flow.get(\"WP\"); \nif (msg.v_red2==20) {msg.v_red2=0; msg.w_red2=2}\nmsg.v_red2=msg.v_red2/3 //kurze Strecke: Zeit kürzer damit Geschwindigkeit bleibt\n\nmsg.w_brown = 10;\nmsg.brown = flow.get(\"HEAT\");\nif (msg.brown == 20) {msg.brown = 0; msg.w_brown = 2;}\n// kurze Strecke: Zeit kürzer damit Geschwindigkeit gleich bleibt\nmsg.brown = msg.brown / 3;\n\nreturn msg;\n\n\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":140,"wires":[["135c56d49f401fb3","172bcef81c035472"]],"info":"Nummerierung der Power-Anzeigen\n\nP1 P2 P3\nP4 -- P6\nP7 P8 P9\n\n"},{"id":"5472b0a0a7f34c2b","type":"function","z":"8c814d11632cb2ab","name":"function 1","func":"msg.payload = Number(msg.payload);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":620,"wires":[["a139a0a95059b456"]]},{"id":"d79cbcea7533bcb0","type":"comment","z":"8c814d11632cb2ab","name":"Energie-Dashboard","info":"","x":130,"y":40,"wires":[]},{"id":"7c10822c3fdd26b7","type":"catch","z":"8c814d11632cb2ab","name":"","scope":null,"uncaught":false,"x":100,"y":80,"wires":[["c16f39aee16909a9"]]},{"id":"c16f39aee16909a9","type":"link out","z":"8c814d11632cb2ab","name":"Fehler","mode":"link","links":[],"x":215,"y":80,"wires":[]},{"id":"aebba202821e3a32","type":"range","z":"8c814d11632cb2ab","minin":"0","maxin":"1800","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1030,"y":420,"wires":[["6ae7ba05194db097"]]},{"id":"6ae7ba05194db097","type":"change","z":"8c814d11632cb2ab","name":"PV3","rules":[{"t":"set","p":"PV3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1170,"y":420,"wires":[[]]},{"id":"fd3d956f96fcf317","type":"change","z":"8c814d11632cb2ab","name":"PV3","rules":[{"t":"set","p":"PV3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1110,"y":320,"wires":[[]]},{"id":"72431764d14b0ab9","type":"change","z":"8c814d11632cb2ab","name":"varPV3","rules":[{"t":"set","p":"varPV3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":320,"wires":[["fd3d956f96fcf317"]]},{"id":"13a8775f18ff1bfd","type":"change","z":"8c814d11632cb2ab","name":"P_2","rules":[{"t":"set","p":"P_2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":560,"wires":[[]]},{"id":"a68aa68c2beb5679","type":"range","z":"8c814d11632cb2ab","minin":"25","maxin":"700","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":810,"y":1000,"wires":[["24eef0d6d1544877"]]},{"id":"24eef0d6d1544877","type":"change","z":"8c814d11632cb2ab","name":"WP","rules":[{"t":"set","p":"WP","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":1000,"wires":[[]]},{"id":"e814f6eea6e1856c","type":"change","z":"8c814d11632cb2ab","name":"P3","rules":[{"t":"set","p":"P_3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":1000,"wires":[["a68aa68c2beb5679"]]},{"id":"fe3b4904e32a301f","type":"change","z":"8c814d11632cb2ab","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"700","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":980,"wires":[["e814f6eea6e1856c"]]},{"id":"f67d2713dc7dc48f","type":"function","z":"8c814d11632cb2ab","name":"function 3","func":"msg.payload = -1*Number(msg.payload);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":740,"wires":[["4bfb1a4d8377e585"]]},{"id":"10f775e486d86a57","type":"link in","z":"8c814d11632cb2ab","name":"Wärmepumpe","links":["e03ac30bca79e267"],"x":105,"y":1000,"wires":[["0198bc78ce00c965"]]},{"id":"0198bc78ce00c965","type":"switch","z":"8c814d11632cb2ab","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":250,"y":1000,"wires":[["fe3b4904e32a301f"],["726eea896bb60c94"]]},{"id":"726eea896bb60c94","type":"change","z":"8c814d11632cb2ab","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1020,"wires":[["e814f6eea6e1856c"]]},{"id":"3815152153a5393b","type":"range","z":"8c814d11632cb2ab","minin":"0","maxin":"10","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":810,"y":1100,"wires":[["340177417e118fb3"]]},{"id":"340177417e118fb3","type":"change","z":"8c814d11632cb2ab","name":"HEAT","rules":[{"t":"set","p":"HEAT","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":1100,"wires":[[]]},{"id":"173b4822d845fc40","type":"change","z":"8c814d11632cb2ab","name":"P9","rules":[{"t":"set","p":"P_9","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":1100,"wires":[["3815152153a5393b"]]},{"id":"cd929aa9d6516abc","type":"link in","z":"8c814d11632cb2ab","name":"link in 3","links":["bac7a56688b2d041"],"x":105,"y":1100,"wires":[["1d51ec7f39508d83"]]},{"id":"1d51ec7f39508d83","type":"function","z":"8c814d11632cb2ab","name":"function 4","func":"let payload0 = msg.payload[0].data[0][6];\n\n// Wert zurückgeben\nmsg.payload = payload0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":1100,"wires":[["173b4822d845fc40"]]},{"id":"7654a001432ce943","type":"switch","z":"8c814d11632cb2ab","name":"Einsp Rücksp","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"num"},{"t":"lt","v":"-20","vt":"num"},{"t":"btwn","v":"20","vt":"num","v2":"-20","v2t":"num"}],"checkall":"true","repair":false,"outputs":3,"x":860,"y":460,"wires":[["aebba202821e3a32"],["19ff85b9c89a9ecf"],["94b07488f72d0dd0"]],"outputLabels":["Lad","Ela","0"]},{"id":"1cf10c04b0112b99","type":"change","z":"8c814d11632cb2ab","name":"PV3","rules":[{"t":"set","p":"PV3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1450,"y":460,"wires":[[]]},{"id":"19ff85b9c89a9ecf","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":460,"wires":[["476219917e553121"]]},{"id":"476219917e553121","type":"range","z":"8c814d11632cb2ab","minin":"10","maxin":"1200","minout":"20","maxout":"1","action":"clamp","round":false,"property":"payload","name":"","x":1170,"y":460,"wires":[["6b60476cbdb3cf8d"]]},{"id":"6b60476cbdb3cf8d","type":"function","z":"8c814d11632cb2ab","name":"-1","func":"msg.payload=-msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1290,"y":460,"wires":[["1cf10c04b0112b99"]]},{"id":"94b07488f72d0dd0","type":"function","z":"8c814d11632cb2ab","name":"PV3=20","func":"flow.set(\"PV3\",20);\nreturn null;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1040,"y":500,"wires":[[]]},{"id":"135c56d49f401fb3","type":"debug","z":"8c814d11632cb2ab","name":"debug 2","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":680,"y":80,"wires":[]},{"id":"172bcef81c035472","type":"ui-template","z":"8c814d11632cb2ab","group":"a2670b72d91297a0","page":"","ui":"","name":"","order":1,"width":"6","height":"15","head":"","format":"<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" id=\"powercard\" viewBox=\"0 0 318 318\" preserveAspectRatio=\"xMidYMid meet\">\n <!-- Kreise -->\n <circle cx=\"45\" cy=\"45\" r=\"32\" class=\"ring lightblue\" />\n <circle cx=\"275\" cy=\"45\" r=\"40\" class=\"ring red\" />\n <circle cx=\"160\" cy=\"45\" r=\"40\" class=\"ring yellow\" />\n <circle cx=\"45\" cy=\"165\" r=\"40\" class=\"ring grey\" />\n <circle cx=\"275\" cy=\"165\" r=\"40\" class=\"ring white\" />\n <circle cx=\"160\" cy=\"275\" r=\"40\" class=\"ring blue\" />\n <circle cx=\"275\" cy=\"275\" r=\"40\" class=\"ring brown\" />\n <circle cx=\"45\" cy=\"275\" r=\"40\" class=\"ring green\" />\n\n <!-- Werte -->\n <text x=\"45\" y=\"50\" class=\"value\">{{msg.P1}}</text>\n <text x=\"160\" y=\"28\" class=\"value\">{{msg.P2}}W</text>\n <text x=\"275\" y=\"28\" class=\"value\">{{msg.P3}}W</text>\n <text x=\"45\" y=\"148\" class=\"value\">{{msg.P4}}W</text>\n <text x=\"275\" y=\"148\" class=\"value\">{{msg.P6}}W</text>\n <text x=\"160\" y=\"258\" class=\"value\">{{msg.P8}}W</text>\n <text x=\"275\" y=\"258\" class=\"value\">{{msg.P9}}L</text>\n <text x=\"200\" y=\"220\" fill=\"cornflowerblue\" text-anchor=\"middle\">{{msg.P_Bat}}W</text>\n\n <!-- Labels + Symbole -->\n <text x=\"160\" y=\"74\" class=\"label\">PV</text>\n <text x=\"160\" y=\"55\" class=\"label\">☀️</text>\n\n <text x=\"275\" y=\"74\" class=\"label\">WP</text>\n <text x=\"275\" y=\"55\" class=\"label\">🔥</text>\n\n <text x=\"275\" y=\"192\" class=\"label\">Haus</text>\n <text x=\"275\" y=\"175\" class=\"label\">🏠</text>\n\n <text x=\"160\" y=\"298\" class=\"label\">{{msg.soc}}</text>\n <text x=\"160\" y=\"280\" class=\"label\">🔋</text>\n\n <text x=\"45\" y=\"192\" class=\"label\">Netz</text>\n <text x=\"45\" y=\"175\" class=\"label\">⚡</text>\n\n <text x=\"275\" y=\"298\" class=\"label\">Heizung</text>\n <text x=\"275\" y=\"280\" class=\"label\">🔥</text>\n\n <!-- Erzeugung & Verbrauch unten links -->\n <text x=\"45\" y=\"270\" class=\"value\">\n <tspan fill=\"#24FD00\">🌞</tspan>{{msg.P_erzeugung}}kWh\n </text>\n <text x=\"45\" y=\"290\" class=\"value\">\n <tspan fill=\"#c00\">🔌</tspan>{{msg.P_verbrauch}}kWh\n </text>\n\n <!-- Linien + Punkte mit dynamischer Geschwindigkeit -->\n <g>\n <path id=\"lineY3\" d=\"M160,87 C160,166 160,166 160,235\" class=\"line yellow\" />\n <circle r=\"3\" class=\"dot yellow\">\n <animateMotion id=\"animY3\" repeatCount=\"indefinite\">\n <mpath href=\"#lineY3\" />\n </animateMotion>\n </circle>\n </g>\n\n <g>\n <path id=\"lineB\" d=\"M170,235 C170,176 170,176 235,176\" class=\"line blue\" />\n <circle r=\"3\" class=\"dot blue\">\n <animateMotion id=\"animB\" repeatCount=\"indefinite\">\n <mpath href=\"#lineB\" />\n </animateMotion>\n </circle>\n </g>\n\n <g>\n <path id=\"lineR2\" d=\"M200,45 L235,45\" class=\"line red\" />\n <circle r=\"3\" class=\"dot red\">\n <animateMotion id=\"animR2\" repeatCount=\"indefinite\">\n <mpath href=\"#lineR2\" />\n </animateMotion>\n </circle>\n </g>\n\n <g>\n <path id=\"lineG2\" d=\"M87,166 C160,166 160,166 233,166\" class=\"line grey\" />\n <circle r=\"3\" class=\"dot grey\">\n <animateMotion id=\"animG2\" repeatCount=\"indefinite\">\n <mpath href=\"#lineG2\" />\n </animateMotion>\n </circle>\n </g>\n\n <g>\n <path id=\"lineBr\" d=\"M275,235 C275,210 275,210 275,205\" class=\"line brown\" />\n <circle r=\"3\" class=\"dot brown\">\n <animateMotion id=\"animBr\" repeatCount=\"indefinite\">\n <mpath href=\"#lineBr\" />\n </animateMotion>\n </circle>\n </g>\n </svg>\n</template>\n\n<script>\n export default {\n watch: {\n // watch msg for any changes\n msg: function () {\n const m = this.msg\n console.log('msg changed', m)\n this.updateDuration('animY3', m.v_yellow3)\n this.updateDuration('animB', m.v_blue)\n this.updateDuration('animR2', m.v_red2)\n this.updateDuration('animG2', m.v_grey2)\n this.updateDuration('animBr', m.brown)\n this.updateDirection('animG2', m.d_grey2) \n }\n },\n \n methods: {\n updateDuration(animationId, newValue, unit = 's') {\n if (typeof newValue !== 'number' || newValue < 0) {\n console.log(`Invalid animation duration for ${animationId}: ${newValue}`)\n return;\n }\n const anim = this.$el.querySelector(`#${animationId}`)\n if (anim) {\n anim.setAttribute('dur', (newValue ?? 5) + unit)\n }\n },\nupdateDirection(animationId, direction) {\n const anim = this.$el.querySelector(`#${animationId}`)\n if (anim) {\n if (direction === \"reverse\") {\n anim.setAttribute(\"keyPoints\", \"1;0\")\n anim.setAttribute(\"keyTimes\", \"0;1\")\n } else {\n anim.setAttribute(\"keyPoints\", \"0;1\")\n anim.setAttribute(\"keyTimes\", \"0;1\")\n }\n }\n}\n}\n}\n</script>\n\n\n<style>\n .ring {\n fill: #fff;\n fill-opacity: 0.1;\n stroke-width: 3;\n }\n\n .ring.red {\n stroke: #c00;\n }\n\n .ring.grey {\n stroke: #ccc;\n }\n\n .ring.blue {\n stroke: #005FFF;\n }\n\n .ring.lightblue {\n stroke: #7FC6FE;\n fill: #7FC6FE;\n fill-opacity: 0.2;\n }\n\n .ring.yellow {\n stroke: #FFF700;\n }\n\n .ring.brown {\n stroke: #5C4033;\n }\n\n .ring.green {\n stroke: #24FD00;\n }\n\n .ring.white {\n stroke: #ffffff;\n }\n\n .label {\n fill: #fff;\n font-size: 0.9em;\n text-anchor: middle;\n }\n\n .value {\n fill: #fff;\n font-size: 0.8em;\n text-anchor: middle;\n }\n\n .line {\n stroke-width: 2;\n fill: none;\n }\n\n .line.yellow {\n stroke: #ff0;\n }\n\n .line.blue {\n stroke: #005FFF;\n }\n\n .line.red {\n stroke: #c00;\n }\n\n .line.grey {\n stroke: #ccc;\n }\n\n .line.brown {\n stroke: #5C4033;\n }\n\n .dot {\n stroke-width: 6;\n stroke-linecap: round;\n fill: none;\n }\n\n .dot.yellow {\n stroke: #ff0;\n }\n\n .dot.blue {\n stroke: #005FFF;\n }\n\n .dot.red {\n stroke: #c00;\n }\n\n .dot.grey {\n stroke: #ccc;\n }\n\n .dot.brown {\n stroke: #5C4033;\n }\n</style>","storeOutMessages":true,"passthru":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":680,"y":140,"wires":[[]]},{"id":"1ec6ec27bfd36e4c","type":"change","z":"8c814d11632cb2ab","name":"P_6","rules":[{"t":"set","p":"P_6","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":260,"wires":[[]]},{"id":"a05b07992d266474","type":"change","z":"8c814d11632cb2ab","name":"P_Bat","rules":[{"t":"set","p":"P_Bat","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":380,"wires":[[]]},{"id":"9e1bcb0826e30586","type":"change","z":"8c814d11632cb2ab","name":"SOC","rules":[{"t":"set","p":"SOC","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":340,"wires":[[]]},{"id":"fef68f8af6f3214f","type":"change","z":"8c814d11632cb2ab","name":"Außentemp","rules":[{"t":"set","p":"Temp_Außen","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":220,"wires":[[]]},{"id":"04eb7c14fa2cc157","type":"link in","z":"8c814d11632cb2ab","name":"link in 9","links":["eec9c34bbe215039"],"x":65,"y":380,"wires":[["9b6134cadeb47826"]]},{"id":"546a36ede91f941a","type":"link in","z":"8c814d11632cb2ab","name":"link in 10","links":["c0da0a0e4abdd56c"],"x":65,"y":340,"wires":[["9e1bcb0826e30586"]]},{"id":"d5abe5805197b2b0","type":"function","z":"8c814d11632cb2ab","name":"P_Bat + Netz","func":"var P_NETZ=msg.payload;\nvar P_Erz=flow.get(\"P_Erz\");\nmsg.payload=P_Erz+P_NETZ;\n\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":190,"y":260,"wires":[["1ec6ec27bfd36e4c"]]},{"id":"9c680ac7634ca561","type":"link in","z":"8c814d11632cb2ab","name":"link in 11","links":["f71d21b418fb0274"],"x":65,"y":260,"wires":[["d5abe5805197b2b0"]]},{"id":"9b6134cadeb47826","type":"function","z":"8c814d11632cb2ab","name":"function 8","func":"msg.payload = Number(msg.payload);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":380,"wires":[["a05b07992d266474"]]},{"id":"3a5335e0843f0f95","type":"link in","z":"8c814d11632cb2ab","name":"link in 12","links":["1bf6098e4e5a361f"],"x":65,"y":220,"wires":[["fef68f8af6f3214f"]]},{"id":"1c91113e1999e530","type":"change","z":"8c814d11632cb2ab","name":"P_Erz","rules":[{"t":"set","p":"P_Erz","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":300,"wires":[[]]},{"id":"d0fa0282ea3382bc","type":"link in","z":"8c814d11632cb2ab","name":"link in 13","links":["320268b551d6a404"],"x":65,"y":300,"wires":[["1c91113e1999e530"]]},{"id":"2d170232ce1e990f","type":"link in","z":"8c814d11632cb2ab","name":"link in 14","links":["7c27835b074117c5"],"x":65,"y":420,"wires":[["bbfa50bfd9335d14"]]},{"id":"bbfa50bfd9335d14","type":"change","z":"8c814d11632cb2ab","name":"P_Blueline","rules":[{"t":"set","p":"P_blue_line","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":420,"wires":[[]]},{"id":"c79f3380c9001192","type":"link in","z":"8c814d11632cb2ab","name":"link in 15","links":["202647a8c86a4bbc"],"x":65,"y":460,"wires":[["24ad9b5983d3d035","e408cd091d494be2"]]},{"id":"24ad9b5983d3d035","type":"function","z":"8c814d11632cb2ab","name":"function 9","func":"let payload0 = msg.payload[0].data[1][6];\n\n// Wert zurückgeben\nmsg.payload = payload0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":460,"wires":[["416d6a7a44d33dce"]]},{"id":"e408cd091d494be2","type":"function","z":"8c814d11632cb2ab","name":"function 10","func":"let payload0 = msg.payload[0].data[2][6];\n\n// Wert zurückgeben\nmsg.payload = payload0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":500,"wires":[["8444b7b450996f0a"]]},{"id":"416d6a7a44d33dce","type":"change","z":"8c814d11632cb2ab","name":"msg.P_erzeugung","rules":[{"t":"set","p":"P_erzeugung","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":460,"wires":[[]]},{"id":"8444b7b450996f0a","type":"change","z":"8c814d11632cb2ab","name":"msg.P_verbrauch","rules":[{"t":"set","p":"P_verbrauch","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":500,"wires":[[]]},{"id":"1cc15865fbd99710","type":"link in","z":"8c814d11632cb2ab","name":"Takt","links":["dcbccada56c5224b"],"x":165,"y":140,"wires":[["f17889a92be15068"]]},{"id":"a2670b72d91297a0","type":"ui-group","name":"Solarflow","page":"21a2e81821bb0faf","width":"6","height":1,"order":1,"showTitle":false,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"21a2e81821bb0faf","type":"ui-page","name":"Stromfluss","ui":"d784e8b417213bfb","path":"/stromfluss","icon":"lightning-bolt","layout":"flex","theme":"a41c84970fc4dbb8","breakpoints":[{"name":"Default","px":"0","cols":"3"}],"order":1,"className":"","visible":"true","disabled":"false"},{"id":"d784e8b417213bfb","type":"ui-base","name":"Bentlage","path":"/dashboard","appIcon":"","includeClientData":false,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"icon","titleBarStyle":"hidden","showReconnectNotification":false,"notificationDisplayTime":5,"showDisconnectNotification":false,"allowInstall":false},{"id":"a41c84970fc4dbb8","type":"ui-theme","name":"Default Theme","colors":{"surface":"#1f1f1f","primary":"#ffffff","bgPage":"#1f1f1f","groupBg":"#1f1f1f","groupOutline":"#151515"},"sizes":{"pagePadding":"6px","groupGap":"6px","groupBorderRadius":"2px","widgetGap":"6px","density":"compact"},"info":"/* Hintergrund des Chart-Containers */\r\n.nrdb-theme-dark .recharts-wrapper {\r\n background-color: black !important;\r\n}\r\n\r\n/* Achsenbeschriftungen */\r\n.recharts-cartesian-axis-tick tspan {\r\n fill: white !important;\r\n}\r\n\r\n/* Legendentext */\r\n.recharts-legend-item text {\r\n fill: white !important;\r\n}\r\n\r\n/* Allgemeine Chart-Texte (z. B. Werte im Chart) */\r\n.recharts-text tspan {\r\n fill: white !important;\r\n}"},{"id":"667299dbb55f0e9f","type":"global-config","env":[],"modules":{"@flowfuse/node-red-dashboard":"1.28.0"}}]
There is some to fix like the SOC battery icon maybe ... but didnt found good idea how to solve ths ...
Hope it helps someone and saves here or there a bit of energy
Regards,
Snot