home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
71.11k stars 29.79k forks source link

Error while call service to reset OpenTherm Gateway #31724

Closed DJTerentjev closed 4 years ago

DJTerentjev commented 4 years ago

The problem

While calling service opentherm_gw.reset_gateway(gateway_id: thermostat), service work, but get error in the log: Unable to update from sensor: could not convert string to float: 'unknown'

Environment

Problem-relevant configuration.yaml

opentherm_gw:
  thermostat:
    device: socket://192.168.1.11:23
    name: "Thermostat"

Traceback/Error logs

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/automation/__init__.py", line 397, in async_trigger
    await self.action_script.async_run(variables, trigger_context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 247, in async_run
    await self._handle_action(action, variables, context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 331, in _handle_action
    await self._actions[_determine_action(action)](action, variables, context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 413, in _async_call_service
    context=context,
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 96, in async_call_from_config
    domain, service_name, service_data, blocking=blocking, context=context
  File "/usr/src/homeassistant/homeassistant/core.py", line 1226, in async_call
    await asyncio.shield(self._execute_service(handler, service_call))
  File "/usr/src/homeassistant/homeassistant/core.py", line 1251, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/components/opentherm_gw/__init__.py", line 313, in set_max_mod
    value = await gw_dev.gateway.set_max_relative_mod(level)
  File "/usr/local/lib/python3.7/site-packages/pyotgw/pyotgw.py", line 716, in set_max_relative_mod
    self._update_status(status)
  File "/usr/local/lib/python3.7/site-packages/pyotgw/pyotgw.py", line 878, in _update_status
    self._protocol.status.update(update)
AttributeError: 'pyotgw' object has no attribute '_protocol'

Additional information

probot-home-assistant[bot] commented 4 years ago

Hey there @mvn23, mind taking a look at this issue as its been labeled with a integration (opentherm_gw) you are listed as a codeowner for? Thanks!

mvn23 commented 4 years ago

Thanks for the report. Do you have any automations that call opentherm_gw.set_max_modulation? Are you running the opentherm_gw.reset_gateway service from an automation? Is the gateway definitely connected before calling the opentherm_gw.reset_gateway service? Also, a debug log would be useful.

DJTerentjev commented 4 years ago

Thank you for you great work. Yes I have opentherm_gw.set_max_modulation connected with input_number. Please see yaml below. No I am running opentherm_gw.reset_gateway service from GUI. I can get this error in two ways. When HA is running and the I switch-on gateway. Or if HA and gateway are running and I call for service opentherm_gw.reset_gateway from GUI. I don't have automation for opentherm_gw.reset_gateway. Please see debug log below. Actually gateway is working well and I was just trying to find the way to catch if gateway get disconnected or something happened with it. For now I am monitoring errors from system_log_event and looking for IP address of gateway. Could you please let me know if there is better way to monitor gateway. Thank you one more time!

- id: boiler_modulation_1 
  alias: Boiler Modulation 1
  initial_state: 'on'
  trigger: 
    platform: state
    entity_id: sensor.slave_max_relative_modulation_thermostat
  condition:
    - condition: numeric_state
      entity_id: sensor.slave_max_relative_modulation_thermostat
      above: 0
      value_template: "{{ states('sensor.slave_max_relative_modulation_thermostat') | float }}"
  action: 
    - service: input_number.set_value
      data_template:
        entity_id: input_number.heater_modulation
        value: "{{ states('sensor.slave_max_relative_modulation_thermostat') | float }}"

- id: boiler_modulation_2 
  alias: Boiler Modulation 2
  initial_state: 'on'
  trigger: 
    platform: state
    entity_id: input_number.heater_modulation
  action: 
    - service: opentherm_gw.set_max_modulation
      data_template:
        gateway_id: thermostat
        level: "{{states('input_number.heater_modulation') | round(0) }}"
2020-02-11 20:53:22 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 1, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 1, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 1, 'remote_transfer_max_ch': 1, 'remote_rw_dhw': 1, 'remote_rw_max_ch': 1, 'slave_max_relative_modulation': 100.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 40.0, 'ch_water_pressure': 1.296875, 'room_temp': 0.0, 'ch_water_temp': 31.89453125, 'dhw_temp': 53.09765625, 'outside_temp': 1.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 65, 'slave_dhw_min_setp': 10, 'slave_ch_max_setp': 85, 'slave_ch_min_setp': 30, 'dhw_setpoint': 55.0, 'max_ch_setpoint': 40.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 36002, 'ch_pump_hours': 36351, 'dhw_pump_hours': 2714, 'dhw_burner_hours': 0, 'otgw_gpio_a_state': 0, 'otgw_gpio_b_state': 0}
2020-02-11 20:53:24 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 1, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 1, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 1, 'remote_transfer_max_ch': 1, 'remote_rw_dhw': 1, 'remote_rw_max_ch': 1, 'slave_max_relative_modulation': 0.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 40.0, 'ch_water_pressure': 1.296875, 'room_temp': 0.0, 'ch_water_temp': 31.89453125, 'dhw_temp': 53.09765625, 'outside_temp': 1.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 65, 'slave_dhw_min_setp': 10, 'slave_ch_max_setp': 85, 'slave_ch_min_setp': 30, 'dhw_setpoint': 55.0, 'max_ch_setpoint': 40.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 36002, 'ch_pump_hours': 36351, 'dhw_pump_hours': 2714, 'dhw_burner_hours': 0, 'otgw_gpio_a_state': 0, 'otgw_gpio_b_state': 0}
2020-02-11 20:53:28 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 1, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 1, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 1, 'remote_transfer_max_ch': 1, 'remote_rw_dhw': 1, 'remote_rw_max_ch': 1, 'slave_max_relative_modulation': 100.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 40.0, 'ch_water_pressure': 1.296875, 'room_temp': 0.0, 'ch_water_temp': 31.89453125, 'dhw_temp': 53.09765625, 'outside_temp': 1.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 65, 'slave_dhw_min_setp': 10, 'slave_ch_max_setp': 85, 'slave_ch_min_setp': 30, 'dhw_setpoint': 55.0, 'max_ch_setpoint': 40.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 36002, 'ch_pump_hours': 36351, 'dhw_pump_hours': 2714, 'dhw_burner_hours': 0, 'otgw_gpio_a_state': 0, 'otgw_gpio_b_state': 0}
2020-02-11 20:53:38 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 1, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 1, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 1, 'remote_transfer_max_ch': 1, 'remote_rw_dhw': 1, 'remote_rw_max_ch': 1, 'slave_max_relative_modulation': 100.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 40.0, 'ch_water_pressure': 1.296875, 'room_temp': 0.0, 'ch_water_temp': 31.796875, 'dhw_temp': 53.09765625, 'outside_temp': 1.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 65, 'slave_dhw_min_setp': 10, 'slave_ch_max_setp': 85, 'slave_ch_min_setp': 30, 'dhw_setpoint': 55.0, 'max_ch_setpoint': 40.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 36002, 'ch_pump_hours': 36351, 'dhw_pump_hours': 2714, 'dhw_burner_hours': 0, 'otgw_gpio_a_state': 0, 'otgw_gpio_b_state': 0}
2020-02-11 20:53:40 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3}
2020-02-11 20:53:40 ERROR (MainThread) [homeassistant.components.generic_thermostat.climate] Unable to update from sensor: could not convert string to float: 'unknown'
2020-02-11 20:53:40 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 0, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 0, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 0.0, 'remote_transfer_dhw': 0, 'remote_transfer_max_ch': 0, 'remote_rw_dhw': 0, 'remote_rw_max_ch': 0, 'slave_max_relative_modulation': 0.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 0.0, 'ch_water_pressure': 0.0, 'room_temp': 0.0, 'ch_water_temp': 0.0, 'dhw_temp': 0.0, 'outside_temp': 0.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 0, 'slave_dhw_min_setp': 0, 'slave_ch_max_setp': 0, 'slave_ch_min_setp': 0, 'dhw_setpoint': 0.0, 'max_ch_setpoint': 0.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 0, 'ch_pump_hours': 0, 'dhw_pump_hours': 0, 'dhw_burner_hours': 0}
2020-02-11 20:53:41 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 0, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 0, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 0, 'remote_transfer_max_ch': 0, 'remote_rw_dhw': 0, 'remote_rw_max_ch': 0, 'slave_max_relative_modulation': 0.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 0.0, 'ch_water_pressure': 0.0, 'room_temp': 0.0, 'ch_water_temp': 0.0, 'dhw_temp': 0.0, 'outside_temp': 0.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 0, 'slave_dhw_min_setp': 0, 'slave_ch_max_setp': 0, 'slave_ch_min_setp': 0, 'dhw_setpoint': 0.0, 'max_ch_setpoint': 0.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 0, 'ch_pump_hours': 0, 'dhw_pump_hours': 0, 'dhw_burner_hours': 0}
2020-02-11 20:53:41 DEBUG (MainThread) [homeassistant.components.opentherm_gw] Received report: {'otgw_about': 'OpenTherm Gateway 4.2.5', 'otgw_build': '17:59 20-10-2015', 'otgw_clockmhz': '4 MHz', 'otgw_mode': 'G', 'otgw_smart_pwr': 'Low power', 'otgw_thermostat_detect': 'D', 'otgw_dhw_ovrd': 'A', 'otgw_setpoint_ovrd_mode': 'N', 'otgw_gpio_a': 1, 'otgw_gpio_b': 1, 'otgw_led_a': 'E', 'otgw_led_b': 'M', 'otgw_led_c': 'R', 'otgw_led_d': 'X', 'otgw_led_e': 'M', 'otgw_led_f': 'M', 'otgw_ignore_transitions': 1, 'otgw_ovrd_high_byte': 1, 'otgw_setback_temp': 19.0, 'otgw_vref': 3, 'master_ch_enabled': 1, 'master_dhw_enabled': 0, 'master_cooling_enabled': 0, 'master_otc_enabled': 0, 'master_ch2_enabled': 0, 'slave_fault_indication': 0, 'slave_ch_active': 0, 'slave_dhw_active': 0, 'slave_flame_on': 0, 'slave_cooling_active': 0, 'slave_ch2_active': 0, 'slave_diagnostic_indication': 0, 'control_setpoint': 35.0, 'remote_transfer_dhw': 0, 'remote_transfer_max_ch': 0, 'remote_rw_dhw': 0, 'remote_rw_max_ch': 0, 'slave_max_relative_modulation': 0.0, 'slave_max_capacity': 0, 'slave_min_mod_level': 0, 'room_setpoint': 0.0, 'relative_mod_level': 0.0, 'ch_water_pressure': 0.0, 'room_temp': 0.0, 'ch_water_temp': 0.0, 'dhw_temp': 0.0, 'outside_temp': 0.0, 'return_water_temp': 0.0, 'slave_dhw_max_setp': 0, 'slave_dhw_min_setp': 0, 'slave_ch_max_setp': 0, 'slave_ch_min_setp': 0, 'dhw_setpoint': 0.0, 'max_ch_setpoint': 0.0, 'burner_starts': 0, 'ch_pump_starts': 0, 'dhw_pump_starts': 0, 'dhw_burner_starts': 0, 'burner_hours': 0, 'ch_pump_hours': 0, 'dhw_pump_hours': 0, 'dhw_burner_hours': 0}
mvn23 commented 4 years ago

You can add a check to your boiler_modulation_1 automation so that it does not execute when sensor.slave_max_relative_modulation_thermostat has a non-numeric state, something like this :

- condition: template
  value_template: "{{ states('sensor.slave_max_relative_modulation_thermostat') not in ['', 'unknown'] }}"

That should avoid the conversion error. However, I see there's also a bug in the pyotgw library (not in HA) that allows calling certain methods when there is no active connection. This will be fixed in a future version.

DJTerentjev commented 4 years ago

Thank you very much! Great integration.