[{"id":"d12387ed.3e0c68","type":"tab","label":"EZO Devices","disabled":false,"info":""},{"id":"b01f2772.c1ef78","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED pH","label":"LED","tooltip":"","group":"611b00dc.148b","order":6,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"ph,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"ph,off","offvalueType":"str","officon":"","offcolor":"","x":100,"y":540,"wires":[["b7e5327f.f96f4"]]},{"id":"bb3ad642.a33488","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset pH","group":"611b00dc.148b","order":9,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":130,"y":1060,"wires":[["e265e3c9.6d8a"]]},{"id":"da62bda2.b42f9","type":"ui_toast","z":"d12387ed.3e0c68","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Reset","cancel":"Cancel","raw":false,"topic":"Factory Reset","name":"","x":550,"y":1140,"wires":[["ba5d7b3e.b81ba8"]]},{"id":"7cdacce.2421b34","type":"i2c out","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","payload":"payload","payloadType":"msg","count":"1","x":1860,"y":860,"wires":[[]]},{"id":"bc5c5ac4.29ee98","type":"ui_button","z":"d12387ed.3e0c68","name":"Temp Compensation pH","group":"611b00dc.148b","order":11,"width":0,"height":0,"passthru":false,"label":"Temp Comp","tooltip":"","color":"","bgcolor":"","icon":"","payload":"pH","payloadType":"str","topic":"","x":150,"y":1320,"wires":[["460abbbe.f79f74"]]},{"id":"a4604840.3f6758","type":"ui_toast","z":"d12387ed.3e0c68","position":"prompt","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"Temperature Compensation","name":"","x":570,"y":1320,"wires":[["ca65a3a4.e9153"]]},{"id":"ca65a3a4.e9153","type":"function","z":"d12387ed.3e0c68","name":"Send I2C","func":"if (msg.payload != \"\"){\n var buf = Buffer.from('T,' + msg.payload, 'ascii');\n msg.payload = buf;\n msg.address = flow.get('pH');\n msg.command = 82;\n return msg;\n}\n","outputs":1,"noerr":0,"x":740,"y":1320,"wires":[["7cdacce.2421b34","398b9caf.e2f464"]]},{"id":"398b9caf.e2f464","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"900","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":930,"y":1320,"wires":[["a86974b7.65fb08"]]},{"id":"a86974b7.65fb08","type":"i2c in","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","count":"4","x":1130,"y":1320,"wires":[[]]},{"id":"f0c88cc2.638f7","type":"inject","z":"d12387ed.3e0c68","name":"Poll","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":true,"onceDelay":"5","topic":"","payload":"","payloadType":"str","x":110,"y":440,"wires":[["5c361d91.16f0c4"]]},{"id":"8a719da6.1621d","type":"function","z":"d12387ed.3e0c68","name":"Values","func":"switch(msg.address){\n case flow.get('pH'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [msg,null,null,null,null,null];\n case flow.get('ORP'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,msg,null,null,null,null];\n case flow.get('RTD'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,null,msg,null,null,null];\n case flow.get('EC'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,null,null,msg,null,null];\n case flow.get('DO'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,null,null,null,msg,null];\n case flow.get('FLO'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n msg.payload = msg.payload * 6;\n return [null,null,null,null,null,msg]; \n}","outputs":6,"noerr":0,"initialize":"","finalize":"","x":970,"y":440,"wires":[["361a74ea.210fec","ac113b8a.7309d8","6ac0c80a.0c62b8","ad90947e.e79dc8","2dec4632.159a4a"],["fb453d85.ff651","25111cd3.478bf4","ab444619.6fc2a8","5081e92c.b85468"],["5b44b72c.dbece8","bddf527b.fc21","986c5be8.8a0098","c4fd372a.ce83c8","df064bb8.5b8778"],["8d972e5b.a0529","bee2454c.1f0ea8","91b4e532.9c9c68"],["87e3b4a2.d8a978","3642602f.689d5","90f97abb.948758"],["837847c6.01b218","7425849f.7f207c","722e578d.c65a88"]],"outputLabels":["Status","","","","",""]},{"id":"4d5f7c70.7f4164","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash pH","group":"611b00dc.148b","order":7,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":100,"y":800,"wires":[["11001032.a4777"]]},{"id":"cbe2798.148d888","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash ORP","group":"e1d4b87.d70be48","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":110,"y":840,"wires":[["11001032.a4777"]]},{"id":"564888a.0682778","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash Temp","group":"f0c6cc39.7df7b","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":110,"y":880,"wires":[["11001032.a4777"]]},{"id":"11001032.a4777","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"switch (msg.payload){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'orp':\n msg.address = flow.get('ORP');\n break;\n case 'temp':\n msg.address = flow.get('RTD');\n break;\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('DO');\n break;\n case 'flo':\n msg.address = flow.get('FLO');\n break; \n}\n\nmsg.command = 70;\nmsg.payload = Buffer.from('ind', 'ascii');\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":310,"y":880,"wires":[["7cdacce.2421b34"]]},{"id":"a62dfb64.eca5d8","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED ORP","label":"LED","tooltip":"","group":"e1d4b87.d70be48","order":5,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"orp,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"orp,off","offvalueType":"str","officon":"","offcolor":"","x":100,"y":580,"wires":[["b7e5327f.f96f4"]]},{"id":"2e102733.4d1f88","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED Temp","label":"LED","tooltip":"","group":"f0c6cc39.7df7b","order":5,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"temp,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"temp,off","offvalueType":"str","officon":"","offcolor":"","x":110,"y":620,"wires":[["b7e5327f.f96f4"]]},{"id":"b7e5327f.f96f4","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"var probe = msg.payload.split(\",\");\nvar value = msg.payload.split(\",\");\n\nswitch (probe[0]){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'orp':\n msg.address = flow.get('ORP');\n break;\n case 'temp':\n msg.address = flow.get('RTD');\n break;\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('DO');\n break;\n}\n\nswitch (value[1]){\n case 'on':\n msg.payload = Buffer.from(',1', 'ascii');\n break\n case 'off':\n msg.payload = Buffer.from(',0', 'ascii');\n break;\n}\n\nmsg.command = 76;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":310,"y":620,"wires":[["7cdacce.2421b34"]]},{"id":"d2b16496.b5c8a8","type":"i2c in","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","count":"16","x":830,"y":440,"wires":[["8a719da6.1621d","255fc9ff.643cd6"]]},{"id":"7b05423d.27474c","type":"change","z":"d12387ed.3e0c68","name":"Read pH","rules":[{"t":"set","p":"address","pt":"msg","to":"pH","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"ph","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":360,"wires":[["7cdacce.2421b34","6d0eff43.207ea"]]},{"id":"c4d41ada.fbfd48","type":"change","z":"d12387ed.3e0c68","name":"Read ORP","rules":[{"t":"set","p":"address","pt":"msg","to":"ORP","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"orp","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":400,"wires":[["7cdacce.2421b34","6d0eff43.207ea"]]},{"id":"89c456f.91e85a8","type":"change","z":"d12387ed.3e0c68","name":"Read Temp","rules":[{"t":"set","p":"address","pt":"msg","to":"RTD","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"temp","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":440,"wires":[["7cdacce.2421b34","6c7a6c14.654f64"]]},{"id":"6d0eff43.207ea","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"900","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":670,"y":420,"wires":[["d2b16496.b5c8a8"]]},{"id":"6c7a6c14.654f64","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"600","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":670,"y":460,"wires":[["d2b16496.b5c8a8"]]},{"id":"27be404e.6de93","type":"comment","z":"d12387ed.3e0c68","name":"Read probe values.","info":"","x":130,"y":400,"wires":[]},{"id":"88019b88.0322c8","type":"comment","z":"d12387ed.3e0c68","name":"Set LED.","info":"","x":100,"y":500,"wires":[]},{"id":"30e9f33f.7c141c","type":"comment","z":"d12387ed.3e0c68","name":"Flash LED.","info":"","x":100,"y":760,"wires":[]},{"id":"56d1d7dd.1cf458","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset ORP","group":"e1d4b87.d70be48","order":8,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":130,"y":1100,"wires":[["e265e3c9.6d8a"]]},{"id":"88584bdd.386018","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset Temp","group":"f0c6cc39.7df7b","order":8,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":140,"y":1140,"wires":[["e265e3c9.6d8a"]]},{"id":"8e9a5ca0.98c52","type":"comment","z":"d12387ed.3e0c68","name":"Factory reset.","info":"","x":110,"y":1020,"wires":[]},{"id":"e265e3c9.6d8a","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"switch (msg.payload){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'orp':\n msg.address = flow.get('ORP');\n break;\n case 'temp':\n msg.address = flow.get('RTD');\n break;\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('DO');\n break;\n case 'flo':\n msg.address = flow.get('FLO');\n break; \n}\n\nmsg.command = 70;\nmsg.payload = 'Do you want to reset ' + msg.payload + ' ezo board to factory settings?'\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":370,"y":1140,"wires":[["da62bda2.b42f9"]]},{"id":"1965a6ec.1af9d9","type":"comment","z":"d12387ed.3e0c68","name":"Set temperature compensation for pH board.","info":"","x":210,"y":1280,"wires":[]},{"id":"597fbd45.a58c04","type":"function","z":"d12387ed.3e0c68","name":"Send I2C","func":"msg.payload = Buffer.from(msg.payload, 'ascii');\nmsg.address = flow.get('RTD');\nmsg.command = 83;\n\nreturn msg;","outputs":1,"noerr":0,"x":280,"y":1580,"wires":[["cddd0b1b.c08448","7cdacce.2421b34"]]},{"id":"cddd0b1b.c08448","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"900","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":450,"y":1580,"wires":[["3343a750.8f7338"]]},{"id":"3343a750.8f7338","type":"i2c in","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","count":"4","x":610,"y":1580,"wires":[[]]},{"id":"11f049df.cb4546","type":"comment","z":"d12387ed.3e0c68","name":"Set temperature scale for temp board.","info":"","x":190,"y":1540,"wires":[]},{"id":"1757c46c.b11f7c","type":"ui_dropdown","z":"d12387ed.3e0c68","d":true,"name":"Temp Scale","label":"Scale","tooltip":"","place":"Scale","group":"5b5f987f.a93218","order":3,"width":5,"height":1,"passthru":true,"multiple":true,"options":[{"label":"Celcius","value":",c","type":"str"},{"label":"Fahrenheit","value":",f","type":"str"},{"label":"Kelvin","value":",k","type":"str"}],"payload":"","topic":"","x":110,"y":1580,"wires":[["597fbd45.a58c04"]]},{"id":"e65eefc2.0c635","type":"i2c scan","z":"d12387ed.3e0c68","name":"","busno":"1","x":260,"y":80,"wires":[["eb445e76.97d55","289e587b.0b0048"],[]]},{"id":"24d411ac.95b15e","type":"inject","z":"d12387ed.3e0c68","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"true","payloadType":"bool","x":110,"y":80,"wires":[["e65eefc2.0c635"]]},{"id":"4257f702.787848","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":770,"y":80,"wires":[["c9567f5f.e1fec"]]},{"id":"c9567f5f.e1fec","type":"i2c in","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","count":"10","x":930,"y":80,"wires":[["8c33a71b.2bcf58"]]},{"id":"5d59bbad.5392c4","type":"change","z":"d12387ed.3e0c68","name":"","rules":[{"t":"set","p":"address","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"command","pt":"msg","to":"105","tot":"num"},{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"},{"t":"set","p":"boot","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":80,"wires":[["4257f702.787848","7cdacce.2421b34"]]},{"id":"5c361d91.16f0c4","type":"switch","z":"d12387ed.3e0c68","name":"Boot?","property":"boot","propertyType":"flow","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":250,"y":440,"wires":[["7b05423d.27474c","c4d41ada.fbfd48","89c456f.91e85a8","d198c8ae.293308","864e0226.9ee2c","73aa4889.ea3178"]]},{"id":"8c33a71b.2bcf58","type":"function","z":"d12387ed.3e0c68","name":"Set Flow Variables","func":"if (msg.payload != \"\"){\n var status = msg.payload.toString().split(\",\");\n var probe = status[1];\n var address = msg.address;\n msg.command = 83;\n msg.payload = Buffer.from('tatus', 'ascii');\n msg.probe = probe;\n flow.set(probe, address);\n return msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1110,"y":80,"wires":[["1aeb4408.c7b9cc","7cdacce.2421b34","719beada.cdef64"]]},{"id":"eb445e76.97d55","type":"split","z":"d12387ed.3e0c68","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":410,"y":80,"wires":[["5d59bbad.5392c4"]]},{"id":"faf3773b.0e8828","type":"comment","z":"d12387ed.3e0c68","name":"Boot sequence.","info":"","x":120,"y":40,"wires":[]},{"id":"274c146e.cf1f6c","type":"comment","z":"d12387ed.3e0c68","name":"Change I2C address.","info":"","x":140,"y":140,"wires":[]},{"id":"47c4a735.af90b8","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C pH","group":"611b00dc.148b","order":8,"width":0,"height":0,"passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":120,"y":180,"wires":[["962ed98d.c5f738"]]},{"id":"bb2bcbb7.8b65a8","type":"ui_toast","z":"d12387ed.3e0c68","position":"prompt","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"","name":"","x":530,"y":260,"wires":[["95533e41.6cee6"]]},{"id":"737c7f1f.b35f","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C ORP","group":"e1d4b87.d70be48","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":130,"y":220,"wires":[["962ed98d.c5f738"]]},{"id":"23fc9dd8.329df2","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C Temp","group":"f0c6cc39.7df7b","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":130,"y":260,"wires":[["962ed98d.c5f738"]]},{"id":"962ed98d.c5f738","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"switch (msg.payload){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'orp':\n msg.address = flow.get('ORP');\n break;\n case 'temp':\n msg.address = flow.get('RTD');\n break;\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('D.O.');\n break;\n case 'flo':\n msg.address = flow.get('FLO');\n break;\n}\n\nmsg.command = 73;\nmsg.payload = 'Enter new I2C address:';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":350,"y":260,"wires":[["bb2bcbb7.8b65a8"]]},{"id":"95533e41.6cee6","type":"function","z":"d12387ed.3e0c68","name":"Set payload","func":"if (msg.payload != \"\"){\n msg.payload = Buffer.from('2C,' + parseFloat(msg.payload), 'ascii');\n flow.set('boot', true);\n return msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":710,"y":260,"wires":[["debc67bb.a44768","7cdacce.2421b34"]]},{"id":"debc67bb.a44768","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":880,"y":260,"wires":[["e65eefc2.0c635"]]},{"id":"e2ecdf52.2459f","type":"comment","z":"d12387ed.3e0c68","name":"Calibrate.","info":"","x":100,"y":1620,"wires":[]},{"id":"3f8f1118.f5c97e","type":"i2c in","z":"d12387ed.3e0c68","name":"","busno":"1","address":"","command":"","count":"16","x":1470,"y":80,"wires":[["1fd65c6c.cf3ba4"]]},{"id":"1aeb4408.c7b9cc","type":"delay","z":"d12387ed.3e0c68","name":"","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1310,"y":80,"wires":[["3f8f1118.f5c97e"]]},{"id":"ba5d7b3e.b81ba8","type":"function","z":"d12387ed.3e0c68","name":"Send I2C","func":"if (msg.payload != \"\"){\n msg.payload = Buffer.from('actory', 'ascii');\n return msg;\n}\n","outputs":1,"noerr":0,"x":720,"y":1140,"wires":[["7cdacce.2421b34"]]},{"id":"3c0f3d3a.3695a2","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset EC","group":"ec7f538e.52dfa","order":8,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":130,"y":1180,"wires":[["e265e3c9.6d8a"]]},{"id":"954a8426.9bb778","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset DO","group":"caf927d.033f2d8","order":8,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":130,"y":1220,"wires":[["e265e3c9.6d8a"]]},{"id":"82954858.1eb648","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash EC","group":"ec7f538e.52dfa","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":100,"y":920,"wires":[["11001032.a4777"]]},{"id":"f32d25c9.f297b8","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash D.O.","group":"caf927d.033f2d8","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":110,"y":960,"wires":[["11001032.a4777"]]},{"id":"9ae169d7.1797e8","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED EC","label":"LED","tooltip":"","group":"ec7f538e.52dfa","order":5,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"ec,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"ec,off","offvalueType":"str","officon":"","offcolor":"","x":100,"y":660,"wires":[["b7e5327f.f96f4"]]},{"id":"eadbccf.b4da63","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED D.O.","label":"LED","tooltip":"","group":"caf927d.033f2d8","order":5,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"do,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"do,off","offvalueType":"str","officon":"","offcolor":"","x":100,"y":700,"wires":[["b7e5327f.f96f4"]]},{"id":"28499f78.e1b6e","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C EC","group":"ec7f538e.52dfa","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":120,"y":300,"wires":[["962ed98d.c5f738"]]},{"id":"4433f4c6.6b541c","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C D.O.","group":"caf927d.033f2d8","order":7,"width":"6","height":"1","passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":130,"y":340,"wires":[["962ed98d.c5f738"]]},{"id":"ff6d4326.2ed02","type":"ui_button","z":"d12387ed.3e0c68","name":"Calibrate pH","group":"611b00dc.148b","order":10,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":110,"y":1660,"wires":[["36c095c1.df62aa"]]},{"id":"8b328461.4da998","type":"function","z":"d12387ed.3e0c68","name":"Calibrate","func":"if (msg.payload != \"Cancel\"){\n var count = context.get('count') || 0;\n count +=1;\n context.set('count', count);\n msg.count = count;\n \n switch (msg.probe){\n case 'ph':\n switch (count){\n case 1:\n msg.topic = \"\";\n msg.payload = \"Place probe in 7.00 solution and wait for reading to stabilize.\";\n return [msg,null,null];\n case 2:\n msg.topic = \"\";\n msg.payload = \"Place probe in 4.00 solution and wait for reading to stabilize.\";\n return [msg,null,null];\n case 3:\n msg.topic = \"\";\n msg.payload = \"Place probe in 10.00 solution and wait for reading to stabilize.\";\n return [msg,null,null];\n }\n break;\n case 'orp':\n switch (count){\n case 1:\n msg.topic = \"\";\n msg.payload = \"Place probe in 225mV solution and wait for reading to stabilize.\";\n return [msg,null,null];\n }\n break;\n case 'temp':\n switch (count){\n case 1:\n msg.topic = \"\";\n msg.payload = \"Enter temperature in celcius:\";\n return [null,msg,null];\n }\n break;\n case 'ec':\n switch (count){\n case 1:\n msg.topic = \"\";\n msg.payload = \"Dry probe and wait for reading to stabilize.\";\n return [msg,null,null];\n case 2:\n msg.topic = \"\";\n msg.payload = \"Place probe in 3,000μS solution and wait for reading to stabilize.\";\n return [msg,null,null];\n }\n break;\n case 'do':\n switch (count){\n case 1:\n msg.topic = \"\";\n msg.payload = \"Place probe in 7.00 solution and wait for reading to stabilize.\";\n return [msg,null,null];\n case 2:\n msg.topic = \"\";\n msg.payload = \"Place probe in 0.0 solution and wait for reading to stabilize.\";\n return [msg,null,null];\n }\n break;\n }\n \n context.set('count', 0);\n msg.topic = \"\";\n msg.payload = \"Calibration complete!\";\n return [null,null,msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":680,"y":1740,"wires":[["b18caa56.05cfb8"],["c3a1f695.606278"],["bff325de.29c808"]]},{"id":"bd03cf92.fb61e","type":"ui_button","z":"d12387ed.3e0c68","name":"Calibrate ORP","group":"e1d4b87.d70be48","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":120,"y":1700,"wires":[["36c095c1.df62aa"]]},{"id":"799e049f.e50aac","type":"ui_button","z":"d12387ed.3e0c68","name":"Calibrate Temp","group":"f0c6cc39.7df7b","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":120,"y":1740,"wires":[["36c095c1.df62aa"]]},{"id":"c8abd818.a436a8","type":"ui_button","z":"d12387ed.3e0c68","name":"Calibrate EC","group":"ec7f538e.52dfa","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":110,"y":1780,"wires":[["36c095c1.df62aa"]]},{"id":"53fc91c6.3e2f4","type":"ui_button","z":"d12387ed.3e0c68","name":"Calibrate D.O.","group":"caf927d.033f2d8","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":120,"y":1820,"wires":[["36c095c1.df62aa"]]},{"id":"b18caa56.05cfb8","type":"ui_toast","z":"d12387ed.3e0c68","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Next","cancel":"","raw":false,"topic":"","name":"Next","x":870,"y":1680,"wires":[["44c41871.e92628","8b328461.4da998"]]},{"id":"67c7450c.0657cc","type":"ui_toast","z":"d12387ed.3e0c68","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Calibrate","cancel":"Cancel","raw":false,"topic":"","name":"","x":510,"y":1740,"wires":[["8b328461.4da998"]]},{"id":"36c095c1.df62aa","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"msg.probe = msg.payload;\n\nswitch (msg.probe){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'orp':\n msg.address = flow.get('ORP');\n break;\n case 'temp':\n msg.address = flow.get('RTD');\n break;\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('DO');\n break;\n}\n\nmsg.command = 67;\nmsg.payload = \"Do you want to calibrate \" + msg.probe + \" probe? Existing calibration data will be erased.\";\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":330,"y":1740,"wires":[["67c7450c.0657cc"]]},{"id":"bff325de.29c808","type":"ui_toast","z":"d12387ed.3e0c68","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"","raw":false,"topic":"","name":"OK","x":870,"y":1800,"wires":[[]]},{"id":"c3a1f695.606278","type":"ui_toast","z":"d12387ed.3e0c68","position":"prompt","displayTime":"3","highlight":"","sendall":true,"outputs":1,"ok":"Calibrate","cancel":"Cancel","raw":false,"topic":"","name":"Input","x":870,"y":1740,"wires":[["44c41871.e92628","8b328461.4da998"]]},{"id":"44c41871.e92628","type":"function","z":"d12387ed.3e0c68","name":"Send I2C","func":"switch (msg.probe){\n case 'ph':\n switch (msg.count){\n case 1:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,mid,7.00', 'ascii');\n return msg;\n case 2:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,mid,4.00', 'ascii');\n return msg;\n case 3:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,mid,10.00', 'ascii');\n return msg;\n }\n break;\n case 'orp':\n switch (msg.count){\n case 1:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,225', 'ascii');\n return msg;\n }\n break;\n case 'temp':\n switch (msg.count){\n case 1:\n msg.topic = \"\";\n return msg;\n }\n break;\n case 'ec':\n switch (msg.count){\n case 1:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,dry', 'ascii');\n return msg;\n case 2:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,3000', 'ascii');\n return msg;\n }\n break;\n case 'do':\n switch (msg.count){\n case 1:\n msg.topic = \"\";\n msg.payload = Buffer.from('al', 'ascii');\n return msg;\n case 2:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,0', 'ascii');\n return msg;\n }\n break;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1060,"y":1740,"wires":[["7cdacce.2421b34"]]},{"id":"d198c8ae.293308","type":"change","z":"d12387ed.3e0c68","d":true,"name":"Read EC","rules":[{"t":"set","p":"address","pt":"msg","to":"EC","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"ec","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":480,"wires":[["6d0eff43.207ea","7cdacce.2421b34"]]},{"id":"864e0226.9ee2c","type":"change","z":"d12387ed.3e0c68","d":true,"name":"Read DO","rules":[{"t":"set","p":"address","pt":"msg","to":"DO","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"do","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":520,"wires":[["6d0eff43.207ea","7cdacce.2421b34"]]},{"id":"37d74cc0.cb83b4","type":"ui_text","z":"d12387ed.3e0c68","group":"611b00dc.148b","order":3,"width":0,"height":0,"name":"pH I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":560,"wires":[]},{"id":"75d34389.1ed80c","type":"ui_text","z":"d12387ed.3e0c68","group":"e1d4b87.d70be48","order":2,"width":0,"height":0,"name":"ORP I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":600,"wires":[]},{"id":"b88febf5.5efb58","type":"ui_text","z":"d12387ed.3e0c68","group":"f0c6cc39.7df7b","order":2,"width":0,"height":0,"name":"RTD I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":640,"wires":[]},{"id":"b28d1cff.f116e","type":"ui_text","z":"d12387ed.3e0c68","group":"ec7f538e.52dfa","order":2,"width":0,"height":0,"name":"EC I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":680,"wires":[]},{"id":"ebc34fc3.97b87","type":"ui_text","z":"d12387ed.3e0c68","group":"caf927d.033f2d8","order":2,"width":0,"height":0,"name":"DO I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":720,"wires":[]},{"id":"bb3e91c5.269e3","type":"ui_text","z":"d12387ed.3e0c68","group":"611b00dc.148b","order":5,"width":0,"height":0,"name":"pH mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1850,"y":100,"wires":[]},{"id":"4d2c623c.55fc6c","type":"ui_text","z":"d12387ed.3e0c68","group":"e1d4b87.d70be48","order":4,"width":0,"height":0,"name":"ORP mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":180,"wires":[]},{"id":"a4007f9.9ade28","type":"ui_text","z":"d12387ed.3e0c68","group":"f0c6cc39.7df7b","order":4,"width":0,"height":0,"name":"RTD mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":260,"wires":[]},{"id":"4d13c015.b1f9","type":"ui_text","z":"d12387ed.3e0c68","group":"ec7f538e.52dfa","order":4,"width":0,"height":0,"name":"EC mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":340,"wires":[]},{"id":"fa20092.d4277f8","type":"ui_text","z":"d12387ed.3e0c68","group":"caf927d.033f2d8","order":4,"width":0,"height":0,"name":"DO mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":420,"wires":[]},{"id":"361a74ea.210fec","type":"ui_text","z":"d12387ed.3e0c68","group":"31dbfc3d.4716d4","order":1,"width":0,"height":0,"name":"pH Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1240,"y":360,"wires":[]},{"id":"fb453d85.ff651","type":"ui_text","z":"d12387ed.3e0c68","group":"55061ee1.0f30e","order":1,"width":0,"height":0,"name":"ORP Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":400,"wires":[]},{"id":"5b44b72c.dbece8","type":"ui_text","z":"d12387ed.3e0c68","group":"5b5f987f.a93218","order":1,"width":0,"height":0,"name":"RTD Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":440,"wires":[]},{"id":"8d972e5b.a0529","type":"ui_text","z":"d12387ed.3e0c68","group":"5aab88aa.896688","order":1,"width":0,"height":0,"name":"EC Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1240,"y":480,"wires":[]},{"id":"87e3b4a2.d8a978","type":"ui_text","z":"d12387ed.3e0c68","group":"3415ee6c.8fe6b2","order":1,"width":0,"height":0,"name":"DO Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1200,"y":520,"wires":[]},{"id":"d3fde3b3.3efac","type":"ui_text","z":"d12387ed.3e0c68","group":"611b00dc.148b","order":4,"width":0,"height":0,"name":"pH Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1860,"y":60,"wires":[]},{"id":"cb02b13e.6e957","type":"ui_text","z":"d12387ed.3e0c68","group":"e1d4b87.d70be48","order":3,"width":0,"height":0,"name":"ORP Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":140,"wires":[]},{"id":"411a48b4.891298","type":"ui_text","z":"d12387ed.3e0c68","group":"f0c6cc39.7df7b","order":3,"width":0,"height":0,"name":"RTD Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":220,"wires":[]},{"id":"473e0b9b.063004","type":"ui_text","z":"d12387ed.3e0c68","group":"ec7f538e.52dfa","order":3,"width":0,"height":0,"name":"EC Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1860,"y":300,"wires":[]},{"id":"5bba2abb.e11af4","type":"ui_text","z":"d12387ed.3e0c68","group":"caf927d.033f2d8","order":3,"width":0,"height":0,"name":"DO Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":380,"wires":[]},{"id":"719beada.cdef64","type":"function","z":"d12387ed.3e0c68","name":"I2C","func":"switch(msg.probe){\n case 'pH':\n msg.payload = msg.address;\n return [msg,null,null,null,null,null];\n case 'ORP':\n msg.payload = msg.address;\n return [null,msg,null,null,null,null];\n case 'RTD':\n msg.payload = msg.address;\n return [null,null,msg,null,null,null];\n case 'EC':\n msg.payload = msg.address;\n return [null,null,null,msg,null,null];\n case 'DO':\n msg.payload = msg.address;\n return [null,null,null,null,msg,null];\n case 'FLO':\n msg.payload = msg.address;\n return [null,null,null,null,null,msg]; \n}","outputs":6,"noerr":0,"initialize":"","finalize":"","x":1610,"y":200,"wires":[["37d74cc0.cb83b4"],["75d34389.1ed80c"],["b88febf5.5efb58"],["b28d1cff.f116e"],["ebc34fc3.97b87"],["6412c3bd.aa094c"]],"outputLabels":["Status","","","","",""]},{"id":"1fd65c6c.cf3ba4","type":"function","z":"d12387ed.3e0c68","name":"Status / mV","func":"msg.payload = msg.payload.toString().split(\",\");\n\nswitch(msg.payload[1]){\n case 'P':\n msg.restart = 'Powered Off';\n break;\n case 'S':\n msg.restart = 'Software Reset';\n break;\n case 'B':\n msg.restart = 'Brown Out';\n break;\n case 'W':\n msg.restart = 'Watchdog';\n break;\n case 'U':\n msg.restart = 'Unknown';\n break;\n}\n\nmsg.mv = msg.payload[2];\nflow.set('boot', false);\n\nswitch(msg.address){\n case flow.get('pH'):\n return [msg,null,null,null,null,null];\n case flow.get('ORP'):\n return [null,msg,null,null,null,null];\n case flow.get('RTD'):\n return [null,null,msg,null,null,null];\n case flow.get('EC'):\n return [null,null,null,msg,null,null];\n case flow.get('DO'):\n return [null,null,null,null,msg,null];\n case flow.get('FLO'):\n return [null,null,null,null,null,msg];\n}","outputs":6,"noerr":0,"initialize":"","finalize":"","x":1630,"y":80,"wires":[["d3fde3b3.3efac","bb3e91c5.269e3"],["cb02b13e.6e957","4d2c623c.55fc6c"],["411a48b4.891298","a4007f9.9ade28"],["473e0b9b.063004","4d13c015.b1f9"],["5bba2abb.e11af4","fa20092.d4277f8"],["e5db697d.620248","5f4ef993.1fd7c8"]],"outputLabels":["Status","","","","",""]},{"id":"28d2e28e.15f34e","type":"ui_button","z":"d12387ed.3e0c68","name":"Change I2C Flow","group":"81171ddb.fa62d","order":7,"width":6,"height":1,"passthru":false,"label":"Change I2C","tooltip":"","color":"","bgcolor":"","icon":"","payload":"flo","payloadType":"str","topic":"","x":370,"y":300,"wires":[["962ed98d.c5f738"]]},{"id":"73aa4889.ea3178","type":"change","z":"d12387ed.3e0c68","name":"Read Flow","rules":[{"t":"set","p":"address","pt":"msg","to":"FLO","tot":"flow"},{"t":"set","p":"command","pt":"msg","to":"82","tot":"num"},{"t":"set","p":"probe","pt":"msg","to":"flo","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":560,"wires":[["2c70191d.c55bf6","7cdacce.2421b34"]]},{"id":"e5db697d.620248","type":"ui_text","z":"d12387ed.3e0c68","group":"81171ddb.fa62d","order":3,"width":0,"height":0,"name":"Flow Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":460,"wires":[]},{"id":"5f4ef993.1fd7c8","type":"ui_text","z":"d12387ed.3e0c68","group":"81171ddb.fa62d","order":4,"width":0,"height":0,"name":"Flow mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":500,"wires":[]},{"id":"6412c3bd.aa094c","type":"ui_text","z":"d12387ed.3e0c68","group":"81171ddb.fa62d","order":2,"width":0,"height":0,"name":"Flow I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":760,"wires":[]},{"id":"7425849f.7f207c","type":"ui_text","z":"d12387ed.3e0c68","group":"fbc68b73.d15598","order":1,"width":0,"height":0,"name":"Flow Value","label":"Value:","format":"{{value}} l/min","layout":"row-spread","x":1230,"y":560,"wires":[]},{"id":"e5cfdbec.0b59b8","type":"ui_button","z":"d12387ed.3e0c68","name":"Factory Reset Flow","group":"81171ddb.fa62d","order":8,"width":6,"height":1,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"flo","payloadType":"str","topic":"","x":350,"y":1220,"wires":[["e265e3c9.6d8a"]]},{"id":"38bb7553.6a0a5a","type":"ui_button","z":"d12387ed.3e0c68","name":"Flash Flow","group":"81171ddb.fa62d","order":6,"width":6,"height":1,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"flo","payloadType":"str","topic":"","x":310,"y":960,"wires":[["11001032.a4777"]]},{"id":"3fcb9bc6.3eebf4","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED Flow","label":"LED","tooltip":"","group":"81171ddb.fa62d","order":5,"width":6,"height":1,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"flow,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"flow,off","offvalueType":"str","officon":"","offcolor":"","x":300,"y":700,"wires":[["b7e5327f.f96f4"]]},{"id":"b1d62f6d.9bae6","type":"ui_button","z":"d12387ed.3e0c68","name":"Temp Compensation Conductivity","group":"ec7f538e.52dfa","order":10,"width":0,"height":0,"passthru":false,"label":"Temp Comp","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":180,"y":1360,"wires":[["460abbbe.f79f74"]]},{"id":"28c20d4e.973b72","type":"ui_button","z":"d12387ed.3e0c68","name":"Temp Compensation D.O.","group":"caf927d.033f2d8","order":10,"width":0,"height":0,"passthru":false,"label":"Temp Comp","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":150,"y":1400,"wires":[["460abbbe.f79f74"]]},{"id":"460abbbe.f79f74","type":"function","z":"d12387ed.3e0c68","name":"Set Address","func":"switch (msg.payload){\n case 'ph':\n msg.address = flow.get('pH');\n break\n case 'ec':\n msg.address = flow.get('EC');\n break;\n case 'do':\n msg.address = flow.get('D.O.');\n break;\n}\n\nmsg.command = 70;\nmsg.payload = 'Do you want to reset ' + msg.payload + ' ezo board to factory settings?'\n\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":1320,"wires":[["a4604840.3f6758"]]},{"id":"bddf527b.fc21","type":"ramp-thermostat","z":"d12387ed.3e0c68","name":"TempCtrl","profile":"7a3c9fcb.539bd","hysteresisplus":".25","hysteresisminus":".25","x":260,"y":2000,"wires":[["7de97747.bce038","e05e7f12.383ae"],[],["5778048e.15535c"]]},{"id":"ac113b8a.7309d8","type":"ramp-thermostat","z":"d12387ed.3e0c68","name":"pHCtrl","profile":"b6111073.8782b","hysteresisplus":".050","hysteresisminus":".050","x":250,"y":2100,"wires":[["ec642871.763e08","a93c6469.6d0988"],[],["3e2a038b.48584c"]]},{"id":"5778048e.15535c","type":"ui_slider","z":"d12387ed.3e0c68","name":"TempSetpoint","label":"sp","tooltip":"Desired Temperature","group":"5b5f987f.a93218","order":4,"width":"5","height":"1","passthru":false,"outs":"end","topic":"SetTarget","min":"24","max":"30","step":".5","x":100,"y":2000,"wires":[["bddf527b.fc21"]]},{"id":"3e2a038b.48584c","type":"ui_slider","z":"d12387ed.3e0c68","name":"pHSetpoint","label":"sp","tooltip":"Desired pH","group":"31dbfc3d.4716d4","order":3,"width":0,"height":0,"passthru":false,"outs":"end","topic":"SetTarget","min":"5.5","max":"7.5","step":".05","x":90,"y":2100,"wires":[["ac113b8a.7309d8"]]},{"id":"e05e7f12.383ae","type":"ui_statetrail","z":"d12387ed.3e0c68","group":"5b5f987f.a93218","order":7,"width":0,"height":0,"name":"HeaterTime","label":"","states":[{"state":true,"col":"#009933","t":"bool","label":"On"},{"state":false,"col":"#ff0000","t":"bool","label":"Off"}],"periodLimit":"1","periodLimitUnit":"3600","timeformat":"mm:ss","tickmarks":"3","persist":false,"legend":"0","combine":false,"blanklabel":"waiting data","x":430,"y":1960,"wires":[[]]},{"id":"7de97747.bce038","type":"change","z":"d12387ed.3e0c68","name":"RelayCh1Set","rules":[{"t":"set","p":"topic","pt":"msg","to":"channel_1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":2000,"wires":[["6994b29b.11dd3c"]]},{"id":"a93c6469.6d0988","type":"ui_statetrail","z":"d12387ed.3e0c68","group":"31dbfc3d.4716d4","order":6,"width":0,"height":0,"name":"CO2Time","label":"","states":[{"state":false,"col":"#009933","t":"bool","label":"On"},{"state":true,"col":"#ff0000","t":"bool","label":"Off"}],"periodLimit":"1","periodLimitUnit":"3600","timeformat":"mm:ss","tickmarks":"3","persist":false,"legend":"0","combine":false,"blanklabel":"waiting data","x":420,"y":2060,"wires":[[]]},{"id":"ec642871.763e08","type":"function","z":"d12387ed.3e0c68","name":"ChgDirectAct","func":"if (msg.payload === false)\n{msg.payload=true}\nelse \n{msg.payload=false}\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":2100,"wires":[["9d1e3bb0.ef8c38"]]},{"id":"9d1e3bb0.ef8c38","type":"change","z":"d12387ed.3e0c68","name":"RelayCh2Set","rules":[{"t":"set","p":"topic","pt":"msg","to":"channel_2","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":2140,"wires":[["6994b29b.11dd3c"]]},{"id":"1c7ee3.cc8ef11d","type":"ui_switch","z":"d12387ed.3e0c68","name":"PumpCmnd","label":"","tooltip":"","group":"fbc68b73.d15598","order":4,"width":"3","height":1,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","x":390,"y":2200,"wires":[["b1823059.4ef4e","952b2849.d550f8"]]},{"id":"b1823059.4ef4e","type":"change","z":"d12387ed.3e0c68","name":"RelayCh3Set","rules":[{"t":"set","p":"topic","pt":"msg","to":"channel_3","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":2260,"wires":[["6994b29b.11dd3c"]]},{"id":"952b2849.d550f8","type":"ui_statetrail","z":"d12387ed.3e0c68","group":"fbc68b73.d15598","order":5,"width":0,"height":0,"name":"PumpTime","label":"","states":[{"state":true,"col":"#009933","t":"bool","label":"On"},{"state":false,"col":"#ff0000","t":"bool","label":"Off"}],"periodLimit":"1","periodLimitUnit":"3600","timeformat":"mm:ss","tickmarks":"3","persist":false,"legend":"0","combine":false,"blanklabel":"waiting data","x":390,"y":2300,"wires":[[]]},{"id":"6994b29b.11dd3c","type":"ncd-mcp23008","z":"d12387ed.3e0c68","name":"NCD-GPRelayCtrlr","connection":"3fcac193.4648de","addr":"32","interval":"100","onchange":false,"send_init":false,"outputs":9,"output_all":true,"interrupt":0,"io_1":1,"io_2":1,"io_3":1,"io_4":1,"io_5":1,"io_6":1,"io_7":1,"io_8":1,"persist":"","startup":"0","x":650,"y":2060,"wires":[["3b9fd18f.04ca5e"],["5be3fa14.757c14"],["3d418cbb.3dec84"],["1e34dcce.ae0023"],["12f05f91.f420a"],["fee622cd.e4dac"],["cda9b1f8.c66c7"],["eb3671f9.6d255"],[]]},{"id":"3b9fd18f.04ca5e","type":"ui_led","z":"d12387ed.3e0c68","order":6,"group":"5b5f987f.a93218","width":"0","height":"0","label":"Heater","labelPlacement":"left","labelAlignment":"left","colorForValue":[{"color":"#ff6666","value":"0","valueType":"num"},{"color":"#94bb86","value":"1","valueType":"num"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Heater","x":830,"y":1980,"wires":[]},{"id":"5be3fa14.757c14","type":"ui_led","z":"d12387ed.3e0c68","order":5,"group":"31dbfc3d.4716d4","width":"0","height":"0","label":"CO2","labelPlacement":"left","labelAlignment":"left","colorForValue":[{"color":"#ff6666","value":"0","valueType":"num"},{"color":"#94bb86","value":"1","valueType":"num"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"CO2","x":830,"y":2020,"wires":[]},{"id":"3d418cbb.3dec84","type":"ui_led","z":"d12387ed.3e0c68","order":3,"group":"fbc68b73.d15598","width":"0","height":"0","label":"SumpPump","labelPlacement":"left","labelAlignment":"left","colorForValue":[{"color":"#ff6666","value":"0","valueType":"num"},{"color":"#94bb86","value":"1","valueType":"num"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"SumpPump","x":850,"y":2060,"wires":[]},{"id":"722e578d.c65a88","type":"ui_gauge","z":"d12387ed.3e0c68","name":"FlowGraph","group":"fbc68b73.d15598","order":2,"width":"6","height":4,"gtype":"wave","title":"","label":" l/min","format":"{{value}}","min":0,"max":"30","colors":["#d7ffff","#80ffff","#00ffff"],"seg1":"10","seg2":"20","x":1410,"y":560,"wires":[]},{"id":"c455c49b.cc9118","type":"ui_button","z":"d12387ed.3e0c68","name":"","group":"81171ddb.fa62d","order":9,"width":0,"height":0,"passthru":false,"label":"Reset Total","tooltip":"","color":"","bgcolor":"","icon":"","payload":"1","payloadType":"num","topic":"","x":110,"y":1500,"wires":[["b872510e.f267f"]]},{"id":"6e01f263.2c51ac","type":"comment","z":"d12387ed.3e0c68","name":"Reset Flow Totalizer","info":"","x":130,"y":1460,"wires":[]},{"id":"9500ef80.7a4e5","type":"comment","z":"d12387ed.3e0c68","name":"Parameter Control","info":"","x":130,"y":1940,"wires":[]},{"id":"41187702.f07b48","type":"ui_text","z":"d12387ed.3e0c68","group":"c7c0095d.32a6b8","order":2,"width":0,"height":0,"name":"PMP1 I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1870,"y":800,"wires":[]},{"id":"5f02fed8.af599","type":"ui_text","z":"d12387ed.3e0c68","group":"c7c0095d.32a6b8","order":3,"width":0,"height":0,"name":"PMP1 Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":2050,"y":60,"wires":[]},{"id":"83806ddf.abf33","type":"ui_text","z":"d12387ed.3e0c68","group":"c7c0095d.32a6b8","order":4,"width":0,"height":0,"name":"PMP1 mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":2040,"y":100,"wires":[]},{"id":"80d3e267.daef","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED PMP1","label":"LED","tooltip":"","group":"c7c0095d.32a6b8","order":5,"width":6,"height":1,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"flow,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"flow,off","offvalueType":"str","officon":"","offcolor":"","x":310,"y":740,"wires":[[]]},{"id":"d858bc06.68106","type":"ui_text","z":"d12387ed.3e0c68","group":"8193d8f1.edc678","order":1,"width":0,"height":0,"name":"PMP1 Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":600,"wires":[]},{"id":"b472f384.81fed","type":"ui_text","z":"d12387ed.3e0c68","group":"e42f8dc4.12ada","order":3,"width":0,"height":0,"name":"PMP2 Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":640,"wires":[]},{"id":"6ac0c80a.0c62b8","type":"ui_text","z":"d12387ed.3e0c68","group":"611b00dc.148b","order":1,"width":0,"height":0,"name":"pH Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1560,"y":360,"wires":[]},{"id":"25111cd3.478bf4","type":"ui_text","z":"d12387ed.3e0c68","group":"e1d4b87.d70be48","order":1,"width":0,"height":0,"name":"ORP Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1570,"y":400,"wires":[]},{"id":"986c5be8.8a0098","type":"ui_text","z":"d12387ed.3e0c68","group":"f0c6cc39.7df7b","order":1,"width":0,"height":0,"name":"RTD Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1570,"y":440,"wires":[]},{"id":"bee2454c.1f0ea8","type":"ui_text","z":"d12387ed.3e0c68","group":"ec7f538e.52dfa","order":1,"width":0,"height":0,"name":"EC Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1560,"y":480,"wires":[]},{"id":"3642602f.689d5","type":"ui_text","z":"d12387ed.3e0c68","group":"caf927d.033f2d8","order":1,"width":0,"height":0,"name":"DO Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1560,"y":520,"wires":[]},{"id":"837847c6.01b218","type":"ui_text","z":"d12387ed.3e0c68","group":"81171ddb.fa62d","order":1,"width":0,"height":0,"name":"Flo Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1560,"y":560,"wires":[]},{"id":"76044949.320688","type":"ui_text","z":"d12387ed.3e0c68","group":"c7c0095d.32a6b8","order":1,"width":0,"height":0,"name":"PMP1 Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1570,"y":600,"wires":[]},{"id":"cc297c09.21e57","type":"ui_text","z":"d12387ed.3e0c68","group":"edbee447.1f5c88","order":6,"width":0,"height":0,"name":"PMP2 Calib","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1570,"y":640,"wires":[]},{"id":"d339176e.7af638","type":"ui_text","z":"d12387ed.3e0c68","group":"edbee447.1f5c88","order":7,"width":0,"height":0,"name":"PMP2 I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":2030,"y":800,"wires":[]},{"id":"15be4cde.623083","type":"ui_text","z":"d12387ed.3e0c68","group":"edbee447.1f5c88","order":8,"width":0,"height":0,"name":"PMP2 Status","label":"Last Restart:","format":"{{msg.restart}}","layout":"row-spread","x":2050,"y":140,"wires":[]},{"id":"a810ecdd.87976","type":"ui_text","z":"d12387ed.3e0c68","group":"edbee447.1f5c88","order":9,"width":0,"height":0,"name":"PMP2 mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":2040,"y":180,"wires":[]},{"id":"f75844fd.01f018","type":"ui_switch","z":"d12387ed.3e0c68","name":"LED PMP2","label":"LED","tooltip":"","group":"edbee447.1f5c88","order":10,"width":6,"height":1,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"flow,on","onvalueType":"str","onicon":"","oncolor":"","offvalue":"flow,off","offvalueType":"str","officon":"","offcolor":"","x":470,"y":740,"wires":[[]]},{"id":"289e587b.0b0048","type":"debug","z":"d12387ed.3e0c68","d":true,"name":"scanstring","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":450,"y":120,"wires":[]},{"id":"dcfe1c7c.237c8","type":"ui_template","z":"d12387ed.3e0c68","group":"396e902b.f95f9","name":"Virtual Keyboard","order":1,"width":0,"height":0,"format":"\n\n\n\n\n\n\n\n\n