Poza Arduino IDE biblioteka wspiera również kompilacje bezpośrednio na ESP8266 RTOS SDK, oraz na ESP32 ESP-IDF SDK. Podstawowe funkcjonalności, oparte o sterowanie przekaźnikami, czy też przyciski już działają. Bardziej skomplikowane tematy, takie jak termometry itp. jeszcze nie.
SuplaDevice można też używać pod Linuxem (np. na raspberry pi, beaglebone, lub na dowolnym PC-ie z Linuxem) - więcej informacji tutaj: viewtopic.php?t=10735
Najważniejsze nowości dotyczące Arduino IDE, to:
- dodanie możliwości przełączania urządzenia w tryb konfiguracyjny
- automatyczne generowanie GUID i Authkey
- webowy interfejs do konfiguracji urządzenia (parametry Wi-Fi, połączenie z serwerem Supli) poprzez stronę http://192.168.4.1
Kilka innych nowości:
- klasa VirtualThermometer (kanał termometru, którego wartość można ustawiać w programie poprzez wywołanie odpowiednich metod)
- klasa VirtualThermHygroMeter (j/w tylko dla temperatury oraz wilgotności)
- RGB, RGBW, dimmer - możliwość ograniczenia min/max wartości ustawianych na wyjściu
I wiele innych mniejszych zmian - pełna lista dostępna tutaj: https://github.com/SUPLA/supla-arduino/ ... ANGELOG.md
W Arduino IDE pojawił się też nowy przykład WebInterface, który pokazuje co jest potrzebne do użycia nowych funkcji związanych z trybem konfiguracyjnym oraz interfesjem www.
Interfejs webowy jest dostępny tylko dla układów ESP82xx oraz ESP32. Konfiguracja jest przechowywana w pliku przy użyciu LittleFs (UWAGA: jeśli ktoś używa w swoim programie SPIFS i doda LittleFs, to utraci zapisane dane i nic nie będzie działać poprawnie).
Klasa dziedzicząca po Supla::Config (w tym przypadku Supla::LittleFsConfig) jest konieczna do przechowywania konfiguracji urządzenia, oraz do generowania GUID i Authkey.
Za intefejs webowy odpowiada klasa Supla::EspWebServer, natomiast za to co jest wyświetlane na interfejsie webowym odpowiadając klasy Supla::Html::
Każdy element HTML-owy musi dziedziczyć po klasie Supla::Html::Element (a jakże
Za przykład posłuży nam klasa StatusLedParameters, która odpowiada za konfigurację diody, która miga zgodnie ze stanem naszego urządzenia.
Tak wygląda metoda send: https://github.com/SUPLA/supla-arduino/ ... rs.cpp#L37
W tej metodzie dobieramy się do instancji klasy trzymającej konfigurację. Następnie odczytujemy wartość parametru "statusLed" i generujemy HTML'a. W tym przypadku jest to lista drop-down.
Tak wygląda metoda handleResponse: https://github.com/SUPLA/supla-arduino/ ... rs.cpp#L61
Metoda zwraca "true", gdy dany parametr jej dotyczył i gdy przetworzyliśmy daną wartość. Bibliteka po otrzymaniu formularza z intefejsu webowego przekazauje każdy parametr i jego wartość do klas Html::Element i wywołuje na nich metodę "handleResponse". Ta metoda sprawdza, czy kluczu/key dotyczy danego elementu i jeśli tak, to przetwarza wartość parametru i zapisuje np. do konfiguracji.
Ostatni element potrzebny, aby to wszystko zadziałało, to umiejętność odczytu konfiguracji przez klasę Supla::Device::StatusLed. W tym przypadku, kofigurację odczytujemy w metodzie onLoadConfig: https://github.com/SUPLA/supla-arduino/ ... ed.cpp#L29
Metoda ta jest odpalana wewnątrz SuplaDevice.begin przed metodą onInit.
