Closed davthomaspilot closed 3 years ago
Also, this while dosing:
2021-06-20 08:31:53.945 am warnNo handler for incoming event type 'chemController'
What type of chemical controller is being used here? Is this a Virtual Controller built within nodeJS-PoolController?
Can you share the output of http://
Pentair Intellichem.
{"lastUpdated":"6/20/2021, 10:04:28 AM","pool":{"master":0,"options":{"units":0,"clockMode":12,"adjustDST":true,"clockSource":"manual","pumpDelay":false,"manualHeat":false},"location":{"master":0,"timeZone":134,"address":"357 Black Willow Drive","city":"Apex","state":"NC","zip":"27523","country":"United States","latitude":35.79981,"longitude":-78.95631},"alias":"","owner":{"master":0,"name":"Dave Thomas","phone":"19192726695","email":"davethomaspilot@bellsouth.net","email2":"davethomaspilot@bellsouth.net","phone2":""}},"equipment":{"maxBodies":2,"maxCircuits":4,"maxSchedules":12,"maxPumps":2,"maxValves":4,"maxCircuitGroups":0,"maxLightGroups":1,"maxIntelliBrites":8,"maxChlorinators":1,"maxChemControllers":1,"maxCustomNames":10,"maxFeatures":10,"model":"EasyTouch2 4","modules":[{"id":0,"master":0,"name":"ET24","desc":"EasyTouch2 4","type":2,"part":"ET2-4","bodies":2,"circuits":4,"features":10,"valves":4,"maxPumps":2,"chlorinators":1,"chemControllers":1}],"shared":true,"dual":false,"tempSensors":[{"id":"air","isActive":true,"calibration":0,"master":0,"name":"Air"},{"id":"water1","isActive":true,"calibration":0,"master":0,"name":"Water"},{"id":"solar1","isActive":true,"calibration":0,"master":0,"name":"Solar"}],"equipmentIds":{"circuits":{"start":1,"end":4},"features":{"start":11,"end":22},"circuitGroups":{"start":192,"end":223},"virtualCircuits":{"start":128,"end":136},"invalidIds":[7,8,9,10,19]},"bootloaderVersion":"1.010","softwareVersion":"2.140"},"configVersion":{"master":0,"equipment":0,"lastUpdated":"2021-06-20T10:04:25.893-0400"},"bodies":[{"id":1,"master":0,"type":0,"isActive":true,"name":"pool","circuit":6,"heatMode":0,"setPoint":87,"capacity":17000,"manualHeat":false},{"id":2,"master":0,"type":1,"isActive":true,"name":"Spa","heatMode":0,"circuit":1,"setPoint":99,"capacity":1000,"manualHeat":false}],"schedules":[{"id":1,"startTimeType":0,"endTimeType":0,"display":0,"circuit":6,"startTime":360,"scheduleType":0,"endTime":1050,"isActive":true,"scheduleDays":127,"heatSource":32},{"id":3,"startTimeType":0,"endTimeType":0,"display":0,"circuit":4,"startTime":390,"scheduleType":0,"endTime":420,"isActive":true,"scheduleDays":127},{"id":4,"startTimeType":0,"endTimeType":0,"display":0,"circuit":4,"startTime":1020,"scheduleType":0,"endTime":1050,"isActive":true,"scheduleDays":127},{"id":2,"startTimeType":0,"endTimeType":0,"display":0,"circuit":1,"startTime":1051,"scheduleType":0,"endTime":0,"isActive":true,"scheduleDays":127,"heatSource":32},{"id":5,"startTimeType":0,"endTimeType":0,"display":0,"circuit":6,"startTime":480,"scheduleType":0,"endTime":1020,"isActive":true,"scheduleDays":127,"heatSource":32}],"circuits":[{"id":2,"master":0,"name":"Pool Light","nameId":63,"type":16,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false,"lightingTheme":128},{"id":3,"master":0,"name":"Cleaner","nameId":22,"type":0,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":4,"master":0,"name":"Spillway","nameId":79,"type":14,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":5,"master":0,"name":"AUX 4","nameId":6,"type":0,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":6,"master":0,"name":"Pool","nameId":61,"type":2,"isActive":true,"freeze":true,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":1,"master":0,"name":"Spa","nameId":72,"type":1,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false}],"features":[{"id":11,"freeze":true,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Jets","nameId":46},{"id":12,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 2","nameId":95},{"id":13,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 3","nameId":96},{"id":14,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 4","nameId":97},{"id":15,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 5","nameId":98},{"id":16,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 6","nameId":99},{"id":17,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 7","nameId":100},{"id":18,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 8","nameId":101},{"id":20,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"AUX EXTRA","nameId":93}],"pumps":[{"id":1,"master":0,"address":96,"type":128,"isActive":true,"model":0,"circuits":[{"id":1,"master":0,"circuit":4,"speed":2770,"units":0},{"id":2,"master":0,"circuit":6,"speed":2400,"units":0},{"id":3,"master":0,"circuit":1,"speed":2930,"units":0},{"id":4,"master":0,"circuit":3,"speed":3200,"units":0}],"primingSpeed":1000,"primingTime":0,"minSpeed":450,"maxSpeed":3450,"speedStepSize":10,"name":"Intelliflo VS"},{"id":2,"master":0,"address":97,"type":128,"isActive":true,"model":0,"circuits":[{"id":1,"master":0,"circuit":132,"speed":1400,"units":0},{"id":2,"master":0,"circuit":11,"speed":2500,"units":0}],"primingSpeed":1000,"primingTime":0,"minSpeed":450,"maxSpeed":3450,"speedStepSize":10,"name":"Intelliflo VS"}],"chlorinators":[],"valves":[{"id":1,"type":0,"circuit":3,"isActive":true,"isReturn":false,"isIntake":false,"name":"Cleaner","isVirtual":false,"master":0},{"id":2,"type":0,"circuit":0,"isActive":true,"isReturn":false,"isIntake":false,"name":"Valve B","isVirtual":false,"master":0},{"id":3,"type":0,"circuit":6,"name":"Intake","isIntake":true,"isReturn":false,"isActive":true,"isVirtual":false,"master":0}],"heaters":[{"id":1,"isActive":true,"type":1,"name":"Gas Heater","isVirtual":false,"body":32},{"id":3,"isActive":true,"isVirtual":false,"type":3,"heatingEnabled":false,"coolingEnabled":true}],"covers":[],"circuitGroups":[],"lightGroups":[{"id":192,"master":0,"circuits":[{"id":1,"circuit":2,"position":0,"color":0,"swimDelay":1,"master":0,"isActive":false}],"isActive":true,"name":"Intellibrite","type":3,"lightingTheme":128}],"remotes":[{"id":6,"master":0,"type":6,"button1":1,"button2":2,"button3":3,"button4":4,"isActive":true,"name":"QuickTouch"},{"id":1,"master":0,"button1":1,"button2":2,"button3":3,"button4":4,"button5":5,"button6":6,"button7":7,"button8":8,"button9":9,"button10":10,"isActive":true,"type":2,"name":"is10"},{"id":7,"master":0,"pumpId":1,"stepSize":50,"type":7},{"id":2,"master":0,"button1":1,"button2":2,"button3":3,"button4":4,"button5":5,"button6":6,"button7":7,"button8":8,"button9":9,"button10":10,"isActive":true,"type":2,"name":"is10"}],"security":{"master":0},"customNames":[{"id":0,"master":0,"name":"USERNAME-01"},{"id":1,"master":0,"name":"USERNAME-02"},{"id":2,"master":0,"name":"USERNAME-03"},{"id":3,"master":0,"name":"USERNAME-04"},{"id":4,"master":0,"name":"USERNAME-05"},{"id":5,"master":0,"name":"USERNAME-06"},{"id":6,"master":0,"name":"USERNAME-07"},{"id":7,"master":0,"name":"USERNAME-08"},{"id":8,"master":0,"name":"USERNAME-09"},{"id":9,"master":0,"name":"USERNAME-10"}],"eggTimers":[],"chemControllers":[{"id":1,"address":144,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"isActive":true,"type":2,"name":"IntelliChem 1","ph":{"chemType":"ph","setpoint":7.6,"phSupply":1,"probe":{"enabled":true,"master":0},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3072,"maxDosingVolume":25},"orp":{"chemType":"orp","setpoint":630,"useChlorinator":false,"probe":{"enabled":true,"master":0},"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":239,"maxDosingVolume":523},"calciumHardness":325,"cyanuricAcid":0,"alkalinity":70,"HMIAdvancedDisplay":false,"flowSensor":{"type":0,"enabled":true,"master":0},"body":1}],"filters":[{"id":1,"filterType":3,"name":"Filter 1","capacity":0,"capacityUnits":0,"isActive":true,"master":0,"body":32}],"appVersion":"7.1.0","controllerType":"easytouch"}
I see there is no case "chemController" in the parse method of the "Pool Controller" driver. So, maybe not implemented yet?
I added some code to parse the Intellichem packets there--they get received ok.
def parse(raw) {
logger( "Parsing Raw = ${raw}","trace")
def msg = parseLanMessage(raw)
logger( "Parse msg: ${msg}","debug")
logger( "HEADERS: ${msg.headers}","trace")
def type = msg.headers['X-EVENT-TYPE']
logger("Parse event of type: ${type}","info")
logger( "Parse JSON payload: ${msg.json}","debug")
Date date = new Date()
sendEvent([[name:"LastUpdated", value:"${date.format('MM/dd/yyyy')} ${date.format('HH:mm:ss')}", descriptionText:"Last updated at ${date.format('MM/dd/yyyy')} ${date.format('HH:mm:ss')}"]])
if (msg.json) {
switch(type) {
case "temps":
parseTempsResult(msg.json)
break
case "circuit":
parseCircuit(msg.json)
break
case "feature":
parseFeature(msg.json)
break
case "body":
parseDevice(msg.json, 'body')
break
case "controller":
parseController(msg.json)
break
case "virtualCircuit":
break
case "config":
parseConfig(msg.json)
break
case "pump":
parseDevice(msg.json, 'pump')
break
case "chlorinator":
parseDevice(msg.json, 'chlorinator')
break
case "lightGroup":
parseDevice(msg.json, 'lightGroup')
break
// drtHack
case "chemController":
//logger("DRT handler for incoming event type '${type}'", "warn")
//logger("Parse Device of ${type} from ${msg.json}","warn")
phDt = msg.json.ph.doseTime
orpDt = msg.json..doseTime
logger("pH doseTime =${phDt}", "warn")
logger("ORP doseTime=${orpDt}", "warn")
//parseDevice(msg.json, 'orp')
break
// end Drthack
default:
logger( "No handler for incoming event type '${type}'","warn")
break
}
}
}
Thanks I'll take a look at this when I can. Going to be a little as I am traveling for the next week. Code is good to see we are close - just need to sort out why this device is not being created and get these events routed to it once we have it in place.
I have just pushed a new version of the Pool Controller device which is supposed to fix support for finding and creating chem controllers as well as parsing their events. Can you put this in your environment and test it out? I don't have a ChemController and thus don't have a good way to test this out.
I also think we have some work to do to update the Pool Controller Intellichem device to reflect the latest data available on a controller. This has not been touched in a long time and lots of updates have happened on the NJSPC side. I need some feedback and information here to know what attributes are possible and make sense.
Sure, I'll give it a try tomorrow. Also, I think rstrouse will soon release an update to the controller which fixes some issues I discovered. Meanwhile, I've made changes in my local copy that "fix" the issues. Check out https://github.com/tagyoureit/nodejs-poolController/issues/316#issuecomment-869063658 for details, if you are interested. On Saturday, June 26, 2021, 04:47:26 PM EDT, Brad Sileo @.***> wrote:
I have just pushed a new version of the Pool Controller device which is supposed to fix support for finding and creating chem controllers as well as parsing their events. Can you put this in your environment and test it out? I don't have a ChemController and thus don't have a good way to test this out.
I also think we have some work to do to update the Pool Controller Intellichem device to reflect the latest data available on a controller. This has not been touched in a long time and lots of updates have happened on the NJSPC side. I need some feedback and information here to know what attributes are possible and make sense.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
I had trouble uninstalling Pool Controller using HPM. So, I manually deleted all the driver code, app code, devices, and app. Then, the HPM uninstall was happy.
I then re-installed Pool Controller. It said 0 Intellichem created, but I see an Intellichem 1 as a child device for EasyTouch 2.4. I see this in the log file:
021-06-27 09:29:53.289 am errororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_driver_bsileo_Pool_Controller_Intellichem_528.parse() is applicable for argument types: (java.util.HashMap) values: [[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, ...], ...]]
Ok that looks like progress though still some odd behavior happening. As an FYI - I did not release new code to HPM yet - so you would have needed to manually install at least the Pool Controller device driver to get the latest code...doing all of it should also work of course!
But, if I just install the Pool Controller Device driver, would that test that an Intellichem gets created?
I copy/pasted the Pool Controller device driver. I now see this in the log"
dev:3042021-06-27 11:23:32.417 am errororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_driver_bsileo_Pool_Controller_Intellichem_528.parse() is applicable for argument types: (java.util.HashMap) values: [[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, ...], ...]]
Possible solutions: use([Ljava.lang.Object;), wait(), run(), run(), grep(), any() (parse)
dev:2802021-06-27 11:23:32.405 am debugParse Device of intellichem from [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:10, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:650, maxDosingVolume:10, level:720, delayTimeRemaining:0, probe:[level:720, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:10, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:10], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:87, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624807407110, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 11:23:32.338 am debugParse JSON payload: [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:10, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:650, maxDosingVolume:10, level:720, delayTimeRemaining:0, probe:[level:720, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:10, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:10], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:87, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624807407110, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 11:23:32.283 am infoParse event of type: chemController
dev:2802021-06-27 11:23:32.277 am debugParse msg: [mac:B827EBFE850A, ip:c0a800e0, port:d134, headers:[NOTIFY /notify HTTP/1.1:null, Connection:close, Host:192.168.0.213:39501, Content-Length:4107, X-EVENT-TYPE:chemController, Content-Type:application/json], body:{"id":1,"saturationIndex":0,"flowDetected":false,"orp":{"probe":{"saltLevel":0,"level":720,"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":10,"doseTime":10,"lockout":false,"level":720,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":650,"equipmentType":"orp","chemType":"orp","useChlorinator":false,"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":10,"maxDosingVolume":10},"ph":{"probe":{"temperature":87,"level":7.5,"tempUnits":{"val":0,"name":"F","desc":"Fahrenheit"},"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":13,"doseTime":20,"lockout":false,"level":7.5,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":7.6,"equipmentType":"ph","chemType":"ph","phSupply":{"val":1,"name":"acid","desc":"Acid pH-"},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"flowSensor":{"type":{"val":0,"name":"none","desc":"No Sensor"},"enabled":true,"master":0},"type":{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},"alarms":{"flow":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pH":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orp":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orpTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"probeFault":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"pHPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"chlorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"bodyFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"flowSensorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"comms":{"val":0,"name":"ok","desc":"Ok"}},"warnings":{"waterChemistry":{"val":0,"name":"ok","desc":"Ok - No Warning"},"pHLockout":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"pHDailyLimitReached":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"orpDailyLimitReached":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"invalidSetup":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"chlorinatorCommError":{"val":0,"name":"ok","desc":"Ok - No Warning"}},"isActive":true,"status":{"val":0,"name":"ok","desc":"Ok"},"lastComm":1624807407110,"address":144,"firmware":"1.060","body":{"val":1,"name":"spa","desc":"Spa"},"name":"IntelliChem 1","equipmentTyp
But, if I just install the Pool Controller Device driver, would that test that an Intellichem gets created?
Yes this will at least get us the creation working. I am updating the parse logic on the Intellichem device now. Can you grab me the output from "/config/intellichem" and "/state/intellichem"
At present we have these attributes for Intellichem and I am certain they need updated:
Ok, I'll grab the new code
Do you still want the /state/intellichem and /config/intellichem prints?
I was going to do that by adding a print to the parseReferesh method in the Intellichem driver. Is there a better way?
Log after getting the new code:
dev:3042021-06-27 12:34:01.710 pm warnNo handler for incoming Intellichem data element 'HMIAdvancedDisplay'
dev:3042021-06-27 12:34:01.707 pm warnNo handler for incoming Intellichem data element 'status'
dev:3042021-06-27 12:34:01.705 pm warnNo handler for incoming Intellichem data element 'lastComm'
dev:3042021-06-27 12:34:01.702 pm warnNo handler for incoming Intellichem data element 'name'
dev:3042021-06-27 12:34:01.699 pm warnNo handler for incoming Intellichem data element 'master'
dev:3042021-06-27 12:34:01.697 pm warnNo handler for incoming Intellichem data element 'alkalinity'
dev:3042021-06-27 12:34:01.694 pm warnNo handler for incoming Intellichem data element 'orp'
dev:3042021-06-27 12:34:01.692 pm warnNo handler for incoming Intellichem data element 'warnings'
dev:3042021-06-27 12:34:01.689 pm warnNo handler for incoming Intellichem data element 'alarms'
dev:3042021-06-27 12:34:01.687 pm warnNo handler for incoming Intellichem data element 'flowSensor'
dev:3042021-06-27 12:34:01.684 pm warnNo handler for incoming Intellichem data element 'borates'
dev:3042021-06-27 12:34:01.681 pm warnNo handler for incoming Intellichem data element 'address'
dev:3042021-06-27 12:34:01.679 pm warnNo handler for incoming Intellichem data element 'firmware'
dev:3042021-06-27 12:34:01.676 pm warnNo handler for incoming Intellichem data element 'id'
dev:3042021-06-27 12:34:01.674 pm warnNo handler for incoming Intellichem data element 'saturationIndex'
dev:3042021-06-27 12:34:01.671 pm warnNo handler for incoming Intellichem data element 'lsiRange'
dev:3042021-06-27 12:34:01.669 pm warnNo handler for incoming Intellichem data element 'flowDetected'
dev:3042021-06-27 12:34:01.667 pm warnNo handler for incoming Intellichem data element 'equipmentType'
dev:3042021-06-27 12:34:01.664 pm warnNo handler for incoming Intellichem data element 'body'
dev:3042021-06-27 12:34:01.662 pm warnNo handler for incoming Intellichem data element 'isActive'
dev:3042021-06-27 12:34:01.659 pm warnNo handler for incoming Intellichem data element 'type'
dev:3042021-06-27 12:34:01.657 pm warnNo handler for incoming Intellichem data element 'siCalcType'
dev:3042021-06-27 12:34:01.655 pm warnNo handler for incoming Intellichem data element 'cyanuricAcid'
dev:3042021-06-27 12:34:01.652 pm warnNo handler for incoming Intellichem data element 'calciumHardness'
dev:2802021-06-27 12:34:01.644 pm debugParse Device of intellichem from [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 12:34:01.566 pm debugParse JSON payload: [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 12:34:01.525 pm infoParse event of type: chemController
dev:2802021-06-27 12:34:01.506 pm debugParse msg: [mac:B827EBFE850A, ip:c0a800e0, port:e514, headers:[NOTIFY /notify HTTP/1.1:null, Connection:close, Host:192.168.0.213:39501, Content-Length:4118, X-EVENT-TYPE:chemController, Content-Type:application/json], body:{"id":1,"saturationIndex":0.01,"flowDetected":false,"orp":{"probe":{"saltLevel":0,"level":665,"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":3,"doseTime":3,"lockout":false,"level":665,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":750,"equipmentType":"orp","chemType":"orp","useChlorinator":false,"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"ph":{"probe":{"temperature":88,"level":7.5,"tempUnits":{"val":0,"name":"F","desc":"Fahrenheit"},"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":13,"doseTime":20,"lockout":false,"level":7.5,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":7.6,"equipmentType":"ph","chemType":"ph","phSupply":{"val":1,"name":"acid","desc":"Acid pH-"},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"flowSensor":{"type":{"val":0,"name":"none","desc":"No Sensor"},"enabled":true,"master":0},"type":{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},"alarms":{"flow":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pH":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orp":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orpTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"probeFault":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"pHPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"chlorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"bodyFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"flowSensorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"comms":{"val":0,"name":"ok","desc":"Ok"}},"warnings":{"waterChemistry":{"val":0,"name":"ok","desc":"Ok - No Warning"},"pHLockout":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"pHDailyLimitReached":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"orpDailyLimitReached":{"val":4,"name":"orpdailylimit","desc":"orp Daily Limit Reached"},"invalidSetup":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"chlorinatorCommError":{"val":0,"name":"ok","desc":"Ok - No Warning"}},"isActive":true,"status":{"val":0,"name":"ok","desc":"Ok"},"lastComm":1624811636459,"address":144,"firmware":"1.060","body":{"val":1,"name":"spa","desc":"Spa"},"name":"IntelliChem 1","equipmentType":"chemController","alkalinity":70,"calciumHardness":325,"cyanuricAcid":0,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"HMIAdvancedDisplay":false}, header:NOTIFY /notify HTTP/1.1
Connection: close
Host: 192.168.0.213:39501
Content-Length: 4118
X-EVENT-TYPE: chemController
Content-Type: application/json
, json:[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false], data:[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]]
You can just run the commands against your njsPC server in a browser, like this:
http://serverIP:4200/state/intellichem
On Sun, Jun 27, 2021, 12:33 PM davthomaspilot @.***> wrote:
Ok, I'll grab the new code
Do you still want the /state/intellichem and /config/intellichem prints?
I was going to do that by adding a print to the parseReferesh method in the Intellichem driver. Is there a better way?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bsileo/hubitat_poolcontroller/issues/19#issuecomment-869190549, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABOVFMGQPPRKELLSCWQ6YBLTU5HERANCNFSM467JHKCQ .
More records from log:
dev:2802021-06-27 12:34:01.644 pm debugParse Device of intellichem from [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 12:34:01.566 pm debugParse JSON payload: [calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]
dev:2802021-06-27 12:34:01.525 pm infoParse event of type: chemController
dev:2802021-06-27 12:34:01.506 pm debugParse msg: [mac:B827EBFE850A, ip:c0a800e0, port:e514, headers:[NOTIFY /notify HTTP/1.1:null, Connection:close, Host:192.168.0.213:39501, Content-Length:4118, X-EVENT-TYPE:chemController, Content-Type:application/json], body:{"id":1,"saturationIndex":0.01,"flowDetected":false,"orp":{"probe":{"saltLevel":0,"level":665,"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":3,"doseTime":3,"lockout":false,"level":665,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":750,"equipmentType":"orp","chemType":"orp","useChlorinator":false,"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"ph":{"probe":{"temperature":88,"level":7.5,"tempUnits":{"val":0,"name":"F","desc":"Fahrenheit"},"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":13,"doseTime":20,"lockout":false,"level":7.5,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":7.6,"equipmentType":"ph","chemType":"ph","phSupply":{"val":1,"name":"acid","desc":"Acid pH-"},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"flowSensor":{"type":{"val":0,"name":"none","desc":"No Sensor"},"enabled":true,"master":0},"type":{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},"alarms":{"flow":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pH":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orp":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orpTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"probeFault":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"pHPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"chlorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"bodyFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"flowSensorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"comms":{"val":0,"name":"ok","desc":"Ok"}},"warnings":{"waterChemistry":{"val":0,"name":"ok","desc":"Ok - No Warning"},"pHLockout":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"pHDailyLimitReached":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"orpDailyLimitReached":{"val":4,"name":"orpdailylimit","desc":"orp Daily Limit Reached"},"invalidSetup":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"chlorinatorCommError":{"val":0,"name":"ok","desc":"Ok - No Warning"}},"isActive":true,"status":{"val":0,"name":"ok","desc":"Ok"},"lastComm":1624811636459,"address":144,"firmware":"1.060","body":{"val":1,"name":"spa","desc":"Spa"},"name":"IntelliChem 1","equipmentType":"chemController","alkalinity":70,"calciumHardness":325,"cyanuricAcid":0,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"HMIAdvancedDisplay":false}, header:NOTIFY /notify HTTP/1.1
Connection: close
Host: 192.168.0.213:39501
Content-Length: 4118
X-EVENT-TYPE: chemController
Content-Type: application/json
, json:[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false], data:[calciumHardness:325, cyanuricAcid:0, siCalcType:0, type:[val:2, hasAddress:true, name:intellichem, ph:[min:7.2, max:7.6], desc:IntelliChem], isActive:true, body:[val:1, name:spa, desc:Spa], equipmentType:chemController, flowDetected:false, lsiRange:[high:0.5, low:-0.5, enabled:true], saturationIndex:0.01, id:1, firmware:1.060, address:144, borates:0, flowSensor:[type:[val:0, name:none, desc:No Sensor], enabled:true, master:0], alarms:[comms:[val:0, name:ok, desc:Ok], bodyFault:[val:0, name:ok, desc:Ok - No Faults], flowSensorFault:[val:0, name:ok, desc:Ok - No Faults], orp:[val:0, name:ok, desc:Ok - No alarm], chlorFault:[val:0, name:ok, desc:Ok - No Faults], orpProbeFault:[val:0, name:ok, desc:Ok - No Faults], pHPumpFault:[val:0, name:ok, desc:Ok - No Faults], probeFault:[val:0, name:ok, desc:Ok - No alarm], pHProbeFault:[val:0, name:ok, desc:Ok - No Faults], orpPumpFault:[val:0, name:ok, desc:Ok - No Faults], pH:[val:0, name:ok, desc:Ok - No alarm], orpTank:[val:0, name:ok, desc:Ok - No alarm], flow:[val:0, name:ok, desc:Ok - No alarm], pHTank:[val:0, name:ok, desc:Ok - No alarm]], warnings:[chlorinatorCommError:[val:0, name:ok, desc:Ok - No Warning], pHDailyLimitReached:[val:0, name:ok, desc:Ok - No limits reached], orpDailyLimitReached:[val:4, name:orpdailylimit, desc:orp Daily Limit Reached], pHLockout:[val:0, name:ok, desc:Ok - No limits reached], invalidSetup:[val:0, name:ok, desc:Ok - No limits reached], waterChemistry:[val:0, name:ok, desc:Ok - No Warning]], orp:[enabled:true, equipmentType:orp, useChlorinator:false, maxDailyVolume:500, maxDosingTime:3, dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:800, low:650, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:750, maxDosingVolume:3, level:665, delayTimeRemaining:0, probe:[level:665, equipmentType:probe, enabled:true, saltLevel:0, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:3, phLockout:7.8, startDelay:1.5, flowReadingsOnly:true, chemType:orp, mixTimeRemaining:0, doseVolume:3], alkalinity:70, master:0, ph:[enabled:true, equipmentType:ph, dosePriority:true, maxDailyVolume:500, maxDosingTime:5120, phSupply:[val:1, name:acid, desc:Acid pH-], dosingTimeRemaining:0, tank:[level:6, alarmEmptyEnabled:true, units:[val:0, name:, desc:No Units], alarmEmptyLevel:20, equipmentType:tank, capacity:6, master:0], pump:[isDosing:false, ratedFlow:0, type:[val:0, name:none, ratedFlow:false, tank:false, remAddress:false, desc:No Pump], equipmentType:pump, enabled:true, master:0], tolerance:[high:7.6, low:7.2, enabled:true], dosingStatus:[val:2, name:Monitoring, desc:Monitoring], flowDelay:false, flowOnlyMixing:true, setpoint:7.6, maxDosingVolume:13, level:7.5, delayTimeRemaining:0, acidType:0, probe:[level:7.5, temperature:88, tempUnits:[val:0, name:F, desc:Fahrenheit], equipmentType:probe, enabled:true, master:0], manualDosing:false, master:0, dosingMethod:[val:0, name:manual, desc:Manual], lockout:false, dailyLimitReached:false, dosingVolumeRemaining:0, doseTime:20, startDelay:1.5, flowReadingsOnly:true, chemType:ph, mixTimeRemaining:0, doseVolume:13], name:IntelliChem 1, lastComm:1624811636459, status:[val:0, name:ok, desc:Ok], HMIAdvancedDisplay:false]]
I get nothing (well, "{}" ) from these:
http://serverIP:4200/state/intellichem http://serverIP:4200/config/intellichem
http://serverIP:4200/state/ also returns {}
I get this from:
{"lastUpdated":"6/27/2021, 12:39:02 PM","pool":{"master":0,"options":{"units":0,"clockMode":12,"adjustDST":true,"clockSource":"manual","pumpDelay":false,"manualHeat":false},"location":{"master":0,"timeZone":134,"address":"357 Black Willow Drive","city":"Apex","state":"NC","zip":"27523","country":"United States","latitude":35.79981,"longitude":-78.95631},"alias":"","owner":{"master":0,"name":"Dave Thomas","phone":"19192726695","email":"davethomaspilot@bellsouth.net","email2":"davethomaspilot@bellsouth.net","phone2":""}},"equipment":{"maxBodies":2,"maxCircuits":4,"maxSchedules":12,"maxPumps":2,"maxValves":4,"maxCircuitGroups":0,"maxLightGroups":1,"maxIntelliBrites":8,"maxChlorinators":1,"maxChemControllers":1,"maxCustomNames":10,"maxFeatures":10,"model":"EasyTouch2 4","modules":[{"id":0,"master":0,"name":"ET24","desc":"EasyTouch2 4","type":2,"part":"ET2-4","bodies":2,"circuits":4,"features":10,"valves":4,"maxPumps":2,"chlorinators":1,"chemControllers":1}],"shared":true,"dual":false,"tempSensors":[{"id":"air","isActive":true,"calibration":0,"master":0,"name":"Air"},{"id":"water1","isActive":true,"calibration":0,"master":0,"name":"Water"},{"id":"solar1","isActive":true,"calibration":0,"master":0,"name":"Solar"}],"equipmentIds":{"circuits":{"start":1,"end":4},"features":{"start":11,"end":22},"circuitGroups":{"start":192,"end":223},"virtualCircuits":{"start":128,"end":136},"invalidIds":[7,8,9,10,19]},"bootloaderVersion":"1.010","softwareVersion":"2.140"},"configVersion":{"master":0,"equipment":0,"lastUpdated":"2021-06-27T12:38:44.276-0400"},"bodies":[{"id":1,"master":0,"type":0,"isActive":true,"name":"pool","circuit":6,"heatMode":3,"setPoint":87,"capacity":17000,"manualHeat":false},{"id":2,"master":0,"type":1,"isActive":true,"name":"Spa","heatMode":0,"circuit":1,"setPoint":99,"capacity":1000,"manualHeat":false}],"schedules":[{"id":1,"startTimeType":0,"endTimeType":0,"display":0,"circuit":6,"startTime":360,"scheduleType":0,"endTime":1050,"isActive":true,"scheduleDays":127,"heatSource":32},{"id":3,"startTimeType":0,"endTimeType":0,"display":0,"circuit":4,"startTime":390,"scheduleType":0,"endTime":420,"isActive":true,"scheduleDays":127},{"id":4,"startTimeType":0,"endTimeType":0,"display":0,"circuit":4,"startTime":1020,"scheduleType":0,"endTime":1050,"isActive":true,"scheduleDays":127},{"id":2,"startTimeType":0,"endTimeType":0,"display":0,"circuit":1,"startTime":1051,"scheduleType":0,"endTime":0,"isActive":true,"scheduleDays":127,"heatSource":32},{"id":5,"startTimeType":0,"endTimeType":0,"display":0,"circuit":6,"startTime":480,"scheduleType":0,"endTime":1020,"isActive":true,"scheduleDays":127,"heatSource":32}],"circuits":[{"id":2,"master":0,"name":"Pool Light","nameId":63,"type":16,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false,"lightingTheme":128},{"id":3,"master":0,"name":"Cleaner","nameId":22,"type":0,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":4,"master":0,"name":"Spillway","nameId":79,"type":14,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":5,"master":0,"name":"AUX 4","nameId":6,"type":0,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":6,"master":0,"name":"Pool","nameId":61,"type":2,"isActive":true,"freeze":true,"showInFeatures":true,"eggTimer":720,"dontStop":false},{"id":1,"master":0,"name":"Spa","nameId":72,"type":1,"isActive":true,"freeze":false,"showInFeatures":true,"eggTimer":720,"dontStop":false}],"features":[{"id":11,"freeze":true,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Jets","nameId":46},{"id":12,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 2","nameId":95},{"id":13,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 3","nameId":96},{"id":14,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 4","nameId":97},{"id":15,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 5","nameId":98},{"id":16,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 6","nameId":99},{"id":17,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 7","nameId":100},{"id":18,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"Feature 8","nameId":101},{"id":20,"freeze":false,"type":0,"isActive":true,"eggTimer":720,"showInFeatures":true,"name":"AUX EXTRA","nameId":93}],"pumps":[{"id":1,"master":0,"address":96,"type":128,"isActive":true,"model":0,"circuits":[{"id":1,"master":0,"circuit":4,"speed":2210,"units":0},{"id":2,"master":0,"circuit":6,"speed":2400,"units":0},{"id":3,"master":0,"circuit":1,"speed":2930,"units":0},{"id":4,"master":0,"circuit":3,"speed":3000,"units":0}],"primingSpeed":1000,"primingTime":0,"minSpeed":450,"maxSpeed":3450,"speedStepSize":10,"name":"Intelliflo VS"},{"id":2,"master":0,"address":97,"type":128,"isActive":true,"model":0,"circuits":[{"id":1,"master":0,"circuit":132,"speed":1400,"units":0},{"id":2,"master":0,"circuit":11,"speed":2500,"units":0}],"primingSpeed":1000,"primingTime":0,"minSpeed":450,"maxSpeed":3450,"speedStepSize":10,"name":"Intelliflo VS"}],"chlorinators":[],"valves":[{"id":1,"type":0,"circuit":3,"isActive":true,"isReturn":false,"isIntake":false,"name":"Cleaner","isVirtual":false,"master":0},{"id":2,"type":0,"circuit":0,"isActive":true,"isReturn":false,"isIntake":false,"name":"Valve B","isVirtual":false,"master":0},{"id":3,"type":0,"circuit":6,"name":"Intake","isIntake":true,"isReturn":false,"isActive":true,"isVirtual":false,"master":0}],"heaters":[{"id":1,"isActive":true,"type":1,"name":"Gas Heater","isVirtual":false,"body":32},{"id":3,"isActive":true,"isVirtual":false,"type":3,"heatingEnabled":false,"coolingEnabled":true}],"covers":[],"circuitGroups":[],"lightGroups":[{"id":192,"master":0,"circuits":[{"id":1,"circuit":2,"position":0,"color":0,"swimDelay":1,"master":0,"isActive":false}],"isActive":true,"name":"Intellibrite","type":3,"lightingTheme":128}],"remotes":[{"id":6,"master":0,"type":6,"button1":1,"button2":2,"button3":3,"button4":4,"isActive":true,"name":"QuickTouch"},{"id":1,"master":0,"button1":1,"button2":2,"button3":3,"button4":4,"button5":5,"button6":6,"button7":7,"button8":8,"button9":9,"button10":10,"isActive":true,"type":2,"name":"is10"},{"id":7,"master":0,"pumpId":1,"stepSize":50,"type":7},{"id":2,"master":0,"button1":1,"button2":2,"button3":3,"button4":4,"button5":5,"button6":6,"button7":7,"button8":8,"button9":9,"button10":10,"isActive":true,"type":2,"name":"is10"}],"security":{"master":0},"customNames":[{"id":0,"master":0,"name":"USERNAME-01"},{"id":1,"master":0,"name":"USERNAME-02"},{"id":2,"master":0,"name":"USERNAME-03"},{"id":3,"master":0,"name":"USERNAME-04"},{"id":4,"master":0,"name":"USERNAME-05"},{"id":5,"master":0,"name":"USERNAME-06"},{"id":6,"master":0,"name":"USERNAME-07"},{"id":7,"master":0,"name":"USERNAME-08"},{"id":8,"master":0,"name":"USERNAME-09"},{"id":9,"master":0,"name":"USERNAME-10"}],"eggTimers":[],"chemControllers":[{"id":1,"address":144,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"isActive":true,"type":2,"name":"IntelliChem 1","ph":{"chemType":"ph","setpoint":7.6,"phSupply":1,"probe":{"enabled":true,"master":0},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"orp":{"chemType":"orp","setpoint":750,"useChlorinator":false,"probe":{"enabled":true,"master":0},"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"calciumHardness":325,"cyanuricAcid":0,"alkalinity":70,"HMIAdvancedDisplay":false,"flowSensor":{"type":0,"enabled":true,"master":0},"body":1}],"filters":[{"id":1,"filterType":3,"name":"Filter 1","capacity":0,"capacityUnits":0,"isActive":true,"master":0,"body":32}],"appVersion":"7.1.0","controllerType":"easytouch"}
I'm checking the api documentation now...
From /state/chemController/1:
{"id":1,"saturationIndex":0.01,"flowDetected":false,"orp":{"probe":{"saltLevel":0,"level":655,"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":3,"doseTime":3,"lockout":false,"level":655,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":750,"equipmentType":"orp","chemType":"orp","useChlorinator":false,"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"ph":{"probe":{"temperature":88,"level":7.5,"tempUnits":{"val":0,"name":"F","desc":"Fahrenheit"},"equipmentType":"probe","enabled":true,"master":0},"tank":{"capacity":6,"level":6,"units":{"val":0,"name":"","desc":"No Units"},"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"equipmentType":"tank","master":0},"dosingTimeRemaining":0,"delayTimeRemaining":0,"dosingVolumeRemaining":0,"doseVolume":13,"doseTime":20,"lockout":false,"level":7.5,"mixTimeRemaining":0,"dailyLimitReached":false,"manualDosing":false,"flowDelay":false,"dosingStatus":{"val":2,"name":"Monitoring","desc":"Monitoring"},"enabled":true,"pump":{"isDosing":false,"equipmentType":"pump","type":{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},"ratedFlow":0,"enabled":true,"master":0},"setpoint":7.6,"equipmentType":"ph","chemType":"ph","phSupply":{"val":1,"name":"acid","desc":"Acid pH-"},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"dosingMethod":{"val":0,"name":"manual","desc":"Manual"},"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"flowSensor":{"type":{"val":0,"name":"none","desc":"No Sensor"},"enabled":true,"master":0},"type":{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},"alarms":{"flow":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pH":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orp":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"orpTank":{"val":0,"name":"ok","desc":"Ok - No alarm"},"probeFault":{"val":0,"name":"ok","desc":"Ok - No alarm"},"pHProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpProbeFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"pHPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"orpPumpFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"chlorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"bodyFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"flowSensorFault":{"val":0,"name":"ok","desc":"Ok - No Faults"},"comms":{"val":0,"name":"ok","desc":"Ok"}},"warnings":{"waterChemistry":{"val":0,"name":"ok","desc":"Ok - No Warning"},"pHLockout":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"pHDailyLimitReached":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"orpDailyLimitReached":{"val":4,"name":"orpdailylimit","desc":"orp Daily Limit Reached"},"invalidSetup":{"val":0,"name":"ok","desc":"Ok - No limits reached"},"chlorinatorCommError":{"val":0,"name":"ok","desc":"Ok - No Warning"}},"isActive":true,"status":{"val":0,"name":"ok","desc":"Ok"},"lastComm":1624812237124,"address":144,"firmware":"1.060","body":{"val":1,"name":"spa","desc":"Spa"},"name":"IntelliChem 1","equipmentType":"chemController","alkalinity":70,"calciumHardness":325,"cyanuricAcid":0,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"HMIAdvancedDisplay":false}
But, error from /config/chemController/1
From http://192.168.0.224:4200/config/options/chemControllers
{"types":[{"val":0,"name":"none","desc":"None","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":1,"name":"unknown","desc":"Unknown","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},{"val":3,"name":"homegrown","desc":"Homegrown","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":4,"name":"rem","desc":"REM Chem","ph":{"min":6.8,"max":8},"hasAddress":false}],"bodies":[{"val":0,"name":"pool","desc":"pool"},{"val":1,"name":"spa","desc":"Spa"},{"val":32,"name":"poolspa","desc":"pool/Spa"}],"tempUnits":[{"val":0,"name":"F","desc":"Fahrenheit"},{"val":4,"name":"C","desc":"Celsius"}],"status":[{"val":0,"name":"ok","desc":"Ok"},{"val":1,"name":"nocomms","desc":"No Communication"},{"val":2,"name":"config","desc":"Invalid Configuration"}],"pumpTypes":[{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},{"val":1,"name":"relay","desc":"Relay Pump","ratedFlow":true,"tank":true,"remAddress":true},{"val":2,"name":"ezo-pmp","desc":"Altas EZO-PMP","ratedFlow":false,"tank":false,"remAddress":true}],"phSupplyTypes":[{"val":0,"name":"base","desc":"Base pH+"},{"val":1,"name":"acid","desc":"Acid pH-"}],"volumeUnits":[{"val":0,"name":"","desc":"No Units"},{"val":1,"name":"gal","desc":"Gallons"},{"val":2,"name":"L","desc":"Liters"},{"val":3,"name":"mL","desc":"Milliliters"},{"val":4,"name":"cL","desc":"Centiliters"},{"val":5,"name":"oz","desc":"Ounces"},{"val":6,"name":"qt","desc":"Quarts"},{"val":7,"name":"pt","desc":"Pints"}],"dosingMethods":[{"val":0,"name":"manual","desc":"Manual"},{"val":1,"name":"time","desc":"Time"},{"val":2,"name":"volume","desc":"Volume"}],"orpProbeTypes":[{"val":0,"name":"none","desc":"No Probe"},{"val":1,"name":"ezo-orp","desc":"Atlas EZO-ORP","remAddress":true},{"val":2,"name":"other","desc":"Other"}],"phProbeTypes":[{"val":0,"name":"none","desc":"No Probe"},{"val":1,"name":"ezo-ph","desc":"Atlas EZO-PH","remAddress":true},{"val":2,"name":"other","desc":"Other"}],"flowSensorTypes":[{"val":0,"name":"none","desc":"No Sensor"},{"val":1,"name":"switch","desc":"Flow Switch","remAddress":true},{"val":2,"name":"rate","desc":"Rate Sensor","remAddress":true},{"val":4,"name":"pressure","desc":"Pressure Sensor","remAddress":true}],"acidTypes":[{"val":0,"name":"a34.6","desc":"34.6% - 22 Baume","dosingFactor":0.909091},{"val":1,"name":"a31.45","desc":"31.45% - 20 Baume","dosingFactor":1},{"val":2,"name":"a29","desc":"29% - 19 Baume","dosingFactor":1.08448},{"val":3,"name":"a28","desc":"28.3% - 18 Baume","dosingFactor":1.111111},{"val":4,"name":"a15.7","desc":"15.7% - 10 Baume","dosingFactor":2},{"val":5,"name":"a14.5","desc":"14.5% - 9.8 Baume","dosingFactor":2.16897}],"remServers":[],"dosingStatus":[{"val":0,"name":"dosing","desc":"Dosing"},{"val":1,"name":"mixing","desc":"Mixing"},{"val":2,"name":"Monitoring","desc":"Monitoring"}],"siCalcTypes":[{"val":0,"name":"lsi","desc":"Langelier Saturation Index"},{"val":1,"name":"csi","desc":"Calcite Saturation Index"}],"alarms":{"flow":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":1,"name":"noflow","desc":"No Flow Detected"}],"pH":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":2,"name":"phhigh","desc":"pH Level High"},{"val":4,"name":"phlow","desc":"pH Level Low"}],"orp":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":8,"name":"orphigh","desc":"orp Level High"},{"val":16,"name":"orplow","desc":"orp Level Low"}],"pHTank":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":32,"name":"phtankempty","desc":"pH Tank Empty"}],"orpTank":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":64,"name":"orptankempty","desc":"orp Tank Empty"}],"probeFault":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":128,"name":"probefault","desc":"Probe Fault"}]},"warnings":{"waterChemistry":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":1,"name":"corrosive","desc":"Corrosion May Occur"},{"val":2,"name":"scaling","desc":"Scaling May Occur"}],"pHLockout":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":1,"name":"phlockout","desc":"pH Lockout - ORP will not dose"}],"pHDailyLimitReached":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":2,"name":"phdailylimit","desc":"pH Daily Limit Reached"}],"orpDailyLimitReached":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":4,"name":"orpdailylimit","desc":"orp Daily Limit Reached"}],"invalidSetup":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":8,"name":"invalidsetup","desc":"Invalid Setup"}],"chlorinatorCommsError":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":16,"name":"chlorinatorComms","desc":"Chlorinator Comms Error"}]},"controllers":[{"id":1,"address":144,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"isActive":true,"type":2,"name":"IntelliChem 1","ph":{"chemType":"ph","setpoint":7.6,"phSupply":1,"probe":{"enabled":true,"master":0},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"orp":{"chemType":"orp","setpoint":750,"useChlorinator":false,"probe":{"enabled":true,"master":0},"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"calciumHardness":325,"cyanuricAcid":0,"alkalinity":70,"HMIAdvancedDisplay":false,"flowSensor":{"type":0,"enabled":true,"master":0},"body":1}],"maxChemControllers":1}
Ok great sets of data here. Give me a little time to parse through and see about turning this information into attributes in Hubitat. That will set it up for display on dashboards and use in rules.
What actions/commands exist to be sent to the Chem Controller?
On Sun, Jun 27, 2021, 12:48 PM davthomaspilot @.***> wrote:
From http://192.168.0.224:4200/config/options/chemControllers
{"types":[{"val":0,"name":"none","desc":"None","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":1,"name":"unknown","desc":"Unknown","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":2,"name":"intellichem","desc":"IntelliChem","ph":{"min":7.2,"max":7.6},"hasAddress":true},{"val":3,"name":"homegrown","desc":"Homegrown","ph":{"min":6.8,"max":7.6},"hasAddress":false},{"val":4,"name":"rem","desc":"REM Chem","ph":{"min":6.8,"max":8},"hasAddress":false}],"bodies":[{"val":0,"name":"pool","desc":"pool"},{"val":1,"name":"spa","desc":"Spa"},{"val":32,"name":"poolspa","desc":"pool/Spa"}],"tempUnits":[{"val":0,"name":"F","desc":"Fahrenheit"},{"val":4,"name":"C","desc":"Celsius"}],"status":[{"val":0,"name":"ok","desc":"Ok"},{"val":1,"name":"nocomms","desc":"No Communication"},{"val":2,"name":"config","desc":"Invalid Configuration"}],"pumpTypes":[{"val":0,"name":"none","desc":"No Pump","ratedFlow":false,"tank":false,"remAddress":false},{"val":1,"name":"relay","desc":"Relay Pump","ratedFlow":true,"tank":true,"remAddress":true},{"val":2,"name":"ezo-pmp","desc":"Altas EZO-PMP","ratedFlow":false,"tank":false,"remAddress":true}],"phSupplyTypes":[{"val":0,"name":"base","desc":"Base pH+"},{"val":1,"name":"acid","desc":"Acid pH-"}],"volumeUnits":[{"val":0,"name":"","desc":"No Units"},{"val":1,"name":"gal","desc":"Gallons"},{"val":2,"name":"L","desc":"Liters"},{"val":3,"name":"mL","desc":"Milliliters"},{"val":4,"name":"cL","desc":"Centiliters"},{"val":5,"name":"oz","desc":"Ounces"},{"val":6,"name":"qt","desc":"Quarts"},{"val":7,"name":"pt","desc":"Pints"}],"dosingMethods":[{"val":0,"name":"manual","desc":"Manual"},{"val":1,"name":"time","desc":"Time"},{"val":2,"name":"volume","desc":"Volume"}],"orpProbeTypes":[{"val":0,"name":"none","desc":"No Probe"},{"val":1,"name":"ezo-orp","desc":"Atlas EZO-ORP","remAddress":true},{"val":2,"name":"other","desc":"Other"}],"phProbeTypes":[{"val":0,"name":"none","desc":"No Probe"},{"val":1,"name":"ezo-ph","desc":"Atlas EZO-PH","remAddress":true},{"val":2,"name":"other","desc":"Other"}],"flowSensorTypes":[{"val":0,"name":"none","desc":"No Sensor"},{"val":1,"name":"switch","desc":"Flow Switch","remAddress":true},{"val":2,"name":"rate","desc":"Rate Sensor","remAddress":true},{"val":4,"name":"pressure","desc":"Pressure Sensor","remAddress":true}],"acidTypes":[{"val":0,"name":"a34.6","desc":"34.6%
- 22 Baume","dosingFactor":0.909091},{"val":1,"name":"a31.45","desc":"31.45% - 20 Baume","dosingFactor":1},{"val":2,"name":"a29","desc":"29% - 19 Baume","dosingFactor":1.08448},{"val":3,"name":"a28","desc":"28.3% - 18 Baume","dosingFactor":1.111111},{"val":4,"name":"a15.7","desc":"15.7% - 10 Baume","dosingFactor":2},{"val":5,"name":"a14.5","desc":"14.5% - 9.8 Baume","dosingFactor":2.16897}],"remServers":[],"dosingStatus":[{"val":0,"name":"dosing","desc":"Dosing"},{"val":1,"name":"mixing","desc":"Mixing"},{"val":2,"name":"Monitoring","desc":"Monitoring"}],"siCalcTypes":[{"val":0,"name":"lsi","desc":"Langelier Saturation Index"},{"val":1,"name":"csi","desc":"Calcite Saturation Index"}],"alarms":{"flow":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":1,"name":"noflow","desc":"No Flow Detected"}],"pH":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":2,"name":"phhigh","desc":"pH Level High"},{"val":4,"name":"phlow","desc":"pH Level Low"}],"orp":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":8,"name":"orphigh","desc":"orp Level High"},{"val":16,"name":"orplow","desc":"orp Level Low"}],"pHTank":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":32,"name":"phtankempty","desc":"pH Tank Empty"}],"orpTank":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":64,"name":"orptankempty","desc":"orp Tank Empty"}],"probeFault":[{"val":0,"name":"ok","desc":"Ok - No alarm"},{"val":128,"name":"probefault","desc":"Probe Fault"}]},"warnings":{"waterChemistry":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":1,"name":"corrosive","desc":"Corrosion May Occur"},{"val":2,"name":"scaling","desc":"Scaling May Occur"}],"pHLockout":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":1,"name":"phlockout","desc":"pH Lockout - ORP will not dose"}],"pHDailyLimitReached":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":2,"name":"phdailylimit","desc":"pH Daily Limit Reached"}],"orpDailyLimitReached":[{"val":0,"name":"ok","desc":"Ok - No limits reached"},{"val":4,"name":"orpdailylimit","desc":"orp Daily Limit Reached"}],"invalidSetup":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":8,"name":"invalidsetup","desc":"Invalid Setup"}],"chlorinatorCommsError":[{"val":0,"name":"ok","desc":"Ok - No Warning"},{"val":16,"name":"chlorinatorComms","desc":"Chlorinator Comms Error"}]},"controllers":[{"id":1,"address":144,"lsiRange":{"low":-0.5,"high":0.5,"enabled":true},"borates":0,"siCalcType":0,"master":0,"isActive":true,"type":2,"name":"IntelliChem 1","ph":{"chemType":"ph","setpoint":7.6,"phSupply":1,"probe":{"enabled":true,"master":0},"acidType":0,"tolerance":{"low":7.2,"high":7.6,"enabled":true},"dosePriority":true,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":5120,"maxDosingVolume":13},"orp":{"chemType":"orp","setpoint":750,"useChlorinator":false,"probe":{"enabled":true,"master":0},"tolerance":{"low":650,"high":800,"enabled":true},"phLockout":7.8,"pump":{"type":0,"ratedFlow":0,"enabled":true,"master":0},"tank":{"capacity":6,"units":0,"alarmEmptyEnabled":true,"alarmEmptyLevel":20,"master":0},"enabled":true,"dosingMethod":0,"startDelay":1.5,"flowReadingsOnly":true,"flowOnlyMixing":true,"maxDailyVolume":500,"master":0,"maxDosingTime":3,"maxDosingVolume":3},"calciumHardness":325,"cyanuricAcid":0,"alkalinity":70,"HMIAdvancedDisplay":false,"flowSensor":{"type":0,"enabled":true,"master":0},"body":1}],"maxChemControllers":1}
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bsileo/hubitat_poolcontroller/issues/19#issuecomment-869192780, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABOVFMD5LTDDUHQ4VJQMCGTTU5I7RANCNFSM467JHKCQ .
What actions/commands exist to be sent to the Chem Controller?
The only ones I know about are ORP and pH set points. Also, Calcium hardness, Alkalinity, and Cyanuric Acid. These are use for a LSI calculation.
Looks to me like "Calcium hardness, Alkalinity, and Cyanuric Acid" are one-time setup items. If this is correct I do not think is is worth integrating them into Hubitat...easier to set than from Screenlogic and/or NJSPC. ORP and pH on the other look to be run time controls so those should be available to adjust in Hubitat so that things like a rule could drive them. Agree?
Well, they are not one time set up things. You do the water tests to get those values and enter them via ScreenLogic to get the LSI calculation (the "water balance" number) The values change constantly.
But, for me, it's not really a big deal. It's easy enough to calculate, give the ORP, ph, and value of the other parameters. (I don't do the water testing often enough for the result to be accurate)
The main thing I'll do with the Hubitat integration (that I can't do with ScreenLogic) is to keep track of total dosage and issue messages via Alexa Echo devices (and other notifications) when either tank volume goes low.
Ok I left them in as attributes. New code just pushed with draft code to add new attributes and related parsing.
NOTE - you need to install this code, then manually delete the Intellichem device on your system, then run the Configure command on your Pool Controller to recreate a new Intellichem device. I had a missed data value in the last cut of code so this is required to reset the configuration of this child device.
This code is completely untested just FYI!
Thanks! I'm giving it a try now.
BTW, I see some state variables in the Intellichem device that would be really nice to have. But, I don't think they are really available, based on what we now know about the Intellichem packets. Especially maxDailyVolume and maxDosingTime, dosingTimeRemaining , dosingVolumeRemaining.
@rstrouse may be working on that now. Maybe we can find them in some new packets.
C``` urrent States pH : {enabled=true, equipmentType=ph, dosePriority=true, maxDailyVolume=500, maxDosingTime=8448, phSupply={val=1, name=acid, desc=Acid pH-}, dosingTimeRemaining=0, tank={level=6, alarmEmptyEnabled=true, units={val=0, name=, desc=No Units}, alarmEmptyLevel=20, equipmentType=tank, capacity=6, master=0}, pump={isDosing=false, ratedFlow=0, type={val=0, name=none, ratedFlow=false, tank=false, remAddress=false, desc=No Pump}, equipmentType=pump, enabled=true, master=0}, tolerance={high=7.6, low=7.2, enabled=true}, dosingStatus={val=1, name=mixing, desc=Mixing}, flowDelay=false, flowOnlyMixing=true, setpoint=7.6, maxDosingVolume=14, level=7.6, delayTimeRemaining=0, acidType=0, probe={level=7.6, temperature=89, tempUnits={val=0, name=F, desc=Fahrenheit}, equipmentType=probe, enabled=true, master=0}, manualDosing=false, master=0, dosingMethod={val=0, name=manual, desc=Manual}, lockout=false, dailyLimitReached=false, dosingVolumeRemaining=0, doseTime=33, startDelay=1.5, flowReadingsOnly=true, chemType=ph, mixTimeRemaining=0, doseVolume=14}
NOTE - you need to install this code...,
Using HPM, or should I copy/paste instead?
NOTE - you need to install this code...,
Using HPM, or should I copy/paste instead?
You need to copy and paste. Once we get this working I will do a new release to HPM with the finished code.
Ok, I copied the poolcontroller groovy, deleted the Intellichem device, and ran configure in the poolController device. It created an Intellichem 1 device.
I see this error in the log:
dev:3612021-06-27 04:58:18.075 pm errorjava.lang.NullPointerException: Cannot get property 'level' on null object on line 140 (parse)
That's the Intellichem device. Did I need to copy/paste a new Intellichem driver also?
So, I found a Pool Controller Intellichem in the same tree where you first had the Pool Controller update. I deleted the intellichem device again, did the configure in Pool Controller, and got a new Intellichem 1 device.
Still same error in the logs.
Looks like typos "tenk" versus "tank" in lines 140 and 141. That eliminate the error.
Good catch - sorry about that...the joys of not being able to test code! Lets see how we do I might have to figure out how to make a fake test harness for this! You should now get a bunch of attributes on the Intellichem object!
Line 103 should be:
case "orp":
versus
case "ORP":
Now I get the ORP attributes too.
I don't mind testing for you, until Wednesday. Then I'm out of town for a month.
Line 147 should be setpoint (versus setPoint). Also, need line in parsePH for pH setpoint.
Tank capacities are not correct, but I need to check what's set up on the Intellichem. Pretty sure I set up 4 gallons for pH and 5 gallons for ORP. But, I didn't even realize I could set those up until a couple of days ago. May have lost the settings when I went back into setup to redo an experiment for @rstrouse.
Everything above matches ScreenLogic. The tank levels also match, so I probably lost the capacity settings I did. Checking that now.
Line 103 should be:
case "orp":
versus
case "ORP":
Fixed
Line 147 should be setpoint (versus setPoint). Also, need line in parsePH for pH setpoint.
Fixed
I do have 4 gallons for pH and 5 gallons for ORP in the Intellichem setup wizard. So, the capacity values are NOT correct, but you are correctly parsing what's coming from njsPC.
Tank capacities aren't part of the Intellichem packets, so I don't know where that data comes from. I'll ask @rstrouse on the njsPC github issue.
Note the "mixing" versus "Mixing" is a bug waiting to happen. In the hack I did to your driver, I looked for the dosing status to change from "dosing" to "mixing". When that occurs, I accumulated the total dose so I could keep it in a device state variable. Then it is used in a HE dashPanel.
I just hardcoded the tank capacities--ideally it would be in a tiny app where you set tank capacity and dosing pump daily volume. But, I can do that code in my copy again if you don't want to bother. (assuming you are ok with me hacking your code for my use only)
I'll retest when there's an njsPC update to address the "packet semantics" issues and/or when you have another update. But, it looks good!
Ok great progress. I need to look at the APIs yet for making updates to the setPoints. Will see if I get some time for that in the coming days. Meanwhile I will go ahead with a release on HPM with these changes soon.
I went into the Pool Controller Device to change the log level (I get a log every second or two with it at debug). I noticed there was a new Intellichem 1 device getting created every two seconds:
Not sure what would happen if I stayed on the device page. When I leave it and come back, there is just one inititally, then it keeps creating more (with null)
Looks like chemID might be mispelled on line 80 in the Intellichem driver:
2021-06-29 02:39:13.342 pm errorjava.lang.NullPointerException: Cannot invoke method toInteger() on null object on line 80 (refresh)
I see this in the "verify final pool controller configuration
Create 0 intellichem.
And, there is no Intellichem device under EasyTouch 2.4 device.
I see this in the logs during discovery:
app:1582021-06-19 09:41:00.398 am debugpoolConfig STATE=[configVersion:[lastUpdated:2021-06-19T09:39:21.114-0400, equipment:0, master:0], devices:[B827EBFE850A:[serialNumber:, verified:true, networkAddress:C0A800E0, mac:B827EBFE850A, deviceAddress:1068, ssdpTerm:urn:schemas-upnp-org:device:PoolController:1, hub:1, name:NodeJS Pool Controller, ssdpPath:/device, model:, ssdpUSN:uuid:806f52f4-1f35-4e33-9299-b8:27:eb:fe:85:0a::urn:schemas-upnp-org:device:PoolController:1, ssdpNTS:null]], controllerType:easytouch, bodies:[[manualHeat:false, circuit:6, setPoint:87, name:pool, id:1, type:0, isActive:true, heatMode:0, master:0, capacity:17000], [manualHeat:false, circuit:1, setPoint:99, name:Spa, id:2, type:1, isActive:true, heatMode:0, master:0, capacity:1000]], valves:[[isReturn:false, circuit:3, isIntake:false, name:Cleaner, id:1, isVirtual:false, type:0, isActive:true, master:0], [isReturn:false, circuit:0, isIntake:false, name:Valve B, id:2, isVirtual:false, type:0, isActive:true, master:0], [isReturn:false, circuit:6, name:Intake, isIntake:true, id:3, isVirtual:false, type:0, isActive:true]], pool:[owner:[email2:davethomaspilot@bellsouth.net, phone:19192726695, name:Dave Thomas, phone2:, email:davethomaspilot@bellsouth.net, master:0], options:[clockMode:12, manualHeat:false, clockSource:manual, pumpDelay:false, units:0, adjustDST:true], alias:, location:[zip:27523, country:United States, address:357 Black Willow Drive, city:Apex, latitude:35.79981, timeZone:134, state:NC, master:0, longitude:-78.95631], master:0], equipment:[shared:true, tempSensors:[[name:Air, id:air, isActive:true, calibration:0, master:0], [name:Water, id:water1, isActive:true, calibration:0, master:0], [name:Solar, id:solar1, isActive:true, calibration:0, master:0]], maxPumps:2, maxBodies:2, maxCircuitGroups:0, maxChemControllers:1, maxCustomNames:10, maxValves:4, maxSchedules:12, maxFeatures:10, modules:[[bodies:2, valves:4, part:ET2-4, maxPumps:2, chemControllers:1, type:2, master:0, features:10, chlorinators:1, name:ET24, id:0, circuits:4, desc:EasyTouch2 4]], maxLightGroups:1, bootloaderVersion:1.010, dual:false, maxChlorinators:1, maxCircuits:4, equipmentIds:[features:[start:11, end:22], circuitGroups:[start:192, end:223], circuits:[start:1, end:4], invalidIds:[7, 8, 9, 10, 19], virtualCircuits:[start:128, end:136]], model:EasyTouch2 4, maxIntelliBrites:8, softwareVersion:2.140], pumps:[[address:96, primingTime:0, maxSpeed:3450, type:128, isActive:true, master:0, primingSpeed:1000, speedStepSize:10, name:Intelliflo VS, model:0, id:1, minSpeed:450, circuits:[[circuit:4, id:1, units:0, speed:2770, master:0], [circuit:6, id:2, units:0, speed:2400, master:0], [circuit:1, id:3, units:0, speed:2930, master:0], [circuit:3, id:4, units:0, speed:3200, master:0]]], [address:97, primingTime:0, maxSpeed:3450, type:128, isActive:true, master:0, primingSpeed:1000, speedStepSize:10, name:Intelliflo VS, model:0, id:2, minSpeed:450, circuits:[[circuit:132, id:1, units:0, speed:1400, master:0], [circuit:11, id:2, units:0, speed:2500, master:0]]]], hubPlatform:Hubitat, subscribed:false, features:[[freeze:true, name:Jets, nameId:46, id:11, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 2, nameId:95, id:12, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 3, nameId:96, id:13, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 4, nameId:97, id:14, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 5, nameId:98, id:15, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 6, nameId:99, id:16, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 7, nameId:100, id:17, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:Feature 8, nameId:101, id:18, type:0, isActive:true, eggTimer:720, showInFeatures:true], [freeze:false, name:AUX EXTRA, nameId:93, id:20, type:0, isActive:true, eggTimer:720, showInFeatures:true]], lastUpdated:6/19/20
Note, "chemController:1" but "intellichem:null"
dashPanel sees the Intellichem and shows valid ph, ORP, alarms etc. Except for a few bugs documented in the njsPC github issues.