bsileo / hubitat_poolcontroller

Integration from a SmartThings or Hubitat hub to nodejs_poolcontroller
MIT License
8 stars 5 forks source link

Intellichem Device Not Created on Hubitat #19

Closed davthomaspilot closed 3 years ago

davthomaspilot commented 3 years ago

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.

davthomaspilot commented 3 years ago

Also, this while dosing:

2021-06-20 08:31:53.945 am warnNo handler for incoming event type 'chemController'

bsileo commented 3 years ago

What type of chemical controller is being used here? Is this a Virtual Controller built within nodeJS-PoolController?

bsileo commented 3 years ago

Can you share the output of http://:4200/config

davthomaspilot commented 3 years ago

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"}

davthomaspilot commented 3 years ago

I see there is no case "chemController" in the parse method of the "Pool Controller" driver. So, maybe not implemented yet?

davthomaspilot commented 3 years ago

I added some code to parse the Intellichem packets there--they get received ok.

davthomaspilot commented 3 years ago
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
       }
    }
}
bsileo commented 3 years ago

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.

bsileo commented 3 years ago

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.

davthomaspilot commented 3 years ago

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.

davthomaspilot commented 3 years ago

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, ...], ...]]

bsileo commented 3 years ago

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!

davthomaspilot commented 3 years ago

But, if I just install the Pool Controller Device driver, would that test that an Intellichem gets created?

davthomaspilot commented 3 years ago

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
bsileo commented 3 years ago

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"

bsileo commented 3 years ago

At present we have these attributes for Intellichem and I am certain they need updated:

bsileo commented 3 years ago

Some new code that should have parse() working is now posted here

davthomaspilot commented 3 years ago

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?

davthomaspilot commented 3 years ago

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]]
bsileo commented 3 years ago

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 .

davthomaspilot commented 3 years ago

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]]
davthomaspilot commented 3 years ago

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:

http://serverIP:4200/config:

{"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...

davthomaspilot commented 3 years ago

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

davthomaspilot commented 3 years ago

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}

bsileo commented 3 years ago

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 .

davthomaspilot commented 3 years ago

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.

image

bsileo commented 3 years ago

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?

davthomaspilot commented 3 years ago

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.

bsileo commented 3 years ago

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!

davthomaspilot commented 3 years ago

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}

davthomaspilot commented 3 years ago

NOTE - you need to install this code...,

Using HPM, or should I copy/paste instead?

bsileo commented 3 years ago

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.

davthomaspilot commented 3 years ago

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?

davthomaspilot commented 3 years ago

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.

davthomaspilot commented 3 years ago

Looks like typos "tenk" versus "tank" in lines 140 and 141. That eliminate the error.

bsileo commented 3 years ago

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!

davthomaspilot commented 3 years ago

Line 103 should be:

case "orp":

versus

case "ORP":

davthomaspilot commented 3 years ago

Now I get the ORP attributes too.

davthomaspilot commented 3 years ago

I don't mind testing for you, until Wednesday. Then I'm out of town for a month.

davthomaspilot commented 3 years ago

Line 147 should be setpoint (versus setPoint). Also, need line in parsePH for pH setpoint.

davthomaspilot commented 3 years ago

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.

davthomaspilot commented 3 years ago

image

Everything above matches ScreenLogic. The tank levels also match, so I probably lost the capacity settings I did. Checking that now.

bsileo commented 3 years ago

Line 103 should be:

case "orp":

versus

case "ORP":

Fixed

bsileo commented 3 years ago

Line 147 should be setpoint (versus setPoint). Also, need line in parsePH for pH setpoint.

Fixed

davthomaspilot commented 3 years ago

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.

davthomaspilot commented 3 years ago

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)

davthomaspilot commented 3 years ago

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!

bsileo commented 3 years ago

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.

davthomaspilot commented 3 years ago

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:

image

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)

davthomaspilot commented 3 years ago

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)