Dodałem do biblioteki nowe rodzaje inputów do HTMLa oraz przykład jak ich używać:
https://github.com/SUPLA/supla-device/b ... Inputs.ino
W przykładzie jest w miarę dokładnie wszystko opisane.
Kod dostępny na branchu "main" - jeszcze nie jest oficjalnie wydany, także z menadżera bibliotek Arduino jeszcze nie pobierzecie (za kilka dni powinien być oficjalne wydanie, więc tam też się pojawi).
Są tam użyte inputy:
- Supla::Html::CustomTextParameter - pozwala na dodanie inputa do wprowadzania wartości tekstowych. Wprowadzona wartość jest zapisywana do pamięci konfiguracji urządzenia i można z niej korzystać w programie
- Supla::Html::CustomParameter - j/w z tym, że akceptuje liczby całkowite
- Supla::Html::TextCmdInputParameter - pozwala na zdefiniowanie komend tekstowych, które po wysłaniu formularza HTML (np. przy kliknięciu przycisku "SAVE"), wykonają ustawioną w programie akcję
- Supla::Html::SelectCmdInputParameter - j/w z tym, że zamiast pola tekstowego, mamy pole typu "select" (rozwijana lista) ze wszystkimi dostępnymi komendami.
Dajcie znać czy działa i czy jest jasno napisane
Na ESP8266 mam jakiś problem z tym trybem konfiguracyjnym. Dość często przy renderowaniu HTML następuje rozłączenie klienta, przez co tylko część HTML dociera do przeglądarki. Jeszcze nie znalazłem co jest przyczyną, także gdyby się www zacinało, to odświeżcie kilka razy stronę.
Pamiętajcie też o ustawieniu domyślnych GPIO (w przykładzie jest przekaźnik oraz przycisk). GPIO12 na ESP32 nie zadziała
Inputy typu "komenda" można użyć np. do resetowania liczników energii, włączania kalibracji układu pomiarowego, tarowania wagi, itp. Sky is the limit
Tryb konfiguracyjny i różne inputy do wprowadzania parametrów
-
- Posts: 9630
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
You do not have the required permissions to view the files attached to this post.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Czy ktoś podpowie jak odczytać wpisaną wartość w konfigu zeby czytał jako liczby bo nie mogę sobie z tym poradzić czyta jako tekst.
Potrzebuje żeby odczytał te klucze "5081602654:AAEaeI_7aOc2eerrrVV1nVObH4Ol6RlrC_KI" , "-452947517"
const char TelegramBOT[] = "token";
const char TelegramChatID[] = "chatid";
//------------------------- TELEGRAM ---------------------------------
#define BOT_TOKEN "token" //"5081602654:AAEaeI_7aOc2eerrrVV1nVObH4Ol6RlrC_KI"
#define BOT_CHAT_ID "chatid" //"-452947517"
Potrzebuje żeby odczytał te klucze "5081602654:AAEaeI_7aOc2eerrrVV1nVObH4Ol6RlrC_KI" , "-452947517"
const char TelegramBOT[] = "token";
const char TelegramChatID[] = "chatid";
//------------------------- TELEGRAM ---------------------------------
#define BOT_TOKEN "token" //"5081602654:AAEaeI_7aOc2eerrrVV1nVObH4Ol6RlrC_KI"
#define BOT_CHAT_ID "chatid" //"-452947517"
-
- Posts: 2255
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
-
- Posts: 424
- Joined: Sun Aug 11, 2019 5:32 pm
SUPER, przykłady działają, testowałem na ESP32klew wrote: ↑Thu Dec 15, 2022 1:58 pm Dodałem do biblioteki nowe rodzaje inputów do HTMLa oraz przykład jak ich używać:
https://github.com/SUPLA/supla-device/b ... Inputs.ino
W przykładzie jest w miarę dokładnie wszystko opisane.
Kod dostępny na branchu "main" - jeszcze nie jest oficjalnie wydany, także z menadżera bibliotek Arduino jeszcze nie pobierzecie (za kilka dni powinien być oficjalne wydanie, więc tam też się pojawi).
Są tam użyte inputy:
- Supla::Html::CustomTextParameter - pozwala na dodanie inputa do wprowadzania wartości tekstowych. Wprowadzona wartość jest zapisywana do pamięci konfiguracji urządzenia i można z niej korzystać w programie
- Supla::Html::CustomParameter - j/w z tym, że akceptuje liczby całkowite
- Supla::Html::TextCmdInputParameter - pozwala na zdefiniowanie komend tekstowych, które po wysłaniu formularza HTML (np. przy kliknięciu przycisku "SAVE"), wykonają ustawioną w programie akcję
- Supla::Html::SelectCmdInputParameter - j/w z tym, że zamiast pola tekstowego, mamy pole typu "select" (rozwijana lista) ze wszystkimi dostępnymi komendami.
Dajcie znać czy działa i czy jest jasno napisane
Na ESP8266 mam jakiś problem z tym trybem konfiguracyjnym. Dość często przy renderowaniu HTML następuje rozłączenie klienta, przez co tylko część HTML dociera do przeglądarki. Jeszcze nie znalazłem co jest przyczyną, także gdyby się www zacinało, to odświeżcie kilka razy stronę.
Pamiętajcie też o ustawieniu domyślnych GPIO (w przykładzie jest przekaźnik oraz przycisk). GPIO12 na ESP32 nie zadziała
Inputy typu "komenda" można użyć np. do resetowania liczników energii, włączania kalibracji układu pomiarowego, tarowania wagi, itp. Sky is the limit
2022-12-15_14-55.png
@klew czy pole - Supla::Html::CustomParameter może mieć wartość ograniczoną?
tak jak to jest w button_multiclick_parameters
Supla::Html::SelectCmdInputParameter
pole z wyborem mógłbyś stworzyć drugą wersję z pamięcią, coś takiego jak jest pole ze statusem led
You do not have the required permissions to view the files attached to this post.
Last edited by radzik_r on Fri Dec 16, 2022 10:42 pm, edited 1 time in total.
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Klucz z TelegramBOT jest pobierany z if (Supla::Storage::ConfigInstance()->getString(TelegramBOT, buf, 200)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", TelegramBOT, buf);
i prawidłowo odczytuje tylko nie wiem jak te pobrane klucze które wpisuje w CFG podstawić do tych define' ow, zeby czytał te klucze
Code: Select all
Enter normal mode
**** Param[param1]: 5081602654:AAEaeI_7aOc2yxgJVV1nVObH4Ol6RlrC_KI
**** Param[param2]: 0
#define BOT_CHAT_ID "chatid" //"-632947517"
Code: Select all
#define STATUS_LED_GPIO 2
#define RELAY_GPIO 15
#define BUTTON_CFG_RELAY_GPIO 4
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/relay.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/device/status_led.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>
// Includes for HTML elements
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/network/html/custom_parameter.h>
#include <supla/network/html/custom_text_parameter.h>
#include <supla/network/html/text_cmd_input_parameter.h>
#include <supla/network/html/select_cmd_input_parameter.h>
#include <WiFiClientSecure.h>
// Choose where Supla should store roller shutter data in persistent memory
// We recommend to use external FRAM memory
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom;
// #include <supla/storage/fram_spi.h>
// Supla::FramSpi fram(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;
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true); // inverted state
auto r1 = new Supla::Control::Relay(13, false); // Relay Lampka
uint8_t stan=0;
// Those tags are used for HTML element names and for keys to access parameter
// values in Config storage class. Max length of those values is 15 chars.
const char TelegramBOT[] = "token";
const char TelegramChatID[] = "chatid";
const char PARAM2[] = "param2";
const char PARAM_CMD1[] = "cmd1";
const char PARAM_CMD2[] = "cmd2";
const char PARAM_CMD3[] = "cmd3";
//------------------------- TELEGRAM ---------------------------------
#define TELEGRAM_HOST "api.telegram.org"
#define TELEGRAM_SSL_PORT 443
#define BOT_TOKEN "token" //"5081602654:AAEaeI_7aOc2yxgJVV1nVObH4Ol6RlrC_KI"
#define BOT_CHAT_ID "chatid" //"-632947517"
//#define BOT_CHAT_ID2 "-729189328"
//--------------------------------------------------------------------
void setup() {
Serial.begin(115200);
// Channels configuration
// CH 0 - Relay
auto r1 = new Supla::Control::Relay(RELAY_GPIO);
// CH 1 - Action trigger
auto at1 = new Supla::Control::ActionTrigger();
// Buttons configuration
auto buttonCfgRelay = new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, true, true);
buttonCfgRelay->configureAsConfigButton(&SuplaDevice);
buttonCfgRelay->addAction(Supla::TOGGLE, r1, Supla::ON_CLICK_1);
// Action trigger configuration
at1->setRelatedChannel(r1);
at1->attach(buttonCfgRelay);
// configure defualt Supla CA certificate
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
// HTML www component (they appear in sections according to creation
// sequence).
new Supla::Html::DeviceInfo(&SuplaDevice);
new Supla::Html::WifiParameters;
new Supla::Html::ProtocolParameters;
new Supla::Html::StatusLedParameters;
// Here user defined inputs are defined.
// Simple text input:
// PARAM1 - input name and key used for storage in Config instance
// "Please provide text value" - label for field on config page
// 100 - maximum text length accepted by your input
new Supla::Html::CustomTextParameter(TelegramBOT, "Klucz BOT Token", 100);
new Supla::Html::CustomTextParameter(TelegramChatID, "Klucz CHAT ID", 100);
// Numeric input:
// PARAM2 - input name and key used for storage in Config instance
// "Your age" - label for field on config page
// 100 - maximum text length accepted by your input
new Supla::Html::CustomParameter(PARAM2, "Your age");
// Text based command input
// PARAM_CMD1 - Html field input name
// "Relay control" - label that is displayed on config page
auto textCmd = new Supla::Html::TextCmdInputParameter(PARAM_CMD1, "Relay control");
// First we register allowed text input values and we assign which event
// should be generated:
textCmd->registerCmd("ON", Supla::ON_EVENT_1);
textCmd->registerCmd("OFF", Supla::ON_EVENT_2);
textCmd->registerCmd("TOGGLE", Supla::ON_EVENT_3);
// Then we link events with actions on a relay.
// Last "true" parameter will make sure that those actions won't be disabled
// when we enter config mode. By default actions are disabled when device
// enters config mode, but those text commands can be used only in config
// mode, so we want to have them enabled.
textCmd->addAction(Supla::TURN_ON, r1, Supla::ON_EVENT_1, true);
textCmd->addAction(Supla::TURN_OFF, r1, Supla::ON_EVENT_2, true);
textCmd->addAction(Supla::TOGGLE, r1, Supla::ON_EVENT_3, true);
// Select based command input - exactly the same configuration as for text
// field
// PARAM_CMD2 - Html field input name
// "Relay control" - label that is displayed on config page
auto selectCmd = new Supla::Html::SelectCmdInputParameter(PARAM_CMD1, "Relay control");
// First we register allowed text input values and we assign which event
// should be generated:
selectCmd->registerCmd("ON", Supla::ON_EVENT_1);
selectCmd->registerCmd("OFF", Supla::ON_EVENT_2);
selectCmd->registerCmd("TOGGLE", Supla::ON_EVENT_3);
// Then we link events with actions on a relay.
// Last "true" parameter will make sure that those actions won't be disabled
// when we enter config mode. By default actions are disabled when device
// enters config mode, but those text commands can be used only in config
// mode, so we want to have them enabled.
selectCmd->addAction(Supla::TURN_ON, r1, Supla::ON_EVENT_1, true);
selectCmd->addAction(Supla::TURN_OFF, r1, Supla::ON_EVENT_2, true);
selectCmd->addAction(Supla::TOGGLE, r1, Supla::ON_EVENT_3, true);
// Set custom device name
SuplaDevice.setName("SUPLA-INPUT-EXAMPLE");
// Start!
SuplaDevice.begin();
// Below lines show how to access values provided by user via config mode.
// It has to be used after SuplaDevice.begin() or in loop(). If you would
// like to access them before begin(), then please first call:
// Supla::Storage::Init();
char buf[200] = {};
if (Supla::Storage::ConfigInstance()->getString(TelegramBOT, buf, 200)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", TelegramBOT, buf);
} else {
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", TelegramBOT);
}
if (Supla::Storage::ConfigInstance()->getString(TelegramChatID, buf, 200)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", TelegramChatID, buf);
} else {
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", TelegramChatID);
}
int32_t intValue = 0;
if (Supla::Storage::ConfigInstance()->getInt32(PARAM2, &intValue)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %d", PARAM2, intValue);
} else {
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM2);
}
}
void loop() {
SuplaDevice.iterate();
}
-
- Posts: 2255
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Pobrałeś już swoje dane do zmiennych TelegramBOT i TelegramChatID
Code: Select all
#define BOT_TOKEN "token" //"5081602654:AAEaeI_7aOc2yxgJVV1nVObH4Ol6RlrC_KI"
#define BOT_CHAT_ID "chatid" //"-632947517"
W dalszej części programu nie używasz BOT_TOKEN ani BOT_CHAT_ID tylko wymienione wyżej Twoje zmienne.
https://www.facebook.com/groups/supladiy/
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Tak tylko chodzi mi o to jak podstawic klucze do tych define żeby czytał z konfigu? Bo teraz tylko mi czyta jak są wpisane obok co mam obecnie zakomentiwane bo chce żeby czytał je z konfigu.
Jak tego param1 gdzie obok jest klucz na logu wrzucić go do define BOT TOKEN?
Może inaczej jak z tej linii przenieść klucz do define BOT TOKEN żeby tam go odczytywał
Jak tego param1 gdzie obok jest klucz na logu wrzucić go do define BOT TOKEN?
Może inaczej jak z tej linii przenieść klucz do define BOT TOKEN żeby tam go odczytywał
Code: Select all
Param[param1]: 5081602654:AAEaeI_7aOc2yxgJVV1nVObH4Ol6RlrC_KI
-
- Posts: 2255
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Nie potrzebujesz tych definicji.nebraska wrote: ↑Fri Dec 16, 2022 10:58 pm Tak tylko chodzi mi o to jak podstawic klucze do tych define żeby czytał z konfigu? Bo teraz tylko mi czyta jak są wpisane obok co mam obecnie zakomentiwane bo chce żeby czytał je z konfigu.
Jak tego param1 gdzie obok jest klucz na logu wrzucić go do define BOT TOKEN?
Poprzez #define nadajesz w kodzie nazwę stałej wartości.
Ty nie będziesz posługiwał się w tym programie stałą wartością, tylko zmienną, więc tam gdzie telegram potrzebuje BOT_TOKEN wstaw zmienną TelegramBOT, tak samo z chatID.
https://www.facebook.com/groups/supladiy/
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
lukfud Dziękuję za wyjaśnienie. Będę próbował dam znać.
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Nie mogę od wczoraj połączyć się z ESP32 działało robiłem testy i przestało wgrywam tryb konfiguracji jak wyżej i ciągle nie ma połączenia z WIFI wcześniej mi działało. Wifi działa w domu ok, wgrałem inny soft suplowy i jest zielony kafelek w Supli.
WEMOS LOLIN ESP32 LITE
ARDUINO 1.8.16
MANAGER BOARD 2.0.5
WEMOS LOLIN ESP32 LITE
ARDUINO 1.8.16
MANAGER BOARD 2.0.5
Code: Select all
Warning: network is not ready (30 s)
WiFi Station disconnected
WiFi Station disconnected
WiFi Station disconnected
WiFi Station disconnected
Warning: network is not ready (40 s)
WiFi Station disconnected
WiFi Station disconnected
WiFi Station disconnected
Warning: network is not ready (50 s)
WiFi Station disconnected
WiFi Station disconnected
WiFi Station disconnected
WiFi Station disconnected
Warning: network is not ready (60 s)
Network layer restart requested. Trying to setup network interface again
WiFi: resetting WiFi connection