Domotique Nextion |
Maj : 05/03/20
Abstract :
Résumé : |
Application domotique gérant divers capteurs, et présentée avec un simulateur de données permettant de faire une première évaluation sans brancher un Arduino. Une autre page montrera l’application duale et complémentaire sur Arduino permettant de fonctionner avec de vrais capteurs et interagir avec le chauffage et les alarmes de la maison. Le document « Domotique Arduino » est à lire en premier pour comprendre la philosophie du système et le cahier des charges. Cette autre page décrit le hardware associé pour piloter le Nextion : Carte ESP32 vers Nextion |
Le cahier des charges de base est strictement identique à la version « Domotique Arduino » et ne sera pas repris ici.
Les changements fondamentaux sont liés au choix de l’IHM (interface homme-machine)
Dans la version « Domotique Arduino », l’afficheur ili9481 en 480*320 est lié à une carte DUE par 14 fils et sa gestion est totalement intégrée dans mon firmware.
(Le logiciel sera mis en ligne quand cette page sera plus avancée)
Dans cette version « Domotique Nextion », j’ai totalement changé de paradigme pour l’IHM.
Le firmware ne gère plus l’affichage, il ne s’occupe que de la partie acquisition des données des capteurs, gestion de la base de données et attend des ordres émis par l’interface tactile du Nextion.
Quand le Nextion demande par exemple à afficher une courbe sur une durée, l’Arduino prépare la table de données et envoie tout le paquet en série 115 kb pour créer le graphisme sur le Nextion.
Il y a bien maintenant séparation totale entre le corps de métier domotique et l’IHM, et la communication entre les deux blocs totalement isolés est réduite à sa plus simple expression :
L ’IHM réagit à une commande utilisateur et envoie une demande au corps de métier sous forme d’une simple ligne.
Le corps de métier met en forme la réponse et renvoie la longue séquence attendue par l’IHM pour afficher un nouvel écran.
Cela a un immense avantage, car l’Arduino peut gérer plusieurs clients, et envoyer ses courbes à l'identique quel que soit le demandeur, soit directement en série sur le Nextion, soit en Wi-Fi vers un PC distant (qui affiche en Processing), soit vers un smartphone ou tablette Android en Bluetooth.
Je résume le principe retenu :
La partie corps de métier se charge de tous les calculs.
Pour les ordonnées (verticale), les résultats apparaissent sous forme de tableau de 360 mots de 16 bits, le minimum à zéro le maximum à 0xFFFFF représentant la courbe des données corrigées. En plus de ce tableau, le corps de métier fournira la valeur minimum, le pas et le nombre de pas.
Pour les abscisses (horizontale), le top actuel, et la plage (24 heures, 1 jour, …, 1 an).
Ces données sont nécessaires et suffisantes pour tracer la courbe sur n'importe quel affichage, il suffira au dernier moment d’ajuster les données par un facteur diviseur proportionnel à la résolution de l'afficheur.
Dans la démo sans Arduino, la courbe simulée s’affiche instantanément, mais avec les vrais capteurs, c’est l’Arduino qui envoie les données à afficher. Dans ce cas, apparaît une limite du Nextion !
Les gros calculs côté Arduino prennent moins d’une milliseconde, mais il faut envoyer, en plus de toutes les étiquettes et graduations, 360 fois une ligne du type :
« line X0,Y0,X1,Y1,couleur,fermer la chaîne… », etc..
Toutes ces opérations sont très longues et prennent 0.7 seconde à 115 kb, ce qui se voit sur l’affichage, heureusement que les courbes ne sont rafraîchies que toutes 4 minutes sans action tactile.
Raccourcir cet intervalle n’est pas nécessaire, la courbe ne bouge pas pendant ce temps, seul le petit cartouche d’affichage de la valeur instantanée est rafraîchi.
Dans ce chapitre commun, ce petit gribouillis vous montrera peut-être plus clairement les approches décrites dans mes pages pour afficher graphiquement les données d’acquisition, à partir du "maître", l’ESP32 central, qui centralise une dizaine de capteurs variés. Ces trois affichages fonctionnent bien simultanément sur le même ESP32 maître. Il semble que cela fasse de multiples emplois redondantsi, car en définitive il s’agit de divers affichages qui affichent les mêmes courbes, mais avec des approches totalement différentes, afin de montrer divers chemins possibles. Le terminal en http, visible sur un browser est décrit ici : Domotique via Internet L’affichage en dur sur un Nextion en 800x480 est décrit ici : Domotique Nextion locale L’affichage sur un Pc via Processing est décrit ici : Interpréteur Processing L’affichage sur un moniteur HDMI est décrit ici :Atom PSRAM display |
Avec cette application, le Nextion est déchargé de tout calcul, son utilisation principale et donc d'attendre des commandes par l'intermédiaire des menus tactiles, d'envoyer la commande reçue à l’Arduino, et de récupérer en retour les nouvelles actions à effectuer, changement de page changement de courbe, etc.. La mise à l’heure de son horloge interne sera reprise dans une page spécifique « Horloge RTC Nextion », car cela s’est avéré plus compliqué que prévu, mais elle ne sert à rien dans cette application ! Voici une version simpilfiée du simulateur. |
|
L'application est fonctionnelle avec la chaîne complète Nextion + Arduino et tous ses périphériques, mais j'ai rajouté un émulateur d'Arduino pour ceux qui veulent faire les premiers essais en utilisant le Nextion tout seul. Il faut donc simuler le dialogue vers l'Arduino pour afficher les courbes et faire fonctionner les menus. Il existe dans le logiciel une option simulateur, quand elle est activée, il est possible de tout faire fonctionner sans le moindre Arduino branché. Un générateur pseudo-aléatoire fabriquera les courbes de la manière la plus réaliste possible et tout fonctionnera comme dans la réalité. Cela permet de mettre au point la partie IHM et de la séparer totalement du développement côté Arduino qui assure la gestion des capteurs et de la fabrication des données. |
.
à suivre. . .
Tous les détails et logiciels sont dans cette page à jour au : 220511 |