Dashboard V1 vs V2

Realized my first NR project using V1 dashboard. It is mainly doing what it should do but soon I stumpled over the hints for V2 dashboard while V1 maintenance will be dropped in future. Therefore I installed FlowFuse V2 dashboard to try out what crashed my complete NR installation. System was still ok but NR http(s) was not more rechable. No dashboard, no flow editor. After new installation everything seems ok again.

  1. Is it possible to run V1 and V2 same time while project migration?

  2. Dashboard V1 is available here at https://10.10.20.149:1881/ui
    What is the V2 equivalent?

  3. For several reasons the project uses the Ubuntu radar charts. They are cute and easy for humans to recognize any load imbalances with its "roundness". For any 3 phase electricity, the diagram equals the wye-delta vector diagram widly used for all electrical AC illustrations. Is there any V2 equivalent?


V1 and V2 can co-exist
V2 is served at https://10.10.20.149:1881/dashboard

D2 charts has these options. Have a look at Scatter?

Although they cannot co-exist inside same dashboard page I am going to try this again.

Thats where my installation crashed

Another topic raised: As I like to access the dashboard from public internet outside my intranet using ngix reverse proxy/cname record it requires a secure user/password authentication what I did not find within V1. Are there any V2 improvements?

Can you post the payload to your radar chart

Here is how I did:

[{"id":"71464544b44378e5","type":"victron-input-gridmeter","z":"dc5e4f93c45afcbe","service":"com.victronenergy.grid/40","path":"/Ac/L2/Power","serviceObj":{"service":"com.victronenergy.grid/40","name":"eHZ18"},"pathObj":{"path":"/Ac/L2/Power","type":"float","name":"L2 Power (W)"},"name":"ABB","onlyChanges":false,"roundValues":"1","x":90,"y":1380,"wires":[["89d127a2741e743b"]]},{"id":"6b110a168e4c23b5","type":"victron-input-gridmeter","z":"dc5e4f93c45afcbe","service":"com.victronenergy.grid/40","path":"/Ac/L1/Power","serviceObj":{"service":"com.victronenergy.grid/40","name":"eHZ18"},"pathObj":{"path":"/Ac/L1/Power","type":"float","name":"L1 Power (W)"},"name":"ABB","onlyChanges":false,"roundValues":"1","x":90,"y":1320,"wires":[["5e69582fb1fda53f"]]},{"id":"56486db0c67fea28","type":"victron-input-gridmeter","z":"dc5e4f93c45afcbe","service":"com.victronenergy.grid/40","path":"/Ac/L3/Power","serviceObj":{"service":"com.victronenergy.grid/40","name":"eHZ18"},"pathObj":{"path":"/Ac/L3/Power","type":"float","name":"L3 Power (W)"},"name":"ABB","onlyChanges":false,"roundValues":"1","x":90,"y":1440,"wires":[["a05928cdf2a8b335"]]},{"id":"5e69582fb1fda53f","type":"function","z":"dc5e4f93c45afcbe","name":"Topic  P1","func":"msg.topic = \"P1\";\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":240,"y":1320,"wires":[["b56cfc0a31079f32"]]},{"id":"89d127a2741e743b","type":"function","z":"dc5e4f93c45afcbe","name":"Topic  P2","func":"msg.topic = \"P2\";\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":240,"y":1380,"wires":[["b56cfc0a31079f32"]]},{"id":"a05928cdf2a8b335","type":"function","z":"dc5e4f93c45afcbe","name":"Topic  P3","func":"msg.topic = \"P3\";\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":240,"y":1440,"wires":[["b56cfc0a31079f32"]]},{"id":"b56cfc0a31079f32","type":"join","z":"dc5e4f93c45afcbe","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":410,"y":1380,"wires":[["0ded24460dc90e51"]]},{"id":"0ded24460dc90e51","type":"function","z":"dc5e4f93c45afcbe","name":"Zoom","func":"msg1 = {\"payload\" : msg.payload.P1 *-1,\n        \"topic\" : \"P1\"};\n\nmsg2 = {\"payload\" : msg.payload.P2 *-1,\n        \"topic\" : \"P2\"};\n\nmsg3 = {\"payload\" : msg.payload.P3 *-1,\n        \"topic\" : \"P3\"};\n\nreturn [msg1,msg2,msg3];\n","outputs":3,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":1380,"wires":[["d4d69b01eda9c158"],["d4d69b01eda9c158"],["d4d69b01eda9c158"]]},{"id":"d4d69b01eda9c158","type":"ui_chart","z":"dc5e4f93c45afcbe","name":"","group":"c4b14b3c0e4dc051","order":10,"width":0,"height":0,"label":"Einspeisung","chartType":"radar","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"5","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":710,"y":1380,"wires":[[]]},{"id":"c4b14b3c0e4dc051","type":"ui_group","name":"Spalte3","tab":"52c4a1be8450fe1a","order":2,"disp":false,"width":"6","collapse":false,"className":""},{"id":"52c4a1be8450fe1a","type":"ui_tab","name":"Gottlieb-Daimler-Microgrid","icon":"dashboard","disabled":false,"hidden":false}]

You have to replace the data source of my ABB hardware by any injects. As 3 values are similar, the zoom function searches the smallest value and adds some zoom offset to recognize smaller differences in shape.

Here is a typical JSON example from 9-point radar chart by 9 hardware devices. Values are always negative as the project uses 4 quadrant complex numbers with real and imaginary parts calculation. Illustration does not need to take care therefore.

7/21/2025, 10:27:45 AMnode: debug 1Dev8 : msg.payload : Object
object
Dev0: -102
Dev1: -98
Dev2: -87
Dev3: -122
Dev4: -113
Dev5: -118
Dev6: -102
Dev7: -107
Dev8: -84

Can you put a debug node on the output of the join node and copy the full message. This is all I need to replicate your issue

Thats what I did:

But your Zoom function in the flow you posted references P1,P2 etc. and adds a topic So theres a lot more in the payload than you've shown. I can't figure it out

D2 (and UIBUILDER) supports most common proxy authentication tokens. So if you do your authentication via an NGINX integration, you should be able to do something.

The join output is a key/value object (array). As I did not find a way on how the V1 chart can process this, I changed the 3 values with inverted sign inside the zoom to 3 individual msg.payload with own topic each.

The 9 value radar chart is doing the same. Device 1-8 from the array are copied into individual msg.payload with own topic L/X(Master/Slave/Y what appear as labels in the diagram.

[{"id":"066565bb2de6182b","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/0/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/0/Ac/In/P","name":"/Devices/0/Ac/In/P","type":"number","value":-2883},"name":"Dev0","onlyChanges":false,"x":90,"y":4180,"wires":[["7def4fd9e37cfdd8"]]},{"id":"d372aac64af3b599","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/1/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/1/Ac/In/P","name":"/Devices/1/Ac/In/P","type":"number","value":-3003},"name":"Dev1","onlyChanges":false,"x":90,"y":4240,"wires":[["7def4fd9e37cfdd8"]]},{"id":"7baca92790433a21","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/2/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/2/Ac/In/P","name":"/Devices/2/Ac/In/P","type":"number","value":-2951},"name":"Dev2","onlyChanges":false,"x":90,"y":4300,"wires":[["7def4fd9e37cfdd8"]]},{"id":"13ede845a536f68e","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/6/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/6/Ac/In/P","name":"/Devices/6/Ac/In/P","type":"number","value":-2256},"name":"Dev6","onlyChanges":false,"x":90,"y":4540,"wires":[["7def4fd9e37cfdd8"]]},{"id":"ddf7d4d560df2a06","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/7/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/7/Ac/In/P","name":"/Devices/7/Ac/In/P","type":"number","value":-2252},"name":"Dev7","onlyChanges":false,"x":90,"y":4600,"wires":[["7def4fd9e37cfdd8"]]},{"id":"b8af945e1718ab4c","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/8/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/8/Ac/In/P","name":"/Devices/8/Ac/In/P","type":"number","value":-2566},"name":"Dev8","onlyChanges":false,"x":90,"y":4660,"wires":[["7def4fd9e37cfdd8"]]},{"id":"3bd082dc9ac5d0ec","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/3/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/3/Ac/In/P","name":"/Devices/3/Ac/In/P","type":"number","value":-2881},"name":"Dev3","onlyChanges":false,"x":90,"y":4360,"wires":[["7def4fd9e37cfdd8"]]},{"id":"63b8ba0413bbf27b","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/4/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/4/Ac/In/P","name":"/Devices/4/Ac/In/P","type":"number","value":-2780},"name":"Dev4","onlyChanges":false,"x":90,"y":4420,"wires":[["7def4fd9e37cfdd8"]]},{"id":"b30ec91b08b9a2f1","type":"victron-input-custom","z":"dc5e4f93c45afcbe","service":"com.victronenergy.vebus/276","path":"/Devices/5/Ac/In/P","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50 (276)"},"pathObj":{"path":"/Devices/5/Ac/In/P","name":"/Devices/5/Ac/In/P","type":"number","value":-2519},"name":"Dev5","onlyChanges":false,"x":90,"y":4480,"wires":[["7def4fd9e37cfdd8"]]},{"id":"7def4fd9e37cfdd8","type":"join","z":"dc5e4f93c45afcbe","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"6","count":"9","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":310,"y":4420,"wires":[["82d5ca1b62a4d766"]]},{"id":"12aa05c0c0697ff2","type":"ui_chart","z":"dc5e4f93c45afcbe","name":"","group":"5d6aa5fa2cd38a95","order":8,"width":0,"height":0,"label":"Multiplus Lastverteilung","chartType":"radar","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":830,"y":4420,"wires":[[]]},{"id":"82d5ca1b62a4d766","type":"function","z":"dc5e4f93c45afcbe","name":"Topics Dev1-8","func":"msg1 = {\"payload\" : msg.payload.Dev0 *-1,\n        \"topic\" : \"L1Master\"};\n\nmsg2 = {\"payload\" : msg.payload.Dev1 *-1,\n        \"topic\" : \"L1Slave1\"};\n\nmsg3 = {\"payload\" : msg.payload.Dev2 *-1,\n        \"topic\" : \"L1Slave2\"};\n\nmsg4 = {\"payload\" : msg.payload.Dev3 *-1,\n        \"topic\" : \"L2Master\"};\n\nmsg5 = {\"payload\" : msg.payload.Dev4 *-1,\n        \"topic\" : \"L2Slave1\"};\n\nmsg6 = {\"payload\" : msg.payload.Dev5 *-1,\n        \"topic\" : \"L2Slave2\"};\n\nmsg7 = {\"payload\" : msg.payload.Dev6 *-1,\n        \"topic\" : \"L3Master\"};\n\nmsg8 = {\"payload\" : msg.payload.Dev7 *-1,\n        \"topic\" : \"L3Slave1\"};\n\nmsg9 = {\"payload\" : msg.payload.Dev8 *-1,\n        \"topic\" : \"L3Slave2\"};\n\nreturn [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9];\n","outputs":9,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":4420,"wires":[["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"],["12aa05c0c0697ff2"]]},{"id":"b250ef14f4f0e9e5","type":"comment","z":"dc5e4f93c45afcbe","name":"Multiplus Lastverteilung","info":"","x":340,"y":4240,"wires":[]},{"id":"5d6aa5fa2cd38a95","type":"ui_group","name":"Spalte1","tab":"52c4a1be8450fe1a","order":1,"disp":false,"width":"6","collapse":false,"className":""},{"id":"52c4a1be8450fe1a","type":"ui_tab","name":"Gottlieb-Daimler-Microgrid","icon":"dashboard","disabled":false,"hidden":false}]