Closed prier4ever closed 4 years ago
Hey there @zxdavb, mind taking a look at this issue as its been labeled with a integration (incomfort
) you are listed as a codeowner for? Thanks!
@prier4ever Thanks for your contribution to HA.
I can easily change the code so that you an choose which heater HA uses by simply adding the following to the configuration.yaml (currently, the system is hard-coded to use index 0):
incomfort:
host: 192.168.0.216
heater_index: 1
If HA is configured to access the right WaterHeater (heater), then the corresponding Climate entity will also be known to HA.
This is assuming that heaters always keep the same slots. Do you know if the slots are consistent, or do they ever change? If so, I could use:
incomfort:
host: 192.168.0.216
heater_serial: ********429
However, having access to all heaters (e.g. tracking the fault_state
of each heater) would require some work/testing...
Let me know if this is interesting to you, otherwise I will crack on with the heater_index
(or heater_serial
) idea.
OK, I am going to add all heaters to HA - this will require a change to the client too. My testing will be limited to the case where there is only one heater.
Do you know if the slots are consistent, or do they ever change? Yes, they can change when you do a factory reset of the gateway, i have a test Home Assistent docker so i can test it for you.
Yes, they can change when you do a factory reset of the gateway
I wrote the code to use serial numbers instead of slots, so this is not at issue. I have completed the - initial testing is OK.
so i can test it for you.
Could you run the latest dev version of HA?
I will update the HA repo & the client library (in pypi) after get back from the kid's swimming.
Stil gets info from only one heater but now showing two climate controls
2019-10-29 17:49:57 DEBUG (MainThread) [incomfortclient] Gateway(hostname=10.0.0.249) instantiated.
2019-10-29 17:49:57 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json, auth=None)
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json): response = {'heaterlist': ['********429', '********728', None, None, None, None, None, None]}
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********429) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********728) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********429).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********429', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********728).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********728', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(room_no=1) instantiated.
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(room_no=1) instantiated.
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(1).status() = {'room_temp': 19.5, 'setpoint': 19.5, 'override': 0.0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(1).status() = {'room_temp': 19.5, 'setpoint': 19.5, 'override': 0.0}
I've pushed the new client to PyPI - just running CI on the changes to the integration.
When that's done, you can run the dev version of HA to test it.
OK, you can test know - let me know if there are any issues.
OK, you can test know - let me know if there are any issues.
I have tested it, see earlier response.
Stil gets info from only one heater but now showing two climate controls on the dashboard in Home Assistant. The vars are the same values as the first heater, the second has no climate control.
2019-10-29 17:49:57 DEBUG (MainThread) [incomfortclient] Gateway(hostname=10.0.0.249) instantiated.
2019-10-29 17:49:57 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json, auth=None)
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json): response = {'heaterlist': ['********429', '********728', None, None, None, None, None, None]}
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********429) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********728) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********429).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********429', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********728).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********728', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(room_no=1) instantiated.
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(room_no=1) instantiated.
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(1).status() = {'room_temp': 19.5, 'setpoint': 19.5, 'override': 0.0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Room(1).status() = {'room_temp': 19.5, 'setpoint': 19.5, 'override': 0.0}
Manual:
http://10.0.0.249/data.json?heater=0
{"nodenr": 38,
"ch_temp_lsb": 7,
"ch_temp_msb": 21,
"tap_temp_lsb": 133,
"tap_temp_msb": 14,
"ch_pressure_lsb": 180,
"ch_pressure_msb": 0,
"room_temp_1_lsb": 89,
"room_temp_1_msb": 7,
"room_temp_set_1_lsb": 108,
"room_temp_set_1_msb": 7,
"room_temp_2_lsb": 255,
"room_temp_2_msb": 127,
"room_temp_set_2_lsb": 255,
"room_temp_set_2_msb": 127,
"displ_code": 0,
"IO": 10,
"serial_year": **,
"serial_month": **,
"serial_line": **,
"serial_sn1": **,
"serial_sn2": *4,
"serial_sn3": 29 ,
"room_set_ovr_1_msb": 7,
"room_set_ovr_1_lsb": 108,
"room_set_ovr_2_msb": 0,
"room_set_ovr_2_lsb": 0,
"rf_message_rssi": 39,
"rfstatus_cntr": 0}
http://10.0.0.249/data.json?heater=1 (has no climate control uses zones)
{"nodenr": 162,
"ch_temp_lsb": 151,
"ch_temp_msb": 22,
"tap_temp_lsb": 243,
"tap_temp_msb": 16,
"ch_pressure_lsb": 156,
"ch_pressure_msb": 0,
"room_temp_1_lsb": 255,
"room_temp_1_msb": 127,
"room_temp_set_1_lsb": 255,
"room_temp_set_1_msb": 127,
"room_temp_2_lsb": 255,
"room_temp_2_msb": 127,
"room_temp_set_2_lsb": 255,
"room_temp_set_2_msb": 127,
"displ_code": 102,
"IO": 2,
"serial_year": **,
"serial_month": **,
"serial_line": **,
"serial_sn1": **,
"serial_sn2": *7,
"serial_sn3": 28 ,
"room_set_ovr_1_msb": 0,
"room_set_ovr_1_lsb": 0,
"room_set_ovr_2_msb": 0,
"room_set_ovr_2_lsb": 0,
"rf_message_rssi": 31,
"rfstatus_cntr": 0}
Hi,
Please let me know what version of HA you are running.
cat ~/.homeassistant/.HA_VERSION
Please do the equivalent of (to check/reset the version of the client):
pip list | grep incomfort
pip uninstall -y incomfort-client
... then restart HA.
Please use the /states
UI rather than Lovelace.
This is wrong:
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********429) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********728) instantiated.
2019-10-29 17:49:58 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********429).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********429', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 95, 'ch_temp_msb': 12, 'tap_temp_lsb': 115, 'tap_temp_msb': 13, 'ch_pressure_lsb': 165, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 158, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 126, 'IO': 0, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
2019-10-29 17:49:59 DEBUG (MainThread) [incomfortclient] Heater(********728).status() = {'display_code': 126, 'display_text': 'standby', 'fault_code': None, 'is_burning': False, 'is_failed': False, 'is_pumping': False, 'is_tapping': False, 'heater_temp': 31.67, 'tap_temp': 34.43, 'pressure': 1.65, 'serial_no': '********728', 'nodenr': 38, 'rf_message_rssi': 39, 'rfstatus_cntr': 0}
The second block sould be _get(url=data.json?heater=1)
cat ~/.homeassistant/.HA_VERSION
I use a docker image and have two versions running in my test setting. https://hub.docker.com/r/homeassistant/home-assistant/
Version 0.100.3 pip list | grep incomfort incomfort-client 0.3.5
Version 0.102.0.dev20191030 pip list | grep incomfort incomfort-client 0.3.5
In both versions i replaced the incomfort folder with the home-assistant-30d42a1488d37d30e538de37b44bc3311ab382db version from you`re branche.
With the lastest dev its working now..
pip list | grep incomfort incomfort-client 0.4.0
2019-10-30 19:01:49 DEBUG (MainThread) [incomfortclient] Gateway(hostname=10.0.0.249) instantiated.
2019-10-30 19:01:49 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json, auth=None)
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] _get(url=heaterlist.json): response = {'heaterlist': ['********429', '********728', None, None, None, None, None, None]}
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********429) instantiated.
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] Heater(serial_no=********728) instantiated.
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] Gateway(10.0.0.249).heaters() = ['********429', '********728', None, None, None, None, None, None]
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0, auth=None)
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=0): response = {'nodenr': 38, 'ch_temp_lsb': 63, 'ch_temp_msb': 19, 'tap_temp_lsb': 210, 'tap_temp_msb': 12, 'ch_pressure_lsb': 179, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 166, 'room_temp_1_msb': 7, 'room_temp_set_1_lsb': 158, 'room_temp_set_1_msb': 7, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 0, 'IO': 10, 'serial_year': 19, 'serial_month': 2, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 34, 'serial_sn3': 29, 'room_set_ovr_1_msb': 7, 'room_set_ovr_1_lsb': 108, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 37, 'rfstatus_cntr': 0}
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] Heater(********429).status() = {'display_code': 0, 'display_text': 'opentherm', 'fault_code': None, 'is_burning': True, 'is_failed': False, 'is_pumping': True, 'is_tapping': False, 'heater_temp': 49.27, 'tap_temp': 32.82, 'pressure': 1.79, 'serial_no': '********429', 'nodenr': 38, 'rf_message_rssi': 37, 'rfstatus_cntr': 0}
2019-10-30 19:01:50 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=1, auth=None)
2019-10-30 19:01:51 DEBUG (MainThread) [incomfortclient] _get(url=data.json?heater=1): response = {'nodenr': 162, 'ch_temp_lsb': 128, 'ch_temp_msb': 24, 'tap_temp_lsb': 185, 'tap_temp_msb': 16, 'ch_pressure_lsb': 155, 'ch_pressure_msb': 0, 'room_temp_1_lsb': 255, 'room_temp_1_msb': 127, 'room_temp_set_1_lsb': 255, 'room_temp_set_1_msb': 127, 'room_temp_2_lsb': 255, 'room_temp_2_msb': 127, 'room_temp_set_2_lsb': 255, 'room_temp_set_2_msb': 127, 'displ_code': 102, 'IO': 10, 'serial_year': 19, 'serial_month': 5, 'serial_line': 15, 'serial_sn1': 0, 'serial_sn2': 97, 'serial_sn3': 28, 'room_set_ovr_1_msb': 0, 'room_set_ovr_1_lsb': 0, 'room_set_ovr_2_msb': 0, 'room_set_ovr_2_lsb': 0, 'rf_message_rssi': 28, 'rfstatus_cntr': 0}
2019-10-30 19:01:51 DEBUG (MainThread) [incomfortclient] Heater(********728).status() = {'display_code': 102, 'display_text': 'central heating', 'fault_code': None, 'is_burning': True, 'is_failed': False, 'is_pumping': True, 'is_tapping': False, 'heater_temp': 62.72, 'tap_temp': 42.81, 'pressure': 1.55, 'serial_no': '********728', 'nodenr': 162, 'rf_message_rssi': 28, 'rfstatus_cntr': 0}
2019-10-30 19:01:51 DEBUG (MainThread) [incomfortclient] Room(room_no=1) instantiated.
2019-10-30 19:01:51 DEBUG (MainThread) [incomfortclient] Room(1).status() = {'room_temp': 19.58, 'setpoint': 19.5, 'override': 19.0}
Thanks
Yes, just use the latest dev version of HA - it will be part of 102 beta when the time comes.
Home Assistant release with the issue: 100.3 (all versions up to to at least 101.x)
Last working Home Assistant release (if known): N/A (never)
Operating environment (Hass.io/Docker/Windows/etc.): N/A (all)
Integration:
incomfort
Description of problem: If more than one heater is present only one is shown in Home Assistant. There is no option to configure or select the heater with climate control.
Problem-relevant
configuration.yaml
entries and (fill out even if it seems unimportant):Traceback (if applicable):
Additional information: In our setup only one of the heaters has a climate control unit. In this case heater 1 (****429) so climate control is not present in Home Assistant.