ESPHome nie działa mDNS

Zrobiłem swoje pierwsze urządzenie w ESPHome (odczyt wodomierza - nieważne).
Zostało wykryte przez HA i encje się dodały.
Chciałem obserwować logi zdalnie i otrzymuję:

INFO ESPHome 2023.10.4
INFO Reading configuration /config/licznikwody.yaml...
INFO Detected timezone 'Etc/UTC'
INFO Starting log output from licznikwody.local using esphome API
WARNING Can't connect to ESPHome API for licznikwody.local: Error resolving IP address: [Errno -2] Name or service not known (APIConnectionError)
INFO Trying to connect to licznikwody.local in the background

Nie działa również OTA , programować i oglądać logi mogę tylko gdy ESP podłączony jest po USB.

  1. Sieć oparta na mikrotik - który podobno nie obsługuje mDNS.
  2. HA zainatalowany w QNAP docker
  3. ESPHome również jako osobny docker za NAT
  4. Moduł pobiera adres z DHCP.

Może ktoś będzie wiedział co poprawić? Długo się opierałem przed ESPHome a tu na dzień dobry taki afront :slight_smile:

P.S. Ręczne ustawie IP częściowo rozwiązuje problem. Choć w menadżerze jest “OFFLINE” programować się daje i logi widać.

# Enable Home Assistant API
api:
  encryption:
    key: "9p2efbtoh/7izZ93LRVsgSXsL1JAoP07YQeoyATI7IE="

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  fast_connect: true
  reboot_timeout: 10min
#  static IP configuration (instead of data from the secret file)
#  ssid: "MY_WIFI"
#  password: "0123456789"
#  reboot_timeout: 10min
#  manual_ip:
#    static_ip: 192.168.1.99
#    gateway: 192.168.1.1
#    subnet: 255.255.255.0
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "WMBUS Reader - Fallback Hotspot"
    password: "12345678"

#your mqtt parameters
#mqtt:
#  broker: 10.10.10.10  
#  port: 1883
#  username: username 
#  password: password 

captive_portal:

web_server: 
  port: 80

Działa na MT bez problemu

@artpc… zasadniczo to moja konfiguracja niczym się nie różniła.
Gdybym od razu dodał web_server: to nawet nie zauważyłbym problemy.
Jednak cały czas w dashboar - ESPHome mam.
esphome
z tego powodu bez web_serwer nie podziałasz zdalnie

if for example the home network doesn’t allow for .local addresses. When a manual IP is in your configuration

Sprawdź czy u Ciebie rozwiązuje adresy .local ?

mówimy o localhost ?
Screenshot - 19.11.2023 , 22_00_15

nie …chodzi o mDNS - nazwaczujka.local

Screenshot - 19.11.2023 , 22_05_55

1 polubienie

WTF !? - nie rozkminię tego :frowning:
U mnie nie rozwiązuje nazw.
HA widzi moduł i encje.
Wszystkie adresy w sieci mam static DHCP, łatwiej mi wtedy zapanować nad całością .
Skoro to nie MT to może sposób instalacji ESPHome w dockerze.

Web masz dostępny?

Też tak mam.

Screenshot - 19.11.2023 , 22_34_17

Tak… i to częściowo załatwia problem ale to zabiera zasoby i sam wiesz gdy coś nie działa to dobrze byłoby wiedzieć :wink:

To nie rzutuje. Port 5353 musi być nieblokowany i dopuszczona transmisja multicast w sieci.

Od tego wyszedłem, poczytałem na forach i jak na razie piszą, że na MT się nie da…
…jak się nie da jak @artpc ma? :slight_smile:
Na razie dzięki, będę szukał dalej.

Mój MT 7.11.2 jak potrzebujesz sprawdzenia jakiś ustawień to pisz.

Jak masz te dwa ustawienia ?
multi
multi2


Drugi taki sam.

O ile pamiętam to ta usługa odpowiada za mDNS
Screenshot - 20.11.2023 , 01_25_13
Debian
avahi-daemon --check

Chyba ją doinstalowałem dawno temu w innym celu.

@RobinI30

1 polubienie

Już tłumaczę na moim przykładzie w takiej konfiguracji:

  • w sieci router brzegowy to Mikrotik, on rozdaje adresy przez DHCP (skonfigurowany DHCP Server z ustawieniem dla danej podsieci w ten sposób:

    image

  • w ESPHome dla takiej konfiguracji:

    #esphome-8090ec.yaml
    substitutions:
      device_name: "esphome-8090ec"      #change - device_name.local
      friendly_name: esp32-c3-test1      #change - informacja na dashboardzie w ESPHome (na device_name.local) i w HA, ma wplyw na postac encji 
      comment: "to jest comment: ESP32-C3 test 1"       #change - informacja na dashboardzie w ESPHome (na device_name.local)
    
     esphome:
       name: "$device_name"
       friendly_name: $friendly_name
       comment: $comment
    
    api:
      encryption:
        key: "c9AUsrQwmeZs1KeqaMJmFPWeeFqKquK64XtdLx1cJ94="
    
    web_server:
    

    w Dashboard ESPHome mam taki wynik:

    image

  • do urządzenia działa dostęp po IP i po URL:

  • po skonfigurowaniu modułu z ESPHome następuje automatyczne wykrycie ESPHome w HA i integracja jest zawsze po IP, widać to w HA w tym miejscu:

Mam nadzieję, że trochę pomogłem.

1 polubienie

Nie znam mikrotika (tzn. znam głównie ze słyszenia :P), ale znalazłem takie rozwiązanie dla tych którzy mają zaawansowane konfiguracje sieci

natomiast stawiam na to, że w prostych konfiguracjach sieci może pomóc podpowiedź z drugiego posta tam
https://www.reddit.com/r/mikrotik/comments/grk6ci/mikrotik_and_mdns/

1 polubienie

Samo dopisanie Domain:local nie załatwiło sprawy jednak porada

„multicast-helper=full”, pozwala połączyć się przez domenę .local i adresy są rozwiązywane.
Działa wszystko to co pokazał @macek jednak w Dashboard ESPHome czujnik jest OFFLINE - nie można programować i czytać logów.
Być może wynika to ze sposobu instalacji w kontenerze i brakuje przekierowania jakiś portów

Na tą chwilę działanie jest zadowalające i pozwoli mi uruchomić odczyt wodomierza (lub nie pozwoli :wink: ), bo jak na razie coś łapie ale nic nie dekoduje.
Temat zostawiam otwarty i na pewno do niego wrócę.
Podziękowania wszystkim za pomoc.

Jeśli chodzi o porty to OTA (i logi przesyłane kanałem OTA) pracują standardowo na porcie zależnym od rodziny MCU i jest to odpowiednio

3232 for the ESP32
8266 for the ESP8266
2040 for the RP2040

Więc sugeruję je spróbować przekierować 1:1 na nacie

Gdybyś miał zbrigdowaną sieć, a nie za NATem to jest szansa, że działałoby bez przekierowywania portów.

1 polubienie

Królu złoty !! :slight_smile: … niby się wie a czasami coś zaćmi.