Dzięki działa
Jak sprawdzić rodzaj kanałów
https://gui-generic-builder.supla.io/
@klew Czy może dopisałeś już możliwość pobierania wartości dla licznika prądu? Chciał bym dorzucić wyświetlanie tych wartości na OLEDaklew pisze: ↑śr sty 13, 2021 12:04 pm Dodałem metody do pobierania ostatnich odczytów/stanu.
Poniżej przykład jak się do tego dobrać:"getChannelType" zwraca typ kanału używany w Supli. Pełna lista typów jest tutaj: https://github.com/SUPLA/arduino/blob/a ... oto.h#L280Kod: Zaznacz cały
for (auto element = Supla::Element::begin(); element != nullptr; element = element->next()) { // iterujemy po wszystkich elementach dodanych do programu if (element->getChannel()) { // sprawdzamy, czy do elementu jest przypisany kanał. Niektóre elementy (np. button) nie posiadają kanału. auto channel = element->getChannel(); if (channel->getChannelType() == SUPLA_CHANNELTYPE_THERMOMETER) { double lastTemperature = channel->getValueDouble(); // do something with lastTemperature } } }
Typ kanału używany przez elementy SuplaDevice są z reguły określone w konstruktorach danego elementu. Trzeba na to zwrócić uwagę, bo np Supla::Sensor::DS18B20 używa SUPLA_CHANNELTYPE_THERMOMETER a nie SUPLA_CHANNELTYPE_THERMOMETERDS18B20.
Można też szukać kanału po jego numerze - wtedy sprawdzamy po metodzie getChannelNumber()
Kolejna rzecz o której trzeba pamiętać, to sposób zapisu danego typu danych, który jest używany w protokole komunikacyjnym.
Innymi słowy, musimy wiedzieć co dany kanał przesyła i użyć odpowiedniej metody:
- jedną liczbę zmiennoprzecinkową (np. termoemtry, ciśnienie) - getValueDouble()
- dwie liczby zmiennoprzecinkowe (np. DHT22 przesyłające temperaturę oraz wilgotność w jednym kanale) - getValueDoubleFirst() (temperatura), getValueDoubleSecond() (wilgotność)
- typ logiczny (bool - np. sensor otwarcia) - getValueBool()
- liczbę całkowitą 32 bitową (np. rolety - poziom otwarcia) - getValueInt32()
- liczbę całkowitą 64 bitową (np. liczniki impulsów - UWAGA: nie robiłem pobierania danych z liczników prądu) - getValueInt64()
- zestaw liczb reprezentujących RGB z dwoma wartościami jasności (RGBW, dimmery) - getValueRed(), getValueBlue(), getValueGreen(), getValueColorBrightness(), getValueBrightness();
https://gui-generic-builder.supla.io/
A miałem dopisać?
Z tego co widzę w kodzie, to nie ma tego.
Liczniki EM mają inaczej zapisane dane. Metody opisane w tym wątku pobierają dane z wartości kanału. Natomiast EM przesyłają większość danych w kanałach extended.
Temat pilny?
Widzimy się na Supla Offline Party vol. 2
Do tej pory nie było takiej potrzeby. Temat raczej nie pilny, naliczyłem kilka osób które by chciały taką funkcjonalność
https://gui-generic-builder.supla.io/