Potrzebuję przy tworzeniu GUI sprawdzić czy dany kanał został dodany i na podstawie tego dodać odpowiedni fragment GUI.
Myślałem o wykorzystaniu:
https://github.com/klew/arduino/blob/ma ... /channel.h
Jakieś propozycje jak to zrobić ?
Jak sprawdzić rodzaj kanałów
https://gui-generic-builder.supla.io/
Ja swoim szkicu definiuję kanały jeszcze przed kompilacją za pomocą makr. Np.:
i dalej:
i w html gui:
Wgrywam ten sam szkic do różnych płytek, jeśli nie potrzebuję danego kanału zakomentowuję:
Dzięki temu można zaoszczędzić trochę pamięci na np. SSL
Kod: Zaznacz cały
#define RF_BUTTON
Kod: Zaznacz cały
#ifdef RF_BUTTON
#include <RCSwitch.h> //https://github.com/sui77/rc-switch (GPL)
RCSwitch mySwitch = RCSwitch();
#include <supla/element.h>
#endif
Kod: Zaznacz cały
...
#ifdef RF_BUTTON
main_page += "<i>";
main_page += "<input type=\"number\" name=\"rfb\" value=\"";
if (configured) {
main_page += String(rf_btn_value);
}
main_page += "\">";
main_page += "<label>RF button value</label>";
main_page += "</i>";
#endif
...
Kod: Zaznacz cały
//#define RF_BUTTON
Dzięki za podsunięcie pomysłu, tak właśnie zrobię. Ale nie będę definiować własnych wartości tylko wykorzystam te dodane w bibliotece np. #define _ds18b20_h #define _dht_h itd.
https://gui-generic-builder.supla.io/
Define'y z headerów będą dodane zależnie od tego, czy zrobisz include'a, czy nie. Na tej podstawie nie odkryjesz czy dany kanał jest dodany.
Najlepiej pobiegać po tej liście kanałów z channel.h.
Dorzucę jakieś metody get aby pobierać dane, które są potrzebne.
Napisz tylko co potrzebujesz odczytać?
- channel type
- ostatnio odcyztana wartość (o tym już kiedyś pisaliśmy)
- coś jeszcze?
Po kanałach można przejść przy pomocy: (UWAGA: KOD NIEAKTUALNY)
Na razie jedyny get, który jest to "getChannelNumber()".
Najlepiej pobiegać po tej liście kanałów z channel.h.
Dorzucę jakieś metody get aby pobierać dane, które są potrzebne.
Napisz tylko co potrzebujesz odczytać?
- channel type
- ostatnio odcyztana wartość (o tym już kiedyś pisaliśmy)
- coś jeszcze?
Po kanałach można przejść przy pomocy: (UWAGA: KOD NIEAKTUALNY)
Kod: Zaznacz cały
for (auto channel = Supla::Channel::begin(); channel != nullptr; channel = channel->next()) {
channel->doSomething();
}
Na razie jedyny get, który jest to "getChannelNumber()".
Widzimy się na Supla Offline Party vol. 2
Na chwilę obecną nie potrzebuję innych potrzeb niż te które zaproponowałeśklew pisze: ↑pt mar 13, 2020 9:06 am Define'y z headerów będą dodane zależnie od tego, czy zrobisz include'a, czy nie. Na tej podstawie nie odkryjesz czy dany kanał jest dodany.
Najlepiej pobiegać po tej liście kanałów z channel.h.
Dorzucę jakieś metody get aby pobierać dane, które są potrzebne.
Napisz tylko co potrzebujesz odczytać?
- channel type
- ostatnio odcyztana wartość (o tym już kiedyś pisaliśmy)
- coś jeszcze?
Po kanałach można przejść przy pomocy:Kod: Zaznacz cały
for (auto channel = Supla::Channel::begin(); channel != nullptr; channel = channel->next()) { channel->doSomething(); }
Na razie jedyny get, który jest to "getChannelNumber()".
https://gui-generic-builder.supla.io/
Dorzuciłem getChannelType()
Niestety "last read value" jeszcze nie dorzucam. To trzeba będzie zrobić na poziomie konkretnych sensorów ze względu na różne zwracane typy.
Widzimy się na Supla Offline Party vol. 2
Dzięki, sprawdzę wieczorem teraz leżę w łóżku bo mnie jakaś zaraza złapała...
Ostatnio zmieniony sob mar 14, 2020 4:04 pm przez krycha88, łącznie zmieniany 1 raz.
https://gui-generic-builder.supla.io/
działa jak należy, dzięki
wydaje się to już nie aktualne. Bo właśnie wykorzystuję metody dla konkretnych sensorów getValue() czy getTemp() i getHumi().
https://gui-generic-builder.supla.io/
Teraz aby odczytać wartość oraz rodzaj czujnika wykorzystuję globalnego vector, chcę się ich pozbyć bo niepotrzebnie zajmują pamięć. Chciałbym wykorzystać to rozwiązanie zaproponowane przez Ciebie ale brakuje możliwości odczytania ostatniej wartości kanału. Czy nie dało by się dorobić prostych metod odczytujących wartość z reg_dev.channels[channelNumber].value?klew pisze: ↑pt mar 13, 2020 9:06 am Define'y z headerów będą dodane zależnie od tego, czy zrobisz include'a, czy nie. Na tej podstawie nie odkryjesz czy dany kanał jest dodany.
Najlepiej pobiegać po tej liście kanałów z channel.h.
Dorzucę jakieś metody get aby pobierać dane, które są potrzebne.
Napisz tylko co potrzebujesz odczytać?
- channel type
- ostatnio odcyztana wartość (o tym już kiedyś pisaliśmy)
- coś jeszcze?
Po kanałach można przejść przy pomocy:Kod: Zaznacz cały
for (auto channel = Supla::Channel::begin(); channel != nullptr; channel = channel->next()) { channel->doSomething(); }
Na razie jedyny get, który jest to "getChannelNumber()".
https://gui-generic-builder.supla.io/