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

User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

klew wrote: Thu Jan 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):

Code: Select all


  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, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

veeroos wrote: Thu Jan 19, 2023 8:51 pm

Code: Select all

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:

Code: Select all

    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.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

Działa, dzięki :-)
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

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
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Mon Jan 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.
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

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?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Mon Jan 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.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Mogę też dorzucić kilka typów inputów. Już wcześniej było pytanie o selecta zapamiętującego stan.
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Mon Jan 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
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Mon Jan 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.

Return to “Arduino IDE”