garbled1 / pybalboa

Python Module to interface with a balboa spa
Apache License 2.0
21 stars 16 forks source link

Cannot set temperature #31

Closed superentwickler closed 1 year ago

superentwickler commented 1 year ago

Hello,

first: nice work your modul!

I can set everything but if I want adjust the temperature i get:

await adjust_temperature(spa,36) Current target temperature: 32.5 Set to 36 Set temperature was not changed after 10 seconds; is 32.5

I tried 20 second, but the same issue.

What could be wrong?

Module identification

MAC address: 00:15:27:e4:00:9d iDigi Device Id: 00000000-00000000-001527FF-FFE4009D

Device configuration

Circulation pump: OFF Pumps: ['Pump 1'] Lights: ['Light 1'] Aux: [] Blower: ['Blower 1'] Mister: []

System information

Model: BP6013G1 Software version: M100_226 V43.0 Configuration signature: 1b456746 Current setup: 4 Voltage: None Heater type: standard DIP switch: 0000001000000000

Setup parameters

Min temps: ((50, 99), (10.0, 37.0)) Max temps: ((80, 104), (26.5, 40.0))

of pumps: 1

Filter cycle

Filter cycle 1 start: 03:00:00 Filter cycle 1 duration: 2:00:00 Filter cycle 2 start: 14:00:00 (enabled) Filter cycle 2 duration: 2:00:00

Status update

Temperature unit: CELSIUS Temperature: 34.0 Target temperature: 30.0 Temperature range: LOW Heat mode: REST Heat state: OFF Pump status: [Pump 1: OFF] Circulation pump: OFF Light status: [Light 1: OFF] Mister status: [] Aux status: [] Blower status: [Blower 1: UNKNOWN] Spa time: 13:12 24hr Filter cycle 1 running: False Filter cycle 2 running: False

**** Testing spa controls **

Temperature control

Current target temperature: 30.0 Set to 37.0 Set temperature is now 37.0 [Heat mode: REST, Temperature range: LOW, Pump 1: OFF, Light 1: OFF, Circulation pump: OFF, Blower 1: UNKNOWN]

Heat mode control

Current state: REST Set to READY State is now READY Current state: READY Set to REST State is now REST

Temperature range control

Current state: LOW Set to HIGH State is now HIGH Current state: HIGH Set to LOW State is now LOW

Pump 1 control

Current state: OFF Set to ON State is now ON Current state: ON Set to OFF State is now OFF

Light 1 control

Current state: OFF Set to ON State is now ON Current state: ON Set to OFF State is now OFF

Circulation pump control

Current state: ON Set to OFF State was not changed after 10 seconds; is ON

Blower 1 control

Current state: UNKNOWN Set to OFF State was not changed after 10 seconds; is UNKNOWN Current state: UNKNOWN Set to ON State was not changed after 10 seconds; is UNKNOWN

natekspencer commented 1 year ago

Temperature control

Current target temperature: 30.0 Set to 37.0 Set temperature is now 37.0

It looks like the temperature was set correctly here, so it seems it does work. I wonder if the connection was lost during this other test.

superentwickler commented 1 year ago

meanwhile i also get async timeout with all other control settings i want to set

natekspencer commented 1 year ago

Can you actually share the code you are trying to use? You really shouldn't be using the functions from the main.py file as that is for illustrative purposes and just demonstrates how you can do it.

superentwickler commented 1 year ago

async def test(host: str) -> None: try: async with SpaClient(host) as spa: if not await spa.async_configuration_loaded(): print("Config not loaded, something is wrong!") return await adjust_temperature(spa,35.0)

    #Light on
    control = spa.controls[3] 
    await adjust_control(control, control.options[1])

Current target temperature: 32.5 Set to 35.0 Set temperature was not changed after 20 seconds; is 32.5 Current state: OFF Set to ON State was not changed after 10 seconds; is OFF

what is wrong with the functions from main?

natekspencer commented 1 year ago

what is wrong with the functions from main?

They are there to run through a set of tests from the command line and are illustrative of how you could build out a program that utilizes this module, but aren't inherently part of the module itself.

natekspencer commented 1 year ago

Please use code blocks when trying to display code in comments: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks

But if I get the gist of what you are trying to do, this minimal example should work:

async def test(host: str) -> None:
    try:
        async with SpaClient(host) as spa:
            if not await spa.async_configuration_loaded():
                print("Config not loaded, something is wrong!")
                return
            await spa.set_temperature(35)
    except SpaConnectionError:
        logging.error("Could not connect")