Własna konfiguracja wifi / clienta

marcin_p
Posts: 4
Joined: Mon Feb 12, 2024 3:07 pm

Post

Witam wszystkich,
mam pytanie, w jaki sposób sprawić, by biblioteka SuplaDevice łączyła się z internetem korzystając z już skonfigurowanego połączenia wifi (WiF.begin(...); WiF.config(...);) - chodzi o to że chcę samodzielnie zarządzać połączeniem, a nie robiła to biblioteka Supla?
Opcja nr 2 jeszcze lepsza, to jak wskazać bibliotece SuplaDevice by korzystała ze wskazanego, utworzonego uprzednio przez nas klienta (WiFiClient, TinyGsmClient itp.), nie wnikając w typ łącza?
User avatar
klew
Posts: 9728
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Trzeba by dodać instancję klasy dziedziczącej po Supła:: Network i implementującej kilka metod z tej klasy. Tutaj kluczowa byłaby metoda isReady() , która gdy zwraca true, to biblioteka próbuje się łączyć.

Natomiast klient sieciowy jest chyba pobierany przez jakąś pseudo fabrykę, się to było zrobione chyba dla płytki, a nie dla interfejsu sieciowego.

Ogólnie mam w planach niedługo tam zrobić porządek.
Tymczasem możesz przejrzeć jak jest zrobiona obsługa LAN u lukfuda albo w GG. Myślę że to będzie podobne zagadnienie
Kiedy będzie Supla Offline Party / SOP#2025 ?
marcin_p
Posts: 4
Joined: Mon Feb 12, 2024 3:07 pm

Post

Dzięki, za szybką odpowiedź,
wrócę tu jak coś uda mi się wykombinować.
marcin_p
Posts: 4
Joined: Mon Feb 12, 2024 3:07 pm

Post

Witam ponownie, udało mi się znaleźć rozwiązanie podanych powyżej problemów, zamieszczę więc opis, może komuś się przyda. W obu przypadkach konieczna była modyfikacja/zamiana plików biblioteki (przynajmniej mi nie udało się bez tego). Dotyczy biblioteki w wersji 24.09 i ESP32 (v2.0.17).

1. W pierwszym przypadku chodzi o własne zarządzanie połączeniem wifi, tak by nie robiła tego biblioteka Supli, ale korzystała z niego.
W katalogu biblioteki \supla\network umieszczamy zmodyfikowany plik esp_wifi_mod.h. Dodajemy go do programu i tworzymy instancję sieci z pustymi danymi jak poniżej:
#include <SuplaDevice.h>
#include <supla/network/esp_wifi_mod.h>
Supla::ESPWifi esp_wifi("","");
Następnie w setupie naszego programu najpierw konfigurujemy samodzielnie połączenie wifi, a nastębnie wywołujemy SuplaDevice.begin( ... ). Sprawdzone działa 100%.

2. Drugi problem był bardziej skomplikowany, chodzi o połączenie Supli za pomocą modemu GPRS. Używam płytki TTGO T-Call (ESP32 + SIM800L), którą do tego celu polecam. Do obsługi modemu używam bibliteki TinyGSM, której zmodyfikowaną wersję 0.12.0 dołączam - uzupełniłem ją o funkcje związane z odbieraniem SMSów. Do samego połączenia Supli można użyć oryginalnej biblioteki TinyGSM.
Aby biblioteka Supli łączyła się przez GPRS potrzebne są 2 przerobione pliki:
1. W katalogu biblioteki \supla\network umieszczamy zmodyfikowany plik esp_gprs.h.
2. W katalogu biblioteki \supla\ usuwamy plik arduino_esp_platform.cpp a umieszczamy zmodyfikowany arduino_esp_platform.h (musi być z rozszerzeniem .h)
Początek naszego programu musi wyglądać tak:

#include <TinyGsmClient.h>
TinyGsm modem(Serial1); // musi być nazwa 'modem'
TinyGsmClient *suplaClient = new TinyGsmClient(modem); // wskaźnik do klienta z którego korzysta Supla w zmodyfikowanym pliku arduino_esp_platform.h

#define SUPLA_GPRS // musi być dla poprawnego pozyskania IP

#include <SuplaDevice.h>
#include <supla/network/esp_gprs.h>
#include <supla/arduino_esp_platform.h> // trzeba dodać przerobiony plik

Supla::GPRS gprs(NULL);

Dalej reszta programu normalnie. Konfiguraję połączenia GPRS wykonałem zanim wywołałem SuplaDevice.begin( ... ), ale chyba nie jest to konieczne.
Działa niezawodnie i stabilnie, nie potwierdzam opinii że zrywa połączenie z Suplą, gubi dane itp.
You do not have the required permissions to view the files attached to this post.
SOYER
Posts: 1066
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry

Post

Dobra robota👍
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
User avatar
Zibi_007
Posts: 191
Joined: Tue Oct 31, 2023 10:06 pm

Post

Super!

Może doczekamy się kiedyś i w GG ;)
Nec Hercules contra plures!

Return to “Pomoc”