Tryb konfiguracyjny i różne inputy do wprowadzania parametrów

Awatar użytkownika
veeroos
Posty: 271
Rejestracja: ndz mar 20, 2022 9:30 am
Lokalizacja: Głogów

klew pisze: czw sty 19, 2023 6:43 pm Pokaż kod
No więc tak. To co ja namieszałem wygląda tak (końcowe linie z sekcji setup):

Kod: Zaznacz cały


  new Supla::Html::CustomTextParameter(PARAM1, "Ustaw zadaną temperaturę", 100);
  new Supla::Html::CustomTextParameter(PARAM3, "Ustaw zadaną histerezę", 100);  


  SuplaDevice.setName("SUPLA-Termostat1");
  SuplaDevice.begin();
  char buf[200] = {};
  if (Supla::Storage::ConfigInstance()->getString(PARAM1, buf, 200)) {
    SUPLA_LOG_DEBUG(" **** Param[%s]: %s", PARAM1, buf);
  } else {
    SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM1);
  }
  
  char buf1[200]={};
  if (Supla::Storage::ConfigInstance()->getString(PARAM3, buf1, 200)) {
    SUPLA_LOG_DEBUG(" **** Param[%s]: %s", PARAM3, buf1);
  } else {
    SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM3);
  }
  
  
//=================Ta konwersja działa==========
  temperatura = (String(buf).toFloat()); 
  histereza = (String(buf1).toFloat());  
//============================================


Temperatura_termostatu = char(Temperatura_do_configu); // nie wazne czy dam tu konwersję na char czy string

Supla::Storage::ConfigInstance()->setString(PARAM1, Temperatura_termostatu); // to tutaj zatrzymuje się kompilacja i wywala błąd konwersji
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

veeroos pisze: czw sty 19, 2023 8:51 pm

Kod: Zaznacz cały

Temperatura_termostatu = char(Temperatura_do_configu); // nie wazne czy dam tu konwersję na char czy string
Supla::Storage::ConfigInstance()->setString(PARAM1, Temperatura_termostatu); // to tutaj zatrzymuje się kompilacja i wywala błąd konwersji
Nie wiem jakiego typu są "Temperatura_termostatu" oraz "Temperatura_do_configu", ale jeśli "temperatura_do_configu" to float, to:

Kod: Zaznacz cały

    char temperaturaStr[20] = {};
    snprintf(temperaturaStr, sizeof(temperaturaStr), "%.2f", temperatura_do_configu);
    Supla::Storage::ConfigInstance()->setString(PARAM1, temperaturaStr);
Powyższy kod tworzy tablicę znaków (char[]) - czyli tzw. C-style string.
Następnie snprintf jest używany do kownersji temperatury z floata do tego stringa.
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
veeroos
Posty: 271
Rejestracja: ndz mar 20, 2022 9:30 am
Lokalizacja: Głogów

Działa, dzięki :-)
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
zzrr
Posty: 343
Rejestracja: śr paź 26, 2022 7:35 pm

Witam,

new Supla::Html::SelectCmdInputParameter(PARAM_CMD2, "Wybor trybu");


posiadam zmienną np "int wybor" którą po zapisaniu WebConfiga zapiszę do EEPROMA.
jak na bazie tego inputa zrobić żeby przy wyborze pierwszej pozycji do zmiennej zapisywała się wartość np 1 a przy drugiej 2.
Próbowałem najpierw odczytywać wartość z parametru ale ten input nie zapisuje, albo robię coś źle.
Oczywiście zmienna może być innego typu ale najbardziej pasowała by mi INT.
Generalnie zależy mi żeby wybór był zapamiętany.
Pomóżcie
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

zzrr pisze: pn sty 30, 2023 1:46 am Witam,

new Supla::Html::SelectCmdInputParameter(PARAM_CMD2, "Wybor trybu");


posiadam zmienną np "int wybor" którą po zapisaniu WebConfiga zapiszę do EEPROMA.
jak na bazie tego inputa zrobić żeby przy wyborze pierwszej pozycji do zmiennej zapisywała się wartość np 1 a przy drugiej 2.
Próbowałem najpierw odczytywać wartość z parametru ale ten input nie zapisuje, albo robię coś źle.
Oczywiście zmienna może być innego typu ale najbardziej pasowała by mi INT.
Generalnie zależy mi żeby wybór był zapamiętany.
Pomóżcie
SelectCmdInputParameter nie słyuży do przechowywania wartości, tylko do odpalania komend.
Z gotowych inputów do liczb możesz użyć: Supla::Html::CustomParameter
Jeśli chcesz selecta z opcjami do wyboru, to na chwilę obecną nie ma gotowca.
Widzimy się na Supla Offline Party vol. 2 :!:
zzrr
Posty: 343
Rejestracja: śr paź 26, 2022 7:35 pm

Dzięki za odpowiedź.
A czy w funkcji Supla::Html::CustomParameter żeby ograniczyć listę wyboru trzeba by sobie w bibliotece zmieniać samemu czy jest na to jakiś sposób z linii poleceń?

A jeszcze tak w odniesieniu do poprzedniego pytania. Ja przeczytałem i wiem że do odpalania komend. Tylko czy jest mozliwośc wpisac tam jakąs komendę zeby wykonała akcję na dowolnej jakiejś np klasie w kodzie czy tylko to można komendy dawać do urządzeń zawartych w SUPLA-DEVICES?
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

zzrr pisze: pn sty 30, 2023 2:47 pm Dzięki za odpowiedź.
A czy w funkcji Supla::Html::CustomParameter żeby ograniczyć listę wyboru trzeba by sobie w bibliotece zmieniać samemu czy jest na to jakiś sposób z linii poleceń?
CustomParameter to pole "tekstowe", więc nie ma tam listy rzeczy do wyboru.
Formularz jest ustawiony na liczby całkowite i to jedyne ograniczenie co można tam wpisać.

Jeśli chciałbyś coś zmienić, to możesz podziedziczyć po tej klasie i nadpisać metodę generującą forumlarz:
https://github.com/SUPLA/supla-device/b ... er.cpp#L61

Nie zrobi to weryfikacji po stronei serwera www, ale przynajmniej w intefejsie będzie widać jakie są dostępne wartość/zakresy.
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Mogę też dorzucić kilka typów inputów. Już wcześniej było pytanie o selecta zapamiętującego stan.
Widzimy się na Supla Offline Party vol. 2 :!:
zzrr
Posty: 343
Rejestracja: śr paź 26, 2022 7:35 pm

klew pisze: pn sty 30, 2023 2:56 pm Mogę też dorzucić kilka typów inputów. Już wcześniej było pytanie o selecta zapamiętującego stan.
Było by super... Myślę ze każdy kto chce się zabrać za cokolwiek najpierw zastanawia się co można zrobić w WebConfigu
zzrr
Posty: 343
Rejestracja: śr paź 26, 2022 7:35 pm

klew pisze: pn sty 30, 2023 2:52 pm
CustomParameter to pole "tekstowe", więc nie ma tam listy rzeczy do wyboru.
Formularz jest ustawiony na liczby całkowite i to jedyne ograniczenie co można tam wpisać.
Co do tej części... to tak tak tylko szukając rozwiązania pomyślałem kierując sie Twoja podpowiedzią żeby w opisie dać że 1 to Tryb1 2 Tryb2 i ograniczyć wtedy listę wyboru żeby nie była do 100 tylko do 2. Bo akurat to co potrzebuję zrobić ogranicza się do dwóch pozycji wyboru.
ODPOWIEDZ

Wróć do „Arduino IDE”