Rozłączanie Home Assistant w ESPHome

Cześć mam problem z ESPHome i HomeAssistant
ESPHome zainstalowane na płytce Olimex ESP32-EVB do której mam podpięty moduł z 8 MCP23017

Założenie jest takie, że mam 64 wejścia i 64 wyjścia, gdy ilość we/wy w kodzie jest niska to wszystko działa fajnie, ale gdy do kodu dodam wszystkie we/wy to dzieją się takie rzeczy jak na logach poniżej:

[20:05:27][D][api.connection:159]: Home Assistant 2022.3.8 (::FFFF:C0A8:16F) requested disconnected
[20:05:27][D][api:102]: Accepted ::FFFF:C0A8:16F
[20:05:27][D][api.connection:827]: Home Assistant 2022.3.8 (::FFFF:C0A8:16F): Connected successfully
[20:05:32][D][api.connection:159]: Home Assistant 2022.3.8 (::FFFF:C0A8:16F) requested disconnected
[20:05:32][D][api:102]: Accepted ::FFFF:C0A8:16F
[20:05:32][D][api.connection:827]: Home Assistant 2022.3.8 (::FFFF:C0A8:16F): Connected successfully

Ja już zgłupiałem i nie znam rozwiązania tego problemu

Przykładowy kod (w sumie powielony po 64 razy + konfiguracja rolet):

switch:
  - platform: gpio
    name: "Kuchnia"
    id: swiatlo_kuchnia
    pin:
      mcp23xxx: mcp23017_wyjscia_0_15
      number: 0
      mode: OUTPUT
      inverted: false

binary_sensor:
  - platform: gpio
    name: "MCP23017 Pin #64"
    pin:
      mcp23xxx: mcp23017_wejscia_64_79
      number: 0
      mode: INPUT_PULLUP
      inverted: true
    on_press:
      then:
      - switch.toggle: swiatlo_kuchnia

Widziałem to już. Ale ja jestem podpięty po kablu, a nie po WiFI. Gdy się przepiąłem na WiFi i zrobiłem wszystko z wskazówkami z GH to było dokładnie to samo.

Tu nie chodzi o medium tylko o historię konfiguracji modułu w samym HA. Nie jest powiedziane co dokładnie powoduje przerwania w połączeniu do API.
Możesz jeszcze sprobować przejść na komunikację po MQTT.

W loga HA jest coś takiego:
Wątek z GH przejrzałem i nic nie znalazłem. Podpinałem sieć do płytki na różne sposoby (różne switche itp.), ale to nic nie dało Możliwe, że ESP nie ogarnia sieciowo tylu we/wy?

Logger: homeassistant.components.esphome
Source: components/esphome/__init__.py:290
Integration: ESPHome (documentation, issues)
First occurred: 11:49:50 (580 occurrences)
Last logged: 12:46:32

Error getting initial data for 192.168.1.241: Timeout waiting for response for <class 'api_pb2.ListEntitiesRequest'>

Kolejne co zauważyłem, to jak integracja nie jest dodana do HA to w logach ESPHome nie ma błędów.

Mam dokładnie ten sam problem, moduł Olimex ESP32 + ekspander 8xMCP23017 (od EasySwitch), wpięte po Ethernecie. Po restarcie ESP32 ciągła pętla Connected i Disconnected.

Sprawdziłem na 100% że ten disconnection inicjuje HA nie ESP (zmodyfikowałem bibloteki po stronie ESPHome). Podejrzewam, że przy połączeniu native po stronie Home Assistance jest timeout na odebranie z modułu ESP listy wszystkich encji. W przypadku gdy ta lista jest długa to ESP się “nie wyrabia” by całą długą listę przesłać do HA. HA uznaje zatem, że skoro nie dostał listy encji, to połączenie się nie udało i rozłącza połączenie z ESP. Potem ponowne połączenie, znowu ESP próbuje wysłać listę encji, ale za długo to trwa, więc HA rozłącza połączenie i tak w kółko.

Jestem już mocno zdeterminowany, próbowałem już prawie wszystkiego, a na forach lipa, bo zwykle tylko jedna rada: popraw sygnał wifi. Mam jeszcze jeden ostateczny test do zrobienia, czyli spróbować przejść na inny moduł ESP ( kupiłem u chińczyka WT32-ETH01 ) i sprawdzić czy to nie jest przypadkiem wina Olimexa.

Jak to nie pomoże, to niestety pozostaje tylko przepisać cały kod i przejść na komunikację MQTT.

Jest jeszcze oprogramowanie Tasmota, na ESPHome świat open source się nie kończy.
Tasmota śmiga po MQTT z HA. Nie doktoryzowałem się z obsługi expanderów pod Tasmota ale jest prawie wszystko w dokumentacji:

@welpl @NotteNick
Niezależnie od tego jak podejdziecie do rozwiązania problemu sugeruję założyć issue zarówno w projekcie ESPHome jak i HA, jeśli problem dotyczy timeoutów, to musi być rozwiązywalny (być może przez usunięcie błędów po stronie integracji lub w samym ESPHome).

1 Like