~ SMAK ~ - contrôleurs programmables pour les propriétés intelligentes utilisant la bibliothèque asyncio sur MicroPython



Préambule


L'utilisation de l'Internet des objets dans les zones rurales est beaucoup plus large que la domotique, bien que ce soit, bien sûr, une question de terminologie - ce que cela signifie. Néanmoins, j'ai conçu le concept de Smart Homestead comme un projet d'automatisation rationnelle des processus se produisant sur des objets situés sur le territoire de mon domaine, et parfois à une distance décente de l'endroit où je me trouve à un moment ou à un autre, mais en même temps, je veux au moins être suffisamment convaincu que ce qui se passe sur ces objets ne dépassera pas les limites de ce qui est autorisé, que je peux, si nécessaire, avoir rapidement une idée de la situation sur le domaine dans son ensemble et sur chaque objet contrôlé en particulier, ainsi que Dans votre essai, intervenir dans les processus ne se précipite pas tête baissée, vers l'objet qui a suscité ma préoccupation,car en ce moment je suis occupé par quelque chose d'important, ou simplement froid banalement et trop paresseux pour quitter la maison.

Dans le même temps, la mise en œuvre de ce concept me permettra d'approfondir ma compréhension de l'utilisation des microcontrôleurs en utilisant les capacités de MicroPython, que j'aime juste avec son illusion de légèreté par rapport au C ++, dans lequel j'ai réalisé héroïquement des projets de complexité variable dans des vies passées, ainsi que la mise en œuvre d'algorithmes, jusqu'à qui soit n'ont pas atteint les mains, soit n'ont pas encore été incorporées dans des bibliothèques dans des langues de haut niveau. En fait, cela a déterminé mon intérêt précisément dans ma propre mise en œuvre, sans recourir à des solutions répandues allant des fabricants bien connus du même Xiaomy aux applications spécialisées telles que EspHome ou les frameworks. Bien que je n'exclue pas la possibilité que, ayant parcouru un grand cercle épineux de ma propre conception, bourré de cônes et de cors, assez plumé mais, bien sûr, non vaincu, j'expirerai,Je dépenserai mon argent durement gagné sur des appareils magnifiquement emballés et conçus de production étrangère et russe à un prix très marché et mettrai en œuvre l'expérience acquise dans des monstres nuageux et pas si existants comme MiHime, Domoticz, IFTT ou autre chose.

En résumé - je voulais prendre plaisir à l'invention du vélo, quand pour cela il y avait, enfin, du temps avant la souffrance estivale, quand ce n'était plus facile à faire, mais il n'y avait pas de temps pour réfléchir, tout en entretenant mon domaine. J'ai écrit cela pour comprendre par moi-même exactement ce que je veux, mais pour me donner le droit à l'avance de ne pas répondre aux commentaires qui pourraient suggérer des solutions existantes et, évidemment, plus complètes. Bien que les algorithmes pour résoudre un problème particulier lié à la mise en œuvre du plan soient les bienvenus.



Approche générale


Les processus se produisant au niveau des objets sont contrôlés par des contrôleurs programmables, qu'il est utile de développer pour résoudre des problèmes locaux, en les combinant plus tard dans une hiérarchie, si nécessaire, en formant des connexions sans fil. Les tâches locales sont résolues lorsqu'il est possible de fournir une connexion filaire ou de courtes connexions radio avec des capteurs et des actionneurs, en utilisant les protocoles les plus simples pour échanger des informations. La solution spatiale consiste dans le fait que la charge de décision maximale incombe au contrôleur qui contrôle les feuilles du graphique orienté sous la forme de capteurs et d'appareils, qui, en même temps, ont la possibilité d'envoyer des informations résumées sous forme compactée au nœud de ce graphique sans fil qui a demandé ces informations.Sur Internet, sur un téléphone ou un autre appareil, il me suffit de voir un écran vierge, ce qui signifie que tout fonctionne comme d'habitude, mais la possibilité de demander des détails et, en cas d'urgence, d'intervenir dans les actions du contrôleur final devrait m'appartenir en tant que créateur de cet espace. Pour le moment, je remets à plus tard la sécurité et la protection contre les influences extérieures.

Le contrôleur lui-même peut déjà avoir des canaux de communication plus puissants et utiliser des protocoles plus avancés tels que MQTT ou ZigBee pour organiser un graphique de réseau maillé stable avec un accès ultérieur à Internet.

Actuellement, le concept est limité par la logique du contrôleur programmable, compte tenu de la possibilité de son inclusion dans un essaim, ou, en d'autres termes, dans un groupe connecté par des connexions sans fil. Le périmètre du contrôleur est un objet soumis au contrôle et à la gestion, en aucun cas une liste complète dont je donne ci-dessous:

  • Serre - température, éclairage, humidité du sol et de l'air
  • Jardin - arrosage, humidité du sol
  • Incubateur - température, humidité, rotation du plateau, son
  • Bruder - température, humidité et éclairage
  • Coop - température, éclairage
  • Ruche - température, humidité, poids et bruit (essaim)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )

Pour décrire, étudier et résoudre le problème, un métalangage a été développé qui nous permet de décrire brièvement les pilotes de périphériques utilisés comme sources et consommateurs, les retards associés au traitement des informations, les canaux de communication par lesquels passent ces informations, les plannings et les temporisateurs pour générer des actions cycliques, des variables, qui contient des informations essentielles pour le contrôle et la gestion des processus se produisant dans l'installation.

Dans cette partie, le métalangage vous permet de lire la description du projet sous une forme lisible, qui sera utile pour générer de la documentation ainsi qu'une liste des équipements matériels et de la logique exprimée en circuits imprimés sur lesquels ou auxquels ces équipements matériels doivent être connectés.

Dans la deuxième partie, le métalangage présente les primitives par lesquelles le processus est contrôlé et qui sont utilisées dans l'initialisation et l'analyse ultérieure de l'état des processus contrôlés par le contrôleur. S'il y a suffisamment de ressources pour les microcontrôleurs utilisés, cette partie peut être implémentée en tant qu'interprète, dont l'entrée est alimentée par des fichiers texte décrivant l'initialisation des pilotes, des canaux de communication, des variables et le script lui-même, qui décrit la logique du contrôleur et ne nécessite pas de changer la couture si le scénario est clarifié.

Comme vous appelez une idée, c'est ainsi qu'elle va flotter, donc Smart Manor est une Smart Homestead, le lieu de naissance d'une idée est l'Altaï, cependant, l'automatisation convient également, bien que ce soit une sorte de tautologie dans ce contexte à la définition de Smart et, bien sûr, au moyen de laquelle, à l'aide d'un contrôleur programmable . En combinant les lettres majuscules et en mélangeant les mots anglais et russes, il s'est avéré - ~ SMAK ~ , mais la langue méta de la description du système, respectivement, ~ MEAT ~ . Ce concept culinaire est sorti - l'application ~ SMAK ~ utilisant ~ MEAT ~ . Soit dit en passant, le protocole sans fil primitif pour l'interaction du contrôleur et des appareils qui ne sont pas dotés à l'avance de leurs propres protocoles, j'ai appelé ~ JuJu ~ .

L'implémentation matérielle est conçue en utilisant les capacités de ESP8266 et Arduino avec RF24 + ou autre, plus moderne, mais pas moins cher - pour les capteurs et actionneurs - relais, vannes, interrupteurs, etc., s'ils ne peuvent pas être connectés directement pour une raison quelconque, la logique elle-même essayez de placer le contrôleur sur ESP32, et s'il échoue, sur STM32. L'objectif est de minimiser les coûts du fer. J'admets l'utilisation de la mise en œuvre matérielle d'un certain nombre de processus tels que les contrôleurs de température avec hystérésis ou les instruments de mesure de la qualité de l'air, mais comme je ne suis pas ingénieur en électronique, développer un circuit utilisant des condensateurs, des résistances et des transistors est pénible pour moi et cela détermine un équilibre raisonnable entre la mise en œuvre matérielle et logicielle, et aussi une volonté de participation directe,ou au moins la contemplation de ce qui se passe dans le contrôleur.

L'implémentation logicielle est basée sur la syntaxe du métalangage ~ MEAT ~ , la bibliothèque asyncio et les algorithmes associés, la logique générale ~ SMAK ~ décrite ci-dessous. La tâche de contrôler les processus se produisant dans l'installation vise à maintenir certaines conditions de fonctionnement, ainsi qu'à restaurer ces conditions en cas de déviations.En outre, avec une déviation plus forte, des actions plus énergétiques peuvent être utilisées, ainsi qu'une réponse aux situations d'urgence.

À l'avenir, la terminologie suivante sera utilisée dans le texte:

Sources (Source) - capteurs, canaux de communication entrants
Consommateurs - appareils exécutifs, canaux de communication sortants

L'interaction des sources et des consommateurs est décrite dans le scénario en analysant les valeurs reçues des sources; statut des temporisateurs et des consommateurs; valeurs des variables; horaires, sur la base desquels des commandes de contrôle sont délivrées aux consommateurs.

Le registre des sources est utilisé pour stocker les dernières données obtenues à la suite d'une enquête sur les sources, chacune pouvant être interrogée avec sa propre fréquence. Après mise à jour des données d'au moins une des sources, une unité d'analyse est lancée pour clarifier les modes de fonctionnement des consommateurs.

Le registre du consommateur est utilisé pour séparer les données du programme et les données physiques afin de mettre en œuvre le mécanisme de la logique de priorité pour l'exécution du script, qui consiste en ce que dans le processus d'analyse des conditions décrites dans le script, des commandes conflictuelles peuvent être émises vers le même appareil et la commande finale sera considérée qui a été enregistré en dernier dans le script. Ainsi, en formant une séquence de contrôles d'état dans le scénario de fonctionnement des dispositifs, leur priorité peut être formée. Physiquement, les commandes ne seront exécutées qu'après la fin de l'unité d'analyse.

L'interrogation des sources et l'exécution des commandes par les consommateurs ont lieu en mode asynchrone, c'est-à-dire que leurs pilotes transfèrent le contrôle au planificateur du système en prévision du moment de la demande ou de la commande, ainsi qu'en cas d'inertie de fonctionnement, pendant laquelle la source ou le consommateur est dans un état occupé, puis les demandes suivantes sont placées tour.

Selon le type d'appareil, le conducteur peut utiliser plusieurs canaux d'information, par exemple, un capteur de température et d'humidité DHT utilise 2 canaux pour transmettre la température et l'humidité, et les appareils DS18B20 connectés à un bus commun pour contrôler le collecteur du sol chaud - encore plus, ou un servo variateur intégré, contrôler plusieurs moteurs ou vannes en même temps.

Les caractéristiques du pilote incluent un ensemble de requêtes et de commandes spécifiques à l'appareil, le temps de retard pour leur exécution, ainsi que le type de communication par lequel un signal est transmis, qui peut être matériel (1Wire, I2C, SPI, UART, etc.) et sans fil (WiFi, radio RF, BT, etc.), qui complète les méthodes de transmission des requêtes et des commandes. De plus, le pilote propose des modes d'autodiagnostic lorsqu'il est chargé, des actions lorsqu'il est éteint et un diagnostic des conditions imprévues pendant le fonctionnement normal en mode asynchrone. Le pilote peut exécuter plusieurs tâches asynchrones, par exemple, si un retour d'informations sur l'état du périphérique est requis.

Depuis l'unité d'analyse, vous pouvez accéder aux registres des sources, des consommateurs, des temporisateurs et des variables, des constantes système ainsi qu'au planning. Idéalement, l'unité d'analyse est considérée comme un interprète d'un langage de description de script simple, représenté par un fichier texte, mais dans les premières versions, lors de l'écriture d'un script dans le code du firmware, j'adhérerai aux primitives de base de ce langage pour en générer une présentation plus concise. Actuellement, le langage de description de script est utilisé pour simuler le fonctionnement d'objets (incubateur, couveuse, poulailler, rucher, serre, jardin, chaufferie, chambre d'hôtel), déterminer le nombre requis d'appareils et leurs caractéristiques, ce qui s'est déjà révélé très utile.

Plus loin dans les plans se trouve la publication de déjà accumulés et créés:

  • ~ SMAK ~ - description des algorithmes de fonctionnement généraux
  • ~ SMAK ~ - description du métalangage ~ VIANDE ~
  • ~ SMAK ~ - description du protocole ~ JuJu ~
  • ~ SMAK ~ - description des exigences de création de pilotes de périphérique dans ~ SMAK ~
  • ~ SMAK ~ - pratique d'application

Source: https://habr.com/ru/post/undefined/


All Articles