node-red-contrib-persist
node-red-contrib-persist copied to clipboard
4th store fails to save..
I am using 4 x graphs in a dashboard and 4 x persistent store files, but the 4th graph fails to restore after a system restart?
the whole graph/store subflow is as follows.. Every time my pi reboots the EC graph is empty..
Thanks.
[{"id":"67194ebe.24bad","type":"mqtt in","z":"c3d8d21d.ac538","name":"Plant Notifications","topic":"Notify/Plant/#","qos":"2","broker":"a368882b.be65d8","x":213.00012969970703,"y":839.0390968322754,"wires":[["77778f05.6f8ab"]]},{"id":"77778f05.6f8ab","type":"function","z":"c3d8d21d.ac538","name":"order plant metrics","func":"//Requires:\n// message with a numeric payload and topic in the \n// format Notify/Plant/X/Y where X ia a numeric id of \n// a sensor/plant area, and Y is a code indicating the\n// metric the payload represents\n//Returns:\n// a message in the format\n// PlantX\payload sent to the graph as indicated\n// by the metric code the payload containing the data\n//Results:\n// no expected side effects beyond\n// the relevant graphs should get updated with \n// the new data.\nvar plantnum = msg.topic.split("/")[2];\nvar Metric = msg.topic.split("/")[3];\nmsg.topic = msg.topic.split("/")[1]+ plantnum;\n// 4 x outputs 1 moisture metric = M\n// Battery level metric = B\n// Temperature metric = T\n// EC Metric = EC\n// return[msg1,msg2,msg3,msg4]\nswitch(Metric) {\n case 'M': // moisture\n return [msg,null,null,null]\n break;\n case 'B': //attery level\n return [null,msg,null,null]\n break;\n case 'T': // Temperature\n return [null,null,msg,null]\n break;\n case 'EC': // EC\n return [null,null,null,msg];\n break;\n default:\n return msg;\n}","outputs":4,"noerr":0,"x":459.00012969970703,"y":839.039080619812,"wires":[["65cec4e0.c104ec"],["e31e5024.22819"],["c5505726.221e58"],["330322a6.79076e"]],"outputLabels":["Mosture","Battery Level","Temperature","EC"]},{"id":"e2915821.2a81e8","type":"persist in","z":"c3d8d21d.ac538","name":"PlantMoisture","storageNode":"e2fd001c.c7677","x":1043.000202178955,"y":725.0391216278076,"wires":[]},{"id":"49d72841.768898","type":"persist in","z":"c3d8d21d.ac538","name":"BatteryLevel","storageNode":"d062dc20.7217b","x":1032.0001239776611,"y":778.0390672683716,"wires":[]},{"id":"da8e890e.6ab1a8","type":"persist in","z":"c3d8d21d.ac538","name":"PlantTemperature","storageNode":"42a8b7b8.d63598","x":1052.0001220703125,"y":884.0390815734863,"wires":[]},{"id":"aa65de30.44c3c","type":"persist in","z":"c3d8d21d.ac538","name":"Plant EC","storageNode":"d0a2b159.06af3","x":1020.0001201629639,"y":924.0390663146973,"wires":[]},{"id":"b88c2080.4729c","type":"persist out","z":"c3d8d21d.ac538","name":"PlantMoisture","storageNode":"e2fd001c.c7677","x":229.00018310546875,"y":748.039083480835,"wires":[["65cec4e0.c104ec"]]},{"id":"5f6849d9.4a1348","type":"persist out","z":"c3d8d21d.ac538","name":"BatteryLevel","storageNode":"d062dc20.7217b","x":219.00013732910156,"y":786.0390815734863,"wires":[["e31e5024.22819"]]},{"id":"9e05ef14.6632d","type":"persist out","z":"c3d8d21d.ac538","name":"PlantTemperature","storageNode":"42a8b7b8.d63598","x":236.0001564025879,"y":894.0391063690186,"wires":[["c5505726.221e58"]]},{"id":"75a53003.3ef03","type":"persist out","z":"c3d8d21d.ac538","name":"PlantEC","storageNode":"d0a2b159.06af3","x":205.0001564025879,"y":933.0390911102295,"wires":[["330322a6.79076e"]]},{"id":"65cec4e0.c104ec","type":"ui_chart","z":"c3d8d21d.ac538","name":"Moisture","group":"9bd2a697.f535d8","order":1,"width":"24","height":"6","label":"Moisture","chartType":"line","legend":"true","xformat":"auto","interpolate":"linear","nodata":"waiting","dot":true,"ymin":"0","ymax":"100","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"x":688.000186920166,"y":745.0390820503235,"wires":[["e2915821.2a81e8"],[]],"outputLabels":["persistant store",""]},{"id":"e31e5024.22819","type":"ui_chart","z":"c3d8d21d.ac538","name":"","group":"9bd2a697.f535d8","order":4,"width":"24","height":"6","label":"Batery Level %","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"106","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"x":704.0001277923584,"y":785.0390787124634,"wires":[["49d72841.768898"],[]],"outputLabels":["persistant store",""]},{"id":"c5505726.221e58","type":"ui_chart","z":"c3d8d21d.ac538","name":"","group":"9bd2a697.f535d8","order":2,"width":"24","height":"6","label":"Temperature","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"5","ymax":"45","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"x":694.0001850128174,"y":892.0391092300415,"wires":[["da8e890e.6ab1a8"],[]],"outputLabels":["persistant store",""]},{"id":"330322a6.79076e","type":"ui_chart","z":"c3d8d21d.ac538","name":"","group":"9bd2a697.f535d8","order":3,"width":"24","height":"6","label":"EC","chartType":"line","legend":"true","xformat":"auto","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"x":676.0001220703125,"y":933.0390939712524,"wires":[["aa65de30.44c3c"],[]],"outputLabels":["persistant store",""]},{"id":"a368882b.be65d8","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"e2fd001c.c7677","type":"persist-store","z":"","filename":"moisture.json","interval":"100"},{"id":"d062dc20.7217b","type":"persist-store","z":"","filename":"batterylevel.json","interval":"90"},{"id":"42a8b7b8.d63598","type":"persist-store","z":"","filename":"temperature.json","interval":"80"},{"id":"d0a2b159.06af3","type":"persist-store","z":"","filename":"electroconductivity.json","interval":"60"},{"id":"9bd2a697.f535d8","type":"ui_group","z":"","name":"PC","tab":"2956ec1.813c114","disp":true,"width":"24","collapse":false},{"id":"2956ec1.813c114","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]
Hello @hunnimonstr, I cannot import the export text you added. Can you check this again?
@hunnimonstr: I was able to import your flow. There was some manual work necessary to get an errorfree import of the "function":"func" node (I assume this is due to a different Node-RED version at your export, I am using Node-RED v1.0.5). I will try to go on and reproduce your problem.
@hunnimonstr: Due to a missing MQTT broker, there is no possible test of the feature. Could you add the contents of the 4 files? Or could you add some inject nodes to the flow that simulates a MQTT message?
Here is the export which can be importet in v1.0.5:
[{"id":"72e23953.42075","type":"mqtt in","z":"dcc01094.c9311","name":"Plant Notifications","topic":"Notify/Plant/#","qos":"2","broker":"7f59c028.886938","x":230,"y":540,"wires":[["b8f55dac.24bd08"]]},{"id":"b8f55dac.24bd08","type":"function","z":"dcc01094.c9311","name":"order plant metrics","func":"//Requires:\n// message with a numeric payload and topic in the \n// format Notify/Plant/X/Y where X ia a numeric id of \n// a sensor/plant area, and Y is a code indicating the\n// metric the payload represents\n//Returns:\n// a message in the format\n// PlantX/payload sent to the graph as indicated\n// by the metric code the payload containing the data\n//Results:\n// no expected side effects beyond\n// the relevant graphs should get updated with \n// the new data.\nvar plantnum = msg.topic.split("/")[2];\nvar Metric = msg.topic.split("/")[3];\nmsg.topic = msg.topic.split("/")[1] + plantnum;\n// 4 x outputs 1 moisture metric = M\n// Battery level metric = B\n// Temperature metric = T\n// EC Metric = EC\n// return[msg1,msg2,msg3,msg4]\nswitch(Metric) {\n case 'M': // moisture\n return [msg,null,null,null]\n break;\n case 'B': //attery level\n return [null,msg,null,null]\n break;\n case 'T': // Temperature\n return [null,null,msg,null]\n break;\n case 'EC': // EC\n return [null,null,null,msg];\n break;\n default:\n return msg;\n}","outputs":4,"noerr":0,"x":476,"y":539.9999837875366,"wires":[["17577409.97691c"],["e6591bdd.2dfc98"],["ca343bfa.fbeac8"],["d0d20fda.587ba8"]],"outputLabels":["Mosture","Battery Level","Temperature","EC"]},{"id":"e72a693d.e8c6d8","type":"persist in","z":"dcc01094.c9311","name":"PlantMoisture","storageNode":"1c355554.82bd83","x":1060.000072479248,"y":426.0000247955322,"wires":[]},{"id":"250e85c5.e8c412","type":"persist in","z":"dcc01094.c9311","name":"BatteryLevel","storageNode":"50cda70a.66e568","x":1048.999994277954,"y":478.9999704360962,"wires":[]},{"id":"dec69dd2.e9cc5","type":"persist in","z":"dcc01094.c9311","name":"PlantTemperature","storageNode":"b58192e.59713f","x":1068.9999923706055,"y":584.9999847412109,"wires":[]},{"id":"92ace5a2.c0683","type":"persist in","z":"dcc01094.c9311","name":"Plant EC","storageNode":"3e505b22.d76f24","x":1036.9999904632568,"y":624.9999694824219,"wires":[]},{"id":"194bb46e.4a61fc","type":"persist out","z":"dcc01094.c9311","name":"PlantMoisture","storageNode":"1c355554.82bd83","x":246.00005340576172,"y":448.99998664855957,"wires":[["17577409.97691c"]]},{"id":"b65fe373.7db22","type":"persist out","z":"dcc01094.c9311","name":"BatteryLevel","storageNode":"50cda70a.66e568","x":236.00000762939453,"y":486.99998474121094,"wires":[["e6591bdd.2dfc98"]]},{"id":"d56d3653.561818","type":"persist out","z":"dcc01094.c9311","name":"PlantTemperature","storageNode":"b58192e.59713f","x":253.00002670288086,"y":595.0000095367432,"wires":[["ca343bfa.fbeac8"]]},{"id":"5aa17092.d708c","type":"persist out","z":"dcc01094.c9311","name":"PlantEC","storageNode":"3e505b22.d76f24","x":222.00002670288086,"y":633.9999942779541,"wires":[["d0d20fda.587ba8"]]},{"id":"17577409.97691c","type":"ui_chart","z":"dcc01094.c9311","name":"Moisture","group":"9fd8b3f8.634608","order":1,"width":"24","height":"6","label":"Moisture","chartType":"line","legend":"true","xformat":"auto","interpolate":"linear","nodata":"waiting","dot":true,"ymin":"0","ymax":"100","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":2,"x":705.000057220459,"y":445.9999852180481,"wires":[["e72a693d.e8c6d8"],[]],"outputLabels":["persistant store",""]},{"id":"e6591bdd.2dfc98","type":"ui_chart","z":"dcc01094.c9311","name":"","group":"9fd8b3f8.634608","order":4,"width":"24","height":"6","label":"Battery Level %","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"106","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":1,"x":720.9999980926514,"y":485.999981880188,"wires":[["250e85c5.e8c412"]],"outputLabels":["persistant store",""]},{"id":"ca343bfa.fbeac8","type":"ui_chart","z":"dcc01094.c9311","name":"","group":"9fd8b3f8.634608","order":2,"width":"24","height":"6","label":"Temperature","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"5","ymax":"45","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":2,"x":711.0000553131104,"y":593.0000123977661,"wires":[["dec69dd2.e9cc5"],[]],"outputLabels":["persistant store",""]},{"id":"d0d20fda.587ba8","type":"ui_chart","z":"dcc01094.c9311","name":"","group":"9fd8b3f8.634608","order":3,"width":"24","height":"6","label":"EC","chartType":"line","legend":"true","xformat":"auto","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":2,"x":692.9999923706055,"y":633.999997138977,"wires":[["92ace5a2.c0683"],[]],"outputLabels":["persistant store",""]},{"id":"7f59c028.886938","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"1c355554.82bd83","type":"persist-store","z":"","filename":"/home/Node-RED/moisture.json","interval":"100"},{"id":"50cda70a.66e568","type":"persist-store","z":"","filename":"/home/Node-RED/batterylevel.json","interval":"90"},{"id":"b58192e.59713f","type":"persist-store","z":"","filename":"/home/Node-RED/temperature.json","interval":"80"},{"id":"3e505b22.d76f24","type":"persist-store","z":"","filename":"/home/Node-RED/electroconductivity.json","interval":"60"},{"id":"9fd8b3f8.634608","type":"ui_group","z":"","name":"PC","tab":"f787ca9.2822db8","order":1,"disp":true,"width":"24","collapse":false},{"id":"f787ca9.2822db8","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]
Thanks for looking. the problem is probably my bad use of javascript in the function and confusion on the termination of a return/break command combo within a switch test.. I am now saving in sqlite atm as this loss of dqat was getting to be a pita, but to replicate the mqtt nitify publications the following 4 x inject nodes should do it.
[{"id":"a3a1c2f9.b16fa","type":"inject","z":"c3d8d21d.ac538","name":"","topic":"Notify/Plant1/M","payload":"50","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":153.01735305786133,"y":528.0000267028809,"wires":[[]]},{"id":"cca5f140.0223e","type":"inject","z":"c3d8d21d.ac538","name":"","topic":"Notify/Plant1/T","payload":"21","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":142.07638549804688,"y":488.96878814697266,"wires":[[]]},{"id":"66b63ef0.0d39","type":"inject","z":"c3d8d21d.ac538","name":"","topic":"Notify/Plant1/B","payload":"95","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":317.01733016967773,"y":527.0000228881836,"wires":[[]]},{"id":"b9bd1b3a.b217f8","type":"inject","z":"c3d8d21d.ac538","name":"","topic":"Notify/Plant1/EC","payload":"1000","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":490.01733016967773,"y":525.0000224113464,"wires":[[]]}]
Hello @hunnimonstr, I could use the inject nodes. What I saw was:
- One wrong
persist innode ("Plant EC" instead of "PlantEC") - Some graphs were configured on their x-axis as "HH:mm:ss", others were "automatic". Should not be a big issue Then there was a state where one of the files had wrong data: Some of the data from the other traces where shown in the Moisture graphs (and the data were in the persistence file from moisture). These additional data were shown in the graphs. I could not get rid of these data by deleting and restarting the flows and also I am not aware any more what caused this strange data. Finally I decouple the chart nodes from the system, restarted the flows and deleted the persistence files. Then I added the links of the chart nodes again and got the system running. Also your injecting node had a missing '/' (between "Plant" and the plantnum) so that the function did not work correctly splitting the msg. Result: If you ever have strange data in the persistence files, you have difficulty to get rid of these file contents.
@DeanCording: For now, I would propose to close this issue.
Attached is my flow contents for the test, so that you may also be able to play (don't forget to adjust the persistence file location):
[{"id":"150a1b79.7f04f5","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/M","payload":"50","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":560,"y":260,"wires":[["45b24922.1a0a5"]]},{"id":"39a267b4.a382e8","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/T","payload":"21","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":260,"wires":[["45b24922.1a0a5"]]},{"id":"e7632b3e.a22298","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/B","payload":"95","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":560,"y":140,"wires":[["45b24922.1a0a5"]]},{"id":"94caea12.d84268","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/EC","payload":"1000","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":140,"wires":[["45b24922.1a0a5"]]},{"id":"db28086f.7d2b4","type":"mqtt in","z":"a4c61204.eaffb8","d":true,"name":"Plant Notifications","topic":"Notify/Plant/#","qos":"2","datatype":"auto","broker":"7f59c028.886938","x":290,"y":600,"wires":[["da7b848c.a7186"]]},{"id":"da7b848c.a7186","type":"function","z":"a4c61204.eaffb8","name":"order plant metrics","func":"//Requires:\n// message with a numeric payload and topic in the \n// format Notify/Plant/X/Y where X ia a numeric id of \n// a sensor/plant area, and Y is a code indicating the\n// metric the payload represents\n//Returns:\n// a message in the format\n// PlantX/payload sent to the graph as indicated\n// by the metric code the payload containing the data\n//Results:\n// no expected side effects beyond\n// the relevant graphs should get updated with \n// the new data.\nvar plantnum = msg.topic.split("/")[2];\nvar Metric = msg.topic.split("/")[3];\nmsg.topic = msg.topic.split("/")[1] + plantnum;\n// 4 x outputs 1 moisture metric = M\n// Battery level metric = B\n// Temperature metric = T\n// EC Metric = EC\n// return[msg1,msg2,msg3,msg4]\nswitch(Metric) {\n case 'M': // moisture\n return [msg,null,null,null]\n break;\n case 'B': //attery level\n return [null,msg,null,null]\n break;\n case 'T': // Temperature\n return [null,null,msg,null]\n break;\n case 'EC': // EC\n return [null,null,null,msg];\n break;\n default:\n return msg;\n}","outputs":4,"noerr":0,"x":536,"y":599.9999837875366,"wires":[["54bdfec2.ee4a5","c3a80152.4fadb8"],["6064ece2.877d3c","6a2957d.17e7fa8"],["32da1e1a.f0d492","3ddd806c.b7fed8"],["453387f7.4f4528","f538b2f7.55de9"]],"outputLabels":["Mosture","Battery Level","Temperature","EC"]},{"id":"c38f5aa0.6180a","type":"persist in","z":"a4c61204.eaffb8","name":"PlantMoisture","storageNode":"1c355554.82bd83","x":1120.000072479248,"y":486.0000247955322,"wires":[]},{"id":"dec1893.72b2e78","type":"persist in","z":"a4c61204.eaffb8","name":"BatteryLevel","storageNode":"50cda70a.66e568","x":1108.999994277954,"y":538.9999704360962,"wires":[]},{"id":"18c91dc4.2ef442","type":"persist in","z":"a4c61204.eaffb8","name":"PlantTemperature","storageNode":"b58192e.59713f","x":1128.9999923706055,"y":644.9999847412109,"wires":[]},{"id":"d2c8b5c9.3713c8","type":"persist in","z":"a4c61204.eaffb8","name":"PlantEC","storageNode":"3e505b22.d76f24","x":1096.9999904632568,"y":684.9999694824219,"wires":[]},{"id":"d8e6063e.db9158","type":"persist out","z":"a4c61204.eaffb8","name":"PlantMoisture","storageNode":"1c355554.82bd83","x":306.0000534057617,"y":508.99998664855957,"wires":[["c3a80152.4fadb8"]]},{"id":"289d95be.61bf0a","type":"persist out","z":"a4c61204.eaffb8","name":"BatteryLevel","storageNode":"50cda70a.66e568","x":296.00000762939453,"y":546.9999847412109,"wires":[["6064ece2.877d3c"]]},{"id":"ef47a01e.3d8dd8","type":"persist out","z":"a4c61204.eaffb8","name":"PlantTemperature","storageNode":"b58192e.59713f","x":313.00002670288086,"y":655.0000095367432,"wires":[["32da1e1a.f0d492"]]},{"id":"e3ae1cfe.caaa68","type":"persist out","z":"a4c61204.eaffb8","name":"PlantEC","storageNode":"3e505b22.d76f24","x":282.00002670288086,"y":693.9999942779541,"wires":[["453387f7.4f4528"]]},{"id":"c3a80152.4fadb8","type":"ui_chart","z":"a4c61204.eaffb8","name":"","group":"9fd8b3f8.634608","order":1,"width":"24","height":"6","label":"Moisture","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"100","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":1,"x":765.000057220459,"y":505.9999852180481,"wires":[["c38f5aa0.6180a"]],"outputLabels":["persistant store"]},{"id":"6064ece2.877d3c","type":"ui_chart","z":"a4c61204.eaffb8","name":"","group":"9fd8b3f8.634608","order":4,"width":"24","height":"6","label":"Battery Level %","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"106","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":1,"x":780.9999980926514,"y":545.999981880188,"wires":[["dec1893.72b2e78"]],"outputLabels":["persistant store",""]},{"id":"32da1e1a.f0d492","type":"ui_chart","z":"a4c61204.eaffb8","name":"","group":"9fd8b3f8.634608","order":2,"width":"24","height":"6","label":"Temperature","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"5","ymax":"45","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":1,"x":771.0000553131104,"y":653.0000123977661,"wires":[["18c91dc4.2ef442"]],"outputLabels":["persistant store",""]},{"id":"453387f7.4f4528","type":"ui_chart","z":"a4c61204.eaffb8","name":"","group":"9fd8b3f8.634608","order":3,"width":"24","height":"6","label":"EC","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"","removeOlder":1,"removeOlderPoints":"1000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"outputs":1,"x":752.9999923706055,"y":693.999997138977,"wires":[["d2c8b5c9.3713c8"]],"outputLabels":["persistant store"]},{"id":"45b24922.1a0a5","type":"fan","z":"a4c61204.eaffb8","x":810,"y":220,"wires":[["da7b848c.a7186"]]},{"id":"47d57756.88eb9","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/M","payload":"55","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":560,"y":300,"wires":[["45b24922.1a0a5"]]},{"id":"6e18024e.cfa7d4","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/T","payload":"42","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":300,"wires":[["45b24922.1a0a5"]]},{"id":"d9685273.1a1e4","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/B","payload":"99","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":560,"y":180,"wires":[["45b24922.1a0a5"]]},{"id":"d3eec4e5.ac338","type":"inject","z":"a4c61204.eaffb8","name":"","topic":"Notify/Plant/1/EC","payload":"1001","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":180,"wires":[["45b24922.1a0a5"]]},{"id":"54bdfec2.ee4a5","type":"debug","z":"a4c61204.eaffb8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":750,"y":400,"wires":[]},{"id":"6a2957d.17e7fa8","type":"debug","z":"a4c61204.eaffb8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":750,"y":460,"wires":[]},{"id":"3ddd806c.b7fed8","type":"debug","z":"a4c61204.eaffb8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":750,"y":740,"wires":[]},{"id":"f538b2f7.55de9","type":"debug","z":"a4c61204.eaffb8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":750,"y":780,"wires":[]},{"id":"7f59c028.886938","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"1c355554.82bd83","type":"persist-store","z":0,"filename":"/home/Node-RED/moisture.json","interval":"100"},{"id":"50cda70a.66e568","type":"persist-store","z":"","filename":"/home/Node-RED/batterylevel.json","interval":"90"},{"id":"b58192e.59713f","type":"persist-store","z":"","filename":"/home/Node-RED/temperature.json","interval":"80"},{"id":"3e505b22.d76f24","type":"persist-store","z":"","filename":"/home/Node-RED/electroconductivity.json","interval":"60"},{"id":"9fd8b3f8.634608","type":"ui_group","z":"","name":"PC","tab":"f787ca9.2822db8","order":1,"disp":true,"width":"24","collapse":false},{"id":"f787ca9.2822db8","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]
@DeanCording: I propose to close this issue now.