JSON client built on Arduino platform, ESP8266, ESP32 allows connection via websocket to Ethernet thermostat. The client performs a cyclic HTTP GET request every 15 seconds to retrieve the content of the /get_data.json subpage, where the web server distributes target temperature, hysteresis, and currently measured temperature data to the DS18B20 sensor on the OneWire bus in JSON format. 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 a user application that can be added to existing JSON client source codes, entities can be controlled based on these values, for example: radiator valve opening, solenoid, ventilation, window closing, etc. Alternatively, it is possible to archive data - send it to a web server, where it can be stored, for example, in a MySQL database, in Loxone home automation. Part of the firmware marked as MQTT or MQTTS (encrypted MQTT) is an extended JSON client with the ability to send - Publish 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 thermostat available to home automation systems (Hassio, Mosquitto MQTT, Domoticz, Loxone and others ...). In the current software implementation, the microcontroller (JSON client) sends the acquired data to the MQTT Broker in the thermostat topic, while the individual temperatures are differentiated in subtopics.
Library name | Library function | Download |
---|---|---|
PubSubClient |
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. |
Download |
ArduinoJson |
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. |
Download |
openssl s_client -connect mqttserver.com:8883 -showcerts < /dev/null 2>/dev/null | openssl x509 -in /dev/stdin -sha1 -noout -fingerprint
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null
The MQTT client has a subscribed subscription to the main topic thermostat and all its subtopics. It can also verify whether the information has been successfully published on MQTT Broker. 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 actual implementation.