Modyfikacja przykładu WebInterface Arduino

User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

zzrr wrote: Mon Aug 05, 2024 3:55 pm
lukfud wrote: Mon Aug 05, 2024 3:45 pm
Nie rozumiem ;)
No chodzi o to żeby odczyt zrobić tylko raz w momencie jak się otwiera WebInterface. Albo alternatywnie żeby można było kliknąć w label i żeby się wtedy wykonał pomiar. Coś takiego jak jest w GUI-Generic przy kalibracji wejścia analogowego?
Z jakiego kanału robisz odczyt?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

lukfud wrote: Mon Aug 05, 2024 4:12 pm Z jakiego kanału robisz odczyt?
KPOP
Supla::Sensor::GeneralPurposeMeasurement *gpm = nullptr;
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

zzrr wrote: Mon Aug 05, 2024 4:25 pm
lukfud wrote: Mon Aug 05, 2024 4:12 pm Z jakiego kanału robisz odczyt?
KPOP
Supla::Sensor::GeneralPurposeMeasurement *gpm = nullptr;

Code: Select all

if (gpm != nullptr) {
  sender->send(gpm->getValue());
} else {
  sender->send("sensor is unavailable");
}
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

lukfud wrote: Mon Aug 05, 2024 5:21 pm
zzrr wrote: Mon Aug 05, 2024 4:25 pm
lukfud wrote: Mon Aug 05, 2024 4:12 pm Z jakiego kanału robisz odczyt?
KPOP
Supla::Sensor::GeneralPurposeMeasurement *gpm = nullptr;

Code: Select all

if (gpm != nullptr) {
  sender->send(gpm->getValue());
} else {
  sender->send("sensor is unavailable");
}
:P Dzięki. @lukfud to powiedziałbyś jeszcze jak zrobić taki label w WebInterface, taki jakby hyperlink żeby po kliknięciu wykonywał akcje jakąś w programie. Np właśnie pomiar na wejściu ADC. Oczywiście to prośba na ile masz czas i chęć.
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

zzrr wrote: Mon Aug 05, 2024 5:29 pm :P Dzięki. @lukfud to powiedziałbyś jeszcze jak zrobić taki label w WebInterface, taki jakby hyperlink żeby po kliknięciu wykonywał akcje jakąś w programie. Np właśnie pomiar na wejściu ADC. Oczywiście to prośba na ile masz czas i chęć.
Tego niestety nie wiem.
Na pewno trzeba by "dłubnąć" w CSS'ie i dopisać wykonanie akcji w klasie html.

W Twoim przypadku odczyt wykonuje się przy załadowaniu strony, to nie wystarczy?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Tu by trzeba było wykonać jakieś zapytanie javascriptem o nowy pomiar, który zwracałby fragment html/wartość do wstawienia na stronie. Trzeba by też rozbudować serwer www na esp, do obsługi takiego zapytania.
Ogólnie nie jest to trywialne. Jak nie wiesz o czym piszę, to sugeruję sobie temat odpuścić i pozostać przy odświeżaniu strony :)
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: Tue Aug 06, 2024 7:47 am Tu by trzeba było wykonać jakieś zapytanie javascriptem ....
Wiem o czym piszesz jednak nie wiem jak to zrobić. :) Po prostu niektóre rzeczy się wie lub ktoś wie na przysłowiowy "pstryk".
Jednak nie jest to niezbędne i odświeżanie strony wystarczy.
Podsumowując... To co podpowiedział @lukfud i wykorzystując CustomParameter załatwia sprawę. Jeszcze raz wielkie dzięki. 👍
Chodziło o to...
kalibracja.jpg
You do not have the required permissions to view the files attached to this post.
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Mam trochę podobny problem:
Przy uruchomieniu odczytuję adresy DS18b20 i chcę je wkleić automatycznie do pól tekstowych przy pomocy inputów.

Code: Select all

      if (Supla::Storage::ConfigInstance()->getString(tTextInput1, cSensAdr1,20)) {
      } else {        SUPLA_LOG_DEBUG(" **** Param[%s] is not set", tTextInput1);
      }
Nie umiem poradzić sobie z różnymi typami zmiennych:

Code: Select all

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++) // 8 bajtów adresu
  {
    if (deviceAddress[i] < 16) {  // bajt adresu < 16
      Serial.print("0");
      String sSensAdrFull = String(sSensAdrFull + "0");
    }
    Serial.print(deviceAddress[i], HEX);
    sprintf(tSensAdrTmp, "%02X", deviceAddress[i]);
    sSensAdrFull = (sSensAdrFull + tSensAdrTmp);
  }
W funkcji odczytującej adres
deviceAddress to:

Code: Select all

// DeviceAddress => typedef uint8_t DeviceAddress[8]
a cSensAdr1 to char:

Code: Select all

char cSensAdr1[20]
lub

Code: Select all

String: sSensAdrFull
W "sSensAdrFull" mam poskładane bajty adresu DS18b20, mogę to wyświetlić (serial.print) ale też nie umiem przejść dalej, żeby móc skorzystać z inputa.
Nie umiem też zmienić tego "const uint8_t *deviceAddress" z DeviceAddress na char potrzebne do inputu.
Zakręciłem się. Proszę o pomoc.
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Proszę o pomoc w powyżej opisanym problemie.
[email protected]
Posts: 1586
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

iM@rek wrote: Sun Aug 11, 2024 8:21 pm Proszę o pomoc w powyżej opisanym problemie.
A co przyjmuje input?
Jak już posklejałeś stringa to pewnie input przyjmuje char * , wiec na tym stringu zrób stringVariable.c_str()

Ten device address to jest redefinicja typu, to jest po prostu uint8_t [], więc powinno przejść:
uint8_t arr[];
std::string str = reinterpret_cast<char *>(arr);
std::string str = (char *) arr;

Return to “Pomoc”