Here is current code:
[{"id":"d1117df142d0a677","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"4ca5625dc0732e0a","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-digital","moduleIndex":"0","channelIndex":"8","mmpAddress":"0xF0D81000","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"cmd","valueType":"msg","name":"CMD","x":570,"y":280,"wires":[["08af0b6268a9e1fc"]]},{"id":"53ad6dc8c6c139c6","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-analog","moduleIndex":"0","channelIndex":"3","mmpAddress":"0xF0D81004","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","itemName":"","name":"Read Well Level","x":200,"y":280,"wires":[["27b66f186e972aed"]]},{"id":"4733a47c8ab6da57","type":"inject","z":"d1117df142d0a677","name":"Every Second","props":[{"p":"now","v":"","vt":"date"},{"p":"topic","vt":"str"}],"repeat":"1","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":140,"y":80,"wires":[["2b1c2d4a26d1df58"]]},{"id":"2b1c2d4a26d1df58","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81000","mmpType":"int32","mmpLength":"30","mmpEncoding":"ascii","value":"","valueType":"msg.payload","itemName":"","name":"Load All Scratchpad Values from HMI","x":430,"y":80,"wires":[["7dd524962a7a771d"]]},{"id":"7dd524962a7a771d","type":"function","z":"d1117df142d0a677","name":"Save HMI Values to flow.*","func":"// Functions for Bits from Stack Overflow\nfunction bit_test(num, bit){\n return ((num>>bit) % 2 != 0)\n}\n\nfunction bit_set(num, bit){\n return num | 1<<bit;\n}\n\nfunction bit_clear(num, bit){\n return num & ~(1<<bit);\n}\n\nfunction bit_toggle(num, bit){\n return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);\n}\n\n// HMI Counter:\nvar HMI_Count = msg.payload[0];\nflow.set('HMI_Count',HMI_Count);\n\n// HOA:\nvar HOA = msg.payload[1];\nflow.set('HOA',HOA);\n\n// ON_SP:\nvar ON_SP = msg.payload[2]/10.0;\nflow.set('ON_SP',ON_SP);\n\n// OFF_SP:\nvar OFF_SP = msg.payload[3]/10.0;\nflow.set('OFF_SP',OFF_SP);\n\n// Speed_SP:\nvar Speed_SP = msg.payload[4]/10.0;\nflow.set('Speed_SP',Speed_SP);\n\n// Pump_Resets:\nvar Pump_Resets = msg.payload[5];\nflow.set('Pump_Resets',Pump_Resets);\n\n// Flow_Resets:\nvar Flow_Resets = msg.payload[6];\nflow.set('Flow_Resets',Flow_Resets);\n\n// 7-9 are Spare\n\n// PLC_Count:\nvar PLC_Count = flow.get('PLC_Count')||0;\nPLC_Count = msg.payload[10];\n\n// 11: Pump Info is Write only. no need to read.\n// 12-14: Same for Well Level, VFD Speed, and Flow.\n\n// Hours_R0:\nvar Hours_R0 = msg.payload[15];\nflow.set('Hours_R0',Hours_R0);\n\n// Hours_R1:\nvar Hours_R1 = msg.payload[16];\nflow.set('Hours_R1',Hours_R1);\n\n// Hours_R2:\nvar Hours_R2 = msg.payload[17];\nflow.set('Hours_R2',Hours_R2);\n\n// Flow_T0:\nvar Flow_T0 = msg.payload[18];\nflow.set('Flow_T0',Flow_T0);\n\n// Flow_T1:\nvar Flow_T1 = msg.payload[19];\nflow.set('Flow_T1',Flow_T1);\n\n// Flow_T2:\nvar Flow_T2 = msg.payload[20];\nflow.set('Flow_T2',Flow_T2);\n\n\nmsg.sp_vars = [HMI_Count,HOA,ON_SP,OFF_SP,Speed_SP,Pump_Resets,Flow_Resets]\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":80,"wires":[["97eefd31a39273e2"]]},{"id":"27b66f186e972aed","type":"function","z":"d1117df142d0a677","name":"Run Pump?","func":"// Level:\nvar Level = flow.get('Level')||1.0;\nvar HOA = flow.get('HOA');\nvar VFD_Fault = flow.get('VFD_Fault')||false;\nvar CMD = flow.get('CMD')||false;\nvar Call = flow.get('Call')||false;\nvar ON_SP = flow.get('ON_SP')||17.0;\nvar OFF_SP = flow.get('OFF_SP')||5.0;\nvar Speed_SP = flow.get('Speed_SP')||100.0;\nLevel = msg.payload;\nflow.set('Level',Level);\n\nswitch(HOA) {\n case 0: \n CMD = false;\n break;\n \n case 1:\n if(Level > ON_SP) {\n CMD = true;\n } else if(Level < OFF_SP) {\n CMD = false;\n } \n break;\n \n case 2:\n CMD = true;\n break;\n \n default:\n break;\n}\n\n\n// if(HOA == 0) {\n// CMD = false;\n// } else if(VFD_Fault) {\n// CMD = false;\n// } else if(HOA == 2) {\n// CMD = true;\n// } else if(HOA == 1) {\n// if(Level > ON_SP) {\n// CMD = true;\n// } else if(Level < OFF_SP) {\n// CMD = false;\n// }\n// } \nif (Level > ON_SP) {\n Call = true;\n} else if (Level < OFF_SP) {\n Call = false;\n}\nflow.set('CMD',CMD);\nflow.set('Call',Call);\n\nif (CMD) { \n msg.speed = Speed_SP\n} else {\n msg.speed = 0.0\n}\n\nmsg.hoa = HOA;\nmsg.cmd = CMD;\nmsg.level = Level * 10;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":280,"wires":[["4ca5625dc0732e0a"]]},{"id":"9684982098190457","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-digital","moduleIndex":"0","channelIndex":"6","mmpAddress":"0xF0D81000","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","itemName":"","name":"Read VFD Fault","x":200,"y":180,"wires":[["cd948352edc1db67"]]},{"id":"cd948352edc1db67","type":"function","z":"d1117df142d0a677","name":"VFD Fault","func":"// Functions for Bits from Stack Overflow\nfunction bit_test(num, bit){\n return ((num>>bit) % 2 != 0)\n}\n\nfunction bit_set(num, bit){\n return num | 1<<bit;\n}\n\nfunction bit_clear(num, bit){\n return num & ~(1<<bit);\n}\n\nfunction bit_toggle(num, bit){\n return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);\n}\n\n// Pump_Resets:\nvar Pump_Resets = flow.get('Pump_Resets')||0;\n\n\n// VFD_Fault:\nvar VFD_Fault = flow.get('VFD_Fault')||false;\nVFD_Fault = msg.payload;\nflow.set('VFD_Fault',VFD_Fault);\n// Reset VFD Fault\nvar VFD_Reset = flow.get('VFD_Reset')||false;\nVFD_Reset = bit_test(Pump_Resets, 0)\n\n// Pump_Info\nvar Pump_Info = flow.get('Pump_Info')||0;\nif(VFD_Fault) {\n bit_set(Pump_Info,1);\n}\nif(VFD_Fault == 0) {\n bit_clear(Pump_Info,1);\n Pump_Resets = bit_clear(Pump_Resets,0);\n}\n\nflow.set('Pump_Resets',Pump_Resets);\n\nmsg.fault = VFD_Fault;\nmsg.pump_resets = Pump_Resets;\nmsg.payload = VFD_Reset;\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":180,"wires":[["e195f945d013c80a"]]},{"id":"97eefd31a39273e2","type":"function","z":"d1117df142d0a677","name":"PLC Counter","func":"// PLC_Count:\nvar PLC_Count = flow.get('PLC_Count');\n\nPLC_Count++;\n\nif (PLC_Count > 2000000000) {\n PLC_Count = 0;\n}\n\nflow.set('PLC_Count',PLC_Count);\n\nmsg.payload = PLC_Count;\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":80,"wires":[["4f2732ebfca6a3f8"]]},{"id":"4f2732ebfca6a3f8","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81028","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","name":"Write PLC Count","x":1250,"y":80,"wires":[["9684982098190457"]]},{"id":"08af0b6268a9e1fc","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81030","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"level","valueType":"msg","name":"Level to HMI","x":750,"y":280,"wires":[["50608db94ce33d6e"]]},{"id":"2e8ff1d8ac30f535","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-digital","moduleIndex":"0","channelIndex":"5","mmpAddress":"0xF0D81004","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"status","valueType":"msg","itemName":"","name":"Read Pump Run Status","x":230,"y":380,"wires":[["be00435fe055d5e4"]]},{"id":"be00435fe055d5e4","type":"function","z":"d1117df142d0a677","name":"Pump Timers","func":"function bit_test(num, bit){\n return ((num>>bit) % 2 != 0)\n}\n\nfunction bit_set(num, bit){\n return num | 1<<bit;\n}\n\nfunction bit_clear(num, bit){\n return num & ~(1<<bit);\n}\n\nfunction bit_toggle(num, bit){\n return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);\n}\n\n// Status:\nvar S_Status = flow.get('Status')||false;\nvar P_Status = msg.status;\nvar Status = msg.status;\nvar StartTime = flow.get('StartTime');\nvar AccTime = 0;\n\n// Pump_Resets:\nvar Pump_Resets = flow.get('Pump_Resets')||0;\n\n// Reset Pump Runtime 1\nvar Pump_R1 = flow.get('Pump_R1')||0;\nPump_R1 = bit_test(Pump_Resets, 1);\nflow.set('Pump_R1',Pump_R1);\n\n// Reset Pump Runtime 2\nvar Pump_R2 = flow.get('Pump_R2')||0;\nPump_R2 = bit_test(Pump_Resets, 2);\nflow.set('Pump_R2',Pump_R2);\n\n// Other Vars\nvar P_Seconds = flow.get('P_Seconds')||0.0;\nvar THours_R0 = flow.get('Hours_R0')||0;\nvar THours_R1 = flow.get('Hours_R1')||0;\nvar THours_R2 = flow.get('Hours_R2')||0;\n\n\nif (StartTime > 1) {\n AccTime = msg.payload - StartTime\n}\n\nif (!S_Status && P_Status) {\n StartTime = msg.payload;\n flow.set('StartTime',StartTime);\n S_Status = true;\n} else if (S_Status && P_Status) {\n P_Seconds = P_Seconds + AccTime / 1000;\n} else if (S_Status && !P_Status) {\n flow.set('P_Seconds',P_Seconds);\n StartTime = 1;\n S_Status = false;\n}\nif (P_Seconds > 360.0) {\n THours_R0++;\n THours_R1++;\n THours_R2++;\n P_Seconds = P_Seconds - 360.0;\n StartTime = msg.payload;\n flow.set('THours_R0',THours_R0);\n flow.set('THours_R1',THours_R1);\n flow.set('THours_R2',THours_R2);\n flow.set('P_Seconds',P_Seconds);\n flow.set('StartTime',StartTime);\n} else if (THours_R0 > 2000000000) {\n THours_R0 = 0;\n flow.set('THours_R0',THours_R0);\n} else if (Pump_R1 || THours_R1 > 2000000000) {\n THours_R1 = 0;\n flow.set('THours_R1',THours_R1);\n Pump_Resets = bit_clear(Pump_Resets, 1);\n} else if (Pump_R2 || THours_R2 > 2000000000) {\n THours_R2 = 0;\n flow.set('THours_R2',THours_R2);\n Pump_Resets = bit_clear(Pump_Resets, 2);\n}\n\nflow.set('Pump_Resets',Pump_Resets);\nflow.set('Status',Status);\n\nmsg.stime = StartTime;\nmsg.pstatus = P_Status;\nmsg.sstatus = S_Status;\nmsg.secs = P_Seconds;\nmsg.hours = [THours_R0, THours_R1, THours_R2]\nmsg.p_resets = Pump_Resets;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":380,"wires":[["75461fc90b894bbd"]]},{"id":"50608db94ce33d6e","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-analog","moduleIndex":"0","channelIndex":"4","mmpAddress":"0xF0D81000","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"speed","valueType":"msg","name":"Set Pump Speed CMD","x":960,"y":280,"wires":[["2e8ff1d8ac30f535"]]},{"id":"75461fc90b894bbd","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D8103C","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"hours[0]","valueType":"msg","name":"Hours","x":630,"y":380,"wires":[["227b4309867593de"]]},{"id":"227b4309867593de","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81040","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"hours[1]","valueType":"msg","name":"Hours","x":770,"y":380,"wires":[["cd1425aecf438fef"]]},{"id":"cd1425aecf438fef","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81044","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"hours[2]","valueType":"msg","name":"Hours","x":910,"y":380,"wires":[["c2cf59c1a615d06a"]]},{"id":"fee8f16df449eb1a","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-analog","moduleIndex":"0","channelIndex":"2","mmpAddress":"0xF0D81004","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"payload","valueType":"msg","itemName":"","name":"Read Pump Run Speed","x":250,"y":480,"wires":[["f3fa617ee9d5a10b"]]},{"id":"f3fa617ee9d5a10b","type":"function","z":"d1117df142d0a677","name":"Pump Speed","func":"// Pump_Speed:\nvar Pump_Speed = flow.get('Pump_Speed')||0;\nPump_Speed = msg.payload * 10.0;\nflow.set('Pump_Speed',Pump_Speed);\n\n\nmsg.payload = Pump_Speed;\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":480,"wires":[["213afdeaa99701ef"]]},{"id":"213afdeaa99701ef","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81034","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","name":"Pump Speed","x":650,"y":480,"wires":[["2fec3772d772f4b4"]]},{"id":"2fec3772d772f4b4","type":"function","z":"d1117df142d0a677","name":"Pump Info Builder","func":"// Pump Bits:\nvar Status = flow.get('Status')||false;\nvar VFD_Fault = flow.get('VFD_Fault')||false;\nvar Call = flow.get('Call')||false;\nvar CMD = flow.get('CMD')||false;\nvar Pump_Info = 0;\n\n\nPump_Info = Status + (VFD_Fault << 1) + (Call << 2) + (CMD << 3)\n\n\nmsg.payload = Pump_Info\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":230,"y":560,"wires":[["9237eca872020457"]]},{"id":"9237eca872020457","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D8102C","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","name":"Pump Info","x":470,"y":560,"wires":[["3cb04f07142cac5e"]]},{"id":"3cb04f07142cac5e","type":"groov-io-read","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-analog","moduleIndex":"0","channelIndex":"1","mmpAddress":"0xF0D81004","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"flow","valueType":"msg","itemName":"","name":"Read Flow Meter","x":190,"y":640,"wires":[["2b12fad40dbd568b"]]},{"id":"2b12fad40dbd568b","type":"function","z":"d1117df142d0a677","name":"Flow Totals","func":"// Functions for Bits from Stack Overflow\nfunction bit_test(num, bit){\n return ((num>>bit) % 2 != 0)\n}\n\nfunction bit_set(num, bit){\n return num | 1<<bit;\n}\n\nfunction bit_clear(num, bit){\n return num & ~(1<<bit);\n}\n\nfunction bit_toggle(num, bit){\n return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);\n}\n\n// Flow: (Assuming GPM)\nvar Flow = msg.flow;\nvar Flow_T0 = flow.get('Flow_T0')||1.0;\nvar Flow_T1 = flow.get('Flow_T1');\nvar Flow_T2 = flow.get('Flow_T2');\n\n// HMI_DI:\nvar Flow_Resets = flow.get('Flow_Resets')||0;\nvar Reset1 = bit_test(Flow_Resets, 0);\nvar Reset2 = bit_test(Flow_Resets, 1);\n\nvar Now = msg.payload;\nvar Last = flow.get('Last')||msg.payload;\nvar msecs = Now - Last;\nvar F_Total = flow.get('F_Total');\nvar Counts_Total = 1000.0; // == Galons per Count.\n\nif (Flow > 5.0) {\n if (msecs > 0) {\n weight = msecs / 1000.0;\n sec_Total = Flow * weight / 60.0; // Divide by 60 because we assume GPM. Change for others.\n F_Total += sec_Total; \n }\n if (F_Total > Counts_Total) {\n Flow_T0++;\n Flow_T1++;\n Flow_T2++;\n F_Total -= Counts_Total;\n }\n} \n\nif (Flow_T0 > 2000000000) {\n Flow_T0 = 0;\n}\nif (Reset1 || Flow_T1 > 2000000000) {\n Flow_T1 = 0;\n Flow_Resets = bit_clear(Flow_Resets, 0);\n}\nif (Reset2 || Flow_T2 > 2000000000) {\n Flow_T2 = 0;\n Flow_Resets = bit_clear(Flow_Resets, 1);\n}\nmsg.last = Last;\n\nflow.set('Last',Now);\nflow.set('F_Total',F_Total);\nflow.set('Flow_T0',Flow_T0);\nflow.set('Flow_T1',Flow_T1);\nflow.set('Flow_T2',Flow_T2);\nflow.set('Flow_Resets',Flow_Resets);\nmsg.now = Now;\n\nmsg.msecs = msecs;\nmsg.float = F_Total;\nmsg.resets = Flow_Resets;\nmsg.totals = [Flow_T0,Flow_T1,Flow_T2];\nmsg.payload = Flow * 10;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":640,"wires":[["1c6d3caa0ceae154"]]},{"id":"85e3d8f3a0b3c812","type":"debug","z":"d1117df142d0a677","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1310,"y":640,"wires":[]},{"id":"7924106d31c13d86","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81048","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"totals[0]","valueType":"msg","name":"Totals","x":750,"y":640,"wires":[["0739e337abf25863"]]},{"id":"0739e337abf25863","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D8104C","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"totals[1]","valueType":"msg","name":"Totals","x":870,"y":640,"wires":[["c01866a67a2dbb25"]]},{"id":"c01866a67a2dbb25","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81050","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"totals[2]","valueType":"msg","name":"Totals","x":1010,"y":640,"wires":[["2d812bd98e3a5a4b"]]},{"id":"1c6d3caa0ceae154","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0D81038","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","name":"Flow","x":610,"y":640,"wires":[["7924106d31c13d86"]]},{"id":"65eb083f60f299dd","type":"inject","z":"d1117df142d0a677","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1800","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":800,"wires":[["e6987c7af8fe5bfc"]]},{"id":"e6987c7af8fe5bfc","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"","channelIndex":"","mmpAddress":"0xF0380000","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"03","valueType":"value","name":"Write Scratchpad to Flash","x":790,"y":800,"wires":[["911426daa82ea136"]]},{"id":"911426daa82ea136","type":"debug","z":"d1117df142d0a677","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1130,"y":800,"wires":[]},{"id":"e195f945d013c80a","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"channel-digital","moduleIndex":"0","channelIndex":"9","mmpAddress":"0xF0D81000","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"","valueType":"msg.payload","name":"Reset","x":570,"y":180,"wires":[["2ef299ace042eb49"]]},{"id":"2ef299ace042eb49","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"0","channelIndex":"","mmpAddress":"0xF0D81014","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"pump_resets","valueType":"msg","name":"Pump Resets","x":760,"y":180,"wires":[["53ad6dc8c6c139c6"]]},{"id":"c2cf59c1a615d06a","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"0","channelIndex":"","mmpAddress":"0xF0D81014","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"p_resets","valueType":"msg","name":"Pump Resets","x":1100,"y":380,"wires":[["fee8f16df449eb1a"]]},{"id":"2d812bd98e3a5a4b","type":"groov-io-write","z":"d1117df142d0a677","device":"4e9fa67a17225a9e","dataType":"mmp-address","moduleIndex":"0","channelIndex":"","mmpAddress":"0xF0D81018","mmpType":"int32","mmpLength":"1","mmpEncoding":"ascii","value":"resets","valueType":"msg","name":"Flow Resets","x":1150,"y":640,"wires":[["85e3d8f3a0b3c812"]]},{"id":"4e9fa67a17225a9e","type":"groov-io-device","address":"localhost","msgQueueFullBehavior":"DROP_OLD"}]
Thanks,
Caleb