Клиент JSON, построенный на платформе Arduino, ESP8266, ESP32, позволяет подключаться через веб-сокет к веб-серверу (веб-интерфейсу Leveler). Клиент отправляет циклический HTTP-запрос GET каждые 60 секунд, чтобы получить содержимое файла /json_output.php . страница, на которой веб-сервер распределяет данные JSON об уровне воды (в сантиметрах), объеме колодца (в литрах) на основе установленных в настоящее время глубины и диаметра колодца. Загруженная полезная нагрузка JSON может проанализировать клиент JSON из ответа HTTP, а затем десериализовать эту строку. После десериализации можно получить доступ к отдельным ключам, которым присвоены значения, и получить их -> разобрать. Совпадающие данные записываются в UART — Последовательная линия — 115200 бод/с. В пользовательском приложении, которое можно добавить к существующим исходникам JSON-клиентов, возможно управление сущностями на основе этих значений, например: автоматический полив после достижения определенного уровня воды, откачка воды, запуск насоса, душка. Часть микропрограммы, помеченная как MQTT или MQTTS (зашифрованный MQTT), представляет собой расширенный клиент JSON с возможностью отправки — публикации данных в MQTT Broker IoT Industries Slovakia — словацкий бесплатный MQTT Broker, предназначенный для разработчиков. Оба варианта MQTT и MQTTS используют сокет, который также используется для HTTP-запросов для получения полезных данных JSON. Существующий сервер MQTT можно заменить в вашем исходном коде на ваш, так что вы также можете сделать данные с измерителя уровня доступными в системах домашней автоматизации (Hassio, Mosquitto MQTT, Domoticz, Loxone и другие...). В текущей программной реализации микроконтроллер (клиент JSON) отправляет полученные данные брокеру MQTT в измерителе уровня темы, а отдельные температуры дифференцируются в подтемах.
Название библиотеки | Библиотечная функция | Скачать |
---|---|---|
PubSubClient |
Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega, ESP8266 и ESP32. Обеспечивает связь по протоколу MQTT, также возможна реализация зашифрованного соединения с MQTT Broker, для микроконтроллеров ESP требуется использование класса WiFiClientSecure. |
Скачать |
ArduinoJson |
Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega, ESP8266 и ESP32. Он позволяет десериализовать строку в структуре JSON, может анализировать значение, присвоенное ключу. |
Скачать |
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null
Клиент MQTT имеет подписку на индикатор уровня основной темы и все ее подтемы. В то же время он может проверить, что информация была успешно опубликована на MQTT Broker — он запишет ее обратно в UART. ВНИМАНИЕ: MQTT Broker IoT Industries Slovakia, который используется в примере реализации, является общедоступным, поэтому данные могут быть изменены, перезаписаны, прочитаны любым пользователем! б> Если какой-либо другой пользователь загрузит прошивку клиента JSON в свой микроконтроллер без каких-либо изменений, он перезапишет данные в предопределенной теме, а вы перезапишете ее. Поэтому целесообразно выбрать другую тему, куда будут отправляться данные во время фактической реализации.