Dzień dobry,
od jakiegoś czasu korzystam z Supla z połączeniem z Internetem za pomocą Sim800Lv2. Działa pięknie i stabilnie, nawet nie trzeba dodatkowej baterii po wymianie kondensatora na module SIM. Pięknie śmiga nawet z portu USB z laptopa.
Na początku było to rozwiązanie chwilowe, ale sprawdziło się i chciałbym troszkę rozwinąć pomysł. Niestety natknąłem się na następujący problem:
Supla działa przez GPRS, zatem webserver nie może działać, żeby nie był dostępny "z zewnątrz". Czy istnieje możliwość tak ustawienia trybu config, żeby webserver działał tylko przez połączenie z AP wystawianym przez ESP32, a podczas pracy "normalnej" nie był w żaden sposób dostępny?
Czy może istnieje jakiś lepszy sposób ustawienia adresu email, serwera supla, APN czy PIN karty SIM, bez każdorazowej zmiany kodu źródłowego i jego edycji.
Mój sprzęt:
ESP32-Wroom-32D Devkit
SIM800L EVB
SuplaDevice 24.9
Z góry dziekuję za pomoc.
Piotr
Supla - Sim800l - GPRS działa, ale kilka pytań
-
- Posts: 10957
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Na gołym SuplaDevice, web interface just startowany tylko w trybie cfg.
Nie wiem jak masz zrobioną obsługę gprs.
Ogólnie powinno dać się to ustawić.
Wrzuć link do źródeł
Nie wiem jak masz zrobioną obsługę gprs.
Ogólnie powinno dać się to ustawić.
Wrzuć link do źródeł
-
- Posts: 1088
- Joined: Tue Oct 31, 2023 10:06 pm
Możesz wrzucić kod źródłowy? Sam jestem ciekaw, jak to masz zrobione. W wolnej chwili mogę usiąść i zaproponować Ci jakieś rozwiązanie (mam nawet jakiś pomysł, ale to wymaga sprawdzenia).ruza wrote: Wed Mar 26, 2025 7:19 pm Dzień dobry,
od jakiegoś czasu korzystam z Supla z połączeniem z Internetem za pomocą Sim800Lv2. Działa pięknie i stabilnie, nawet nie trzeba dodatkowej baterii po wymianie kondensatora na module SIM. Pięknie śmiga nawet z portu USB z laptopa.
Na początku było to rozwiązanie chwilowe, ale sprawdziło się i chciałbym troszkę rozwinąć pomysł. Niestety natknąłem się na następujący problem:
Supla działa przez GPRS, zatem webserver nie może działać, żeby nie był dostępny "z zewnątrz". Czy istnieje możliwość tak ustawienia trybu config, żeby webserver działał tylko przez połączenie z AP wystawianym przez ESP32, a podczas pracy "normalnej" nie był w żaden sposób dostępny?
Czy może istnieje jakiś lepszy sposób ustawienia adresu email, serwera supla, APN czy PIN karty SIM, bez każdorazowej zmiany kodu źródłowego i jego edycji.
Mój sprzęt:
ESP32-Wroom-32D Devkit
SIM800L EVB
SuplaDevice 24.9
Z góry dziekuję za pomoc.
Piotr
Wiesz, że Supla współpracuje z urządzeniami Zigbee? Więcej szczegółów tutaj: https://forum.supla.org/viewforum.php?f=127
Nec Hercules contra plures!
Nec Hercules contra plures!
-
- Posts: 1372
- Joined: Thu Sep 02, 2021 1:06 pm
@Zibi_007 nie mam dziś za dużo czasu ale pamiętam że @elmaya wrzucał kiedyś jakiś kod i binarkę do obsługi Supli po GMS.
Poszukaj na angielskim forum Supli lub na Polskim nie pamiętam dokładnie gdzie to było.
Poszukaj na angielskim forum Supli lub na Polskim nie pamiętam dokładnie gdzie to było.
Wziąłem udział w Supla Offline Party 2023
-
- Posts: 1088
- Joined: Tue Oct 31, 2023 10:06 pm
Dzięki. @robertklepacki, jak zwykle niezawodnyrobertklepacki94 wrote: Wed Mar 26, 2025 9:47 pm @Zibi_007 nie mam dziś za dużo czasu ale pamiętam że @elmaya wrzucał kiedyś jakiś kod i binarkę do obsługi Supli po GMS.
Poszukaj na angielskim forum Supli lub na Polskim nie pamiętam dokładnie gdzie to było.

Rozwiązanie, o którym wspominasz znam viewtopic.php?t=10595
Mam w ulubionych. Mam też to download/file.php?id=32888
I pamiętam dyskusję, jaka się kiedyś wywiązała na temat stabilności tych rozwiązań.
Dla mnie temat skończył się tutaj viewtopic.php?p=186658#p186658.
Teraz czytam, że @ruza ma gotowe (działające stabilnie - przynajmniej tak rozumiem) rozwiązanie, które wymaga modyfikacji w kodzie (webinterfeace itp.). To chętnie bym pomógł. Dorobię co trzeba i jak się uda, to wszyscy skorzystają

Wiesz, że Supla współpracuje z urządzeniami Zigbee? Więcej szczegółów tutaj: https://forum.supla.org/viewforum.php?f=127
Nec Hercules contra plures!
Nec Hercules contra plures!
-
- Posts: 32
- Joined: Wed May 06, 2020 7:49 am
Dzień dobry,
przepraszam za brak odpowiedzi przez kilka dni. Obowiązki domowe.
Ja również wykorzystałem rozwiązanie z postu @marcinp - viewtopic.php?p=186658#p186658.
Całość kodu to na razie tylko taki "proof of concept", zbitek różnych pomysłów, żeby uruchomić sim800l, zatem ani to ładne, ani czyste, ale działa:) Testowane przez około 2 tygodnie, działało bez kłopotu.
Mój setup:
ESP32-Wroom-32D Dev Kit
Sim800l EVB (v2) (mod z kondensatorem, żeby rozwiązać problem pików poboru prądu podczas łączenia)
SuplaDevice 24.9 (przerobiona zgodnie z postem powyżej)
TinyGSM 0.12 (oryginalna)
przepraszam za brak odpowiedzi przez kilka dni. Obowiązki domowe.
Ja również wykorzystałem rozwiązanie z postu @marcinp - viewtopic.php?p=186658#p186658.
Całość kodu to na razie tylko taki "proof of concept", zbitek różnych pomysłów, żeby uruchomić sim800l, zatem ani to ładne, ani czyste, ale działa:) Testowane przez około 2 tygodnie, działało bez kłopotu.
Mój setup:
ESP32-Wroom-32D Dev Kit
Sim800l EVB (v2) (mod z kondensatorem, żeby rozwiązać problem pików poboru prądu podczas łączenia)
SuplaDevice 24.9 (przerobiona zgodnie z postem powyżej)
TinyGSM 0.12 (oryginalna)
Code: Select all
#include <SuplaDevice.h>
//#####################################3
#define TINY_GSM_MODEM_SIM800;
#define SerialMon Serial
#define TINY_GSM_DEBUG Serial
#define TINY_GSM_RX_BUFFER 1024
#define TINY_GSM_USE_GPRS true
#define rxPin 4
#define txPin 2
HardwareSerial SerialAT(1); // przerobione na hardwareserial
#define GSM_PIN ""
// Your GPRS credentials, if any
const char apn[] = "internet";
const char user[] = "";
const char pass[] = "";
#include <TinyGsmClient.h>
TinyGsm modem(SerialAT);
TinyGsmClient *suplaClient = new TinyGsmClient(modem);
#define SUPLA_GPRS
#include <SuplaDevice.h>
#include <supla/network/esp_gprs.h>
#include <supla/arduino_esp_platform.h> // przerobiony plik
Supla::GPRS gprs(NULL);
//############################################
/*
* This example requires Dallas Temperature Control library installed.
* https://github.com/milesburton/Arduino-Temperature-Control-Library
*/
// Add include to DS sensor
#include <supla/sensor/DS18B20.h>
void setup() {
SerialMon.begin(115200);
// ###########################
delay(10);
SerialMon.println("Wait...");
// Set GSM module baud rate
SerialAT.begin(9600, SERIAL_8N1, rxPin, txPin);
delay(6000);
// Restart takes quite some time
// To skip it, call init() instead of restart()
SerialMon.println("Initializing modem...");
modem.restart();
// modem.init();
String modemInfo = modem.getModemInfo();
SerialMon.print("Modem Info: ");
SerialMon.println(modemInfo);
#if TINY_GSM_USE_GPRS
// Unlock your SIM card with a PIN if needed
if (GSM_PIN && modem.getSimStatus() != 3) { modem.simUnlock(GSM_PIN); }
#endif
SerialMon.print(F("Waiting for network..."));
if (!modem.waitForNetwork()) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
SerialMon.print(F("Connecting to "));
SerialMon.print(apn);
if (!modem.gprsConnect(apn, user, pass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
//########################################################
// Replace the following GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {***};
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {***};
/*
* Having your device already registered at cloud.supla.org,
* you want to change CHANNEL sequence or remove any of them,
* then you must also remove the device itself from cloud.supla.org.
* Otherwise you will get "Channel conflict!" error.
*/
// CHANNEL0-3 - Thermometer DS18B20
// 4 DS18B20 thermometers at pin 23. DS address can be omitted when there is only one device at a pin
DeviceAddress ds1addr = {***};
DeviceAddress ds2addr = {***};
DeviceAddress ds3addr = {***};
DeviceAddress ds4addr = {***};
new Supla::Sensor::DS18B20(23, ds1addr);
new Supla::Sensor::DS18B20(23, ds2addr);
new Supla::Sensor::DS18B20(23, ds3addr);
new Supla::Sensor::DS18B20(23, ds4addr);
SuplaDevice.begin(GUID, // Global Unique Identifier
"svr13.supla.org", // SUPLA server address
"***", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
}
void loop() {
SuplaDevice.iterate();
}
-
- Posts: 10957
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Ogólnie można to przerobić, ale ten obecny program wygląda jak mocny "prove of concept". Wszystko jest spięte "na styk", aby tylko ruszyło.
Także nie da się tutaj raczej czegoś prosto przerobić bez posprzątania całości i zrobienia tego "po bożemu".
Ogólnie należałoby wyrzucić te "haki" i modyfikacje biblioteki. Dodać klasę od "GPRS" z dopisaną obsługą wyłączania tego interfejsu.
Dorobić "Config" dla GPRS przy pomocy Supla::Storage::Config.
No i na koniec dodać WebInterface w taki sposób, aby startował tylko w trybie konfiguracyjnym. Tryb konfiguracyjny powinien wyłączyć GPRS i będzie to działać.
Nie wiem czy takie ogólne rady wystarczą Ci, aby to samemu poprawić i zaprograwować.
Także nie da się tutaj raczej czegoś prosto przerobić bez posprzątania całości i zrobienia tego "po bożemu".
Ogólnie należałoby wyrzucić te "haki" i modyfikacje biblioteki. Dodać klasę od "GPRS" z dopisaną obsługą wyłączania tego interfejsu.
Dorobić "Config" dla GPRS przy pomocy Supla::Storage::Config.
No i na koniec dodać WebInterface w taki sposób, aby startował tylko w trybie konfiguracyjnym. Tryb konfiguracyjny powinien wyłączyć GPRS i będzie to działać.
Nie wiem czy takie ogólne rady wystarczą Ci, aby to samemu poprawić i zaprograwować.
-
- Posts: 1364
- Joined: Wed Aug 10, 2022 12:29 pm
- Location: Kryry
„Sim800l EVB (v2) (mod z kondensatorem, żeby rozwiązać problem pików poboru prądu podczas łączenia)”
Napisz proszę coś więcej o tym rozwiązaniu, ja dodawałem zewnętrzny kondensator, Ty piszesz o wymianie tego na płytce.
Napisz proszę coś więcej o tym rozwiązaniu, ja dodawałem zewnętrzny kondensator, Ty piszesz o wymianie tego na płytce.
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
-
- Posts: 32
- Joined: Wed May 06, 2020 7:49 am
Hej,
zamiast C22 na płytce, wlutowałem 2200uF na 16V(taki miałem). Dzięki temu sim800l zasilany przez ESP32 z usb z laptopa działa bez problemu.
zamiast C22 na płytce, wlutowałem 2200uF na 16V(taki miałem). Dzięki temu sim800l zasilany przez ESP32 z usb z laptopa działa bez problemu.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 32
- Joined: Wed May 06, 2020 7:49 am
Ok, mam pierwsze pytanie. Poniżej szkielet kodu, jeszcze bez ustawień dla GRPS, ale z możliwością zapamiętania ustawień pól dodatkowych.
Jak uniknąć wymogu ustawień WiFi, żeby urządzenie wyszło z trybu config? Z tego co widzę w SerialMonitorze, aby z niego wyjść musi być ustawiona sieć WiFi. Ma to oczywiście sens w zastosowaniu standardowym, ale w tym wypadku mniejszy. Czy możemy pominąć ten warunek?
Code: Select all
//#define supla_lib_config_h_ // silences debug messages
#define BUTTON_CFG_GPIO 0
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/button.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
//#include <supla/network/html/wifi_parameters.h>
#include <supla/events.h>
#include <supla/network/html/custom_parameter.h>
#include <supla/network/html/custom_text_parameter.h>
#define STORAGE_OFFSET 512
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom(STORAGE_OFFSET);
// This class provides Wi-Fi network connectivity for your device
Supla::ESPWifi wifi;
// This class provides web server to handle config mode
Supla::EspWebServer suplaServer;
// This class provides configuration storage (like SSID, password, all
// user defined parameters, etc. We use LittleFS.
Supla::LittleFsConfig configSupla;
const char APN_APN[] = "apn_apn";
const char APN_USER[] = "apn_user";
const char APN_PASS[] = "apn_pass";
const char SIM_PIN[] = "sim_pin";
void setup() {
Serial.begin(115200);
// Buttons configuration
auto buttonCfg =
new Supla::Control::Button(BUTTON_CFG_GPIO, true, true);
buttonCfg->configureAsConfigButton(&SuplaDevice);
// HTML www component (they appear in sections according to creation
// sequence).
new Supla::Html::DeviceInfo(&SuplaDevice);
new Supla::Html::ProtocolParameters;
// new Supla::Html::WifiParameters;
new Supla::Html::CustomTextParameter(APN_APN, "Podaj APN", 32);
new Supla::Html::CustomTextParameter(APN_USER, "Podaj APN User", 32);
new Supla::Html::CustomTextParameter(APN_PASS, "Podaj APN Pass", 32);
new Supla::Html::CustomTextParameter(SIM_PIN, "Podaj PIN karty SIM",4);
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
// Set custom device name
SuplaDevice.setName("SUPLA-GSM");
// Start!
SuplaDevice.begin();
}
void loop() {
SuplaDevice.iterate();
}