[{"id":"3e1670d8.f89fb","type":"tab","label":"Ezo Probes","disabled":false,"info":""},{"id":"bcb586e4.19f188","type":"ui_switch","z":"3e1670d8.f89fb","name":"LED pH","label":"LED","tooltip":"","group":"a4d910e0.e5e71","order":5,"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":[["9dc4d5ee.c7bb88"]]},{"id":"d8a5ccca.9a1ce","type":"ui_button","z":"3e1670d8.f89fb","name":"Factory Reset pH","group":"a4d910e0.e5e71","order":10,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":130,"y":1060,"wires":[["42827abd.0b1d54"]]},{"id":"891f0ccc.2b364","type":"ui_toast","z":"3e1670d8.f89fb","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Reset","cancel":"Cancel","raw":false,"topic":"Factory Reset","name":"","x":550,"y":1140,"wires":[["d05ae0ae.b73"]]},{"id":"60bdc342.bf2fec","type":"i2c out","z":"3e1670d8.f89fb","name":"","address":"","command":"","payload":"payload","payloadType":"msg","count":"1","x":1860,"y":860,"wires":[[]]},{"id":"e1b832df.ef6db","type":"ui_button","z":"3e1670d8.f89fb","name":"Temp Compensation pH","group":"a4d910e0.e5e71","order":6,"width":0,"height":0,"passthru":false,"label":"Temperature Compensation","tooltip":"","color":"","bgcolor":"","icon":"","payload":"Set current temperature in celcius:","payloadType":"str","topic":"","x":150,"y":1320,"wires":[["964fd00f.20652"]]},{"id":"964fd00f.20652","type":"ui_toast","z":"3e1670d8.f89fb","position":"prompt","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"Temperature Compensation","name":"","x":370,"y":1320,"wires":[["4f237480.11026c"]]},{"id":"4f237480.11026c","type":"function","z":"3e1670d8.f89fb","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":540,"y":1320,"wires":[["60bdc342.bf2fec","41c9f106.f6826"]]},{"id":"41c9f106.f6826","type":"delay","z":"3e1670d8.f89fb","name":"","pauseType":"delay","timeout":"900","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":710,"y":1320,"wires":[["da3b0698.084c48"]]},{"id":"da3b0698.084c48","type":"i2c in","z":"3e1670d8.f89fb","name":"","address":"","command":"","count":"4","x":870,"y":1320,"wires":[[]]},{"id":"5f086a6c.9da364","type":"inject","z":"3e1670d8.f89fb","name":"Poll","topic":"","payload":"","payloadType":"str","repeat":"1","crontab":"","once":true,"onceDelay":"5","x":110,"y":440,"wires":[["268f4bd8.138f64"]]},{"id":"493a2644.9198e8","type":"function","z":"3e1670d8.f89fb","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];\n case flow.get('ORP'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,msg,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];\n case flow.get('EC'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,null,null,msg,null];\n case flow.get('D.O.'):\n msg.payload = parseFloat(msg.payload.slice(1,6).toString());\n return [null,null,null,null,msg];\n}","outputs":5,"noerr":0,"x":970,"y":440,"wires":[["1d336630.7efaaa"],["c9298ce5.e3e2a"],["4d5c5d33.405f24"],["92fdbc2d.7d61e"],["1e31f184.02ccde"]],"outputLabels":["Status","","","",""]},{"id":"e50f0cc4.9cf56","type":"ui_button","z":"3e1670d8.f89fb","name":"Flash pH","group":"a4d910e0.e5e71","order":7,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":100,"y":800,"wires":[["b58d1576.8f5a28"]]},{"id":"e54b63e7.69b8b","type":"ui_button","z":"3e1670d8.f89fb","name":"Flash ORP","group":"cfc5afa4.8f001","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":110,"y":840,"wires":[["b58d1576.8f5a28"]]},{"id":"e60892a.e67297","type":"ui_button","z":"3e1670d8.f89fb","name":"Flash Temp","group":"9bfb97b9.622ff8","order":7,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":110,"y":880,"wires":[["b58d1576.8f5a28"]]},{"id":"b58d1576.8f5a28","type":"function","z":"3e1670d8.f89fb","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}\n\nmsg.command = 70;\nmsg.payload = Buffer.from('ind', 'ascii');\n\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":880,"wires":[["60bdc342.bf2fec"]]},{"id":"2b237cf2.bc05b4","type":"ui_switch","z":"3e1670d8.f89fb","name":"LED ORP","label":"LED","tooltip":"","group":"cfc5afa4.8f001","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":[["9dc4d5ee.c7bb88"]]},{"id":"517ccbed.843dd4","type":"ui_switch","z":"3e1670d8.f89fb","name":"LED Temp","label":"LED","tooltip":"","group":"9bfb97b9.622ff8","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":[["9dc4d5ee.c7bb88"]]},{"id":"9dc4d5ee.c7bb88","type":"function","z":"3e1670d8.f89fb","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('D.O.');\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,"x":310,"y":620,"wires":[["60bdc342.bf2fec"]]},{"id":"af26ac8f.0217","type":"i2c in","z":"3e1670d8.f89fb","name":"","address":"","command":"","count":"16","x":830,"y":440,"wires":[["493a2644.9198e8"]]},{"id":"a2bda1e6.7aac6","type":"change","z":"3e1670d8.f89fb","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":[["60bdc342.bf2fec","9a027dbd.d0922"]]},{"id":"c8dfbdd.52d614","type":"change","z":"3e1670d8.f89fb","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":[["60bdc342.bf2fec","9a027dbd.d0922"]]},{"id":"64dc791.8ace088","type":"change","z":"3e1670d8.f89fb","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":[["60bdc342.bf2fec","d9ffae31.c5673"]]},{"id":"9a027dbd.d0922","type":"delay","z":"3e1670d8.f89fb","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":[["af26ac8f.0217"]]},{"id":"d9ffae31.c5673","type":"delay","z":"3e1670d8.f89fb","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":[["af26ac8f.0217"]]},{"id":"492d8eb3.f5acc","type":"comment","z":"3e1670d8.f89fb","name":"Read probe values.","info":"","x":130,"y":400,"wires":[]},{"id":"82c55bb1.a63288","type":"comment","z":"3e1670d8.f89fb","name":"Set LED.","info":"","x":100,"y":500,"wires":[]},{"id":"a311f76f.8bfa68","type":"comment","z":"3e1670d8.f89fb","name":"Flash LED.","info":"","x":100,"y":760,"wires":[]},{"id":"2e2a7461.87efac","type":"ui_button","z":"3e1670d8.f89fb","name":"Factory Reset ORP","group":"cfc5afa4.8f001","order":9,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":130,"y":1100,"wires":[["42827abd.0b1d54"]]},{"id":"d5129b2.6f0e768","type":"ui_button","z":"3e1670d8.f89fb","name":"Factory Reset Temp","group":"9bfb97b9.622ff8","order":10,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":140,"y":1140,"wires":[["42827abd.0b1d54"]]},{"id":"8627909c.59257","type":"comment","z":"3e1670d8.f89fb","name":"Factory reset.","info":"","x":110,"y":1020,"wires":[]},{"id":"42827abd.0b1d54","type":"function","z":"3e1670d8.f89fb","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}\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":1140,"wires":[["891f0ccc.2b364"]]},{"id":"56bf2cd8.331914","type":"comment","z":"3e1670d8.f89fb","name":"Set temperature compensation for pH board.","info":"","x":210,"y":1280,"wires":[]},{"id":"e01e9509.8cbe78","type":"function","z":"3e1670d8.f89fb","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":1420,"wires":[["f8fdcd1c.d7c34","60bdc342.bf2fec"]]},{"id":"f8fdcd1c.d7c34","type":"delay","z":"3e1670d8.f89fb","name":"","pauseType":"delay","timeout":"900","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":450,"y":1420,"wires":[["a2857575.29bcd8"]]},{"id":"a2857575.29bcd8","type":"i2c in","z":"3e1670d8.f89fb","name":"","address":"","command":"","count":"4","x":610,"y":1420,"wires":[[]]},{"id":"fd71a54e.14eeb8","type":"comment","z":"3e1670d8.f89fb","name":"Set temperature scale for temp board.","info":"","x":190,"y":1380,"wires":[]},{"id":"f84f9889.bdedd8","type":"ui_dropdown","z":"3e1670d8.f89fb","name":"Temp Scale","label":"Scale","tooltip":"","place":"Scale","group":"9bfb97b9.622ff8","order":6,"width":0,"height":0,"passthru":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":1420,"wires":[["e01e9509.8cbe78"]]},{"id":"1e381215.da6e3e","type":"i2c scan","z":"3e1670d8.f89fb","name":"","x":260,"y":80,"wires":[["de4d8b7a.cba4c8"],[]]},{"id":"d8f0b15a.af9c1","type":"inject","z":"3e1670d8.f89fb","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"1","x":110,"y":80,"wires":[["1e381215.da6e3e"]]},{"id":"4a49933d.b4eb4c","type":"delay","z":"3e1670d8.f89fb","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":[["dc6b0f58.2ac11"]]},{"id":"dc6b0f58.2ac11","type":"i2c in","z":"3e1670d8.f89fb","name":"","address":"","command":"","count":"10","x":930,"y":80,"wires":[["33403dda.20a052"]]},{"id":"24d4184b.bdf8f8","type":"change","z":"3e1670d8.f89fb","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":[["4a49933d.b4eb4c","60bdc342.bf2fec"]]},{"id":"268f4bd8.138f64","type":"switch","z":"3e1670d8.f89fb","name":"Boot?","property":"boot","propertyType":"flow","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":250,"y":440,"wires":[["a2bda1e6.7aac6","c8dfbdd.52d614","64dc791.8ace088","6dde7bd5.8e11e4","70f0b47.22b414c"]]},{"id":"33403dda.20a052","type":"function","z":"3e1670d8.f89fb","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,"x":1110,"y":80,"wires":[["2d8b4a44.9a4ce6","60bdc342.bf2fec","e5b8f7a8.be7568"]]},{"id":"de4d8b7a.cba4c8","type":"split","z":"3e1670d8.f89fb","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":410,"y":80,"wires":[["24d4184b.bdf8f8"]]},{"id":"8d2704db.3ed6d8","type":"comment","z":"3e1670d8.f89fb","name":"Boot sequence.","info":"","x":120,"y":40,"wires":[]},{"id":"7405f2f2.00b16c","type":"comment","z":"3e1670d8.f89fb","name":"Change I2C address.","info":"","x":140,"y":140,"wires":[]},{"id":"e8e74226.4b589","type":"ui_button","z":"3e1670d8.f89fb","name":"Change I2C pH","group":"a4d910e0.e5e71","order":8,"width":0,"height":0,"passthru":false,"label":"Change I2C Address","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":120,"y":180,"wires":[["dd7313c.b395ff"]]},{"id":"dc10203e.c3ee","type":"ui_toast","z":"3e1670d8.f89fb","position":"prompt","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"","name":"","x":530,"y":260,"wires":[["dbb7368f.22fe78"]]},{"id":"92ce2b5a.7d6bf8","type":"ui_button","z":"3e1670d8.f89fb","name":"Change I2C ORP","group":"cfc5afa4.8f001","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C Address","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":130,"y":220,"wires":[["dd7313c.b395ff"]]},{"id":"2f9e4e8.c1038b2","type":"ui_button","z":"3e1670d8.f89fb","name":"Change I2C Temp","group":"9bfb97b9.622ff8","order":8,"width":0,"height":0,"passthru":false,"label":"Change I2C Address","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":130,"y":260,"wires":[["dd7313c.b395ff"]]},{"id":"dd7313c.b395ff","type":"function","z":"3e1670d8.f89fb","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}\n\nmsg.command = 73;\nmsg.payload = 'Enter new I2C address:';\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":260,"wires":[["dc10203e.c3ee"]]},{"id":"dbb7368f.22fe78","type":"function","z":"3e1670d8.f89fb","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,"x":710,"y":260,"wires":[["3cc695c5.d0e0aa","60bdc342.bf2fec"]]},{"id":"3cc695c5.d0e0aa","type":"delay","z":"3e1670d8.f89fb","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":[["1e381215.da6e3e"]]},{"id":"7cd186e4.27ea08","type":"comment","z":"3e1670d8.f89fb","name":"Calibrate.","info":"","x":100,"y":1480,"wires":[]},{"id":"f4dc1b3b.746aa8","type":"i2c in","z":"3e1670d8.f89fb","name":"","address":"","command":"","count":"16","x":1470,"y":80,"wires":[["fc946663.b5c638"]]},{"id":"2d8b4a44.9a4ce6","type":"delay","z":"3e1670d8.f89fb","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":[["f4dc1b3b.746aa8"]]},{"id":"d05ae0ae.b73","type":"function","z":"3e1670d8.f89fb","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":[["60bdc342.bf2fec"]]},{"id":"5b5d3d4a.fac5a4","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Factory Reset EC","group":"43cff99.31d3408","order":9,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":130,"y":1180,"wires":[["42827abd.0b1d54"]]},{"id":"9ac0b8de.059a58","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Factory Reset DO","group":"639e2c86.a112d4","order":9,"width":0,"height":0,"passthru":false,"label":"Factory Reset","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":130,"y":1220,"wires":[["42827abd.0b1d54"]]},{"id":"a7b63c25.d18a6","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Flash EC","group":"43cff99.31d3408","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":100,"y":920,"wires":[["b58d1576.8f5a28"]]},{"id":"c6972623.ace958","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Flash D.O.","group":"639e2c86.a112d4","order":6,"width":0,"height":0,"passthru":false,"label":"Find","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":110,"y":960,"wires":[["b58d1576.8f5a28"]]},{"id":"82f6cf6a.e0124","type":"ui_switch","z":"3e1670d8.f89fb","d":true,"name":"LED EC","label":"LED","tooltip":"","group":"43cff99.31d3408","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":[["9dc4d5ee.c7bb88"]]},{"id":"8edaa172.d2bdd","type":"ui_switch","z":"3e1670d8.f89fb","d":true,"name":"LED D.O.","label":"LED","tooltip":"","group":"639e2c86.a112d4","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":[["9dc4d5ee.c7bb88"]]},{"id":"8685d8ba.da02b8","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Change I2C EC","group":"43cff99.31d3408","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C Address","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":120,"y":300,"wires":[["dd7313c.b395ff"]]},{"id":"c21e6931.9fc3c8","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Change I2C D.O.","group":"639e2c86.a112d4","order":7,"width":0,"height":0,"passthru":false,"label":"Change I2C Address","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":130,"y":340,"wires":[["dd7313c.b395ff"]]},{"id":"b9040e33.40a8b","type":"ui_button","z":"3e1670d8.f89fb","name":"Calibrate pH","group":"a4d910e0.e5e71","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ph","payloadType":"str","topic":"","x":110,"y":1520,"wires":[["702a3e59.bed5d"]]},{"id":"500362e.a48cd9c","type":"function","z":"3e1670d8.f89fb","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 12,880μS solution and wait for reading to stabilize.\";\n return [msg,null,null];\n case 3:\n msg.topic = \"\";\n msg.payload = \"Place probe in 80,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,"x":680,"y":1600,"wires":[["ad4c2eee.88af3"],["ccadac14.983d5"],["264576bc.9f5eca"]]},{"id":"b91e9bbc.c42078","type":"ui_button","z":"3e1670d8.f89fb","name":"Calibrate ORP","group":"cfc5afa4.8f001","order":8,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"orp","payloadType":"str","topic":"","x":120,"y":1560,"wires":[["702a3e59.bed5d"]]},{"id":"a83520bf.4de5d","type":"ui_button","z":"3e1670d8.f89fb","name":"Calibrate Temp","group":"9bfb97b9.622ff8","order":9,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"temp","payloadType":"str","topic":"","x":120,"y":1600,"wires":[["702a3e59.bed5d"]]},{"id":"17feaa0e.9234b6","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Calibrate EC","group":"43cff99.31d3408","order":8,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"ec","payloadType":"str","topic":"","x":110,"y":1640,"wires":[["702a3e59.bed5d"]]},{"id":"ba2ec00c.0ffbf","type":"ui_button","z":"3e1670d8.f89fb","d":true,"name":"Calibrate D.O.","group":"639e2c86.a112d4","order":8,"width":0,"height":0,"passthru":false,"label":"Calibrate","tooltip":"","color":"","bgcolor":"","icon":"","payload":"do","payloadType":"str","topic":"","x":120,"y":1680,"wires":[["702a3e59.bed5d"]]},{"id":"ad4c2eee.88af3","type":"ui_toast","z":"3e1670d8.f89fb","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Next","cancel":"","raw":false,"topic":"","name":"Next","x":870,"y":1540,"wires":[["9792168f.7c77b8","500362e.a48cd9c"]]},{"id":"e75d9530.4a5bf8","type":"ui_toast","z":"3e1670d8.f89fb","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"Calibrate","cancel":"Cancel","raw":false,"topic":"","name":"","x":510,"y":1600,"wires":[["500362e.a48cd9c"]]},{"id":"702a3e59.bed5d","type":"function","z":"3e1670d8.f89fb","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('D.O.');\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,"x":330,"y":1600,"wires":[["e75d9530.4a5bf8"]]},{"id":"264576bc.9f5eca","type":"ui_toast","z":"3e1670d8.f89fb","position":"dialog","displayTime":"3","highlight":"","sendall":false,"outputs":1,"ok":"OK","cancel":"","raw":false,"topic":"","name":"OK","x":870,"y":1660,"wires":[[]]},{"id":"ccadac14.983d5","type":"ui_toast","z":"3e1670d8.f89fb","position":"prompt","displayTime":"3","highlight":"","sendall":true,"outputs":1,"ok":"Calibrate","cancel":"Cancel","raw":false,"topic":"","name":"Input","x":870,"y":1600,"wires":[["9792168f.7c77b8","500362e.a48cd9c"]]},{"id":"9792168f.7c77b8","type":"function","z":"3e1670d8.f89fb","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,low,12880', 'ascii');\n return msg;\n case 3:\n msg.topic = \"\";\n msg.payload = Buffer.from('al,high,80000', '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,"x":1060,"y":1600,"wires":[["60bdc342.bf2fec"]]},{"id":"6dde7bd5.8e11e4","type":"change","z":"3e1670d8.f89fb","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":[["9a027dbd.d0922","60bdc342.bf2fec"]]},{"id":"70f0b47.22b414c","type":"change","z":"3e1670d8.f89fb","d":true,"name":"Read Temp","rules":[{"t":"set","p":"address","pt":"msg","to":"D.O.","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":470,"y":520,"wires":[["9a027dbd.d0922","60bdc342.bf2fec"]]},{"id":"92ac2fc5.8733e","type":"ui_text","z":"3e1670d8.f89fb","group":"a4d910e0.e5e71","order":2,"width":0,"height":0,"name":"pH I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":460,"wires":[]},{"id":"5420376d.671298","type":"ui_text","z":"3e1670d8.f89fb","group":"cfc5afa4.8f001","order":2,"width":0,"height":0,"name":"ORP I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":500,"wires":[]},{"id":"cefe098c.76c4d8","type":"ui_text","z":"3e1670d8.f89fb","group":"9bfb97b9.622ff8","order":2,"width":0,"height":0,"name":"RTD I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":540,"wires":[]},{"id":"5ee66589.1145fc","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"43cff99.31d3408","order":2,"width":0,"height":0,"name":"EC I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":580,"wires":[]},{"id":"9615980c.856288","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"639e2c86.a112d4","order":2,"width":0,"height":0,"name":"DO I2C","label":"I2C Address:","format":"{{msg.payload}}","layout":"row-spread","x":1860,"y":620,"wires":[]},{"id":"1e4d55e5.4ca63a","type":"ui_text","z":"3e1670d8.f89fb","group":"a4d910e0.e5e71","order":4,"width":0,"height":0,"name":"pH mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1850,"y":100,"wires":[]},{"id":"c21245a4.645cb8","type":"ui_text","z":"3e1670d8.f89fb","group":"cfc5afa4.8f001","order":4,"width":0,"height":0,"name":"ORP mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":180,"wires":[]},{"id":"610caf7b.46959","type":"ui_text","z":"3e1670d8.f89fb","group":"9bfb97b9.622ff8","order":4,"width":0,"height":0,"name":"RTD mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":260,"wires":[]},{"id":"93f35a62.47cef8","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"43cff99.31d3408","order":4,"width":0,"height":0,"name":"EC mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":340,"wires":[]},{"id":"7ad98710.d13d18","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"639e2c86.a112d4","order":4,"width":0,"height":0,"name":"DO mV","label":"Power:","format":"{{msg.mv}} Vcc","layout":"row-spread","x":1860,"y":420,"wires":[]},{"id":"1d336630.7efaaa","type":"ui_text","z":"3e1670d8.f89fb","group":"a4d910e0.e5e71","order":1,"width":0,"height":0,"name":"pH Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1240,"y":360,"wires":[]},{"id":"c9298ce5.e3e2a","type":"ui_text","z":"3e1670d8.f89fb","group":"cfc5afa4.8f001","order":1,"width":0,"height":0,"name":"ORP Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":400,"wires":[]},{"id":"4d5c5d33.405f24","type":"ui_text","z":"3e1670d8.f89fb","group":"9bfb97b9.622ff8","order":1,"width":0,"height":0,"name":"RTD Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1250,"y":440,"wires":[]},{"id":"92fdbc2d.7d61e","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"43cff99.31d3408","order":1,"width":0,"height":0,"name":"EC Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1240,"y":480,"wires":[]},{"id":"1e31f184.02ccde","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"639e2c86.a112d4","order":1,"width":0,"height":0,"name":"DO Value","label":"Value:","format":"{{msg.payload}}","layout":"row-spread","x":1240,"y":520,"wires":[]},{"id":"3a82b59b.328bea","type":"ui_text","z":"3e1670d8.f89fb","group":"a4d910e0.e5e71","order":3,"width":0,"height":0,"name":"pH Status","label":"Status:","format":"{{msg.restart}}","layout":"row-spread","x":1860,"y":60,"wires":[]},{"id":"b642d0a2.db47e","type":"ui_text","z":"3e1670d8.f89fb","group":"cfc5afa4.8f001","order":3,"width":0,"height":0,"name":"ORP Status","label":"Status:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":140,"wires":[]},{"id":"94a72631.396358","type":"ui_text","z":"3e1670d8.f89fb","group":"9bfb97b9.622ff8","order":3,"width":0,"height":0,"name":"RTD Status","label":"Status:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":220,"wires":[]},{"id":"f35111a6.a6107","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"43cff99.31d3408","order":3,"width":0,"height":0,"name":"EC Status","label":"Status:","format":"{{msg.restart}}","layout":"row-spread","x":1860,"y":300,"wires":[]},{"id":"97a03245.7da29","type":"ui_text","z":"3e1670d8.f89fb","d":true,"group":"639e2c86.a112d4","order":3,"width":0,"height":0,"name":"DO Status","label":"Status:","format":"{{msg.restart}}","layout":"row-spread","x":1870,"y":380,"wires":[]},{"id":"e5b8f7a8.be7568","type":"function","z":"3e1670d8.f89fb","name":"I2C","func":"switch(msg.probe){\n case 'pH':\n msg.payload = msg.address;\n return [msg,null,null,null,null];\n case 'ORP':\n msg.payload = msg.address;\n return [null,msg,null,null,null];\n case 'RTD':\n msg.payload = msg.address;\n return [null,null,msg,null,null];\n case 'EC':\n msg.payload = msg.address;\n return [null,null,null,msg,null];\n case 'D.O.':\n msg.payload = msg.address;\n return [null,null,null,null,msg];\n}","outputs":5,"noerr":0,"x":1610,"y":540,"wires":[["92ac2fc5.8733e"],["5420376d.671298"],["cefe098c.76c4d8"],["5ee66589.1145fc"],["9615980c.856288"]],"outputLabels":["Status","","","",""]},{"id":"fc946663.b5c638","type":"function","z":"3e1670d8.f89fb","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];\n case flow.get('ORP'):\n return [null,msg,null,null,null];\n case flow.get('RTD'):\n return [null,null,msg,null,null];\n case flow.get('EC'):\n return [null,null,null,msg,null];\n case flow.get('D.O.'):\n return [null,null,null,null,msg];\n}","outputs":5,"noerr":0,"x":1630,"y":80,"wires":[["3a82b59b.328bea","1e4d55e5.4ca63a"],["b642d0a2.db47e","c21245a4.645cb8"],["94a72631.396358","610caf7b.46959"],["f35111a6.a6107","93f35a62.47cef8"],["97a03245.7da29","7ad98710.d13d18"]],"outputLabels":["Status","","","",""]},{"id":"a4d910e0.e5e71","type":"ui_group","z":"","name":"pH","tab":"84bf6815.050b38","order":2,"disp":true,"width":"6","collapse":false},{"id":"cfc5afa4.8f001","type":"ui_group","z":"","name":"ORP","tab":"84bf6815.050b38","order":1,"disp":true,"width":"6","collapse":false},{"id":"9bfb97b9.622ff8","type":"ui_group","z":"","name":"Temperature","tab":"84bf6815.050b38","order":3,"disp":true,"width":"6","collapse":false},{"id":"43cff99.31d3408","type":"ui_group","z":"","name":"Conductivity","tab":"84bf6815.050b38","order":4,"disp":true,"width":"6","collapse":false},{"id":"639e2c86.a112d4","type":"ui_group","z":"","name":"Dissolved Oxygen","tab":"84bf6815.050b38","order":5,"disp":true,"width":"6","collapse":false},{"id":"84bf6815.050b38","type":"ui_tab","z":"","name":"Probes","icon":"dashboard","order":2,"disabled":false,"hidden":false}]