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?
Własna konfiguracja wifi / clienta
-
- Posts: 9413
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
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
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 ?
-
- Posts: 4
- Joined: Mon Feb 12, 2024 3:07 pm
Dzięki, za szybką odpowiedź,
wrócę tu jak coś uda mi się wykombinować.
wrócę tu jak coś uda mi się wykombinować.
-
- Posts: 4
- Joined: Mon Feb 12, 2024 3:07 pm
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.
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.
-
- Posts: 158
- Joined: Tue Oct 31, 2023 10:06 pm
Super!
Może doczekamy się kiedyś i w GG
Może doczekamy się kiedyś i w GG
Nec Hercules contra plures!