Modułu Shelly 2.5 prawdopodobnie nikomu, kto choć trochę interesuje się tematem automatyki domowej, nie trzeba przedstawiać. Shelly 2.5 to popularny moduł przekaźników Wi-Fi znany ze swojego kompaktowego rozmiaru. Za pomocą niego będziesz mógł bezprzewodowo sterować zarówno dwoma źródłami światła, jak i roletą elektryczną. W tym artykule przedstawię sposób konfiguracji urządzenia, aby działało jako klient MQTT, oraz pokażę, jak dodać je do systemu Home Assistant.

Porównanie rozmiarów przekaźników Wi-Fi, od lewej: Shelly 2.5, Zamel Supla ROW-02, Xiaomi Aqara Relay

zamel_supla_porownanie

Dlaczego MQTT?

Jakiś czas temu testowałem inny moduł przekaźników – Zamel Supla ROW-02. Moduł ten wciąż posiadam i korzystam z niego. Podłączony do darmowej chmury Supli, na sterowanie z dedykowanej aplikacji na Androida oraz z poziomu Home Assistant reaguje od razu. Również stany w aplikacji mobilnej zmieniają się niezwłocznie po użyciu włącznika na ścianie. Problem występuje jedynie w aktualizowaniu stanów w Home Assistant – ma opóźnienie od 5 do 20 sekund po skorzystaniu z włącznika na ścianie.

Być może zainstalowanie serwera Supli na komputerze przyspieszyłoby reakcję. Być może skorzystanie z eksperymentalnego mostka Supla <-> MQTT też dałoby pozytywny efekt (wątek na forum Supli). Można próbować różnych metod, ale ja lubię proste i niezawodne rozwiązania. Shelly 2.5 bez instalowania dodatkowego oprogramowania daje bardzo duże możliwości konfiguracyjne, nie tylko dotyczące wykorzystywanego protokołu komunikacyjnego w celu integracji z różnymi systemami, ale także związane z zachowaniem się modułu, np. czy chcemy użyć włączników ściennych monostabilnych, czy bistabilnych lub do jakich stanów mają powracać kanały modułu po pojawieniu się zasilania. Jedną z opcji wbudowanego oprogramowania Shelly 2.5 jest możliwość skonfigurowania Shelly jako klienta MQTT.

Rozwiązanie to posiada dwie ważne zalety:

  • natychmiastowa reakcja Home Assistant na zmianę stanu modułu,
  • uniezależniamy się od chmury producenta i dostępu do Internetu.

Czym jest MQTT?

Krótko wyjaśnię, na czym polega koncepcja MQTT. Jest to lekki protokół transmisji danych. Klienci łączą się z serwerem MQTT (inaczej brokerem MQTT) i subskrybują pewien temat lub publikują w nim informacje. Po opublikowaniu nowej informacji w temacie, klienci, którzy subskrybują ten temat, zostają o tym poinformowani. Jednym z popularnych brokerów MQTT, zintegrowanym z Home Assistant, jest “Mosquitto” (GitHub).

Metody sterowania Shelly 2.5:

  • Chmura Shelly;
  • Zapytania HTTP (REST);
  • Protokół MQTT;
  • Protokół CoIoT.

Instalację brokera MQTT opiszę w innym artykule, ale jest ona bardzo prosta i sprowadza się do zainstalowania Mosquito brokera z Supervisor->ADD-ON STORE w naszym Home Assistant, konfiguracji dodatku (ja zostawiłem wartości domyślne) i włączenia brokera. Poza tym powinniśmy mieć utworzonego dodatkowego użytkownika o nazwie np. “mqtt” w Konfiguracja->Użytkownicy. Podamy jego dane podczas konfiguracji Shelly 2.5. Mosquito broker, zainstalowany jako dodatek Home Assistant, widzi utworzonych w HA użytkowników. W dalszej części zakładam, że mamy już skonfigurowany Mosquitto broker.

Przykładowy schemat systemu MQTT

mqtt schemat

Konfiguracja sprzętu

  • Podłączamy Shelly 2.5 zgodnie ze schematem elektrycznym. W naszym wypadku to będzie górny, lewy schemat. Jeśli nie był wcześniej konfigurowany, to czerwona dioda pod przyciskiem RESET powinna migać. Jeśli nie miga, należy przytrzymać przycisk RESET przez 5 sekund.

Schematy połączeń elektrycznych dla Shelly 2.5

  • Wyszukujemy na komputerze nowej niezabezpieczonej sieci Wi-Fi o nazwie zaczynającej się od “shellyswitch…” i łączymy się z nią.
  • Otwieramy przeglądarkę internetową i wchodzimy na stronę konfiguracyjną naszego Shelly http://192.168.33.1
  • Przechodzimy kolejno do Internet & Security -> WIFI MODE – CLIENT, aktywujemy “Connect the Shelly device to an existing WiFi Network” i wpisujemy dane sieci naszego routera (koniecznie podsieci o częstotliwości 2,4 GHz).
  • Aby urządzenie zawsze otrzymywało ten sam adres IP w siedzi lokalnej, należy zaznaczyć “Set static IP address” i wypełnić pola. Należy jednak wcześniej sprawdzić na stronie konfiguracyjnej routera, który adres IP jest jeszcze dostępny. Załóżmy, że ustawiliśmy adres: 192.168.1.60.
  • Po zapisaniu zmian Shelly 2.5 już nie będzie dostępne pod adresem http://192.168.33.1. Sieć WiFi, z której tymczasowo korzystaliśmy, także zniknie. Teraz należy wpisać w przeglądarce internetowej wcześniej ustawiony adres IP. W naszym przypadku http://192.168.1.60
  • Następnie należy przeprowadzić aktualizację oprogramowania Shelly 2.5.
  • Po aktualizacji upewniamy się, że mamy Shelly skonfigurowany jako przekaźnik.
  • Na koniec konfigurujemy klienta MQTT zgodnie z obrazkami poniżej. Jeżeli mamy zainstalowanego Mosquitto brokera w Home Assistant, to jego adres będzie: [adres_lokalny_IP_Home_Assistant]:1883 a Username i Password, to wcześniej utworzony w Home Assistant użytkownik w Konfiguracja->Użytkownicy. Komunikacja przez port 1883 jest niezabezpieczona, więc możemy z niego korzystać tylko, jeśli urządzenia i broker znajdują się w tej samej sieci lokalnej.
  • Jako ciekawostkę wrzucam zdjęcie z dodatkowych ustawień Shelly 2.5.

Dzięki wysyłaniu zapytań URL można uzależnić 2 urządzenia Shelly bez dodatkowych systemów tj. Home Assistant

Zabezpieczenie wyłączające przekaźnik po przekroczeniu zadanej mocy

Ogromna liczba możliwych konfiguracji przycisków i zachowania się modułu

Konfiguracja Home Assistant

W pliku configuration.yaml należy dodać następujący kod:

switch:
# Dla kanału nr 1
  - platform: mqtt
    name: "Kitchen Switch"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/0"
    command_topic: "shellies/shellyswitch25-98F4ABF31960/relay/0/command"
    payload_on: "on"
    payload_off: "off"
    retain: false

# Dla kanału nr 2
  - platform: mqtt
    name: "Hall Switch"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/1"
    command_topic: "shellies/shellyswitch25-98F4ABF31960/relay/1/command"
    payload_on: "on"
    payload_off: "off"
    retain: false

Można także dodać czujniki zbierające dane dotyczące zużycia energii:

sensor:

# Moc i zużycie energii dla kanału nr 1
  - platform: mqtt
    name: "Kitchen Power"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/0/power"
    unit_of_measurement: "Watts"    
  - platform: mqtt
    name: "Kitchen Power Consumption"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/0/energy" 
    unit_of_measurement: "10 * Wh"
    
# Moc i zużycie energii dla kanału nr 2
  - platform: mqtt
    name: "Hall Power"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/1/power"
    unit_of_measurement: "Watts"    
  - platform: mqtt
    name: "Hall Power Consumption"
    state_topic: "shellies/shellyswitch25-98F4ABF31960/relay/1/energy" 
    unit_of_measurement: "10 * Wh"

Niestety zużycie energii liczone jest w śmiesznej jednostce [10 * Wh]. Dlatego ja utworzyłem sobie dodatkowe sensory, przeliczające te wartości na [kWh]:

sensor:

  - platform: template
    sensors:
      kitchen_power_consumption_kwh:
        friendly_name: "Kitchen Power Consumption kWh"
        unit_of_measurement: 'kWh'
        value_template: "{{ states('sensor.kitchen_power_consumption')|int / 10000 }}"

      hall_power_consumption_kwh:
        friendly_name: "Hall Power Consumption kWh"
        unit_of_measurement: 'kWh'
        value_template: "{{ states('sensor.hall_power_consumption')|int / 10000 }}"

Jeśli potrzebujemy mieć w HA oświetlenie zamiast przełączników, wystarczy dodać jeszcze:

light:
  - platform: switch
    name: Kitchen Light
    entity_id: switch.kitchen_switch
  - platform: switch
    name: Hall Light
    entity_id: switch.hall_switch

Bardzo mi się spodobały możliwości konfiguracyjne Shelly 2.5. Za niedługo pokażę, jak wykonać analogiczną procedurę, ale używając modułu do sterowania roletami elektrycznymi. A także spróbuję wykonać suwak, którym będziemy mogli dowolnie sterować pozycją rolet.


Fascynat nowych technologii, któremu pomysły po prostu nigdy się nie kończą! Ciągle odkrywa nowe sprzęty do przetestowania, projektuje smart rozwiązania i sam je buduje. Człowiek orkiestra, który dodatkowo świetnie tańczy! Ps. to on odkrył, jak się porozumieć z chińskim budzikiem, więc szacunek ;)

Polska grupa Smart Home by SmartMe

Polska grupa Xiaomi by SmartMe

Promocje SmartMe

Powiązane posty

4 myśli na “Shelly 2.5 jako klient MQTT w Home Assistant

  1. Martinezbb pisze:

    Poradnik super wszystko działa. Jestem początkujący w kwestii Home Assistant, stąd moje może głupie pytanie, a jak obsłużyć drugi i trzeci moduł shelly, co i gdzie należy dodać?

    1. Krzysztof Surma pisze:

      W przypadku urządzeń pod mqtt musimy tylko ustawić różne tematy. Urządzenia są widoczne w konfiguracja/urządzenia i tam HA pokazuje które działają pod mqtt. Jeśli dodajesz je jak Michal w pliku yaml to tak jak w przykładzie o kanałach przycisku na samym początku bo każdy przycisk jest traktowany jak inne urządzenie.

      1. Martinezbb pisze:

        Udało się to ogarnąć, dzięki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *