garbled1 / pybalboa

Python Module to interface with a balboa spa
Apache License 2.0
23 stars 17 forks source link

Integration of Chromazon3 add-on #26

Open chrisetzel opened 1 year ago

chrisetzel commented 1 year ago

My spa came with the Balboa Chromazon3 add-on. Link. I found another thread here where Christoph details his findings on his system. It appears very similar to what I see on mine. I want to take a shot at adding the necessary classes to support the control of Chromazon3.

How would you like me to go forward? This should exist in its own class that inherits from some of the other base classes.

When I run the pybalboa debug script I see messages returning that pybalboa identifies as unknown. I have copied the example below.

DEBUG:asyncio:Using selector: KqueueSelector
******** Testing spa connection and configuration **********
DEBUG:pybalboa.client:192.168.10.160 -- establishing connection
DEBUG:pybalboa.client:192.168.10.160 -- connected
DEBUG:pybalboa.client:192.168.10.160 <- DEVICE_PRESENT: 050abf0477
DEBUG:pybalboa.client:192.168.10.160 <- REQUEST_SYSTEM_INFORMATION: 080abf2202000089
DEBUG:pybalboa.client:192.168.10.160 <- REQUEST_SETUP_PARAMETERS: 080abf22040000f4
DEBUG:pybalboa.client:192.168.10.160 <- REQUEST_DEVICE_CONFIGURATION: 080abf2200000158
DEBUG:pybalboa.client:192.168.10.160 <- REQUEST_FILTER_CYCLE: 080abf2201000034
DEBUG:pybalboa.client:192.168.10.160 -> MODULE_IDENTIFICATION: 1e0abf94021480001527f16d940000000000000000001527fffff16d944e
DEBUG:pybalboa.client:192.168.10.160 -> SYSTEM_INFORMATION: 1a0abf2464dc2b004d5142503230555805b8f7b03a010a240042
DEBUG:pybalboa.client:192.168.10.160 -> SETUP_PARAMETERS: 0f0abf250a0532633c682903430286
DEBUG:pybalboa.client:192.168.10.160 -> DEVICE_CONFIGURATION: 0b0abf2e0a000150806816
DEBUG:pybalboa.client:192.168.10.160 -> FILTER_CYCLE: 0d0abf2314000100880001009d
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Temperature range is now HIGH (1)
DEBUG:pybalboa.control:192.168.10.160 -- Light 1 is now OFF (0)
DEBUG:pybalboa.control:192.168.10.160 -- Heat mode is now READY (0)
DEBUG:pybalboa.control:192.168.10.160 -- Pump 1 is now HIGH (2)
DEBUG:pybalboa.control:192.168.10.160 -- Pump 2 is now OFF (0)

Module identification
---------------------
MAC address: 00:15:27:f1:6d:94
iDigi Device Id: 00000000-00000000-001527FF-FFF16D94

Device configuration
--------------------
None
Pumps: ['Pump 1', 'Pump 2']
Lights: ['Light 1']
Aux: []
Blower: []
Mister: []

System information
------------------
Model: MQBP20UX
Software version: M100_220 V43.0
Configuration signature: b8f7b03a
Current setup: 5
Voltage: 240
Heater type: standard
DIP switch: 0010010000000000

Setup parameters
----------------
Min temps: ((50, 99), (10.0, 37.0))
Max temps: ((60, 104), (15.5, 40.0))
# of pumps: 2

Filter cycle
------------
Filter cycle 1 start: 20:00:00
Filter cycle 1 duration: 1:00:00
Filter cycle 2 start: 08:00:00 (enabled)
Filter cycle 2 duration: 1:00:00

Status update
-------------
Temperature unit: FAHRENHEIT
Temperature: 105.0
Target temperature: 104.0
Temperature range: HIGH
Heat mode: READY
Heat state: OFF
Pump status: [Pump 1: HIGH, Pump 2: OFF]
None
Light status: [Light 1: OFF]
Mister status: []
Aux status: []
Blower status: []
Spa time: 17:26 12hr
Filter cycle 1 running: False
Filter cycle 2 running: False

******** Testing spa controls **********

Temperature control
-------------------
Current target temperature: 104.0
  Set to 60
DEBUG:pybalboa.client:192.168.10.160 <- SET_TEMPERATURE: 060abf203ca6
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a0000656600040200000000000000003c0000021e0001ec
  Set temperature is now 60.0
Current target temperature: 60.0
  Set to 104.0
DEBUG:pybalboa.client:192.168.10.160 <- SET_TEMPERATURE: 060abf20680d
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
  Set temperature is now 104.0

Heat mode control
-----------------
Current state: READY
  Set to REST
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf11514e
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a01006566000402000000000000000068000002000001d3
DEBUG:pybalboa.control:192.168.10.160 -- Heat mode is now REST (1)
  State is now REST
Current state: REST
  Set to READY
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf11514e
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Heat mode is now READY (0)
  State is now READY

Temperature range control
-------------------------
Current state: HIGH
  Set to LOW
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf115049
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660000020000000000000000460000021e0001b0
DEBUG:pybalboa.control:192.168.10.160 -- Temperature range is now LOW (0)
  State is now LOW
Current state: LOW
  Set to HIGH
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf115049
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Temperature range is now HIGH (1)
  State is now HIGH

Pump 1 control
--------------
Current state: HIGH
  Set to OFF
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf1104e2
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.control:192.168.10.160 -- Pump 1 is now LOW (1)
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004010000000000000000680000021e000109
  State was not changed after 10 seconds; is LOW
Current state: LOW
  Set to HIGH
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf1104e2
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Pump 1 is now HIGH (2)
  State is now HIGH

Pump 2 control
--------------
Current state: OFF
  Set to LOW
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf1105e5
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004060000000000000000680000021e000107
DEBUG:pybalboa.control:192.168.10.160 -- Pump 2 is now LOW (1)
  State is now LOW
Current state: LOW
  Set to HIGH
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf1105e5
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a0000656600040a0000000000000000680000021e00011f
DEBUG:pybalboa.control:192.168.10.160 -- Pump 2 is now HIGH (2)
  State is now HIGH
Current state: HIGH
  Set to OFF
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf1105e5
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Pump 2 is now OFF (0)
  State is now OFF

Light 1 control
---------------
Current state: OFF
  Set to ON
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf111189
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000030000000000680000021e0001b4
DEBUG:pybalboa.control:192.168.10.160 -- Light 1 is now ON (1)
DEBUG:pybalboa.client:192.168.10.160 -> UNKNOWN: 18ffaf320100000000000000000000000000006400ff00dc
  State is now ON
Current state: ON
  Set to OFF
DEBUG:pybalboa.client:192.168.10.160 <- TOGGLE_STATE: 060abf111189
DEBUG:pybalboa.client:192.168.10.160 -> STATUS_UPDATE: 20ffaf13000069111a000065660004020000000000000000680000021e00010f
DEBUG:pybalboa.control:192.168.10.160 -- Light 1 is now OFF (0)
  State is now OFF

DEBUG:pybalboa.client:192.168.10.160 -- disconnect requested
DEBUG:pybalboa.client:192.168.10.160 -- stopped listening
DEBUG:pybalboa.client:192.168.10.160 -- disconnected
natekspencer commented 1 year ago

Does the chromazon3 have a separate control panel? And is Light 1 that is reported part of the chromazon3 system or is it an entirely separate light? You'll probably need to create a class for the chromazon3 system which is some form of a SpaControl and then add the functionality there.

chrisetzel commented 1 year ago

The Chromzon3 uses the same control panel. Mine is an OEM branded version of the Balboa SpaTouch3 Light1 that is reported doesn't do anything for the lighting. My spa also has a Microsilk pump that might use the Light1 function. I will investigate more.

I will plan on building out a chromazon3 class for review.