Closed Safs closed 12 months ago
Hi,
Thank you for the feedback!
I don't have thermostat myself, so when doing implementation I've done it mostly blind. I've assumed that flag schedule
, that is present in thermostat sensors, might indicate that device's profile is being changed by the schedule, but from your info it seems, that it's sadly not the case.
Could you, please, collect diagnostics data two times. First when thermostat is in day mode and second when thermostat is in night mode. Do not change modes manually, wait for it to be changed by the schedule. Send both files to denpa@denpa.pro. I'll hopefully will be able to identify flag that's responsible for profile change then.
Thanks beforehand!
Ok!
I sent the files
As I can understand, there is not at all info about data from ecoSTER 200/ecoSTER Touch....
There is also problem to show "idle"state:
Thanks for the diagnostics!
Yep, sadly there's no binary flag that indicates us which mode we're running currently, only that we're running in schedule
mode via "mode=0".
However, there's way, I could make this work (and I will), by comparing value of target_temp
sensor with day_target_temp
and night_target_temp
parameters, when mode=0
to determine thermostat current mode. This will fail in at least one edge case, when both day and night mode set to the same temperature, but that's probably best we can do right now.
I'll implement required changes by the next minor version. Please wait for the release.
Thanks again for your help!
-- To make it easier to find this info, following is thermostat info from the files, that you've provided.
Thanks for you job and support!
----- Reply to message ----- Subject: Re: [denpamusic/homeassistant-plum-ecomax] When room panel change day to night mode by schedule, that not reflect in HA thermostat. (Issue #33) Date: trešd., 4 okt. 2023, 16:14 From: Denis Paavilainen @.> To: denpamusic/homeassistant-plum-ecomax @.>
Thanks for the diagnostics!
Yep, sadly there's no binary flag that indicates us which mode we're running currently, only that we're running in schedule mode via "mode=0".
However, there's way, I could make this work (and I will), by comparing value of target_temp sensor with day_target_temp and night_target_temp parameters, when mode=0 to determine thermostat current mode. This will fail in at least one edge case, when both day and night mode set to the same temperature, but that's probably best we can do right now.
I'll implement required changes by the next minor version. Please wait for the release.
Thanks again for your help!
-- To make it easier to find this info, following is thermostat info from the files, that you've provided. Day mode
"thermostats": { "0": { "state": 0, "current_temp": 26.885530471801758, "target_temp": 24.0, "contacts": false, "schedule": false, "thermostat_sensors": true, "mode": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='mode', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=0.0, min_value=0.0, max_value=7.0)" }, "party_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='party_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=10.0, min_value=10.0, max_value=35.0)" }, "holidays_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='holidays_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=15.0, min_value=10.0, max_value=35.0)" }, "correction": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='correction', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=100.0, min_value=60.0, max_value=140.0)" }, "away_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='away_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=3.0, min_value=0.0, max_value=60.0)" }, "airing_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='airing_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=60.0, min_value=0.0, max_value=60.0)" }, "party_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='party_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=5.0, min_value=0.0, max_value=60.0)" }, "holidays_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='holidays_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=7.0, min_value=0.0, max_value=60.0)" }, "hysteresis": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='hysteresis', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=1), value=0.1, min_value=0.0, max_value=5.0)" }, "day_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='day_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=24.0, min_value=10.0, max_value=35.0)" }, "night_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='night_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=10.0, min_value=10.0, max_value=35.0)" }, "antifreeze_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='antifreeze_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=9.0, min_value=5.0, max_value=30.0)" }, "thermostat_parameters": true } },
Night mode
"thermostats": { "0": { "state": 0, "current_temp": 26.044160842895508, "target_temp": 10.0, "contacts": false, "schedule": false, "thermostat_sensors": true, "mode": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='mode', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=0.0, min_value=0.0, max_value=7.0)" }, "party_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='party_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=10.0, min_value=10.0, max_value=35.0)" }, "holidays_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='holidays_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=15.0, min_value=10.0, max_value=35.0)" }, "correction": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='correction', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=100.0, min_value=60.0, max_value=140.0)" }, "away_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='away_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=3.0, min_value=0.0, max_value=60.0)" }, "airing_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='airing_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=60.0, min_value=0.0, max_value=60.0)" }, "party_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='party_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=5.0, min_value=0.0, max_value=60.0)" }, "holidays_timer": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='holidays_timer', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=1, size=1), value=7.0, min_value=0.0, max_value=60.0)" }, "hysteresis": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='hysteresis', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=1), value=0.1, min_value=0.0, max_value=5.0)" }, "day_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='day_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=24.0, min_value=10.0, max_value=35.0)" }, "night_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='night_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=10.0, min_value=10.0, max_value=35.0)" }, "antifreeze_target_temp": { "type": "<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>", "repr": "ThermostatParameter(device=Thermostat, description=ThermostatParameterDescription(name='antifreeze_target_temp', cls=<class 'pyplumio.structures.thermostat_parameters.ThermostatParameter'>, multiplier=10, size=2), value=9.0, min_value=5.0, max_value=30.0)" }, "thermostat_parameters": true } },
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
Thanks for you job and support!
You're welcome!
There is also problem to show "idle"state:
This has now been fixed. See #34.
This is now done in https://github.com/denpamusic/homeassistant-plum-ecomax/commit/af61dbaa69220bfb5e09d02dbe89160fbb29c124.
To be totally honest, I'm not in love with this solution. It's pretty inelegant and might have some unexpected problems beyond mentioned edge case, but a least it would generally work and shouldn't break anything else. That being said, this is probably the only way to make ecoSTERS work nicely with HASSes climate entity.
Either way, you can now wait until v0.3.11 release or try it right away by installing a main
branch via HACS as described here.
Thanks, it's working now.
Awesome! Thanks for the testing!👍
Is there an existing issue for this?
I'm having the following issue:
When room panel change day to night mode by schedule, that not reflect in HA thermostat. In HA thermostat is same set temperature all the time, in day and night.
I have following devices connected:
I'm connecting to my devices using:
Ethernet/WiFi to RS-485 converter
I'm seeing following log messages:
No response
My diagnostics data:
config_entry-plum_ecomax-e0b403046d4ad77e983a2eb9b33db3b7.json.txt
Code of Conduct