Skip to content
New issue

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

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

Already on GitHub? # to your account

Проблема "устройство сначала должно быть включено" при использовании интеграции кондиционеров Haier #561

Closed
forester62 opened this issue Oct 20, 2024 · 18 comments
Assignees
Labels
bug Something isn't working
Milestone

Comments

@forester62
Copy link

forester62 commented Oct 20, 2024

Устройства нормально залетели в HA (AS07TT5HRA и AS09TT5HRA), но нормально использовать интеграцию было нельзя:
при попытке сразу включить какой-нибудь режим вылетала ошибка AssertionError: {'request_id': '5e2210dc-653f-42d8-ae06-433c6bc6b2ad', 'status': 'error', 'code': 'DEVICE_OFF', 'message': 'Сначала нужно включить устройство'}, устройство переходило в нужный режим, но потом отваливалось в оффлайн в умном доме яндекса и в HA.

В логах было такое
logs.txt

В итоге чатгпт предложил такой рабочий вариант

async def async_set_hvac_mode(self, hvac_mode: HVACMode):    
  # Если режим выключен, выключаем устройство
      if hvac_mode == HVACMode.OFF:
          await self.quasar.device_action(self.device, "on", False)
          self._attr_hvac_mode = HVACMode.OFF  # Явно обновляем состояние
          self._async_write_ha_state()  # Обновляем состояние в Home Assistant
          return
      
      # Если устройство выключено, включаем его
      if self._attr_hvac_mode == HVACMode.OFF:
          await self.quasar.device_action(self.device, "on", True)
          await asyncio.sleep(2)  # Ждем, пока устройство включится
      
      # Устанавливаем требуемый режим
      await self.quasar.device_action(self.device, self.hvac_instance, str(hvac_mode))
  
      # Обновляем состояние после изменения режима
      self._attr_hvac_mode = hvac_mode
      self._async_write_ha_state()  # Обновляем состояние в Home Assistant
@forester62 forester62 changed the title Интеграция кондиционеров Haier Проблема "устройство сначала должно быть включено" при использовании интеграции кондиционеров Haier Oct 20, 2024
@andrewindXXL
Copy link

Здравствуйте! Аналогичная история. Кондиционеры AS25PHP3HRA и AS20PHP3HRA.
Где нужно прописать данный код?

@AlexxIT AlexxIT added the question Further information is requested label Nov 20, 2024
@AlexxIT
Copy link
Owner

AlexxIT commented Nov 20, 2024

Покажите диагностику устройства

@andrewindXXL
Copy link

yandex_station-01JCJ39NZ78QRXGKWGHGWHCSPM-Кондиционер-24e81da3d88a589035856ae3060962c5.json

Прописал предлагаемый выше код в climate.py и все заработало.

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 20, 2024

Ну сейчас интеграция делает почти тоже самое. Только sleep нету. Не знаю, насколько 2 секунды целесообразно.

Код с слепой установкой состояния устройства я добалять не буду. Это совсем неправильный подход.
Устройство должно само сообщить своё новое состояние. Иначе интерфейс может не соответствовать фактическому состоянию устройства.

@AlexxIT AlexxIT self-assigned this Nov 20, 2024
@andrewindXXL
Copy link

Как скажете, но если вернуть код обратно, то после включения кондиционера автоматизацией, он отваливается в УДЯ и HA. Может, это только Haier касается, но тем не менее...
log1.txt
log2.txt

@AlexxIT AlexxIT added bug Something isn't working and removed question Further information is requested labels Nov 20, 2024
@AlexxIT AlexxIT added this to the v3.16.1 milestone Nov 20, 2024
@AlexxIT
Copy link
Owner

AlexxIT commented Nov 21, 2024

@AlexxIT AlexxIT closed this as completed Nov 21, 2024
@andrewindXXL
Copy link

Увы, с Haier не работает. Устройство включается и отваливается.
log1a.txt
log2a.txt

@AlexxIT AlexxIT reopened this Nov 22, 2024
@AlexxIT AlexxIT removed this from the v3.16.1 milestone Nov 22, 2024
@AlexxIT
Copy link
Owner

AlexxIT commented Nov 22, 2024

Ох и проблемный кондиционер. Потому что он падает уже на второй команде установки режима.
Там сейчас так - включить режим, если падает - включить кондиционер, подождать и снова включить режим.

AlexxIT added a commit that referenced this issue Nov 22, 2024
@AlexxIT AlexxIT added this to the v3.17.1 milestone Nov 22, 2024
@AlexxIT
Copy link
Owner

AlexxIT commented Nov 22, 2024

Попробуйте последнюю мастер-версию

@andrewindXXL
Copy link

Я пробовал на 3.17.0 (последние логи с нее). Есть еще какая-то? Я тут не совсем все понимаю. Недавно пользуюсь.

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 22, 2024

10 минут назад был фикс. Можете или скачать репозиторий вручную. Или обновить только один файл - climate.py

@andrewindXXL
Copy link

Сегодня все отработало без ошибок! Кондиционер не отвалился!

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 23, 2024

Сегодня это с последними обновлениями из репозитория? Можно релизить?

@andrewindXXL
Copy link

andrewindXXL commented Nov 23, 2024

Да, первый раз. А вечером - опять ошибка (( На этот раз вообще не включился.
log3.txt

И теперь, чтобы включить кондиционер из панели HA нужно нажать на режим (например, обогрев). А просто кнопкой on/off он не включается.

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 24, 2024

Ошибка 403 это ошибка авторизации. Не знаю, откуда она тут взялась, но непосредственно с управлением кондиционером она не связана

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 24, 2024

@AlexxIT AlexxIT closed this as completed Nov 24, 2024
@andrewindXXL
Copy link

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

@AlexxIT
Copy link
Owner

AlexxIT commented Nov 25, 2024

Для таких проблемных устройств есть сервис - homeassistant.update_entity.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants