W tym artykule zajmiemy się najważniejszą funkcjonalnością jaką udostępnia urządzenie ADEAS UNO czyli komunikacja z serwerem w celu wysyłania i odbierania danych. W płytce ADEAS UNO komunikacja odbywa się za pomocą dwóch metod:
1. Komunikacja z użyciem serwera Websocketowego dla wybranych widgetów kiedy wymagana jest szybka reakcja urządzenia/serwera lub przesyłana jest duża ilość danych w krótkim czasie (widget joysticka, kamery). Ten rodzaj komunikacji dedykowany jest dla specjalnych widgetów, a ich obsługa jest wbudowana w bibliotekę ADEAS.h więc nie wymaga wcześniejszej konfiguracji przez użytkownika.
2. Komunikacja z użyciem web api polegająca na prostym przesyłaniu danych do bazy danych z urządzenia na serwer lub z serwera bezpośrednio do urządzenia ADEAS UNO. Ten rodzaj komunikacji umożliwia nam wyświetlania i operowania na danych z różnych czujników oraz na reagowania na różne zdarzenia przesyłane z serwera np. załączanie przekaźnika, sterowanie diodami czy wszelakie inne sterowanie napięciem wybranych czujników/urządzeń.
W ramach tego artykułu na podstawie kilku przykładów nauczymy się jak obsługiwać odczytywanie i wysyłanie danych za pośrednictwem WEB API. Stworzymy i omówimy przykład prostego wysyłania i odczytu danych na serwerze, a następnie napsizemy krótki program do wizualizacji danych odczytanych z serwera za pomocą diód LED.
W artykule dotyczącym rejestracji urządzenia w adeas app stworzyliśmy na końcu krótki program polegający na wysyłaniu na serwer kolejnych wartości licznika w celu sprawdzenia poprawności działania naszego urządzenia ADEAS UNO. Przeanalizujmy krok po kroku działanie naszego kodu.

ADEAS::setup("WIFI_SSID", "WIFI_PASSWORD", "XXXXXXXXX")
Najważniejsza funkcja naszego programu odpowiadająca za inicjalizację połączenia naszego urządzenia ADEAS UNO z WiFi, serwerem WEB API oraz serwerem Websocket.
int licznik = 0;
ADEAS::process();
if (API::isReady())
API::updateData("licznik", licznik++);
1. Inicjalizacja wszystkich połączeń za pomocą funkcji ADEAS::setup().
2. Deklaracja i inicjalizacja zmiennej przechowującej aktualną wartośc licznika.
3. Sprawdzenie warunkiem if (API::isReady()) czy serwer jest aktualnie zajęty.
4. Przesłanie aktualnej wartości licznika do zmiennej w bazie danych o nazwie "licznik" za pomocą funkcji API::updateData().
Wiemy już jak przesłać na serwer pojedynczą wartość. Spróbujmy teraz na prostym przykładzie przesłać na serwer kilka wartości za pomocą funkcji API::updataData(). W tym celu stworzymy dla naszego urządzenia nowy punkt pomiarowy. Przejdźmy w menu bocznym do zakładki urządzenia i wybierzmy przycisk dodania nowego punktu pomiarowego dla naszego urządzenia.

Jak widzimy nasze urządzenia posiada domyślnie pierwszy punkt pomiarowy "licznik" który jest automatycznie dodawany po zakończonym procesie konfiguracji urządzenia. Dodajmy kolejny punkt pomiarowy przy pomocy przycisku "Dodaj".

Nowym punktem pomiarowym w moim przypadku będzie "licznik_2" który będzie przechowywał wartość numeryczną więc tym danych ustawiamy na Number. Nazwa punktu pomiarowego jest dowolna, ważne aby później użyć tej nazwy w kodzie naszego ADEAS UNO w przeciwnym wypadku dane nie zostaną poprawnie zapisane. Jeżeli wszystko jest gotowe możemy dodać nasz punkt pomiarowy za pomocą przycisku "Dodaj"

Od teraz nasze urządzenie posiada dwa punkty pomiarowe do których możemy wysyłać dane z naszego urządzenia.

Przejdźmy do stworzenia nowego widgeta w naszym dashboardzie stworzonym podczas rejestracji urządzenia. Dodajmy do naszego dashboardu nowy widget wybierając z menu edycji oznaczonego trzema pionowymi kreskami opcję "Edytuj".
Ukazało nam się menu wyboru dostępnych widgetów. Proces ich obsługi zostanie szerzej opisany w innych artykułach, na potrzeby naszego poradnika posłużymy się widgetem "Etykieta" który służy do prostego wyświetlenia aktualnej wartości danego punktu pomiarowego.

Po dodaniu nowego widgeta ukaże nam się okno z informacją o konieczności skonfigurowania naszego widgeta. Skonfigurujmy nasz widget klikając w przycisk "Edytuj".
Przenalizujmy pokrótce okno konfiguracji naszego widgeta:

1. Miejsce na dowolną nazwę naszego widgeta.
2. Wybór wielkości widgeta domyślne wartości to 100%, 50% i 25%. Niektóre widgety w celu lepszej czytelności posiadają okrojoną możliwość wyboru wielkości.
3. Opcja dodania dowolnego obrazka jako ikony naszego widgeta.
4. Przycisk wyświetlający krótki opis działania widgeta.
5. Przycisk służący do dodawania kolejnych punktów pomiarowych.
6. Finalne przycisk do zapisania naszego widgeta. Przed zapisaniem widgeta wymagane jest podania jego nazwy.
Dodajmy sobie teraz za pomocą przycisku "Dodaj pomiar" Nowy punkt pomiarowy dla naszego widgeta. W wyskakującym oknie ustalmy dowolną nazwę dla naszego punktu pomiarowego, wybierzmy interesujące nas urządzenia oraz punkt pomiarowy.

Jeżeli udało nam się poprawnie dodać punkt pomiarowy okno konfiguracji naszego widgeta przed zapisaniem powinno wyglądać następująco :

Po dodaniu naszego nowego widgeta stworzy nam się prosta etykieta która będzie wyświetlała nazwę naszego punktu pomiarowego i jego wartość.
Zmodyfikujemy teraz nieco nasz kod dodając nowy kolejny licznik do naszego urządzenia. Dodamy nową zmienną przechowującą dane do dla naszego drugiego licznik aby wysłała wartości obu liczników na serwer, a wartość drugiego licznika zwiększajmy o 2.

Wgrajmy nasz zmodyfikowany kod i po odczekaniu krótkiej chwili możemy obserwować zmieniające się wartości dla obu naszych liczników. Jeżeli wykonaliśmy wszystkie kroki prawidłowo Licznik 1 powinien zwiększać swoją wartość o 1 a Licznik 2 o 2.
Wiemy już jak wysłać dane na serwer. Spróbujmy teraz odczytać wartości naszych zmiennych z serwera gdzie poznamy dwie nowe funkcje jakie oferuje biblioteka ADEAS.h. Zmodyfikujemy nieco nasz kod dodając kilka zmian umożliwiających wyświetlenia naszych wartości z serwera.

Przenalizujmy teraz krok po kroku zmiany które nastąpiły w naszym kodzie.
ADEAS::serialMode(true);
String wartosc_1;
String wartosc_2;
wartosc_1 = API::getLast("licznik");
delay(500);
wartosc_2 = API::getLast("licznik_2");
Serial.println("Aktualna wartość licznika 1 = ");
Serial.println(wartosc_1);
Serial.println("Aktualna wartość licznika 2 = ");
Serial.println(wartosc_2);



W taki oto sposób udało nam się przejść przez proces stworzenia naszego kolejnego widgetu oraz przeprowadziliśmy prostą komunikację z serwerem za pomocą WEB API do odczytania i wysyłania danych. W kolejnych artykułach dowiecie się jak korzystać z wielu innych dostępnych na naszej platformie widgetów i funkcjonalności.
Instalacja biblioteki ADEAS.h w środowisku Arduino IDE
Funkcja wysyłania i odbierania danych na serwer