ESPHome - dostęp WiFi

Mam problem z dostępem do sieci lub też zalogowaniem się ESPHome do mojej sieci (jednego z routerów/AP).
Obecnie posiadam kilka modułów z ESPHome i każdy z nich działa poprawnie, ale nie ostatni projekt.
Wygląda, że problem jest związany z dostępem do AP.
W domu posiadam 1 główny router sieciowy zaś pozostałe 2 są skonfigurowane jako AP. Wszystkie ESP działają w pobliżu głównego routera (łącznie z tym problematycznym). I tutaj doszukuję się problemów.
Zrobiłem diagnostykę sieci i widzę jak np telefon przełącza się pomiędzy AP, ale ESP nie chce się podłączyć do nowego/innego AP, który jest w pobliżu i wydaje się, że ESP szuka głównego routera do którego syganł jest za słaby.
Co trzeba zrobić? Jakieś pomysły? Szukam i nie mogę wyszukać rozwiązania.

Podłącz konsolę szeregową i pokaż logi

Wszędzie masz ten sam SSID i klucz?
czy kiedykolwiek ten moduł zadziałał?
czy jakieś moduły są identyczne z tym problematycznym?
czy próbowałeś skasować mu flash i zaprogramować ponownie?
próbowałeś kompilować firmware w starszej wersji ESPHome niż aktualna?

Log z ESP

Oraz Log z szeregowego:

Showing logs:
[17:11:50][I][logger:174]: Log initialized
[17:11:50][C][ota:379]: There have been 1 suspected unsuccessful boot attempts.
[17:11:50][I][app:029]: Running through setup()...
[17:11:50][C][dallas.sensor:032]: Setting up DallasComponent...
[17:11:50][E][dallas.sensor:200]: Reading scratchpad failed: reset
[17:11:50][E][dallas.sensor:200]: Reading scratchpad failed: reset
[17:11:50][C][wifi:037]: Setting up WiFi...
[17:11:50][D][wifi:382]: Starting scan...
[17:11:50][E][dallas.sensor:126]: Requesting conversion failed
[17:11:56][D][wifi:397]: Found networks:
[17:11:56][I][wifi:443]: - 'awist_3798' (50:C7:BF:0F:21:CB) ▂▄▆█
[17:11:56][D][wifi:444]:     Channel: 11
[17:11:56][D][wifi:445]:     RSSI: -49 dB
[17:11:56][I][wifi:443]: - 'awist_3798' (14:4D:67:3E:98:18) ▂▄▆█
[17:11:56][D][wifi:444]:     Channel: 9
[17:11:56][D][wifi:445]:     RSSI: -86 dB
[17:11:56][D][wifi:447]: - 'TP-LINK_Guest_21CC' (56:C7:BF:0F:21:CC) ▂▄▆█
[17:11:56][D][wifi:447]: - 'SMA3006836955' (90:E2:02:AE:A5:94) ▂▄▆█
[17:11:56][I][wifi:252]: WiFi Connecting to 'awist_3798'...
[17:12:00][I][wifi:515]: WiFi Connected!
[17:12:00][C][wifi:361]:   SSID: 'awist_3798'
[17:12:00][C][wifi:362]:   IP Address: 192.168.0.33
[17:12:00][C][wifi:364]:   BSSID: 50:C7:BF:0F:21:CB
[17:12:00][C][wifi:365]:   Hostname: 'rozdzp'
[17:12:00][C][wifi:369]:   Signal strength: -59 dB ▂▄▆█
[17:12:00][C][wifi:373]:   Channel: 11
[17:12:00][C][wifi:374]:   Subnet: 255.255.255.0
[17:12:00][C][wifi:375]:   Gateway: 192.168.0.1
[17:12:00][C][wifi:376]:   DNS1: 192.168.0.1
[17:12:00][C][wifi:377]:   DNS2: (IP unset)
[17:12:00][D][wifi:524]: Disabling AP...
[17:12:00][C][ota:029]: Over-The-Air Updates:
[17:12:00][C][ota:030]:   Address: rozdzp.local:8266
[17:12:00][C][ota:032]:   Using Password.
[17:12:00][C][api:023]: Setting up Home Assistant API server...
[17:12:00][I][app:060]: setup() finished successfully!
[17:12:00][I][app:102]: ESPHome version 2021.9.3 compiled on Oct 18 2021, 17:09:42
[17:12:00][C][wifi:501]: WiFi:
[17:12:00][C][wifi:361]:   SSID: 'awist_3798'
[17:12:00][C][wifi:362]:   IP Address: 192.168.0.33
[17:12:00][C][wifi:364]:   BSSID: 50:C7:BF:0F:21:CB
[17:12:00][C][wifi:365]:   Hostname: 'rozdzp'
[17:12:00][C][wifi:369]:   Signal strength: -59 dB ▂▄▆█
[17:12:00][C][wifi:373]:   Channel: 11
[17:12:00][C][wifi:374]:   Subnet: 255.255.255.0
[17:12:00][C][wifi:375]:   Gateway: 192.168.0.1
[17:12:00][C][wifi:376]:   DNS1: 192.168.0.1
[17:12:00][C][wifi:377]:   DNS2: (IP unset)
[17:12:00][C][logger:193]: Logger:
[17:12:00][C][logger:194]:   Level: DEBUG
[17:12:00][C][logger:195]:   Log Baud Rate: 115200
[17:12:00][C][logger:196]:   Hardware UART: UART0
[17:12:00][C][dallas.sensor:072]: DallasComponent:
[17:12:00][C][dallas.sensor:073]:   Pin: GPIO2 (Mode: OUTPUT)
[17:12:00][C][dallas.sensor:074]:   Update Interval: 30.0s
[17:12:00][W][dallas.sensor:077]:   Found no sensors!
[17:12:00][C][dallas.sensor:087]:   Device 'ZasilanieP'
[17:12:00][C][dallas.sensor:087]:     Device Class: 'temperature'
[17:12:00][C][dallas.sensor:087]:     State Class: 'measurement'
[17:12:00][C][dallas.sensor:087]:     Unit of Measurement: '°C'
[17:12:00][C][dallas.sensor:087]:     Accuracy Decimals: 1
[17:12:00][C][dallas.sensor:095]:     Address: 0xD304473B317D0028
[17:12:00][C][dallas.sensor:096]:     Resolution: 12
[17:12:00][C][dallas.sensor:087]:   Device 'PowrotP'
[17:12:00][C][dallas.sensor:087]:     Device Class: 'temperature'
[17:12:00][C][dallas.sensor:087]:     State Class: 'measurement'
[17:12:00][C][dallas.sensor:087]:     Unit of Measurement: '°C'
[17:12:00][C][dallas.sensor:087]:     Accuracy Decimals: 1
[17:12:00][C][dallas.sensor:095]:     Address: 0xF804473B358F0028
[17:12:00][C][dallas.sensor:096]:     Resolution: 12
[17:12:00][C][captive_portal:148]: Captive Portal:
[17:12:00][C][ota:029]: Over-The-Air Updates:
[17:12:00][C][ota:030]:   Address: rozdzp.local:8266
[17:12:00][C][ota:032]:   Using Password.
[17:12:00][C][api:135]: API Server:
[17:12:00][C][api:136]:   Address: rozdzp.local:6053
[17:12:00][C][api:140]:   Using noise encryption: NO

Odpowiadając na pytanie:
SSID oraz klucze są takie same.
Moduł działa poprawnie jak jest razem z innymi modułami tj w tej samej lokalizacji
Nie moduły nie są identyczne więc nie ma zakłóceń z innymi.
Tak próbowałem kasować wielokrotnie i programować ponownie.
Nie próbowałem komilować.

Kod:

esphome:
  name: rozdzp
  platform: ESP8266
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "...."

ota:
  password: "...."
# Example configuration entry

wifi:
  ssid: "awist_3798"
  password: "..."

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Rozdzp Fallback Hotspot"
    password: "....."

captive_portal:

dallas:
  - pin: D4
    update_interval: 30s

# Individual sensors
sensor:
  - platform: dallas
    address: 0xD304473B317D0028
    name: "ZasilanieP"
  - platform: dallas
    address: 0xF804473B358F0028
    name: "PowrotP"

Ten log jest za krótki i nie widzę w nim nic niepokojącego - przenieś sprzęt (ESP) w miejsce, gdzie masz problem i tam loguj, a najlepiej zanotuj moment występowania problemu - wtedy wystarczy fragment początkowy, gdzie mamy informacje o WiFi oraz fragment z czasu w okolicy momentu zdarzenia.

W kwestii konfiguracji Access Pointów - powinieneś zrobić porządek z kanałami - nie używaj wzajemnie zakłócających się kanałów (masz 9 i 11), albo użyj zestawu kanałów które nie zachodzą na siebie (czyli 1, 6 i 11) , albo ustaw wszystkie na jednym kanale (by słyszały siebie wzajemnie - to nie jest zalecane rozwiązanie, ale jest i tak lepsze od pracy na różnych zachodzących na siebie kanałach, gdy AP nie słyszą się nawzajem, bo nie pracują na tym samym kanale), optymalnie gdy ustawisz im szerokość 20MHz.

PS jeśli intensywnie nie korzystasz z sieci gościnnej na TP-linku to też ją wyłącz (przynajmniej na czas szukania problemu), a jak się sprawuje AP Zioncom (toto-link, oni niestety dobrym wsparciem swoich wypustów zdecydowanie nie grzeszą)?

Dziękuję za sugestie co do WiFi i konfiguracji AP.

Co do log to były robione w tym samym czasie w miejscu gdzie brak raportowania do HomeAssistant (screenshot w HASS ESPHome, log z szeregowego).
Jak widać z logu po porcie szeregowym połączenie się udało i podłączył się do sieci z adresem 192.168.0.33 i jak by z portu szeregowego wygląda jak by było OK.

Ale w tym samym czasie była próba podłączenie poprzez ESPHome log w Hass i kilkakrotnie była próba podłączenia się do ESP bez sukcesu ale widać, że ESP zalogował się do sieci.

Nie mam pojęcia co się dzieje nie tak.

Ponadto widać obie sieci ‘awist_3798’ gdzie do jednej z nich łączą się pozostałe ESP.
Czy może mieć to związek z kanałami o których pisałeś.

No nie do końca ten log jest w porządku, bo widać, że się ESP zrebootowało ale nie widać dlaczego (a czasem tak się dzieje gdy są problemy z siecią), ale jak wspomniałem wcześniej za mało danych aby próbować coś wnioskować, bo niemal wszystko inne wygląda OK

prawdę mówiąc nigdy nie próbowałem równocześnie pobrać logu poo WiFi i RSie więc nawet nie wiem czy to jest możliwe (a to co widać w logu jako próby OTA to pewnie właśnie tego skutek)

Skoro robiłeś to na miejscu, a siła sygnału tp-linka jest wystarczająca, to wyłącz na próbę totolinka (to jako jeden z dodatkowych testów)

Uporządkowałem sieci tj. częstotliwości oraz kanały (za co dziękuję), ale problem nie został dalej rozwiązany. Dalej pojawia się problem czego nie rozumiem bo widzie te same sieci i zawsze ma dostęp do co najmniej dwóch o różnej sile.

Prześledziłem logi po UART pomiędzy lokalizacją gdzie jest OK a lokalizacją gdzie nie działa.
Wszystko wygląda dobrze za wyjątkiem jednego fragmentu:

[21:06:16][D][api:095]: Accepted 192.168.0.28
[21:06:16][D][api.connection:727]: ESPHome Logs 2021.9.3 (192.168.0.28): Connected successfully

Jest to fragment który wskazuje na to że serwer HomeAssistant (192.168.0.28) zaakceptował komunikację i połączył się. W poprzednich wypadkach nie chce działać.
Zastanawiam się czy jak wymuszę ręcznie komunikację to będzie działać poprawnie tj. raportować informacje.

Znalazłem wydaje się przyczynę problemu.
Jak pisałem na wstępie posiadam 3 urządzenia WiFi, gdzie TotoLink jest routerem a pozostałe urządzenia pełnią funkcję AP. Router oraz 1 z pozostałych AP nie mają problemu z komunikacją z ESPHome, ale za to TP-Link ma z tym problem. Za każdym razem kiedy podłączy się do TP-Link wszystkie połączenia z ESP odrzuca, ale samo urządzenie przyłącza do sieci. Obecnie ręcznie wypusiłem, aby komunikował się z resztą przy czym to jest rozwiązanie doraźne i nie mam bladego pojęcia o co mu chodzi :frowning:

Zobacz logi na TP-Link szczególnie te od polaczenia do WIFI

Wygląda, że znalazłem rozwiązanie mojego problemu.

Jeśli chodzi o samo ESPHome, które posiadam i program jest poprawnie napisane, i dlatego logowało się do Routera oraz do jednego z AP.

Problem byl tylko z TP-Link działającym jako AP. Zgodnie z instrukcją od TP-Link, urządzenie zostało skonfigurowane i podłączenie jako AP w wersji modelu AP (wybieramy w ustawieniach). Ale co najważniejsze TP-Link z opcją AP podłaczany jest w WLAN do LAN routera.
Ta czynność powoduje, że ESP loguje się do sieci WiFi ale ponieważ AP jest na WLAN stawia go pod NAT i tym samym blokuje usługi wystawiane. Tym samym urządzenie nie może się zalogować do HomeAssistant.

Dla potomnych. Nawet jak macie AP ustawiane zgodnie z konfiguracją producenta i jest to rozwiązanie software należy pamietać, że port WAN mocno ogranicza pewne usługi.

1 Like

WLAN zazwyczaj jest spięty mostkiem z LAN i nie ma to nic wspólnego z NAT.

Być może instrukcja nakazywała podpiąć kabel w gniazdo LAN, bo:

W konsumenckich routerach zazwyczaj wystarcza ustawić IP LAN tak by nie powodował konfliktów i wyłączyć DHCP i uPNP, i już można tak skonfigurowany router WiFi podłączyć w charakterze AP+switch, ale tylko za pomocą jego portów LAN (port WAN MUSI pozostać niewykorzystany).

Jeśli chcesz mieć “pełnię władzy nad sprzętem” to możesz zmienić mu oprogramowanie na alternatywne i/lub otwartoźródłowe np. na openwrt (o ile istnieje na dany model - wtedy można mieć np. wszystkie porty switcha do wykorzystania jako switch spięty z LAN, a bez interfejsu WAN), robisz to jednak zawsze na swoją odpowiedzialność i zawsze najpierw musisz czytać dokumentację a potem działać (więc napiszę, że nie namawiam, choć być może istnieje taka alternatywa).

I to jest najprostszy sposób powiększania zasięgu Wi-Fi w domu (bez kombinowania z routingiem, NATem, itd.), oczywiście SSID i haslo muszą być takie same jak na pozostałych routerach z Wi-Fi.