Репозиторий проекта Хладиномер с исходными кодами для JSON-клиентов — Github: Измеритель уровня
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ультразвуковой HC-SR04 JSN-SR04T Sigfox JSON MQTT
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

Клиенты JSON — измеритель уровня


Клиент 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 в измерителе уровня темы, а отдельные температуры дифференцируются в подтемах.

Примеры программных реализаций для клиентов JSON: ЗДЕСЬ

Доступные библиотеки для микроконтроллеров (Arduino/ESP) - клиенты JSON


Архив библиотеки (.zip) развернуть до C:/Users/[User]/Documents/Arduino/libraries
Название библиотеки Библиотечная функция Скачать
PubSubClient

Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega, ESP8266 и ESP32. Обеспечивает связь по протоколу MQTT, также возможна реализация зашифрованного соединения с MQTT Broker, для микроконтроллеров ESP требуется использование класса WiFiClientSecure.

Скачать
ArduinoJson

Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega, ESP8266 и ESP32. Он позволяет десериализовать строку в структуре JSON, может анализировать значение, присвоенное ключу.

Скачать
Реализация MQTTS доступна для микроконтроллеров ESP8266, ESP32. ESP8266 и ESP32 используют корневой сертификат CA для зашифрованного подключения к серверу MQTT. Зашифрованный порт сервера MQTT по умолчанию — 8883, незашифрованный — 1883. Чтобы получить корневой сертификат CA для определенного сервера MQTT (домена), можно использовать инструмент OpenSSL, который позволяет легко извлекать и отображать рассматриваемую информацию. Отдельные сертификаты перечислены в порядке цепочки доверия, т.е. с корневого ЦС на промежуточный.
Команда для получения сертификата корневого ЦС, выдавшего сертификат для сервера MQTT (издателя):
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Пример списка данных в формате JSON

{
"value": 378,
"volume": 1900.04
}

Темы, используемые для публикации на MQTT Broker:


  • hladinomer/objem - для объема колодца в литрах
  • hladinomer/vyska - для текущего уровня воды в сантиметрах

  • Тема для подписки:


  • hladinomer/# - удаляет все подтемы в разделе hladinomer/, таким образом объем и высота уровня воды в колодце
  • Клиент MQTT имеет подписку на индикатор уровня основной темы и все ее подтемы. В то же время он может проверить, что информация была успешно опубликована на MQTT Broker — он запишет ее обратно в UART. ВНИМАНИЕ: MQTT Broker IoT Industries Slovakia, который используется в примере реализации, является общедоступным, поэтому данные могут быть изменены, перезаписаны, прочитаны любым пользователем! Если какой-либо другой пользователь загрузит прошивку клиента JSON в свой микроконтроллер без каких-либо изменений, он перезапишет данные в предопределенной теме, а вы перезапишете ее. Поэтому целесообразно выбрать другую тему, куда будут отправляться данные во время фактической реализации.


    Вывод JSON PHP, анализ и публикация в брокере MQTT:


    JSON client (Arduino, ESP8266, ESP32) для индикатора уровня - выход UART

    Клиент HiveMQ - Подпишитесь на тему hladinomer/#

    JSON client MQTT Broker IoT Industries Slovakia - вывод темы - Подписаться на терморегулятор