Obsługa MQTT na urządzeniach DIY

KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

Cześć,
przejrzałem tak wiele jak mi się udało i nie znalazłem odpowiedzi na moje pytania - toteż stworzyłem nowy temat.
Najpierw opiszę wyzwanie: mam spora ilość urządzeń i pomiędzy nimi zaimplementowaną logikę działania (np. wyłączanie lampy UV w przypadku gdy nie płynie woda). Opiera się to głównie na directlinkach. Ponieważ (ze względu na ilość urządzeń) dobiłem do limitu wywołań API (co rozumiem i szanuję - w końcu to otwarte rozwiązanie) i idąc śladem propozycji nie do odrzucenia, postanowiłem przejść na integracje po MQTT. I tu pojawiają się właściwe pytania:

1. Jak rozumiem Supla wysyła zdarzenia o wszystkich zarejestrowanych urządzeniach do mqtt Supli i można stamtąd podejrzeć stan, ew. dla niektórych zmieniać (jak - to wynika z analizy autodiscovery HA). Czy tak jest?

2. Jakie zatem znaczenie ma właczenie/wyłaczenie obsługi mqtt na urządzeniu w menu konfiguracyjnym? (Pojawia się taka sekcja, gdy dodajemy obiekt klasy Supla::Html::ProtocolParameters) Czy służy to jedynie do tego by sobie można było pobrać parametry połączenia jak ktoś poda? Chyba, że można podać lokalny broker mqtt do publikacji zdarzeń? (to wydaje mi się sprawdziłem i nie działa)

3. Czy jest jakieś wsparcie przez klasy Supla (Supla::Protocol::Mqtt) by subskrybować topici jakie chce się monitorować? (Klasa ta ma metody pure-virtual i jak rozumiem trzeba je zaimplementować w klasie pochodnej by działało?)

4. Czy może jednak nie ma wsparcia (a wspomniana wyżej klasa ma inne zadania - aczkolwiek nie widziałem odwołania do niej nigdzie z SuplaDevice) i trzeba oprogramować to samodzielnie korzystając z bibliotek typu PubSubClient? Czy "nie gryzie" się to z SuplaDevice? Na co należy zwracać uwagę?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Te klasy służą do publikowania do mqtt i do bycia sterowanym przez mqtt.

Mnie ma implementacji klienta mqtt na Arduino. Jest tylko na esp-idf przygotowane, bo to jest używane w gotowych urządzeniach.
Najlepsze suple dla Twojego domu :mrgreen:
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

Czyli zasadniczo trzeba oprogramować samemu i jak rozumiem "Protocol" można wywalić z konfiguracji?

A doświadczenia (bo odpowiadałeś (@klew) zapewne na zbliżone pytania) z używanymi bibliotekami i konflikty z SuplaDevica - głównie ESP8266 i ESP32? Czy są jakieś sprawdzone i nie blokujące się wzajemnie?
[email protected]
Posts: 1585
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

https://github.com/rkalwak/SuplaLvgl

To sobie popatrz jak zrobiłem nasłuch na Mqtt
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

[email protected] wrote: Sun Oct 19, 2025 4:00 pm https://github.com/rkalwak/SuplaLvgl

To sobie popatrz jak zrobiłem nasłuch na Mqtt
Dzięki, ciekawe, ale mnie nie o to chodzi. Ty zrobiłeś nasłuch na mqtt ale nie na urządzeniu Supla tylko "obok". Tu nie wystąpi choćby problem dzielenia tego samego połączenia wifi w dwu różnych bibliotekach działających na callbackach. Dlatego moje pytanie dotyczyło urządzenia, opartego na SuplaDevice, które nasłuchuje na mqtt i robi różne rzeczy w zależności od stanu. Przykładowo zawór nawadniania zamknie się jeśli czujnik deszczu wykryje deszcz (a nie są na tym samym urządzeniu - bo to jest proste).
[email protected]
Posts: 1585
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

KaDet wrote: Sun Oct 19, 2025 5:17 pm
[email protected] wrote: Sun Oct 19, 2025 4:00 pm https://github.com/rkalwak/SuplaLvgl

To sobie popatrz jak zrobiłem nasłuch na Mqtt
Dzięki, ciekawe, ale mnie nie o to chodzi. Ty zrobiłeś nasłuch na mqtt ale nie na urządzeniu Supla tylko "obok". Tu nie wystąpi choćby problem dzielenia tego samego połączenia wifi w dwu różnych bibliotekach działających na callbackach. Dlatego moje pytanie dotyczyło urządzenia, opartego na SuplaDevice, które nasłuchuje na mqtt i robi różne rzeczy w zależności od stanu. Przykładowo zawór nawadniania zamknie się jeśli czujnik deszczu wykryje deszcz (a nie są na tym samym urządzeniu - bo to jest proste).
na tyle na ile się nad tym zastanawiałem to zarówno biblioteka PubSubClient jak i SuplaDevice używaja tego samego WifiClientSecure, więc ja bym spróbował po prostu dodać klienta mqtt, próba wsadzenia klienta w bebechy Supli raczej niczego nie zmieni, bo i tak potrzebujesz biblioteki do Mqtt
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Hej, możesz też podejrzeć na moim githubie przykład esp32 lcd4”, czy jakoś tak się nazywa.
Urządzenie nasłuchuje mqtt i wysyła polecenia przez mqtt do kilku różnych esp32 z suplą device na pokładzie.

https://youtube.com/shorts/h2a9Vrdr-C4? ... ROX5Yj-IeX
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

SOYER wrote: Mon Oct 20, 2025 7:44 am Hej, możesz też podejrzeć na moim githubie przykład esp32 lcd4”, czy jakoś tak się nazywa.
Urządzenie nasłuchuje mqtt i wysyła polecenia przez mqtt do kilku różnych esp32 z suplą device na pokładzie.

https://youtube.com/shorts/h2a9Vrdr-C4? ... ROX5Yj-IeX
Cześć. Przejrzałem Twój kod, ale to także nie to czego szukam. Po analizie wychodzi mi, że Twój kod nasłuchuje na mqtt i wyświetla stan lub publikuje zdarzenie do mqtt w celu zmiany stanu, natomiast na panelu sama Supla nie działa. Dzięki w każdym razie za przykład - pomysł wykorzystam być może (choć wydaje się, że można użyć do tego HA)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Nie programowałem nigdy MQTT z Arduino, więc nie mam z tym żadnego doświadczenia. Ale to są dość proste biblioteki i mają przykłady.
W zasadzie do programu na SD możesz sobie dołożyć co chcesz, tylko pamiętaj o tym, aby:
1. Zarządzanie Wi-Fi zostawić SD
2. W iterate wstawiać metody nieblokujące - czyli odczytujesz czy coś przyszło z MQTT, ale nie czekasz na to.
Najlepsze suple dla Twojego domu :mrgreen:
brodaa
Posts: 21
Joined: Mon Nov 22, 2021 11:46 am

Post

Witam. Potrzebuję podpowiedzi w temacie sterowania termostatem przez MQTT. Mam taki topic:

supla/9ac0bbb2fad85a29d18d/devices/8445/channels/15970/set/mode

na który wysyłam payload w postaci string "auto" lub "heat" chcą uzyskać przełączanie termostatu z trybu "Program" na "Ręczny" i odwrotnie ale niestety nie uzyskuję oczekiwanego efektu.

Czy jestem w ogóle w stanie sterować tym parametrem przez MQTT? Jeśli tak to co robię nie tak?
You do not have the required permissions to view the files attached to this post.

Return to “Pomoc”