Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не работает с HA 2024.1 #46

Closed
AlexeyTorch opened this issue Jan 5, 2024 · 16 comments
Closed

Не работает с HA 2024.1 #46

AlexeyTorch opened this issue Jan 5, 2024 · 16 comments

Comments

@AlexeyTorch
Copy link

Добрый день.
Версия HA: 2024.1
Версия компонента 1.03
включено логгирование:

    custom_components.tion: info
    tion: info

При запуске выбора режима кодом

service: climate.set_fan_mode
target:
  entity_id:
    - climate.tion_bedroom
data:
  fan_mode: 0-3:600

при запуске в логе ошибка:

2024-01-05 09:20:48.962 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Unexpected error for call_service at pos 1: sequence item 2: expected str instance, int found
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 476, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 713, in _async_call_service_step
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 675, in _async_run_long_action
return long_task.result()
^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2173, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2210, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 272, in handle_service
return await service.entity_service_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 882, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 952, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 570, in async_handle_set_fan_mode_service
self._valid_mode_or_raise("fan", fan_mode, self.fan_modes)
File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 531, in _valid_mode_or_raise
modes_str: str = ", ".join(modes) if modes else ""
^^^^^^^^^^^^^^^^
TypeError: sequence item 2: expected str instance, int found
2024-01-05 09:20:48.980 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140717754775872] Error handling message: Unknown error (unknown_error) Alex from 192.168.0.33 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 26, in _handle_async_response
await func(hass, connection, msg)
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 782, in handle_execute_script
script_result = await script_obj.async_run(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1587, in async_run
return await asyncio.shield(run.async_run())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 426, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 479, in _async_step
self._handle_exception(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 502, in _handle_exception
raise exception
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 476, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 713, in _async_call_service_step
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 675, in _async_run_long_action
return long_task.result()
^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2173, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2210, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 272, in handle_service
return await service.entity_service_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 882, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 952, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 570, in async_handle_set_fan_mode_service
self._valid_mode_or_raise("fan", fan_mode, self.fan_modes)
File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 531, in _valid_mode_or_raise
modes_str: str = ", ".join(modes) if modes else ""
^^^^^^^^^^^^^^^^
TypeError: sequence item 2: expected str instance, int found

При этом, выключение командой

service: climate.set_hvac_mode
data:
  hvac_mode: "off"
target:
  entity_id:
    - climate.tion_bedroom

работает штатно

@shilin-da
Copy link

Тоже сломалось при вчерашнем обновлении. Ранее явного указания фиксированного режима в кавычках (например '2' вместо 2) было достаточно. Но сейчас такой вариант не работает:

              - show_name: true
                show_icon: true
                type: button
                tap_action:
                  action: call-service
                  service: climate.set_fan_mode
                  target:
                    entity_id:
                      - climate.bedroom_breezer
                      - climate.nursery_breezer
                      - climate.lounge_breezer
                  data:
                    fan_mode: '2'

@ZeBriD
Copy link

ZeBriD commented Jan 7, 2024

Поддерживаю. Установка цифрового значения в fan_mode не работает ни в каком виде с 2024.1 версии

@man55
Copy link

man55 commented Jan 7, 2024

Подтверждаю, всё сломалось.

@bisquit2003
Copy link

доброй ночи. очень ждем правку

@ilvi80
Copy link

ilvi80 commented Jan 9, 2024

То же перестало работать после обновления, ошибки те же.

@dandgam
Copy link

dandgam commented Jan 9, 2024

здравствуйте можно ли ждать исправления? к сожалению поломалось все с этим режимом

@wayfarer70
Copy link

При переключении режимов жалуется на то, что сервис ждет str, а не int. Поправил в climate.py fan_mode и fan_modes как было предложено в issue #37 - все заработало.

@AlexeyTorch
Copy link
Author

При переключении режимов жалуется на то, что сервис ждет str, а не int. Поправил в climate.py fan_mode и fan_modes как было предложено в issue #37 - все заработало.

это решает проблему частично.
да, теперь можно поменять скорость. или поставить режим auto.
но нельзя поставить условный "ночной режим" (ограничить скорость в auto), и нельзя в режиме auto управляmь целевыми co2 ( fan_mode: 0-3:600 )

@man55
Copy link

man55 commented Jan 13, 2024

будет решение проблемы?

@bisquit2003
Copy link

будет решение проблемы?

Автора давно не слышно, к сожалению. В тг он так же давно не заходил. Я попросил разработчика интеграции Yaha посмотреть эту проблему (хоть у него тионы и не через magic air добавлены в ха), он планировал заняться этим на выходных.
Ну или нам всем путь в есп32, зато локально будет)

@airens
Copy link
Owner

airens commented Jan 14, 2024

Ответил в другом issue.

@airens airens closed this as completed Jan 14, 2024
@man55
Copy link

man55 commented Jan 15, 2024

будет решение проблемы?

Автора давно не слышно, к сожалению. В тг он так же давно не заходил. Я попросил разработчика интеграции Yaha посмотреть эту проблему (хоть у него тионы и не через magic air добавлены в ха), он планировал заняться этим на выходных. Ну или нам всем путь в есп32, зато локально будет)

Нет каких-нибудь новостей?

На сколько я понял, в НА нет подобия "целевого СО2" и автор придумал решение через fan_modes, где вместо простого задания скорости, отправлялась строка вида "fan_min-fan_max:target_co2". Но после обновления НА это перестало работать, даже если привести код как в issue #37, НА не хочет принимать для fan_mode прежний формат и ничего, кроме предустановленных FAN_OFF, FAN_AUTO или скорости одной цифрой 0-6.
Полагаю решение должно быть в виде добавления отдельной переменной(сервиса) типа climate.target_co2, который можно будет отдельно задать в НА. И так же что-то типа fan_min и fan_max. То есть нужно выделить отдельно три этих переменных, которые ранее задавались через составную строку в fan_modes.

ПС. Локально через ЕСП это тоже не решение при наличии MagicAir, так как полностью теряется логика автоматического управления бризером по целевому СО2, разве-что автоматизациями потом городить огород...

ПС2. Откатиться уже тоже не вариант, после последней резервной копии было много разных изменений по устройствам и автоматизациям и я совсем не готов переделывать это всё заново ((((.

@RealLord
Copy link
Contributor

Спасибо за подсказку, после изменения кода как в #37 почти все заработало и смог перенастроить под свои нужны. Сейчас хотя бы нет ошибки, можно через автоматизацию объекта климат задать скорость потока и вкл/выкл обогрев.
Но не нашел нигде в объекте климат как включить тип воздухозабора на улицу или квартиру или смешанный.
Но так как у меня все время с улицы, то это вроде как не критично пока.
Согласен что надо делать доработку объекта под CO2 и тип забора воздуха.

@airens Спасибо большое за Ваш труд по интеграции! Давно пора у компании ТИОН цистерну молока затребовать.

@man55
Copy link

man55 commented Jan 17, 2024

Но не нашел нигде в объекте климат как включить тип воздухозабора на улицу или квартиру или смешанный.

И не найдешь. Нет отдельного управления для заслонки, так же как и для целевого уровня со2, мин и макс скорости кулера в авторежиме. Автор прикрутил это через костыль, путём задания сложной составной строки для fan_mode, типа "1-4:700"..
После обновления НА перестал принимать такую строку для fan_mode, который теперь может принимать только заранее определённые значения (ON, OFF, 1, 2, 3... 7), а не произвольную строку.
Исправить это можно только путём ввода новых сервисов для управления заслонкой, мин и макс скоростью, целевым СО2, после чего в НА появяться отдельные entity.

@RealLord
Copy link
Contributor

RealLord commented Jan 20, 2024

Сделал pull request сюда в репу чтобы решить проблему со строкой и типом воздухозабора.
Добавить отдельный тип СО2 пока непонятно как, такого типа нет в объекте Climate и добавить кастомные свойства нельзя вроде как.
Пока смотрю на тему сделать управления через свойство влажность (humidity), там вроде как есть все нужные свойства.

Так как автор пока недоступен и не может одобрить pull request, предлагаю кто хочет потестить, скачать и заменить себе 2 файла climate.py и sensor.py
Вот ссылка на мой репозиторий с последней версией. У меня корректно отработал 1 день и по тестам погонял вручную как из GUI так и из скрипта.
https://github.com/RealLord/tion_home_assistant/tree/master/custom_components/tion

Фото как выглядит в интерфейсе НА https://disk.yandex.ru/i/lb9jJ6qdrHUluA

@AlexeyTorch
Copy link
Author

AlexeyTorch commented Jan 20, 2024

Добавить отдельный тип СО2 пока непонятно как, такого типа нет в объекте Climate и добавить кастомные свойства нельзя вроде как.

Для zigbee термоголовок сделан стандартный объект класса климат, и переменные которых нет в стандарте (например local_temperature_calibration )
так что вероятно кастомные свойства возможны. но не с моими знаниями python

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants