Klient JSON zbudowany na platformie Arduino, ESP8266, ESP32 umożliwia połączenie poprzez websocket z serwerem WWW (interfejs WWW Levelera). Klient wykonuje cykliczne żądanie HTTP GET co 60 sekund w celu pobrania zawartości /json_output.php strona, na której serwer WWW dystrybuuje dane JSON dotyczące poziomu wody (w centymetrach), objętości studni (w litrach) w oparciu o aktualnie ustawioną głębokość i średnicę studni. Załadowany ładunek JSON może przeanalizować klienta JSON z odpowiedzi HTTP, a następnie zdeserializować ten ciąg. Po deserializacji możliwy jest dostęp do poszczególnych kluczy, do których przypisane są wartości i uzyskanie ich -> parsowanie. Dopasowane dane są zapisywane na UART - Linia szeregowa - 115200 bodów/s. W aplikacji użytkownika, którą można dodać do istniejących kodów źródłowych klientów JSON, możliwe jest sterowanie podmiotami na podstawie tych wartości, np.: automatyczne nawadnianie po osiągnięciu określonego poziomu wody, przepompowanie wody, uruchomienie pompy, kochanie. Część oprogramowania układowego oznaczona jako MQTT lub MQTTS (zaszyfrowane MQTT) to rozszerzony klient JSON z możliwością wysyłania — Publikowanie danych do MQTT Broker IoT Industries Slovakia — Słowacki bezpłatny broker MQTT przeznaczony dla programistów. Oba warianty MQTT i MQTTS używają gniazda, które jest również używane do żądań HTTP w celu uzyskania ładunków JSON. Istniejący serwer MQTT możesz zastąpić w swoim kodzie źródłowym swoim, dzięki czemu możesz również udostępniać dane z miernika poziomu w systemach automatyki domowej (Hassio, Mosquitto MQTT, Domoticz, Loxone i inne...). W obecnej implementacji oprogramowania mikrokontroler (klient JSON) przesyła otrzymane dane do Brokera MQTT w mierniku poziomu tematycznego, natomiast poszczególne temperatury są różnicowane w podtematach.
Nazwa biblioteki | Funkcja biblioteki | Ściągnij |
---|---|---|
PubSubClient |
Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 i ESP32. Umożliwia komunikację poprzez protokół MQTT, istnieje również możliwość realizacji szyfrowanego połączenia z MQTT Broker, dla mikrokontrolerów ESP wymagane jest zastosowanie klasy WiFiClientSecure. |
Ściągnij |
ArduinoJson |
Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 i ESP32. Pozwala na deserializację ciągu w strukturze JSON, może analizować wartość przypisaną do klucza. |
Ściągnij |
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null
Klient MQTT ma subskrybowaną subskrypcję do głównego miernika poziomu tematu i wszystkich jego podtematów. Jednocześnie może zweryfikować, czy informacje zostały pomyślnie opublikowane na MQTT Broker - odpisze je z powrotem do UART. OSTRZEŻENIE: MQTT Broker IoT Industries Slovakia, który jest używany w przykładowej implementacji, jest publiczny, więc dane mogą być zmieniane, nadpisywane, odczytywane przez dowolnego użytkownika! Jeśli jakikolwiek inny użytkownik prześle oprogramowanie układowe klienta JSON do swojego mikrokontrolera bez żadnych zmian, nadpisze dane w predefiniowanym temacie, a Ty go nadpiszesz. Wskazane jest zatem wybranie innego tematu, na który dane będą przesyłane podczas faktycznego wdrożenia.