Tryb konfiguracyjny i różne inputy do wprowadzania parametrów
-
- Posts: 91
- Joined: Sat Jul 21, 2018 4:26 pm
Klew, a może za jednym zamachem udalo by sie dodać logowanie do strony konfiguracyjnej?
-
- Posts: 525
- Joined: Wed Oct 26, 2022 7:35 pm
Klew jeśli możesz to powiedz jeszcze bo część mojego pytania zabłądziła gdzieś... zapytam jeszcze raz żeby już nie mieszać między wiadomościami.
... utwierdziłeś mnie że SelectCmdInputParameter nie służy do przechowywania wartości tylko do odpalania komend. Tylko czy jest możliwość wpisać własne komendy które wykonają jakąś akcję na dowolnej jakiejś np klasie w kodzie nie związanej bezpośrednio z żadnym urządzeniem SUPLI czy tylko to można komendy dawać do urządzeń zawartych w SUPLA-DEVICES?
Bo tak sobie myślę że jak zrobię jakąś klasę np MyClass zawierającą dwie publiczne metody turnOn() i turnOff().i publiczną zmienną np.number. i powiedzmy te metody przypisują wartośc 1 lub 2 w zależności od wyboru. To czy da się tak wpisać polecenia w SelectCmdInputParameter żeby odwoływać się do tych metod czy to tylko można do tych klas się odwoływać które są w SUPLA-DEVICES?
Dodam jeszcze że gdyby sie dalo to bym sobie w metodzie zrobił zapis do EEPROMA i by chyba hulało. Tylko czy się da a jeśli tak to jak?
... utwierdziłeś mnie że SelectCmdInputParameter nie służy do przechowywania wartości tylko do odpalania komend. Tylko czy jest możliwość wpisać własne komendy które wykonają jakąś akcję na dowolnej jakiejś np klasie w kodzie nie związanej bezpośrednio z żadnym urządzeniem SUPLI czy tylko to można komendy dawać do urządzeń zawartych w SUPLA-DEVICES?
Bo tak sobie myślę że jak zrobię jakąś klasę np MyClass zawierającą dwie publiczne metody turnOn() i turnOff().i publiczną zmienną np.number. i powiedzmy te metody przypisują wartośc 1 lub 2 w zależności od wyboru. To czy da się tak wpisać polecenia w SelectCmdInputParameter żeby odwoływać się do tych metod czy to tylko można do tych klas się odwoływać które są w SUPLA-DEVICES?
Dodam jeszcze że gdyby sie dalo to bym sobie w metodzie zrobił zapis do EEPROMA i by chyba hulało. Tylko czy się da a jeśli tak to jak?
-
- Posts: 9667
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Aby akcje działały to klasa musi dziedziczyć po ActionHandler.zzrr wrote: ↑Mon Jan 30, 2023 4:41 pm Klew jeśli możesz to powiedz jeszcze bo część mojego pytania zabłądziła gdzieś... zapytam jeszcze raz żeby już nie mieszać między wiadomościami.
... utwierdziłeś mnie że SelectCmdInputParameter nie służy do przechowywania wartości tylko do odpalania komend. Tylko czy jest możliwość wpisać własne komendy które wykonają jakąś akcję na dowolnej jakiejś np klasie w kodzie nie związanej bezpośrednio z żadnym urządzeniem SUPLI czy tylko to można komendy dawać do urządzeń zawartych w SUPLA-DEVICES?
Bo tak sobie myślę że jak zrobię jakąś klasę np MyClass zawierającą dwie publiczne metody turnOn() i turnOff().i publiczną zmienną np.number. i powiedzmy te metody przypisują wartośc 1 lub 2 w zależności od wyboru. To czy da się tak wpisać polecenia w SelectCmdInputParameter żeby odwoływać się do tych metod czy to tylko można do tych klas się odwoływać które są w SUPLA-DEVICES?
Dodam jeszcze że gdyby sie dalo to bym sobie w metodzie zrobił zapis do EEPROMA i by chyba hulało. Tylko czy się da a jeśli tak to jak?
Poza tym kombinujesz strasznie naokoło.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 2023
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
A ja cały dzień dłubię z SelectCmdInputParameter aby zrobić wybór adresu dla bme280 i w końcu znalazłem ten wątek i że się nie da ?
A może jednak jakoś na około ?
A może jednak jakoś na około ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
- Posts: 2260
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
https://github.com/SUPLA/supla-device/b ... arameter.h
Code: Select all
auto mySelect = new Supla::Html::SelectInputParameter("myselect_tag, "BME address");
mySelect->registerValue("Address 1", 0);
mySelect->registerValue("Address 2", 1);
https://www.facebook.com/groups/supladiy/
-
- Posts: 2023
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
No niestety nie umiem sobie z tym poradzić z tym "SelectInputParametr" niby działa ale wybór po kliknięciu "save & reset" nie jest zapamiętywany . Chociaż w logach jestlukfud wrote: ↑Sun Mar 24, 2024 10:08 pmhttps://github.com/SUPLA/supla-device/b ... arameter.h
Code: Select all
auto mySelect = new Supla::Html::SelectInputParameter("myselect_tag, "BME address"); mySelect->registerValue("Address 1", 0); mySelect->registerValue("Address 2", 1);
Code: Select all
8:18:46.728 -> SERVER: key led, value 0
18:18:46.728 -> SERVER: key altitude, value 12
18:18:46.728 -> SERVER: key sensor_type, value SHT 3X
18:18:46.728 -> SERVER: key cmd1, value
18:18:46.728 -> SERVER: key rbt, value 0
tu cały program
Code: Select all
/*
Copyright (C) AC SOFTWARE SP. Z O.O.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* This example shows ESP82xx/ESP32 based device with simple web interface
* used to configure Wi-Fi parameters and Supla server connection.
* Additionally it shows how to use some of HTML elements provided by
* supla-device library.
*
* After fresh installation, device will be in config mode. It will have its
* own Wi-Fi AP configured. You should connect to it with your mobile phone
* and open http://192.168.4.1 where you can configure the device.
* Status LED is also configured. Please adjust GPIOs to your HW.
*/
#define STATUS_LED_GPIO 2
#define RELAY_GPIO 12
#define BUTTON_CFG_RELAY_GPIO 0
#define MAX_CHAR_VALUE 10
#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_input_parameter.h>
#include <supla/network/html/select_cmd_input_parameter.h>
// Choose where Supla should store roller shutter data in persistent memory
// We recommend to use external FRAM memory
#include <supla/storage/eeprom.h>
const char ALTITUDE[] = "altitude";
const char SENSOR_TYPE[] = "sensor_type";
char charValue[] = "None ";
int32_t intValue = 0;
unsigned long pm_lastmillis;
char buf[200] = {};
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
void setup() {
Supla::Storage::Init();
Serial.begin(115200);
// Channels configuration
// 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.
new Supla::Html::CustomParameter(ALTITUDE, "Altitude");
auto SelectSensorType = new Supla::Html::SelectInputParameter(SENSOR_TYPE, "Sensor type");
// Supla::Storage::ConfigInstance()->setString(SENSOR_TYPE,"None ");
SelectSensorType->registerValue("BME280", 0);
SelectSensorType->registerValue("SHT 3X", 1);
SelectSensorType->registerValue("DHT 22", 2);
// Set custom device name
SuplaDevice.setName("SUPLA-MY-EXAMPLE");
// Start!
SuplaDevice.begin();
}
void loop() {
SuplaDevice.iterate();
Supla::Storage::ConfigInstance()->setString(SENSOR_TYPE,"None ");
if (millis() - pm_lastmillis >= 1000) {
pm_lastmillis = millis();
Serial.println();
Serial.println("working...");
if (Supla::Storage::ConfigInstance()->getString(SENSOR_TYPE, charValue, MAX_CHAR_VALUE)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", SENSOR_TYPE, charValue);
} else
{
SUPLA_LOG_DEBUG(" **** Param[%s]: is not set", SENSOR_TYPE);
}
if (Supla::Storage::ConfigInstance()->getInt32(ALTITUDE, &intValue)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %d", ALTITUDE, intValue);
} else {
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", ALTITUDE);
}
}
}
Gdzie jest problem ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
- Posts: 2023
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
Przepraszam , ale ja to chyba jestem w innej klasie i to w oślej ławce.
Jeśli zrobię tak :
Code: Select all
if (Supla::Storage::ConfigInstance()->getInt32(SENSOR_TYPE, &intValue)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", SENSOR_TYPE, intValue);
} else
{
SUPLA_LOG_DEBUG(" **** Param[%s]: is not set", SENSOR_TYPE);
}
Zastanawiam się jeśli zapisuje "liczbę" to dlaczego tu jest :
Code: Select all
19:44:11.662 -> SERVER: key sensor_type, value SHT 3X
a nie
Code: Select all
19:44:11.662 -> SERVER: key sensor_type, value 2
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
- Posts: 2260
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Code: Select all
19:44:11.662 -> SERVER: key sensor_type, value SHT 3X
Code: Select all
const char SENSOR_TYPE[] = "sensor_type";
int32_t intValue = 0;
auto cfg = Supla::Storage::ConfigInstance();
if (cfg->getInt32(SENSOR_TYPE, &intValue)) {
SUPLA_LOG_DEBUG(" **** Param[%s]: %d", SENSOR_TYPE, intValue); // %d, nie %s dla int
} else {
SUPLA_LOG_DEBUG(" **** Param[%s]: is not set", SENSOR_TYPE);
}
if (intValue == 1) {
// do something
}
https://www.facebook.com/groups/supladiy/