Urządzenie z ESPHome nie będzie już potrzebować Wi-Fi ani Ethernetu, żeby wyjść do sieci. 23 października 2026 do kodu ESPHome trafił nowy komponent modem, przewidziany na wydanie 2026.11. Zestawia on połączenie IP po PPP przez modem komórkowy podłączony do UART-u w ESP32. API, MQTT i aktualizacje OTA działają wtedy tak samo jak przez Wi-Fi. Zmiana czekała na scalenie od maja 2024 roku i zamyka cztery prośby o nową funkcję, z których najstarsza pochodzi z listopada 2019. Właściciele altan, działek, łodzi i innych miejsc bez domowej sieci czekali więc na to naprawdę długo.

Jakie modemy i jakie ograniczenia

Opcja model przyjmuje wartości BG96, SIM800, SIM7000, SIM7070, SIM7080, SIM7600, SIM7670 albo GENERIC. Ta ostatnia steruje modemem spoza listy za pomocą standardowych komend AT. Każdy modem, także ogólny, musi obsługiwać CMUX (3GPP TS 27.010). Komponent dzieli dzięki temu łącze na kanały, więc komendy AT można wysyłać także w trakcie przesyłania danych. Pod spodem pracuje biblioteka esp_modem 2.1.0 od Espressifa.

Najprostsza konfiguracja ma cztery wiersze: model, APN operatora oraz piny RX i TX. Jeśli dopiszesz rts_pin i cts_pin, włączysz sprzętową kontrolę przepływu.

Jest kilka ograniczeń:

  • Obsługiwane są tylko układy ESP32 ze środowiskiem ESP-IDF.
  • Komponentu modem nie da się użyć razem z ethernet ani captive_portal.
  • Komponent nie steruje pinem PWRKEY modemu. Jeśli płytka wymaga impulsu włączającego, ustaw enable_on_boot: false, podaj impuls w on_boot, a potem wywołaj modem.enable.
  • Odbiornik GNSS, zarządzanie zasilaniem i czujniki siły sygnału celowo pominięto, żeby pierwsza wersja była mała. Autor zapowiada, że mogą dojść później jako osobne platformy.

Home Assistant a NAT operatora

W większości sieci komórkowych urządzenie dostaje prywatny adres za NAT-em operatora, więc Home Assistant nie nawiąże z nim połączenia. Dokumentacja radzi użyć MQTT, bo wtedy to urządzenie łączy się z brokerem, albo natywnego API przez tunel WireGuard.

Karta SIM nie zablokuje się przez ponawianie

Kod PIN jest wysyłany najwyżej dwa razy, a licznik prób przetrwa ponowne uruchomienie. Przy złym PIN-ie modem po prostu się zatrzyma, zamiast zablokować kartę. Jeśli karta od razu odrzuci PIN, obie próby przepadają naraz i komponent zgłasza błąd, dopóki nie poprawisz pin_code. Zmiana pin_code zeruje licznik.

Gdy połączenie nie wróci w czasie ustawionym w reboot_timeout (domyślnie 10 minut), urządzenie uruchamia się ponownie. Wartość 0s wyłącza ten mechanizm. Oprócz akcji modem.enable, modem.disable i modem.send_at są wyzwalacze on_sync, on_connect i on_disconnect, warunki modem.connected i modem.enabled oraz czujnik tekstowy urc. Publikuje on komunikaty wysyłane przez modem z własnej inicjatywy, na przykład o zmianie rejestracji w sieci.

Komponent powinien trafić do ESPHome 2026.11. Jego dokumentacja jest już w gałęzi next dokumentacji ESPHome.