mavrikkk / ha_kettler

allows you to connect Redmond SkyKettle, SkyCooker and SkyHeat to your Home Assistant. see README to know further
132 stars 51 forks source link

Redmond RAC-3706S support #60

Closed vrslev closed 2 years ago

vrslev commented 3 years ago

I have this air purifier and with your integration in connects as kettle :) How can I contribute to project so it'd support this?

Снимок экрана 2021-01-11 в 22 39 49
mavrikkk commented 3 years ago

as i can see in photo above, you can speak russian я русский, так что можно по-русски

  1. какие функции у вашего очистителя? можно скринами с интерфейса.

  2. что происходит, когда вы пытаетесь управлять им с моего интерфейса? что работает, что нет и тд..

  3. в зависимости от ответов решим что делать. но скорее всего придется снять лог блютуса при общении вашего очистителя с телефоном через родное приложение.

vrslev commented 3 years ago

Да, конечно, можно по-русски)

Функции

На скриншоте всё показал:

Скришнот из Ready for Sky

Управление через кастомную интеграцию

Лог Bluetooth HCI

Записал лог Bluetooth HCI, управлял очистителем через родное приложение:

Если на этом этапе уже нужно, могу записать лог включения режимов.

btsnoop_hci-4.log

mavrikkk commented 3 years ago

из вашего лога путем магии разгадал команды:

  1. включить
  2. выключить
  3. выбрать режим вентилятора
  4. запрос текущего состояния

Остались вопросы

  1. В логе есть еще 1 запрос, скорее всего режим ионизации, но так как вы его не меняли, то не могу точно сказать, та ли это команда. но методом исключения получается, что скорее всего та.
  2. из ответа на запрос текущего состояния не все параметры понятны: узнал байт "включен-выключен", узнал байт скорости вентилятора. неизвестен байт вкл-выкл ионизации.

Из вышестоящих вопросов ясно, что нужен лог чисто с переключением ионизации. Последовательность действий:

  1. запускаете запись лога
  2. запускаете родное приложение
  3. выбираете какуюнть скорость и включаете очиститель.
  4. включаете ионизатор...через пару сек выключаете...и так 3 раза...
  5. останавливаете запись лога и закрываете приложение
  6. лог сюда
mavrikkk commented 3 years ago

режимы работы ионизатора "авто, ночь, дым" не уверен что есть смысл реализовывать. это просто выбор конкретной скорости с вкл или выкл ионизатором. Это можно сделать в HA с помощью сцен или скриптов. В любом случае, режимы работы должны быть привязаны к устройству, а я пока не решил какие устройства использовать красиво: либо свич с фаном, либо климат

vrslev commented 3 years ago

Согласен насчёт мысли о режимах: нет смысла добавлять их. Записал лог: btsnoop_hci-5.log

Последовательность:

  1. Открыл приложение
  2. Включил очиститель
  3. Установил вторую скорость вентилятора
  4. Включил ионизатор
  5. Выключил ионизатор
  6. Включил
  7. Выключил
  8. Включил
  9. Выключил
  10. Включил
  11. Выключил (то есть, включил-выключил 4 раза)

Хотел поинтересоваться, каким образом вы вычисляете, какие команды за что отвечают? Где можно почитать обо всей этой теме?

mavrikkk commented 3 years ago

Самое сложное было начать. После того, как я совладал со своей интеграцией, подключить другие довольно просто. Редмонд пишет примерно в одном стиле. Поэтому, зная последовательность ваших действий (потому и прошу выполнять строго определенные действия) и просматривая лог, нахожу похожие и вычисляю оставшиеся команды. Если хотите разобраться в этом, то вот 2 статьи:

  1. https://habr.com/en/post/371965/ - это первопроходец данной темы, с изучения его методик я и сам начал
  2. https://habr.com/en/post/412583/ - это уже моя статья. Там разобрано много команд, часть из них так или иначе встречается во всех устройствах redmond.
mavrikkk commented 3 years ago

Вам задание, как самому крайнему )) Я обновил интеграцию, нужно проверить, что все работает (очиститель пока еще не добавлял) Теоретически, я добавил возможность мультиподключений (несколько разных устройств). Попробуйте добавить и чайник и очиститель, а потом поуправлять чайником (очистителем бессмысленно). Последите, что данные чайника и очистителя не перемешиваются. Дело в том, что у меня не осталось НИ ОДНОГО устройства, и я пишу код вслепую полностью.

mavrikkk commented 3 years ago

Думаю ваш очиститель будет состоять из вентилятора с регулируемой скоростью и выключателя ионизации. Соответственно, при выключении вентилятора - выключается очиститель, при установке любой ненулевой скорости - очиститель включается на выбранной скорости, отдельным свичом регулируется ионизация вкл-выкл.

vrslev commented 3 years ago

Скачал обновление интеграции, но окно добавления осталось неизменным. Могу добавить только одно устройство, а потом добавить ещё одну интеграцию на другое. Также нет объектов, которые должны были добавиться к устройству: Снимок экрана 2021-01-27 в 19 15 01Снимок экрана 2021-01-27 в 19 15 04Снимок экрана 2021-01-27 в 19 16 56

Снимок экрана 2021-01-27 в 19 15 23

Тема интересна, статьи почитаю, спасибо!

mavrikkk commented 3 years ago

насчет добавления - так и должно быть! все верно. а вот насчет отсутствия объектов - это печально (( а что в логе? если лог уже разросся, то удалите интеграции, очистите лог, добавьте интеграции, посмотрите лог и скиньте сюда

vrslev commented 3 years ago

Хм, я раньше и так добавлял очиститель с чайником вместе, что-то изменилось в коде?

Вот ошибка в логе: 2021-01-27 16:41:58 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 833, in async_forward_entry_setup await entry.async_setup(self.hass, integration=integration) AttributeError: 'mappingproxy' object has no attribute 'async_setup'

mavrikkk commented 3 years ago

да, много чего поменялось. добавить раньше можно было хоть 100 устройств, но у них было общее хранилище данных, то есть данные смешивались и тд и тп. посмотрите здесь issues. он по-моему открыт до сих пор, там подробности. я попытался их разделить. Вроде все правильно сделал, но проверить не на чем (( ошибка выше вообще непонятная...не уверен, что она вообще от моей интеграции

vrslev commented 3 years ago
for domain in SUPPORTED_DOMAINS:
        hass.async_create_task(
            hass.config_entries.async_forward_entry_setup(config, domain)
)

Ошибка возникает здесь, загвоздка в параметре config. Попробовал изменить на _configentity — без успеха.

vrslev commented 3 years ago

Забыл сказать: это init.py, 84 строка

mavrikkk commented 3 years ago

да я знаю, где это )) и даже примерно логично, что здесь ошибка, ибо здесь я делал изменения... только ошибка совсем неинформативная. буду думать завтра за компом

mavrikkk commented 3 years ago

по идее "config_entry" должен был помочь... правда при этом ещё изменения в каждом модуле сделать нужно: лайт, свич, климат, сенсор, вотер хеатер

mavrikkk commented 3 years ago

я поправил в первом приближении...попробуйте, если что - логи сюда

vrslev commented 3 years ago

Теперь всё работает! Добавил чайник и очиститель, появились объекты. При управлении чайником у очистителя ничего не меняется. То есть, выходит, все получилось

mavrikkk commented 3 years ago

отличная новость! Еще одна мечта исполнилась )) Жаль, что когда самому уже нафиг не нужно )) Осталась мечта перевода на асинхронную библиотеку...

По поводу вашего очистителя. В планах сделать "выключатель" для ионизации и "вентилятор" для всего остального. То есть выключатель Ионизация будет включать и выключать режим ионизации, но включить и выключить сам очистительне сможет. Модуль Вентилятор будет регулировать скорость: при установке любой скорости отличной от нуля - очиститель включается, при нулевой скорости - выключается. То есть без включенного вентилятора отдельно ионизато работать не будет. Устроит? Я просто хз, как в оригинале сделано, но мне кажется ионизатор без вентилятора вообще бессмысленен.

vrslev commented 3 years ago

Выглядит логично. Думаю, лучше не сделать)

mavrikkk commented 3 years ago

Ну для альфа-версии все готово. Ужасно, что это нельзя хотя бы теоретически проверить. Обновляйтесь и проверяйте. Если ошибки, то логи и пояснения сюда

vrslev commented 3 years ago

Обновился. Всё работает и показывает, кроме скорости вентилятора.

  1. Нельзя поменять эту скорость, и при изменении вручную она не меняется.

  2. Кроме этого, после перезагрузки вылезает много ошибок в логе:

    2021-01-28 16:24:18 ERROR (SyncWorker_60) [custom_components.ready4sky] unable to know the type of device...use default
    2021-01-28 16:24:35 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up ready4sky platform for sensor
    Traceback (most recent call last):
    File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
    await asyncio.shield(task)
    File "/home/homeassistant/.homeassistant/custom_components/ready4sky/sensor.py", line 14, in async_setup_entry
    kettler = hass.data[DOMAIN][mac]
    KeyError: 'MAC-АДРЕС ЧАЙНИКА'
    2021-01-28 16:24:35 ERROR (MainThread) [homeassistant.components.switch] Error while setting up ready4sky platform for switch
    Traceback (most recent call last):
    File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
    await asyncio.shield(task)
    File "/home/homeassistant/.homeassistant/custom_components/ready4sky/switch.py", line 14, in async_setup_entry
    kettler = hass.data[DOMAIN][mac]
    KeyError: 'MAC-АДРЕС ЧАЙНИКА'
    2021-01-28 16:24:35 ERROR (MainThread) [homeassistant.components.water_heater] Error while setting up ready4sky platform for water_heater
    Traceback (most recent call last):
    File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
    await asyncio.shield(task)
    File "/home/homeassistant/.homeassistant/custom_components/ready4sky/water_heater.py", line 59, in async_setup_entry
    kettler = hass.data[DOMAIN][mac]
    KeyError: 'MAC-АДРЕС ЧАЙНИКА'
    2021-01-28 16:24:35 ERROR (MainThread) [homeassistant.components.fan] Error while setting up ready4sky platform for fan
    Traceback (most recent call last):
    File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
    await asyncio.shield(task)
    File "/home/homeassistant/.homeassistant/custom_components/ready4sky/fan.py", line 17, in async_setup_entry
    kettler = hass.data[DOMAIN][mac]
    KeyError: 'MAC-АДРЕС ЧАЙНИКА'
    2021-01-28 16:24:35 ERROR (MainThread) [homeassistant.components.light] Error while setting up ready4sky platform for light
    Traceback (most recent call last):
    File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
    await asyncio.shield(task)
    File "/home/homeassistant/.homeassistant/custom_components/ready4sky/light.py", line 21, in async_setup_entry
    kettler = hass.data[DOMAIN][mac]
    KeyError: 'MAC-АДРЕС ЧАЙНИКА'
  3. И ещё объекты очистителя удалились, и появились стандартные от чайника:

    Снимок экрана 2021-01-28 в 19 29 49
  4. В объекте вентилятора есть нативный включатель. Наверное, можно убрать скорость 00

mavrikkk commented 3 years ago

1.что значит нельзя? вроде у фана есть метод "установить скорость". или он не работает? если не работает, то я знаю, как исправить.

  1. unable to know the type of device...use default - это означает, что он не нашел устройства в списке поддерживаемых.

куча ошибок kettler = hass.data[DOMAIN][mac] KeyError: 'MAC-АДРЕС ЧАЙНИКА' это вообще треш. я так понимаю, что вместо mac адреса передается заголовок 'mac-адрес чайника'

  1. это как раз потому, что он не определил тип устройства.

  2. не видел никогда его вживую...скиньте хоть скриншоты...тогда да, можно убрать.

вообще попробуйте сильно не уменьшать время синхронизации, так как блютус пепедатчик один и он не может одновременно передавать\получать данные на несколько устройств, только последовательно.

по поводу мак вдреса - вообще хз, что сказать...попробуйте пересоздать заново, пособирайте ошибки, может придумаю или увижу, почему так происходит.

mavrikkk commented 3 years ago

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

vrslev commented 3 years ago
  1. Да, скорость не устанавливается. Она меняется в HA, но ничего не происходит.
  2. Какой тип устройства у очистителя? Видел в r4const.py разные типы, как вставить? Я подменил свой мак-адрес на 'MAC-АДРЕС ЧАЙНИКА' 😂
  3. Снимок экрана 2021-01-28 в 20 28 24Снимок экрана 2021-01-28 в 20 28 00

vrslev commented 3 years ago

После ещё одной перезагрузки HA вообще все удалились

Снимок экрана 2021-01-28 в 20 25 09 Снимок экрана 2021-01-28 в 20 25 27
vrslev commented 3 years ago

Увидел в r4const.py модель очистителя. В чём тогда может быть проблема?

mavrikkk commented 3 years ago
  1. исправим
  2. ничего не нужно, он по имени сам определяет.
  3. прикольно, буду знать. немного переделаем.

вообще все удалилось - это интересно )) с чего бы? есть одна мысль шальная, проверим

попробуйте на этапе добавления очистителя, когда выбираете его из выпадающего списка, скопировать оттуда строку как есть и сюда прислать, может в символе где ошибся, бывает такое

vrslev commented 3 years ago

Добавил один только очиститель и перезагрузил — не удалился. Добавил ещё чайник и перезагрузился — очиститель снова удалился.

Вот строка: RAC-3706S,cb:77:d2:f5:ad:8c

mavrikkk commented 3 years ago

то есть каждый раз удаляется именно очиститель? неважно в каком порядке добавлять? ))

попробуйте обновиться, я поправил 1 вещь. перетестируйте потом...

дополнительно проверьте работу очистителя: повключайте разные режимы напрямую на очистителе и посмотрите, верно ли статусы ставятся в приложении...ну а с умного дома можете поуправлять ионизатором, отпишитесь, что и как работает. с вентилятором знаю, что делать, это за компом и завтра

vrslev commented 3 years ago

При изменении вручную скорости, состояния или ионизатора параметры меняются и в HA. Ионизатор и состояние работает; скорость не работает. В общем, ничего не изменилось.

Сейчас после перезагрузки удалился чайник. Порядок добавления изменился: подключил чайник, перезагрузился, подключил очиститель, перезагрузился — после этого удалился чайник

vrslev commented 3 years ago

Ошибка та же самая:

021-01-28 18:11:52 ERROR (SyncWorker_11) [custom_components.ready4sky] unable to know the type of device...use default
2021-01-28 18:12:13 ERROR (MainThread) [homeassistant.components.water_heater] Error while setting up ready4sky platform for water_heater
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/water_heater.py", line 59, in async_setup_entry
kettler = hass.data[DOMAIN][mac]
KeyError: 'f9:ae:7e:b4:9a:a6'
2021-01-28 18:12:13 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up ready4sky platform for sensor
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/sensor.py", line 14, in async_setup_entry
kettler = hass.data[DOMAIN][mac]
KeyError: 'f9:ae:7e:b4:9a:a6'
2021-01-28 18:12:13 ERROR (MainThread) [homeassistant.components.light] Error while setting up ready4sky platform for light
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/light.py", line 21, in async_setup_entry
kettler = hass.data[DOMAIN][mac]
KeyError: 'f9:ae:7e:b4:9a:a6'
2021-01-28 18:12:13 ERROR (MainThread) [homeassistant.components.switch] Error while setting up ready4sky platform for switch
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/switch.py", line 14, in async_setup_entry
kettler = hass.data[DOMAIN][mac]
KeyError: 'f9:ae:7e:b4:9a:a6'
2021-01-28 18:12:13 ERROR (MainThread) [homeassistant.components.fan] Error while setting up ready4sky platform for fan
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/fan.py", line 17, in async_setup_entry
kettler = hass.data[DOMAIN][mac]
KeyError: 'f9:ae:7e:b4:9a:a6'
mavrikkk commented 3 years ago
  1. для вас ничего не изменилось, для меня - изменилось. Теперь я знаю, что состояние работает верно и ионизация работает верно. С вентилятором я знаю, где не доделал, это завтра.

  2. Меня больше беспокоит отвал. вот это серьезная проблема и раньше ее не было, хоть и работало все криво.

mavrikkk commented 3 years ago

если есть время, то обновите версию и проверьте еще раз. если что то новое по логам, то сюда. интересуют отвалы.

vrslev commented 3 years ago

Теперь так:

2021-01-28 19:44:53 ERROR (SyncWorker_2) [custom_components.ready4sky] unable to know the type of device...use default
2021-01-28 19:45:07 ERROR (MainThread) [homeassistant.components.switch] Error while setting up ready4sky platform for switch
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/switch.py", line 12, in async_setup_entry
kettler = hass.data[DOMAIN][config_entry.entry_id]
KeyError: '0dca8175672afaf83a03649b33aa67e8'
2021-01-28 19:45:07 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up ready4sky platform for sensor
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/sensor.py", line 12, in async_setup_entry
kettler = hass.data[DOMAIN][config_entry.entry_id]
KeyError: '0dca8175672afaf83a03649b33aa67e8'
2021-01-28 19:45:09 ERROR (MainThread) [homeassistant.components.water_heater] Error while setting up ready4sky platform for water_heater
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/water_heater.py", line 57, in async_setup_entry
kettler = hass.data[DOMAIN][config_entry.entry_id]
KeyError: '0dca8175672afaf83a03649b33aa67e8'
2021-01-28 19:45:09 ERROR (MainThread) [homeassistant.components.fan] Error while setting up ready4sky platform for fan
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/fan.py", line 15, in async_setup_entry
kettler = hass.data[DOMAIN][config_entry.entry_id]
KeyError: '0dca8175672afaf83a03649b33aa67e8'
2021-01-28 19:45:09 ERROR (MainThread) [homeassistant.components.light] Error while setting up ready4sky platform for light
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 199, in _async_setup_platform
await asyncio.shield(task)
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/light.py", line 19, in async_setup_entry
kettler = hass.data[DOMAIN][config_entry.entry_id]
KeyError: '0dca8175672afaf83a03649b33aa67e8'
mavrikkk commented 3 years ago

Обновите версию и проверьте работу вентилятора. С вылетами пока думаю...

vrslev commented 3 years ago

Теперь регулировка скоростей работает. Остался один момент — проблема с выключением. Когда выключаю вручную, Status не меняет статус, и тумблер в Fan не меняет своего положения. Если выключаю из Home Assistant, сам очиститель выключается, но в HA он якобы продолжает работать

vrslev commented 3 years ago

Вот лог:

2021-01-29 09:46:54 WARNING (SyncWorker_43) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 09:47:51 WARNING (SyncWorker_54) [custom_components.ready4sky] five attempts of modeFan failed
mavrikkk commented 3 years ago

а если ионизацию? с ней все в порядке в плане синхронизации? и с точки зрения управления с HA и с точки зрения ручного переключения с последующим отображением в HA

vrslev commented 3 years ago

Ещё есть такая ошибка при подключении к HomeKit.

2021-01-29 09:54:22 WARNING (SyncWorker_16) [homeassistant.components.homekit.util] ['01', '02', '03', '04', '05', '06'] does not contain the speed setting off as its first element. Assuming that 01 is equivalent to 'off'

Может, вместо speed менять percentage или preset_mode? В документации указано, что speed и speed_list — устаревшие объекты:

Снимок экрана 2021-01-29 в 13 14 08
vrslev commented 3 years ago

Со временем этих ошибок всё больше и больше:

2021-01-29 09:46:54 WARNING (SyncWorker_43) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 09:47:51 WARNING (SyncWorker_54) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 09:54:22 WARNING (SyncWorker_16) [homeassistant.components.homekit.util] ['01', '02', '03', '04', '05', '06'] does not contain the speed setting off as its first element. Assuming that 01 is equivalent to 'off'
2021-01-29 09:57:17 WARNING (SyncWorker_22) [custom_components.ready4sky] five attempts of modeUpdate failed
2021-01-29 10:10:49 WARNING (SyncWorker_49) [custom_components.ready4sky] five attempts of modeUpdate failed
2021-01-29 10:11:19 WARNING (SyncWorker_22) [custom_components.ready4sky] five attempts of modeUpdate failed
2021-01-29 10:11:45 ERROR (SyncWorker_21) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:11:46 WARNING (SyncWorker_23) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 10:16:14 WARNING (SyncWorker_5) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 10:16:14 ERROR (SyncWorker_34) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:16:18 WARNING (SyncWorker_34) [custom_components.ready4sky] five attempts of modeIon failed
2021-01-29 10:16:18 WARNING (SyncWorker_22) [custom_components.ready4sky] five attempts of modeUpdate failed

Ионизация работает хорошо

mavrikkk commented 3 years ago

тогда очень странно, что статус не работает. Фиг с управлением с HA, но при ручном управлении статус ТОЧНО должен подхватываться...с учетом времени задержки, равном периоду синхронизации

mavrikkk commented 3 years ago

Весь текущий режим (вкл-выкл, скорость вентилятора и режим ионизации) полностью получается одной командой. Если с ней что то не то, то не приходят все статусы...а если так - то приходят все статусы.

vrslev commented 3 years ago

Попробовал удалить интеграцию и добавить очиститель заново. Теперь вот такой лог:

2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for ready4sky
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 323, in async_unload
assert isinstance(result, bool)
AssertionError
2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for water_heater
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/water_heater/__init__.py", line 128, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for sensor
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/sensor/__init__.py", line 72, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for light
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/light/__init__.py", line 270, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for switch
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/switch/__init__.py", line 78, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 10:42:16 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for fan
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/fan/__init__.py", line 105, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 10:44:14 WARNING (SyncWorker_2) [custom_components.ready4sky] five attempts of modeUpdate failed
2021-01-29 10:44:14 ERROR (SyncWorker_42) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:14 WARNING (SyncWorker_42) [custom_components.ready4sky] five attempts of modeFan failed
2021-01-29 10:44:15 ERROR (SyncWorker_47) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:16 ERROR (SyncWorker_47) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:17 ERROR (SyncWorker_47) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:17 ERROR (SyncWorker_47) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:18 ERROR (SyncWorker_47) [custom_components.ready4sky] unable to connect to device
2021-01-29 10:44:18 WARNING (SyncWorker_47) [custom_components.ready4sky] five attempts of modeFan failed
mavrikkk commented 3 years ago

Вы торопитесь ) Я ж параллельно правлю в реальном времени ) Поправил вам Фан под процент. По идее верхняя часть лога должна быть в норме. Посмотрите, есть ли какие другие изменения. Только попробуйте совсем удалить интеграцию, перегрузить HA, а потом заново поставить и настроить. Хвосты удалить

vrslev commented 3 years ago

Объект Fan теперь не добавляется.

2021-01-29 12:43:53 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry cb:77:d2:f5:ad:8c for fan
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 236, in async_setup
result = await component.async_setup_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/fan/__init__.py", line 100, in async_setup_entry
return await hass.data[DOMAIN].async_setup_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 146, in async_setup_entry
platform_type,
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/setup.py", line 298, in async_prepare_setup_platform
platform = integration.get_platform(domain)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/loader.py", line 424, in get_platform
cache[full_name] = self._import_platform(platform_name)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/loader.py", line 429, in _import_platform
return importlib.import_module(f"{self.pkg_path}.{platform_name}")
File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 724, in exec_module
File "<frozen importlib._bootstrap_external>", line 860, in get_code
File "<frozen importlib._bootstrap_external>", line 791, in source_to_code
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/homeassistant/.homeassistant/custom_components/ready4sky/fan.py", line 41
if self._kettler._mode = '00' or self._kettler._status == '00':
^
SyntaxError: invalid syntax
mavrikkk commented 3 years ago

очепятка ) обновляйте и пробуйте

vrslev commented 3 years ago
2021-01-29 13:07:57 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform ready4sky.fan: Platform not found (No module named 'homeassistant.util.percentage').
2021-01-29 13:08:46 ERROR (MainThread) [homeassistant.config_entries] Error unloading entry cb:77:d2:f5:ad:8c for fan
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/config_entries.py", line 321, in async_unload
result = await component.async_unload_entry(hass, self) # type: ignore
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/fan/__init__.py", line 105, in async_unload_entry
return await hass.data[DOMAIN].async_unload_entry(entry)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py", line 172, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
2021-01-29 13:09:36 ERROR (SyncWorker_26) [custom_components.ready4sky] unable to connect to device
2021-01-29 13:09:37 ERROR (SyncWorker_26) [custom_components.ready4sky] unable to connect to device
2021-01-29 13:09:37 ERROR (SyncWorker_26) [custom_components.ready4sky] unable to connect to device
2021-01-29 13:09:38 ERROR (SyncWorker_26) [custom_components.ready4sky] unable to connect to device
2021-01-29 13:09:38 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform ready4sky.fan: Platform not found (No module named 'homeassistant.util.percentage').
vrslev commented 3 years ago

Удалил, перезагрузился, добавил заново, теперь только одна ошибка: 2021-01-29 13:13:43 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform ready4sky.fan: Platform not found (No module named 'homeassistant.util.percentage').

mavrikkk commented 3 years ago

Ну это уже невесело.

Ибо это прямиком с официальной документации:

https://developers.home-assistant.io/docs/core/entity/fan/

Ваша же ссылка. Там описаны две встроенные функции для перевода строк в проценты и обратно. Подключаются через

from homeassistant.util.percentage import ordered_list_item_to_percentage, percentage_to_ordered_list_item

именно на эту строчку он и ругнулся...не видит модуля homeassistant.util.percentage