Z jakiego kanału robisz odczyt?zzrr wrote: Mon Aug 05, 2024 3:55 pmNo 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?
Modyfikacja przykładu WebInterface Arduino
-
lukfud
- Posts: 2480
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
- Has thanked: 13 times
- Been thanked: 11 times
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
-
lukfud
- Posts: 2480
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
- Has thanked: 13 times
- Been thanked: 11 times
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
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
lukfud wrote: Mon Aug 05, 2024 5:21 pmCode: Select all
if (gpm != nullptr) { sender->send(gpm->getValue()); } else { sender->send("sensor is unavailable"); }
-
lukfud
- Posts: 2480
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
- Has thanked: 13 times
- Been thanked: 11 times
Tego niestety nie wiem.zzrr wrote: Mon Aug 05, 2024 5:29 pmDzię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ęć.
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
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
-
klew
- Posts: 13909
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 135 times
- Been thanked: 137 times
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
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 
Wiem o czym piszesz jednak nie wiem jak to zrobić.
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...
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
Mam trochę podobny problem:
Przy uruchomieniu odczytuję adresy DS18b20 i chcę je wkleić automatycznie do pól tekstowych przy pomocy inputów.
Nie umiem poradzić sobie z różnymi typami zmiennych:
W funkcji odczytującej adres
deviceAddress to:
a cSensAdr1 to char:
lub
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.
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);
}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);
}deviceAddress to:
Code: Select all
// DeviceAddress => typedef uint8_t DeviceAddress[8]Code: Select all
char cSensAdr1[20]Code: Select all
String: sSensAdrFullNie umiem też zmienić tego "const uint8_t *deviceAddress" z DeviceAddress na char potrzebne do inputu.
Zakręciłem się. Proszę o pomoc.
-
[email protected]
- Posts: 1585
- Joined: Mon Feb 06, 2023 8:56 am
- Has thanked: 18 times
- Been thanked: 26 times
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;
