Node-red slowly

Hi , I am crazy and I know, but i have a problem with my flow.... I want read an array json (now with 903 element) to put in a 80 chart.

I have first start with a for...but the dashboard lost the communication, I have modified the function with a inject at interval...but the problem is the same ( 3 seconds for read ten value)...

There is a efficient method for read a json?

[{"id":"857ef668.ed5648","type":"function","z":"cd3228f2.c23228","name":"estrai_dati","func":"let day,tamponi,rpt_guariti_deceduti;\nlet msg1={};\nlet data=global.get(\"covid19-ita-reg\");\nlet key = Object.keys(data[0]);\nlet i=global.get(\"i_regioni\");\nlet k=global.get(\"k_regioni\");\n\n\ni=i+1;\nglobal.set(\"i_regioni\",i);\n  \n\nif (i<data.length)\n{  \n    if (data[i][\"denominazione_regione\"]==\"Abruzzo\")\n    {\n        k=k+1;\n         global.set(\"k_regioni\",k);\n    }\n    day=k.toString();\n//ricoverati_con_sintomi\n   msg1={\n       \"payload\":data[i][\"ricoverati_con_sintomi\"],\n       \"topic\": day,\n       \"filter\":key[6],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);  \n\n//terapia_intensiva\n   msg1={\n       \"payload\":data[i][\"terapia_intensiva\"],\n       \"topic\": day,\n       \"filter\":key[7],\n       \"regione\":data[i][\"denominazione_regione\"],\n        } \n    node.send(msg1);  \n    \n//totale_ospedalizzati\n   msg1={\n       \"payload\":data[i][\"totale_ospedalizzati\"],\n       \"topic\": day,\n       \"filter\":key[8],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1); \n    \n//isolamento_domiciliare\n   msg1={\n       \"payload\":data[i][\"isolamento_domiciliare\"],\n       \"topic\": day,\n       \"filter\":key[9],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);  \n    \n//totale_positivi\n   msg1={\n       \"payload\":data[i][\"totale_positivi\"],\n       \"topic\": day,\n       \"filter\":key[10],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);\n    \n//variazione_totale_positivi\n   msg1={\n       \"payload\":data[i][\"variazione_totale_positivi\"],\n       \"topic\": day,\n       \"filter\":key[11],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1); \n    \n//nuovi_positivi\n   msg1={\n       \"payload\":data[i][\"nuovi_positivi\"],\n       \"topic\": day,\n       \"filter\":key[12],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1); \n    \n//dimessi_guariti\n   msg1={\n       \"payload\":data[i][\"dimessi_guariti\"],\n       \"topic\": day,\n       \"filter\":key[13],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);     \n\n//deceduti\n   msg1={\n       \"payload\":data[i][\"deceduti\"],\n       \"topic\": day,\n       \"filter\":key[14],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);    \n\n//totale_casi\n   msg1={\n       \"payload\":data[i][\"totale_casi\"],\n       \"topic\": day,\n       \"filter\":key[15],\n       \"regione\":data[i][\"denominazione_regione\"]\n        } \n    node.send(msg1);  \n\n//tamponi fatti giornalmente\n   if (i>0)\n   {\n   tamponi = data[i][\"tamponi\"]-data[i-1][\"tamponi\"];      \n   rpt_casi_tamponi = data[i][\"variazione_totale_positivi\"]/tamponi;\n   msg1={\n       \"payload\":tamponi,\n       \"topic\": day,\n       \"filter\":key[16]\n        } \n    node.send(msg1);     \n     \n    msg1={\n       \"payload\":rpt_casi_tamponi.toFixed(2),\n       \"topic\": day,\n       \"filter\":\"rapporto_casi_tamponi\"\n        } \n    node.send(msg1);     \n   }\n   else\n   {\n   msg1={\n       \"payload\":data[i][\"tamponi\"],\n       \"topic\": day,\n       \"filter\":key[16]\n        } \n    node.send(msg1);     \n      \n    msg1={\n       \"payload\":0,\n       \"topic\": day,\n       \"filter\":\"rapporto_casi_tamponi\"\n        } \n    node.send(msg1);     \n   }\n    if (data[i][\"deceduti\"]>0)\n    {\n        rpt_guariti_deceduti=data[i][\"dimessi_guariti\"]/data[i][\"deceduti\"];\n    }\n    else\n    {\n        rpt_guariti_deceduti=0;\n    }\n    msg1={\n       \"payload\":rpt_guariti_deceduti,\n       \"topic\": day,\n       \"filter\":\"rapporto_guariti_deceduti\"\n        } \n    node.send(msg1); \n//ultimi dati\n   if (i==(data.length-1))\n   {\n    msg1={\n       \"payload\":null,\n       \"data\": data[i][\"data\"].replace(\"T\",\" \"),\n       \"ricoverati_con_sintomi\": data[i][\"ricoverati_con_sintomi\"],\n       \"terapia_intensiva\": data[i][\"terapia_intensiva\"],\n       \"totale_ospedalizzati\": data[i][\"totale_ospedalizzati\"],\n       \"isolamento_domiciliare\": data[i][\"isolamento_domiciliare\"],\n       \"totale_positivi\": data[i][\"totale_positivi\"],\n       \"variazione_totale_positivi\": data[i][\"variazione_totale_positivi\"],\n       \"nuovi_positivi\": data[i][\"nuovi_positivi\"],\n       \"dimessi_guariti\": data[i][\"dimessi_guariti\"],\n       \"deceduti\": data[i].deceduti,\n       \"totale_casi\": data[i][\"totale_casi\"],\n       \"tamponi\": data[i][\"tamponi\"],\n       \"note_it\": data[i][\"note_it\"],\n       \n       \"filter\":\"ultimi_dati\"\n        } \n    node.send(msg1);    \n   }\n   global.set(\"i_regioni\",i);\n   global.set(\"k_regioni\",k);\n}\nelse\n{\n    global.set(\"i_regioni\",-1);\n    global.set(\"k_regioni\",-1);\n}\n//return msg;\n\n","outputs":1,"noerr":0,"x":490,"y":240,"wires":[["99836d3b.f42eb","e536c282.31533"]]}]

Thank's

What do you mean about if you say "80 chart"
Do you have 80 charts to show on dashboard?

yes...but..the problem there is with 10 chart...

I have missing the hardware....now..this flow is on a tinkerboard S

Well chart node in node-red is very expensive. Usage should be very well optimized and it really can show couple of charts with not too much data to handle. There is no exact numbers I can say for you but seeing your numbers, it is definitely way too much. Even if I haven't seen the configuration of your chart nodes.

If you really need to do that much charting, look for Grafana or similar dedicated data analytics and presentation option.

My second route is grafana....in effect

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.