JSON client built on the Arduino platform, ESP8266, ESP32 allows connection via a websocket to a web server (web interface of the Level Meter). The client performs a cyclic HTTP GET request every 60 seconds to retrieve the content of the /json_output.php subpage, where the webserver distributes JSON data on water level (in centimeters), well volume (in liters) based on the currently set depth and diameter well. The loaded JSON payload can parse the JSON client from the HTTP response and then deserialize this string. After deserialization, it is possible to access the individual keys to which the values are assigned and obtain them -> parse. The matched data is written to the UART - Serial line - 115200 baud / s. In the user application, which can be added to the existing source codes of JSON clients, it is possible to control entities based on these values, for example: automated irrigation after reaching a certain water level, water pumping, pump start, darling. Part of the firmware marked as MQTT or MQTTS (encrypted MQTT) is an extended JSON client with the ability to send - Publish data to MQTT Broker IoT Industries Slovakia - Slovak free MQTT Broker designed for developers. Both the MQTT and MQTTS variants use a socket, which is also used for HTTP requests to obtain JSON payloads. The existing MQTT server can be replaced in your source code by yours, so you can also make the data from the level meter available in home automation systems (Hassio, Mosquitto MQTT, Domoticz, Loxone and others ...). In the current software implementation, the microcontroller (JSON client) sends the obtained data to the MQTT Broker in the topic level meter, while the individual temperatures are differentiated in subtopics.
|Library name||Library function||Download|
Library for AVR microcontrollers (ATmega) Arduino Uno / Nano / Mega, ESP8266 and ESP32. It enables communication via the MQTT protocol, it is also possible to implement an encrypted connection with the MQTT Broker, the use of WiFiClientSecure is required for ESP microcontrollers.
Library for AVR microcontrollers (ATmega) Arduino Uno / Nano / Mega, ESP8266 and ESP32. It allows you to deserialize a string in a JSON structure, it can parse the value that is assigned to a key.
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null
The MQTT client has a subscribed subscription to the main topic level meter and all its subtopics. It can also verify whether the information has been successfully published on MQTT Broker - it will write it back on the UART. WARNING: MQTT Broker IoT Industries Slovakia, which is used in the sample implementation, is public and so the data can be changed, overwritten, read by any user! If any other user uploads the JSON client firmware to their microcontroller without change, the data in the predefined topic will be overwritten by you, as well as by him. It is therefore advisable to choose another topic where the data will be sent during the implementation.