Skip to main content

The MIND stack with Node-RED and FlowFuse Dashboard 2.0

Leveraging FlowFuse for a Lighter MIND Stack (MIND = MQTT, InfluxDB, Node-RED, Dashboard 2.0)

ByGrey Dziuba, Harshad Joshi||1 min read
Back to Blog Posts
Image representing The MIND stack with Node-RED and FlowFuse Dashboard 2.0

The MING stack has gained significant popularity over the years as it built upon open-source projects. That has given way to many people leveraging this stack to build solutions upon in various different environments. The MING stack is composed of 4 main components, MQTT, InfluxDB, Node-RED, and Grafana. Combined together are the 4 main pillars, data transportation, data storage, data transformation, and visualizations. With this, it requires the management of 4 different applications, which often reside on the same server, but not necessarily. With more moving parts, creates complexity.

FlowFuse: Integrated IoT Deployment

With FlowFuse we have bundled up 3 of those 4. First and foremost, the FlowFuse platform deploys Node-RED in two main ways. A cloud based deployment and remote deployment with management from the FlowFuse platform. Part of this management piece leverage MQTT between the devices for management. Because of this we have a built in MQTT broker that allows for communication between Node-RED instance within the FlowFuse platform. Lastly, with the release of Dashboards 2.0 from FlowFuse we have introduced the next generation of visualizations for the Node-RED platform.

It often makes sense to deploy a full MING stack, but in some deployments, it might be necessary to deploy a more simplistic version of the MING stack. This is where MIND comes into play.

FlowFuse MQTT: Simplified Communications

FlowFuse has a built-in feature called project link nodes, which leverages MQTT, that allows the communication of data between FlowFuse runtimes of Node-RED. One caveat is that this MQTT broker is only available within the FlowFuse platform. What this means is there needs to be some form of translation to be done within Node-RED. This isn’t a big deal for small deployments, because often Node-RED runtimes at the edger are collecting data from various sources that aren’t MQTT. The flow of data is as follows:

Sensor > Node-RED(FlowFuse Device Agent) > MQTT Encapsulated by FlowFuse > Node-RED(FlowFuse Platform) > InfluxDB

"Screenshot showing the flow of data: Sensor > Node-RED(FlowFuse Device Agent) > MQTT Encapsulated by FlowFuse > Node-RED(FlowFuse Platform) > InfluxDB"

A key benefit of having the MQTT broker encapsulated by FlowFuse is that it becomes extremely easy to set up. With the project nodes, there isn’t a need to configure certificates or security credentials because it is only exposed internally to the FlowFuse platform. Furthermore, the access and control limits are applied by the platform so your data remains within the same FlowFuse Team.

InfluxDB: Efficient Data Storage

The deployment of InFluxDB doesn't change in the MIND configuration. The only significant change is that InFluxDB is deployed higher up in the architecture and closer to the FlowFuse Platform instead of the edge.

Data Visualization with Dashboard 2.0

FlowFuse's Dashboard 2.0 makes it incredibly easy to visualize your data. You can create beautiful and informative dashboards in minutes. Simply drag and drop your desired widgets onto the canvas, and configure them with a few clicks.

We have gone through the step of providing you with an example dashboard for visualizing your MIND stack.

{% renderFlow %} {"id":"dc1c7f4e5ddc86f8","type":"tab","label":"MIND","disabled":false,"info":"","env":},{"id":"1423665d39048eba","type":"mqtt in","z":"dc1c7f4e5ddc86f8","name":"","topic":"flowfuse/temp","qos":"2","datatype":"auto-detect","broker":"e8ea838e83035408","nl":false,"rap":true,"rh":0,"inputs":0,"x":190,"y":160,"wires":[["7ddcaadd5c43f11d","c359b55bc77165c2"]]},{"id":"993651c073e7659c","type":"mqtt in","z":"dc1c7f4e5ddc86f8","name":"","topic":"flowfuse/RH","qos":"2","datatype":"auto-detect","broker":"e8ea838e83035408","nl":false,"rap":true,"rh":0,"inputs":0,"x":190,"y":220,"wires":[["01f4e507e7deaaea","33e5c2e4a61d01e3"]]},{"id":"7ddcaadd5c43f11d","type":"change","z":"dc1c7f4e5ddc86f8","name":"Temp","rules":{"t":"set","p":"topic","pt":"msg","to":"temp","tot":"str"},"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":160,"wires":[["f39435df2b4db94f"]]},{"id":"01f4e507e7deaaea","type":"change","z":"dc1c7f4e5ddc86f8","name":"RH","rules":{"t":"set","p":"topic","pt":"msg","to":"RH","tot":"str"},"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":220,"wires":[["f39435df2b4db94f"]]},{"id":"f39435df2b4db94f","type":"join","z":"dc1c7f4e5ddc86f8","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":550,"y":180,"wires":[["fa067011fa3f705f","c9d37220d787ac92","681b2e5009ec5e1e"]]},{"id":"fa067011fa3f705f","type":"function","z":"dc1c7f4e5ddc86f8","name":"Send it to InfluxDB","func":"var temp = Number(msg.payload.temp);\nvar RH = Number(msg.payload.RH);\n\nmsg.measurement = "room1";\nmsg.payload = {Temperature:temp,RH:RH};\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":770,"y":180,"wires":[["0e86e1bd4bf8b9f6"]]},{"id":"0e86e1bd4bf8b9f6","type":"influxdb out","z":"dc1c7f4e5ddc86f8","influxdb":"cb09abcd8b693ca8","name":"","measurement":"","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"ms","retentionPolicyV18Flux":"","org":"organization","bucket":"bucket","x":1080,"y":180,"wires":},{"id":"c359b55bc77165c2","type":"ui-text","z":"dc1c7f4e5ddc86f8","group":"11df00492fb20acd","order":0,"width":0,"height":0,"name":"","label":"Temperature","format":"","layout":"row-spread","style":true,"font":"Verdana,Verdana,Geneva,sans-serif","fontSize":16,"color":"#717171","className":"","x":530,"y":100,"wires":},{"id":"33e5c2e4a61d01e3","type":"ui-text","z":"dc1c7f4e5ddc86f8","group":"11df00492fb20acd","order":0,"width":0,"height":0,"name":"","label":"RH","format":"","layout":"row-spread","style":true,"font":"Verdana,Verdana,Geneva,sans-serif","fontSize":16,"color":"#717171","className":"","x":510,"y":280,"wires":},{"id":"c9d37220d787ac92","type":"function","z":"dc1c7f4e5ddc86f8","name":"Temp","func":"var temp = Number(msg.payload.temp);\n\nmsg.payload = temp;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":730,"y":120,"wires":[["432850955a867e1e","28d0b846fd2a48ab"]]},{"id":"681b2e5009ec5e1e","type":"function","z":"dc1c7f4e5ddc86f8","name":"RH","func":"var RH = Number(msg.payload.RH);\nmsg.payload = RH;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":730,"y":240,"wires":[["a41e65a351476137","80b1312f88e4f656"]]},{"id":"432850955a867e1e","type":"ui-chart","z":"dc1c7f4e5ddc86f8","group":"aa70ec0abc058d78","name":"","label":"Live Temperature ","order":9007199254740991,"chartType":"line","category":"Temperature","categoryType":"str","xAxisProperty":"","xAxisPropertyType":"msg","xAxisType":"time","yAxisProperty":"","ymin":"0","ymax":"50","action":"append","pointShape":"line","pointRadius":4,"showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":"#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","width":"6","height":"8","className":"","x":950,"y":120,"wires":[[]]},{"id":"a41e65a351476137","type":"ui-chart","z":"dc1c7f4e5ddc86f8","group":"aa70ec0abc058d78","name":"","label":"Live RH","order":9007199254740991,"chartType":"line","category":"RH","categoryType":"str","xAxisProperty":"","xAxisPropertyType":"msg","xAxisType":"time","yAxisProperty":"","ymin":"0","ymax":"100","action":"append","pointShape":"line","pointRadius":4,"showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":"#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","width":"6","height":"8","className":"","x":940,"y":240,"wires":[[]]},{"id":"87ebfee665b784ee","type":"function","z":"dc1c7f4e5ddc86f8","name":"Min","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT min(Temperature) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":500,"wires":[["7d727f5a7723a73d"]]},{"id":"7d727f5a7723a73d","type":"influxdb in","z":"dc1c7f4e5ddc86f8","influxdb":"cb09abcd8b693ca8","name":"Read Temp","query":"","rawOutput":false,"precision":"","retentionPolicy":"","org":"organization","x":610,"y":540,"wires":[["fe9230e31884d82b"]]},{"id":"1da5df166734acac","type":"switch","z":"dc1c7f4e5ddc86f8","name":"Temp","property":"payload","propertyType":"msg","rules":{"t":"eq","v":"Min","vt":"str"},{"t":"eq","v":"Max","vt":"str"},{"t":"eq","v":"Total","vt":"str"},"checkall":"true","repair":false,"outputs":3,"x":310,"y":540,"wires":[["87ebfee665b784ee"],"1322af95dd29b8c3","717e1a07222ec348"]},{"id":"1322af95dd29b8c3","type":"function","z":"dc1c7f4e5ddc86f8","name":"Max","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT max(Temperature) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":540,"wires":[["7d727f5a7723a73d"]]},{"id":"88e2e00b4e5f5fd6","type":"ui-dropdown","z":"dc1c7f4e5ddc86f8","group":"f02746ad7e1ab68c","name":"","label":"Select Option:","tooltip":"","order":0,"width":0,"height":0,"passthru":false,"multiple":false,"options":{"label":"Min","value":"Min","type":"str"},{"label":"Max","value":"Max","type":"str"},{"label":"Total","value":"Total","type":"str"},"payload":"","topic":"topic","topicType":"msg","className":"","x":160,"y":540,"wires":[["1da5df166734acac"]]},{"id":"57a7757bf943bce5","type":"ui-text","z":"dc1c7f4e5ddc86f8","group":"f02746ad7e1ab68c","order":0,"width":0,"height":0,"name":"","label":"Temp Stats","format":"","layout":"row-spread","style":true,"font":"Verdana,Verdana,Geneva,sans-serif","fontSize":16,"color":"#717171","className":"","x":1290,"y":540,"wires":},{"id":"cac36785f12f3bf5","type":"function","z":"dc1c7f4e5ddc86f8","name":"Min","func":"var min = msg.payload0.min\nmsg.payload = "Minimum is " + min;\nreturn (msg)","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":500,"wires":[["57a7757bf943bce5"]]},{"id":"fc6330b5fcc33acc","type":"function","z":"dc1c7f4e5ddc86f8","name":"Max","func":"var avg = msg.payload0.max;\nmsg.payload = "Max is " + avg;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":540,"wires":[["57a7757bf943bce5"]]},{"id":"6453914fa7bdd751","type":"switch","z":"dc1c7f4e5ddc86f8","name":"Temp","property":"payload0","propertyType":"msg","rules":{"t":"hask","v":"min","vt":"str"},{"t":"hask","v":"max","vt":"str"},{"t":"hask","v":"count","vt":"str"},"checkall":"true","repair":false,"outputs":3,"x":950,"y":540,"wires":[["cac36785f12f3bf5"],"fc6330b5fcc33acc","d29294d236bef25c"]},{"id":"717e1a07222ec348","type":"function","z":"dc1c7f4e5ddc86f8","name":"Count","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT count(Temperature) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":580,"wires":[["7d727f5a7723a73d"]]},{"id":"d29294d236bef25c","type":"function","z":"dc1c7f4e5ddc86f8","name":"Count","func":"var count = msg.payload0.count;\nmsg.payload = "Total Record is " + count;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":580,"wires":[["57a7757bf943bce5"]]},{"id":"e7465ddb4fd72e6a","type":"function","z":"dc1c7f4e5ddc86f8","name":"Min","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT min(RH) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":620,"wires":[["db0873d1bbef089a"]]},{"id":"db0873d1bbef089a","type":"influxdb in","z":"dc1c7f4e5ddc86f8","influxdb":"cb09abcd8b693ca8","name":"Read RH","query":"","rawOutput":false,"precision":"","retentionPolicy":"","org":"organization","x":600,"y":660,"wires":[["f14e43cc318fa92b"]]},{"id":"a27e50703cb15e38","type":"switch","z":"dc1c7f4e5ddc86f8","name":"RH","property":"payload","propertyType":"msg","rules":{"t":"eq","v":"Min","vt":"str"},{"t":"eq","v":"Max","vt":"str"},{"t":"eq","v":"Total","vt":"str"},"checkall":"true","repair":false,"outputs":3,"x":310,"y":660,"wires":[["e7465ddb4fd72e6a"],"0e8acb8b65e368f6","7402a7eec1245643"]},{"id":"0e8acb8b65e368f6","type":"function","z":"dc1c7f4e5ddc86f8","name":"Max","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT max(RH) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":660,"wires":[["db0873d1bbef089a"]]},{"id":"a36dafb79f2fce75","type":"ui-dropdown","z":"dc1c7f4e5ddc86f8","group":"f02746ad7e1ab68c","name":"","label":"Select Option:","tooltip":"","order":0,"width":0,"height":0,"passthru":false,"multiple":false,"options":{"label":"Min","value":"Min","type":"str"},{"label":"Max","value":"Max","type":"str"},{"label":"Total","value":"Total","type":"str"},"payload":"","topic":"topic","topicType":"msg","className":"","x":160,"y":660,"wires":[["a27e50703cb15e38"]]},{"id":"4800381c4950d245","type":"ui-text","z":"dc1c7f4e5ddc86f8","group":"f02746ad7e1ab68c","order":0,"width":0,"height":0,"name":"","label":"RH Stats","format":"","layout":"row-spread","style":true,"font":"Verdana,Verdana,Geneva,sans-serif","fontSize":16,"color":"#717171","className":"","x":1280,"y":660,"wires":},{"id":"4af1d2b0abf0009f","type":"function","z":"dc1c7f4e5ddc86f8","name":"Min","func":"var min = msg.payload0.min\nmsg.payload = "Minimum is " + min;\nreturn (msg)","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":620,"wires":[["4800381c4950d245"]]},{"id":"cfc4f16f835d3724","type":"function","z":"dc1c7f4e5ddc86f8","name":"Max","func":"var avg = msg.payload0.max;\nmsg.payload = "Max is " + avg;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":660,"wires":[["4800381c4950d245"]]},{"id":"49ac1cdfe4289eac","type":"switch","z":"dc1c7f4e5ddc86f8","name":"RH","property":"payload0","propertyType":"msg","rules":{"t":"hask","v":"min","vt":"str"},{"t":"hask","v":"max","vt":"str"},{"t":"hask","v":"count","vt":"str"},"checkall":"true","repair":false,"outputs":3,"x":950,"y":660,"wires":[["4af1d2b0abf0009f"],"cfc4f16f835d3724","57b2d15bae6a4d42"]},{"id":"7402a7eec1245643","type":"function","z":"dc1c7f4e5ddc86f8","name":"Count","func":"// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT count(RH) FROM room1;\n\n// Pass the modified message object to the next node\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":450,"y":700,"wires":[["db0873d1bbef089a"]]},{"id":"57b2d15bae6a4d42","type":"function","z":"dc1c7f4e5ddc86f8","name":"Count","func":"var count = msg.payload0.count;\nmsg.payload = "Total Record is " + count;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":1090,"y":700,"wires":[["4800381c4950d245"]]},{"id":"fb1cbe8ec45b5de7","type":"comment","z":"dc1c7f4e5ddc86f8","name":"Write Operation","info":"","x":100,"y":80,"wires":},{"id":"931c16333d3efcad","type":"comment","z":"dc1c7f4e5ddc86f8","name":"Read Operation","info":"","x":180,"y":340,"wires":},{"id":"f200e4be2158481e","type":"comment","z":"dc1c7f4e5ddc86f8","name":"Read Operation","info":"","x":180,"y":480,"wires":},{"id":"80b1312f88e4f656","type":"ui-gauge","z":"dc1c7f4e5ddc86f8","name":"Live RH","group":"f02746ad7e1ab68c","order":0,"width":"0","height":"0","gtype":"gauge-34","gstyle":"rounded","title":"Live RH","units":"%","icon":"","prefix":"","suffix":"","segments":{"from":"0","color":"#5cd65c"},{"from":"40","color":"#ffc800"},{"from":"70","color":"#ea5353"},"min":0,"max":"100","sizeThickness":16,"sizeGap":4,"sizeKeyThickness":8,"styleRounded":true,"styleGlow":false,"className":"","x":940,"y":280,"wires":},{"id":"28d0b846fd2a48ab","type":"ui-gauge","z":"dc1c7f4e5ddc86f8","name":"Live Temperature","group":"f02746ad7e1ab68c","order":0,"width":"0","height":"0","gtype":"gauge-34","gstyle":"rounded","title":"Temperature","units":"Degrees C","icon":"","prefix":"","suffix":"","segments":{"from":"0","color":"#5cd65c"},{"from":"30","color":"#ffc800"},{"from":"40","color":"#ea5353"},"min":0,"max":"50","sizeThickness":16,"sizeGap":4,"sizeKeyThickness":8,"styleRounded":true,"styleGlow":false,"className":"","x":950,"y":80,"wires":},{"id":"f22ff292ec2d0964","type":"ui-form","z":"dc1c7f4e5ddc86f8","name":"Start Time","group":"11df00492fb20acd","label":"Select Date and Time","order":0,"width":0,"height":0,"options":{"label":"Start","key":"Start Date","type":"date","required":true,"rows":null},{"label":"Start Time","key":"Start Time","type":"time","required":true,"rows":null},{"label":"Stop Date","key":"Stop Date","type":"date","required":true,"rows":null},{"label":"Stop Time","key":"Stop Time","type":"time","required":true,"rows":null},"formValue":{"Start Date":"","Start Time":"","Stop Date":"","Stop Time":""},"payload":"","submit":"submit","cancel":"clear","resetOnSubmit":false,"topic":"topic","topicType":"msg","splitLayout":false,"className":"","x":160,"y":420,"wires":[["05dfd0f5d8b97fba"]]},{"id":"05dfd0f5d8b97fba","type":"function","z":"dc1c7f4e5ddc86f8","name":"start date and end date","func":"var startDate = msg.payload"Start Date";\nvar startTime = msg.payload"Start Time";\nvar stopDate = msg.payload"Stop Date";\nvar stopTime = msg.payload"Stop Time";\n\n\n\nvar startTimestamp = ${startDate}T${startTime}:00+05:30; // +05:30 is the offset for IST\nvar stopTimestamp = ${stopDate}T${stopTime}:00+05:30; // +05:30 is the offset for IST\n\n// Construct the query using the provided start and stop timestamps\nmsg.query = SELECT * FROM room1 WHERE time >= '${startTimestamp}' AND time <= '${stopTimestamp}';\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":,"x":410,"y":420,"wires":[["a1d3dda63ad3bd6f"]]},{"id":"a1d3dda63ad3bd6f","type":"influxdb in","z":"dc1c7f4e5ddc86f8","influxdb":"cb09abcd8b693ca8","name":"Read","query":"","rawOutput":false,"precision":"","retentionPolicy":"","org":"organization","x":610,"y":420,"wires":[["ad4f278b680749b2"]]},{"id":"024b2830c4183fd1","type":"function","z":"dc1c7f4e5ddc86f8","name":"Table","func":"var temp=;\nvar a = msg.payload;\n\na.forEach(function (value,index) {\ntemp.push(value)\n});\n\nmsg.payload=temp\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":,"x":1650,"y":780,"wires":[[]]},{"id":"5bb2164a578330bd","type":"ui-table","z":"dc1c7f4e5ddc86f8","group":"11df00492fb20acd","name":"Historic Data","label":"text","order":0,"width":0,"height":0,"maxrows":0,"autocols":true,"columns":,"x":1050,"y":420,"wires":},{"id":"ad4f278b680749b2","type":"copy-array","z":"dc1c7f4e5ddc86f8","name":"Table","x":790,"y":420,"wires":[["5bb2164a578330bd"]]},{"id":"dd00c6e47e1480ad","type":"ui-button","z":"dc1c7f4e5ddc86f8","group":"aa70ec0abc058d78","name":"","label":"Clear Temp","order":0,"width":0,"height":0,"passthru":false,"tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"json","topic":"topic","topicType":"msg","x":730,"y":60,"wires":[["432850955a867e1e"]]},{"id":"7e6d8eb54dc0d8aa","type":"ui-button","z":"dc1c7f4e5ddc86f8","group":"aa70ec0abc058d78","name":"","label":"Clear RH","order":0,"width":0,"height":0,"passthru":false,"tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"json","topic":"topic","topicType":"msg","x":740,"y":300,"wires":[["a41e65a351476137"]]},{"id":"fe9230e31884d82b","type":"copy-array","z":"dc1c7f4e5ddc86f8","name":"Temp Data","x":810,"y":540,"wires":[["6453914fa7bdd751"]]},{"id":"f14e43cc318fa92b","type":"copy-array","z":"dc1c7f4e5ddc86f8","name":"RH Data","x":800,"y":660,"wires":[["49ac1cdfe4289eac"]]},{"id":"e8ea838e83035408","type":"mqtt-broker","name":"","broker":"192.168.1.39","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"cb09abcd8b693ca8","type":"influxdb","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"environment","name":"","usetls":false,"tls":"cff98b62.009678","influxdbVersion":"1.x","url":" 1","page":"6a43b6805a66d2b8","width":"6","height":"1","order":-1,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"aa70ec0abc058d78","type":"ui-group","name":"Live Data","page":"6a43b6805a66d2b8","width":"6","height":"1","order":-1,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"f02746ad7e1ab68c","type":"ui-group","name":"Stat Data","page":"6a43b6805a66d2b8","width":"6","height":"1","order":-1,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"cff98b62.009678","type":"tls-config","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false},{"id":"6a43b6805a66d2b8","type":"ui-page","name":"Environment Data","ui":"20ae73d735a60fbc","path":"/page2","icon":"home","layout":"flex","theme":"074b315414230834","order":-1,"className":"","visible":"true","disabled":"false"},{"id":"20ae73d735a60fbc","type":"ui-base","name":"UI Name","path":"/dashboard","showPathInSidebar":false},{"id":"074b315414230834","type":"ui-theme","name":"Theme Name","colors":{"surface":"#ffffff","primary":"#0094ce","bgPage":"#eeeeee","groupBg":"#ffffff","groupOutline":"#cccccc"},"sizes":{"pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}} {% endrenderFlow %}

This dashboard example allows you to do quick visualizations of data from an InfluxDB. In this particular case, it leverages the Relative Humidity (RH) and Temperature of a sensor. It captures the data and stores in InfluxDB and then visualizes it in Dashboard 2.0. Use this as a starting point to display data in the MIND stack.

Advantages of FlowFuse’s MIND Stack

FlowFuse provides built-in features, such as MQTT, backups, deployment pipelines, and access control, helping to protect data and devices from unauthorized access. FlowFuse simplifies the MING stack to the MIND deployment, bringing numerous benefits to organizations. It reduces the complexity of managing multiple components, minimizing configuration, update, and maintenance overhead. The single platform approach for MQTT, Node-RED, and visualization simplifies maintenance tasks, lowers the risk of conflicts, and ensures consistency. FlowFuse's lighter deployment requires fewer hardware resources, making it suitable for resource-constrained environments or cost-sensitive projects. Organizations can potentially save on licensing and maintenance costs by reducing the number of deployed software components. Faster deployment is enabled with fewer components to set up and configure, allowing projects to realize value sooner. FlowFuse's scalable architecture handles large data volumes and devices, ensuring suitability for growing IoT deployments.

Conclusion

While we believe that the MING stack is here to stay, we believe as the market matures, it should offer many different variations suitable for each customer's needs. However, we find that the MIND offering does fill a niche in the market that may better suit your needs. None the less, choosing FlowFuse to manage your Node-RED runtimes will ensure that your applications will be secure, scalable, and easily manageable. Allowing your domain experts to take control and extend their knowledge bringing increased value to industrial facilities around the world.

See the MIND Stack in Action

FlowFuse brings MQTT, Node-RED, and Dashboard 2.0 together in one platform, fewer components to manage, faster deployment, and built-in security for your IoT infrastructure.

Like what you're reading?

Add FlowFuse as a preferred source

On the page that opens, check the box next to flowfuse.com to see more of our articles in your Google Search results.

Recommended Articles:

Sign up for updates