Référentiel de projet de mesure de niveau avec codes source pour les clients JSON - Github: Indicateur de niveau
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultrasonic HC-SR04 JSN-SR04T Sigfox JSON MQTT
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

Clients JSON - Indicateur de niveau


Client JSON construit sur la plateforme Arduino, ESP8266, ESP32 permet la connexion via un websocket à un serveur web (interface web de Leveler). Le client effectue une requête HTTP GET cyclique toutes les 60 secondes pour récupérer le contenu du /json_output.php , où le serveur Web distribue les données JSON sur le niveau d'eau (en centimètres), le volume du puits (en litres) en fonction de la profondeur et du diamètre du puits actuellement définis. La charge utile JSON chargée peut analyser le client JSON à partir de la réponse HTTP, puis désérialiser cette chaîne. Après la désérialisation, il est possible d'accéder aux clés individuelles auxquelles les valeurs sont attribuées et de les obtenir -> parse. Les données correspondantes sont écrites sur l'UART - Ligne série - 115200 bauds / s. Dans l'application utilisateur, qui peut être ajoutée aux codes sources existants des clients JSON, il est possible de contrôler des entités en fonction de ces valeurs, par exemple : irrigation automatisée après avoir atteint un certain niveau d'eau, pompage d'eau, démarrage de pompe, chéri. Une partie du firmware marqué comme MQTT ou MQTTS (MQTT crypté) est un client JSON étendu avec la possibilité d'envoyer - Publier des données à MQTT Broker IoT Industries Slovaquie - Broker MQTT gratuit slovaque conçu pour les développeurs. Les variantes MQTT et MQTTS utilisent toutes deux un socket, qui est également utilisé pour les requêtes HTTP afin d'obtenir des charges utiles JSON. Le serveur MQTT existant peut être remplacé dans votre code source par le vôtre, vous pouvez donc également rendre les données du compteur de niveau disponibles dans les systèmes domotiques (Hassio, Mosquitto MQTT, Domoticz, Loxone et autres...). Dans l'implémentation logicielle actuelle, le microcontrôleur (client JSON) envoie les données obtenues au courtier MQTT dans le compteur de niveau de sujet, tandis que les températures individuelles sont différenciées en sous-sujets.

Exemples d'implémentations de programmes pour les clients JSON: CIC

Bibliothèques disponibles pour les microcontrôleurs (Arduino / ESP) - Clients JSON


Archive de la bibliothèque (.zip) étendre à C:/Users/[User]/Documents/Arduino/libraries
Le nom de la bibliothèque Fonction bibliothèque Télécharger
PubSubClient

Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 et ESP32. Il permet la communication via le protocole MQTT, il est également possible de mettre en place une connexion cryptée avec le MQTT Broker, l'utilisation de WiFiClientSecure est obligatoire pour les microcontrôleurs ESP.

Télécharger
ArduinoJson

Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 et ESP32. Il permet de désérialiser une chaîne dans une structure JSON, il peut analyser la valeur qui est attribuée à une clé.

Télécharger
L'implémentation MQTTS est disponible pour les microcontrôleurs ESP8266, ESP32. ESP8266 et ESP32 utilisent un certificat Root CA pour une connexion cryptée au serveur MQTT. Le port crypté du serveur MQTT est 8883 par défaut, 1883 non crypté. Pour obtenir un certificat Root CA pour un serveur MQTT (domaine) spécifique, il est possible d'utiliser l'outil OpenSSL, qui permet de récupérer et d'afficher facilement les informations en question. Les certificats individuels sont répertoriés dans l'ordre de la chaîne de confiance, i. de l'autorité de certification racine à l'intermédiaire.
Commande pour obtenir le certificat CA racine qui a émis le certificat pour le serveur MQTT (Émetteur) :
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Exemple de liste de données au format JSON

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

Les rubriques utilisées pour Publier sur MQTT Broker sont:


  • hladinomer/objem - pour le volume de puits en litres
  • hladinomer/vyska - pour le niveau d'eau actuel en centimètres

  • Sujet pour s'abonner :


  • hladinomer/# - prend tous les sous-thèmes sous hladinomer/, c'est-à-dire volume, hauteur
  • Le client MQTT dispose d'un abonnement à l'indicateur de niveau de sujet principal et à tous ses sous-sujets. Dans le même temps, il peut vérifier que les informations ont été publiées avec succès sur MQTT Broker - il les réécrira dans l'UART. AVERTISSEMENT : MQTT Broker IoT Industries Slovakia, qui est utilisé dans l'exemple d'implémentation, est public et les données peuvent donc être modifiées, écrasées et lues par n'importe quel utilisateur! Si un autre utilisateur télécharge le micrologiciel client JSON sur son microcontrôleur sans aucun changement, il écrasera les données dans la rubrique prédéfinie et vous l'écraserez. Il est donc conseillé de choisir un autre sujet où les données seront envoyées lors de la mise en œuvre proprement dite.


    Sortie PHP JSON, analyse et publication sur le courtier MQTT:


    JSON client (Arduino, ESP8266, ESP32) pre Hladiomer - UART výstup

    Client HiveMQ - S'abonner au sujet hladinomer/#

    JSON client MQTT Broker IoT Industries Slovakia - výstup topicu - Subscribe termostat