I have been working on this for multiple years off and on. I have had other solutions that worked but nothing that satisficed my actual needs/wants. This project uses WEL Server which provides a service of download Excel files or there is an xml link for live data needs. Also he provides a web page for live data viewing on a SVG background. EX: http://www.welserver.com/WEL0827/
I have about 40 devices and have tried to keep it simple while I learn Node-RED but I seem to be missing the big picture. Any help greatly appreciated. attaching my flow with template of XML.
[{"id":"9af9141769558c7a","type":"tab","label":"WEL_Help","disabled":false,"info":""},{"id":"860cc481dac8d6e6","type":"inject","z":"9af9141769558c7a","name":"get","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":170,"y":220,"wires":[["5baa8593c165b01c"]]},{"id":"692a92076d6f5d93","type":"debug","z":"9af9141769558c7a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1250,"y":140,"wires":[]},{"id":"77445a86aef706a8","type":"xml","z":"9af9141769558c7a","name":"","property":"payload","attr":"","chr":"","x":570,"y":220,"wires":[["2739b9ed5855e12f","84e93fd706aaf913","7958b92a9e6da049"]]},{"id":"84e93fd706aaf913","type":"function","z":"9af9141769558c7a","name":"","func":"var temp_top = Object.values(msg.payload.devices.device[2]);\nvar temp_top_N = msg.payload.devices.device[2].name[10];\nmsg.payload = temp_top[1];\nnode.send(msg,null);\nmsg.payload = msg.payload.devices.device[2];\nmsg.payload = temp_top_N[2];\nreturn [null,msg];\n\n/*\nvar temp_hum = Object.values(msg.payload);\nmsg.payload = parseFloat(temp_hum[1]);\nnode.send(msg,null);\nmsg.payload = parseFloat(temp_hum[2]);\nreturn [null,msg];\n*/","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":220,"wires":[["7658fc21e08d24e8"],["7658fc21e08d24e8"]]},{"id":"74b1bf971c03d3a7","type":"change","z":"9af9141769558c7a","name":"","rules":[{"t":"set","p":"payload[0]","pt":"msg","to":"$number(payload[0])\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":140,"wires":[["692a92076d6f5d93"]]},{"id":"2739b9ed5855e12f","type":"function","z":"9af9141769558c7a","name":"","func":"msg.payload = msg.payload.devices.device[2].value;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":140,"wires":[["74b1bf971c03d3a7"]]},{"id":"7658fc21e08d24e8","type":"debug","z":"9af9141769558c7a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1030,"y":220,"wires":[]},{"id":"7958b92a9e6da049","type":"debug","z":"9af9141769558c7a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":280,"wires":[]},{"id":"5baa8593c165b01c","type":"template","z":"9af9141769558c7a","name":"XML Data WEL_Server","field":"payload","fieldType":"msg","format":"handlebars","syntax":"plain","template":"\n<devices>\n<device>\n<name>date</name>\n<value>08/01/2021</value>\n</device>\n<device>\n<name>time</name>\n<value>10:59:21</value>\n</device>\n<device>\n<name>server</name>\n<value>76.212501</value>\n</device>\n<device>\n<name>util_room</name>\n<value>88.587501</value>\n</device>\n<device>\n<name>3_supply</name>\n<value>84.199989</value>\n</device>\n<device>\n<name>3_return</name>\n<value>91.624992</value>\n</device>\n<device>\n<name>2_supply</name>\n<value>144.837478</value>\n</device>\n<device>\n<name>2_return</name>\n<value>138.087478</value>\n</device>\n<device>\n<name>1_supply</name>\n<value>143.149978</value>\n</device>\n<device>\n<name>1_return</name>\n<value>82.624992</value>\n</device>\n<device>\n<name>back_return_A4</name>\n<value>92.974998</value>\n</device>\n<device>\n<name>back_supply_A4</name>\n<value>109.737495</value>\n</device>\n<device>\n<name>back_supply_B4</name>\n<value>88.587501</value>\n</device>\n<device>\n<name>back_return_B4</name>\n<value>87.124992</value>\n</device>\n<device>\n<name>dh_boiler_sup</name>\n<value>146.749984</value>\n</device>\n<device>\n<name>dh_code_supply</name>\n<value>123.574989</value>\n</device>\n<device>\n<name>dh_cold_supply</name>\n<value>58.887500</value>\n</device>\n<device>\n<name>dh_recirc</name>\n<value>111.649986</value>\n</device>\n<device>\n<name>dh_boiler_ret</name>\n<value>142.587478</value>\n</device>\n<device>\n<name>dh_tank_out</name>\n<value>138.087478</value>\n</device>\n<device>\n<name>dh_tank_in</name>\n<value>56.524997</value>\n</device>\n<device>\n<name>sys_supply</name>\n<value>85.887489</value>\n</device>\n<device>\n<name>sys_return</name>\n<value>99.162498</value>\n</device>\n<device>\n<name>apt_7_zone_1</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>apt_7_zone_2</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>apt_7_zone_3</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>apt_7_zone_4</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>zone_control_5</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>zone_control_6</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>zone_control_7</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>zone_control_8</name>\n<value>0.000000</value>\n</device>\n<device>\n<name>ac_drain_water</name>\n<value>75.424995</value>\n</device>\n<device>\n<name>basement_supply</name>\n<value>75.424995</value>\n</device>\n<device>\n<name>basement_return</name>\n<value>75.424995</value>\n</device>\n<device>\n<name>ac_air_return</name>\n<value>74.525001</value>\n</device>\n<device>\n<name>ac_air_supply</name>\n<value>76.212501</value>\n</device>\n<device>\n<name>apt_frt_hw</name>\n<value>81.499992</value>\n</device>\n<device>\n<name>apt_frt_ac_cold</name>\n<value>64.849998</value>\n</device>\n<device>\n<name>ht-mani-pos-7</name>\n<value>82.512489</value>\n</device>\n<device>\n<name>ht-mani-pos-6</name>\n<value>85.887489</value>\n</device>\n<device>\n<name>ht-mani-pos-5</name>\n<value>89.037498</value>\n</device>\n<device>\n<name>ht-mani-pos-4</name>\n<value>93.199989</value>\n</device>\n<device>\n<name>ht-mani-pos-3</name>\n<value>93.199989</value>\n</device>\n<device>\n<name>ht-mani-pos-2</name>\n<value>97.024986</value>\n</device>\n<device>\n<name>ht-mani-pos-1</name>\n<value>112.324989</value>\n</device>\n</devices>","output":"str","x":370,"y":220,"wires":[["77445a86aef706a8"]]},{"id":"0614bbcb927a22fe","type":"file","z":"9af9141769558c7a","name":"","filename":"/data/data/test.csv","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"none","x":590,"y":440,"wires":[[]]},{"id":"db6d5d46f7f0879c","type":"function","z":"9af9141769558c7a","name":"","func":"msg.payload.map(function(item){ return {payload:item} });\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":340,"y":440,"wires":[[]]},{"id":"2f497606dcd4f80b","type":"csv","z":"9af9141769558c7a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":150,"y":440,"wires":[[]]}]