Wyświetlanie danych z Supli oraz sterowanie przełącznikami przez MQTT

[email protected]
Posts: 1585
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

Jak by ktoś był zainteresowany jak można pobierać dane z czujników podłączonych do Supli przez MQTT i wyświetlać je na ekranie 7' to zapraszam :)

Cel:
Chcę to sobie powiesić w domu przy wejściu aby sterować oświetleniem zewnętrznym i wewnętrznym garażu oraz by nie szukać pilotów do bram kiedy wychodzę z domu ;) A dodatkowo spojrzeć na warunki pogodowe na zewnątrz ;)

Sytuacja na ekranie jest mocno rozwojowa, wykres pokaże prognozę pogody ale pewnie go przerzucę na drugi ekran.
screen1.jpg
Ekran:
ESP32-8048S070C - dotykowe 7 cali 800x480, oparte o ESP32-S3, 16MB flash, 8MB PSRAM, slot na kartę i parę innych podstawowych wyprowadzeń.

Oprogramowanie:
LVGL 8.3 do budowanie interfejsu użytkownika w SquareLine studio, ostatnia wersja boarda dla esp32-s3-devkitc-1, biblioteka PubSubClient do obsługi MQTT. Budowane w VS Code z Platform.io

Źródła poniżej, projekt żyje, bo jeszcze nie wszystko skończyłem, więc na dzień dzisiejszy się kompilowało i uruchamiało :D

https://github.com/rkalwak/SuplaLvgl
You do not have the required permissions to view the files attached to this post.
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dzięki, mam co analizować do końca roku;)
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

Elegancko, LVGL robi robotę, zwłaszcza że zdjęcia ekranu nigdy nie oddają tego jak to wygląda na żywo.
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

[email protected] wrote: Sat Dec 21, 2024 4:58 pm Jak by ktoś był zainteresowany jak można pobierać dane z czujników podłączonych do Supli przez MQTT i wyświetlać je na ekranie 7' to zapraszam :)

Cel:
Chcę to sobie powiesić w domu przy wejściu aby sterować oświetleniem zewnętrznym i wewnętrznym garażu oraz by nie szukać pilotów do bram kiedy wychodzę z domu ;) A dodatkowo spojrzeć na warunki pogodowe na zewnątrz ;)

Sytuacja na ekranie jest mocno rozwojowa, wykres pokaże prognozę pogody ale pewnie go przerzucę na drugi ekran.

screen1.jpg

Ekran:
ESP32-8048S070C - dotykowe 7 cali 800x480, oparte o ESP32-S3, 16MB flash, 8MB PSRAM, slot na kartę i parę innych podstawowych wyprowadzeń.

Oprogramowanie:
LVGL 8.3 do budowanie interfejsu użytkownika w SquareLine studio, ostatnia wersja boarda dla esp32-s3-devkitc-1, biblioteka PubSubClient do obsługi MQTT. Budowane w VS Code z Platform.io

Źródła poniżej, projekt żyje, bo jeszcze nie wszystko skończyłem, więc na dzień dzisiejszy się kompilowało i uruchamiało :D

https://github.com/rkalwak/SuplaLvgl
Przyjacielu, mam na Serialu:

Code: Select all

19:29:04.262 -> ......Attempting MQTT connection...connected
Teraz,
rozumiem, że kluczowa(?) jest linijka:
client.subscribe();
żeby odebrać coś z Supli, lub:
client.publish();
żeby coś do supli wysłać.
Ja oglądałem Twojego githuba, ale mój poziom ogarniania jest taki sobie.
Jakbyś mógł tak mi napisać, żebym wiedział o co chodzi.
jak napisać funkcję, którą będziemy mogli odpalić w loop i która będzie czekać na konkretne dane np. o stanie krańcówki.
Lub funkcję którą będziemy wywoływać po otrzymaniu eventa z lvgl i ustawiać coś w supli.
Generalnie chodzi mi o argumenty ww funcji.
Tak patrzę na to czym pluje mqtt explorer i nic z tego nie rozumiem;)
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
[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/bl ... n.cpp#L173

https://github.com/rkalwak/SuplaLvgl/bl ... n.cpp#L191

https://github.com/rkalwak/SuplaLvgl/bl ... llback.cpp

Z telefonu pisze także bez szczegółów .

Tak jak napisałeś , musisz uzyc subscribe podając nazwę topica

To pierwsze to metoda, którą trzeba zaimplementować żeby dostać wartości z MQTT , musi być podpieta w drugim linku , w trzecim ja sobie to wrzuciłem do innej klasy aby pożenić wartości z wyświetlaczem , ale można to wrzucić w main.cpp

Haczyk polega na tym że w jednej metodzie będzie kilka topicow jak się chce dostać wiele wartości.

Nic nie idzie do loop , wszystko to są callback - od mqtt ,albo event handler - od lvgl.

https://github.com/rkalwak/SuplaLvgl/bl ... n.cpp#L197
To jest metoda podpieta jako click na przycisku
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dziękuję, akurat bardziej mi chodziło o to skąd wziąć te topiki ale ogarnąłem temat. MQTT explorer jest tutaj nieodzowną pomocą.
Potrafię już pobierać dane z czujnika i sterować przekaźnikiem przy pomocy MQTT.
Teraz muszę to pożenić z eez studio.
Dzięki jeszcze raz.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

@[email protected] jak pewnie widziałeś poradziłem sobie i z mqtt i z wyświetlaczem. Z jednym sobie nie umiem poradzić. Wstawianie obrazków. Wiecznie jakiś problem, czy to z png decoderem, czy w czasie kompilacji, długo by pisać.
Mógłbyś jakoś mi pomóc? Napisać po kolei co mam zrobić.
Ja generalnie działam na EEZ Studio, ale "z ręki" w kodzie też penie można obrazki dodać...
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
[email protected]
Posts: 1585
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

SOYER wrote: Sun Jan 12, 2025 8:11 pm @[email protected] jak pewnie widziałeś poradziłem sobie i z mqtt i z wyświetlaczem. Z jednym sobie nie umiem poradzić. Wstawianie obrazków. Wiecznie jakiś problem, czy to z png decoderem, czy w czasie kompilacji, długo by pisać.
Mógłbyś jakoś mi pomóc? Napisać po kolei co mam zrobić.
Ja generalnie działam na EEZ Studio, ale "z ręki" w kodzie też penie można obrazki dodać...
W EEZ Studio nie próbowałem, ale SquareLine Studio po prostu pozwala Ci wybrać plik, bez żadnych konwersji, zobacz sobie najpierw z jakąś prostą ikonką to będziesz wiedział czy problem jest z typem plików czy zawartością. Ja swoje wstawiałem png.
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

W eez studio też niby tylko wybieramy plik graficzny, ale w kompilacji mam ciągle problemy na poziomie tych linijek(wklejone akurat z Twojego kodu, ale u mnie w tym miejscu pokazuje problemy):

Code: Select all

const lv_img_dsc_t ui_img_1813840028 = {
    .header.always_zero = 0,
    .header.w = 32,
    .header.h = 32,
    .data_size = sizeof(ui_img_1813840028_data),
    .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
    .data = ui_img_1813840028_data
};
W lvgl są jakieś png decodery , pierdy, merdy, że już się w tym gubię. Też mam wersję 8.3, a ciągle coś mu nie pasuje.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
[email protected]
Posts: 1585
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

SOYER wrote: Sun Jan 12, 2025 8:23 pm W eez studio też niby tylko wybieramy plik graficzny, ale w kompilacji mam ciągle problemy na poziomie tych linijek(wklejone akurat z Twojego kodu, ale u mnie w tym miejscu pokazuje problemy):

Code: Select all

const lv_img_dsc_t ui_img_1813840028 = {
    .header.always_zero = 0,
    .header.w = 32,
    .header.h = 32,
    .data_size = sizeof(ui_img_1813840028_data),
    .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
    .data = ui_img_1813840028_data
};
W lvgl są jakieś png decodery , pierdy, merdy, że już się w tym gubię. Też mam wersję 8.3, a ciągle coś mu nie pasuje.
Zobacz jakąś przeźroczystą ikonkę na start to będzie wiadomo z czym ma problem.

Return to “Projekty użytkowników”