IoT dans ma vie. Comment créer un bureau intelligent et suivre la croissance des pommes de terre dans votre appartement grâce à l'IoT

Je vous salue, Khabrovchians!

En 2020, nous savons tous ce qu'est l'Internet des objets et pourquoi il est nécessaire. Mais combien d'entre nous connaissent les plateformes cloud qui représentent l'une des couches les plus importantes de l'IoT? Faisons les choses correctement.

Ce n'est un secret pour personne que l'hétérogénéité des protocoles complique considérablement les processus de connexion des appareils intelligents, leur configuration et le traitement des données. Des problèmes similaires sont traités dans le nuage de l'Internet des objets. Aujourd'hui, en utilisant l'une des plateformes russes d'Internet des objets à titre d'exemple, je montrerai à quel point il est facile de connecter des appareils avec différents protocoles, ainsi que d'utiliser les informations reçues pour créer des processus d'automatisation.

Dans la plate-forme que j'utilise habituellement pour mes tâches, j'ai déjà mis en œuvre une interaction avec des appareils fonctionnant à l'aide de protocoles tels que MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus et quelques autres.

En plus d'utiliser les protocoles présentés, pour les appareils qui n'ont pas accès à Internet, il est possible d'écrire des agents logiciels - certains intermédiaires entre l'équipement et la plateforme qui sont installés sur un autre appareil (par exemple, Raspberry Pi) et connectés à cet équipement.

Supposons que vous souhaitiez assurer l'interaction avec un appareil qui fonctionne sur l'un des protocoles présentés. Dans ce cas, il suffira de compléter trois étapes:

  1. configurer le modèle avec les paramètres et commandes souhaités;
  2. créer un objet avec un identifiant unique dans la plateforme;
  3. configurer l'appareil pour qu'il se connecte à la plateforme.

Analysons quelques cas et voyons comment tout cela se connecte.

Cas n ° 1 Agile-gong


Pour commencer, un jour, notre équipe a sérieusement réfléchi à la façon d'automatiser les processus de travail au bureau.

Ainsi, conformément au concept Agile, à midi, tous les employés se réunissent lors de la réunion quotidienne. Il est facile de manquer une notification dans Slack à propos d'une prochaine réunion pendant le travail et ce n'est pas très pratique d'être distrait par la montre ... L'idée est donc née de créer Agile-gong - un système de notification sonore automatisé.

Comment est-il mis en œuvre? Iron est NodeMCU (un analogue miniature d'Arduino avec un module Wi-Fi intégré), un servo variateur et un condensateur. Chaque jour de la semaine à 12 heures, vous devez vous assurer que l'arbre de sortie du servo-entraînement avec équipement d'impact à la fin est tourné à un angle suffisant pour faire sonner le gong et informer tout le monde de l'augmentation.

Le schéma de connexion du fer est assez simple:

image

Le code câblé sur NodeMCU fournit:

  1. installation d'une connexion Wi-Fi et connexion à la plateforme à l'aide du protocole MQTT;
  2. régler la position initiale du servo à 0 degrés;
  3. publication de messages contenant des données sur la situation actuelle;
  4. abonnement aux commandes et rotation de l'angle d'asservissement par commande.

#include "Arduino.h"
#include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */
// Servo library
#include <Servo.h>

// Object Servo with name myservo
Servo myservo;
int pos;

EspMQTTClient client(
  "<wifi-ssid>",
  "<wifi-password>",

  "<MQTT Broker server ip>",
  "<ric-mqtt-client-id>"
  );


void setup() {
  Serial.begin(9600);
  move(0);
}

void onConnectionEstablished() {
  Serial.println("connected");
  client.subscribe("move", [] (const String& payload)  {
	int angle = payload.toInt();
	if (angle != pos) {
  	move(angle);
	}
	client.publish("position", payload);
  });
}

void loop() {
  client.loop();
}

void move(const int angle)
{
	myservo.attach(5);
	myservo.write(angle);
	delay(800);
	myservo.detach();
	pos = angle;
}


Côté plateforme, un modèle d'appareil a été développé. Il décrit les paramètres qui peuvent être reçus de l'appareil et les commandes qui peuvent lui être envoyées. Dans l'interprétation de la commande MQTT, ce sont des messages pour le client avec un certain sujet et des données, dans notre cas, les données contiennent l'angle de rotation nécessaire.

image

Ensuite, un objet a été créé avec un identifiant par lequel l'autorisation sur la plate-forme se produit. Après la connexion, l'affichage se présente comme suit:

image

Dans les équipes, il est possible d'envoyer une commande de rotation à un angle de 0 et 90 degrés.

image

Vous devez maintenant ajouter des scripts d'automatisation. Nous allons créer une machine automatique qui, le moment venu, entrera dans un état de rotation à 90 degrés, puis dans le cycle pour un nombre configurable de répétitions, elle fera le nombre de coups nécessaire et reviendra à l'état d'attente initial de 12 heures.

Chaque scénario d'automatisation est un certain schéma fonctionnel qui définit la logique du comportement de l'objet. Après avoir enregistré un tel scénario, vous pouvez prendre en compte toutes les modifications qui se produisent avec le périphérique, et en fonction exactement des changements qui se sont produits, le périphérique pourra effectuer automatiquement les actions appropriées, sans envoyer de commande à l'utilisateur.
La machine résultante peut être utilisée non seulement pour un appareil particulier.

Par exemple, vous pouvez créer exactement le même système avec un gong et l'installer dans un autre bureau de votre bureau. Vous aurez alors le même modèle, deux objets différents et une machine fonctionnant sur deux objets.

image

Cas n ° 2 Capteur de dioxyde de carbone


La deuxième solution utile pour nous a été de connecter un capteur de dioxyde de carbone. Également connecté via MQTT. Encore une fois, le schéma d'assemblage du fer est trivial.

image

Oui, soit dit en passant, nous avons participé à la mise en œuvre du premier et du deuxième cas au sein du hackathon au sein de l'entreprise. Et aucun de nous n'était plongé dans le travail du fer, et cela n'était pas nécessaire.

image

De plus, la procédure est la même. Le modèle inclut le paramètre ppm (1000 ppm = 0,1% de la teneur en 2), que l'appareil transmet, mais ce n'est pas très évident, par conséquent, un autre paramètre a été immédiatement affiché dans le modèle - le pourcentage de teneur en CO2. Il est calculé en ppm divisé par 10000.

image

Ici, vous pouvez également remarquer deux commandes pour allumer l'ampoule. Ils ont décidé de l'utiliser à titre indicatif. Et nous le gérons, bien sûr, à partir de la machine de la plate-forme. Après avoir connecté l'appareil, l'affichage des paramètres est le suivant. Ces valeurs sont acceptées et affichées en temps réel, mais vous pouvez également afficher les anciens paquets accumulés dans l'historique ou afficher un graphique des changements de paramètres sur une certaine période.

image

L'automate pour cet objet fonctionne comme suit. Dans l'état supérieur, la lumière s'éteint. En bas - démarrez la minuterie pendant une minute et allumez l'ampoule. La transition du premier état au second se produit par l'événement de réception de données de l'appareil à condition que la valeur ppm soit supérieure à 600 unités. Le retour (transition du deuxième état au premier) se produit lorsque le temporisateur est déclenché.

image

Vous pouvez avoir deux questions.

  1. Pourquoi automatique? N'est-il pas plus facile d'enregistrer de telles conditions sur le matériel lui-même? Après tout, tout est si simple ici.
  2. Pourquoi y a-t-il une minuterie?

En fait, l'avantage de la machine est même dans un cas aussi simple. J'ai mis ce capteur avec une ampoule sur mon bureau pour le débogage, et chaque fois que je venais au travail, la lumière s'allumait, car la valeur de seuil dans la machine était assez basse. Pendant un certain temps, j'ai essayé différentes valeurs dans la machine et, par conséquent, j'ai atteint la valeur optimale de 600 unités. Pour sélectionner la valeur souhaitée, j'avais juste besoin de changer la valeur dans la machine et de l'enregistrer. Pas de clignotement de l'appareil. Et si nous transférons cet appareil dans un bureau où il est nécessaire de maintenir la meilleure climatisation et une ventilation fréquente est nécessaire, la valeur peut à nouveau être simplement modifiée. Rapide et pratique.

Voici une minuterie pendant une minute. Cela est nécessaire pour que pendant une minute, nous soyons dans un état de CO2 élevé et que nous ne réagissions pas au fait que pendant un certain temps, la valeur élevée continue de venir. Sinon, nous clignotions constamment une ampoule, effectuant des transitions jusqu'à ce que la climatisation se normalise. Vous pourriez déjà deviner qu'il est possible de faire une transition vers l'état initial d'une manière différente. Également en cas de réception de données, mais dans lequel la condition inverse est vraie - ppm <600. Ensuite, nous serons dans le deuxième état exactement jusqu'à ce que la valeur normale arrive.

Cas n ° 3 ACS


L'exemple le plus complexe sera la description de l'utilisation d'un système de contrôle et de gestion des accès, qui est un module électronique conçu pour contrôler l'accès aux locaux, en tenant compte des temps de passage et des événements.

image

Le contrôleur traite les informations provenant du lecteur avec l'interface de sortie Wiegand et, à l'aide du relais intégré, commute l'actionneur - le verrou électromagnétique. Il n'a pas de connexion Internet et aucune connectivité visible à la plate-forme. Cependant, il a son propre protocole d'échange de données avec l'ordinateur de contrôle, grâce auquel il est possible d'envoyer des commandes au contrôleur, telles que la lecture du contrôleur, l'écriture sur le contrôleur, l'ouverture / la fermeture de la serrure, etc. Par conséquent, dans ce cas, une approche non standard a été organisée - l'utilisation de l'agent, que j'ai mentionnée au début de l'article.

Les travaux sur le protocole du contrôleur ont été implémentés en code C ++ et lancés pour exécution sur le Raspberry Pi, qui à son tour était connecté au contrôleur via RS-485 via un convertisseur d'interface. La tâche principale du programme est de se connecter à la plate-forme, de sérialiser les commandes et de désérialiser les données reçues du contrôleur. Ainsi, nous avons pu rendre l'appareil «intelligent» en utilisant une petite couche logicielle.

Le modèle d'appareil est le suivant:

image

Les informations principales du contrôleur sont les événements. Il vient à la plate-forme au format JSON et comprend des champs:

  • heure de l'évènement,
  • code d'événement
  • numéro de carte de l'employé.

Un modèle est également utilisé pour analyser les champs JSON pour divers paramètres.

image

Dans l'interface de l'objet, cela ressemble à ceci:

image

Et voici l'interface pour envoyer des commandes:

image

Vous remarquerez peut-être qu'il existe une commande non seulement pour lire le tampon d'événements, mais aussi pour écrire de nouvelles limites. Les limites du tampon sont stockées dans la mémoire du contrôleur - le début et la fin. Lorsqu'une commande de lecture arrive sur le périphérique, ces limites sont lues et dans ces limites, la lecture à partir du tampon d'événements a lieu. La fin de la limite du tampon est décalée automatiquement sur le contrôleur lorsque de nouveaux événements sont reçus. Mais la bordure initiale du tampon doit être réécrite (indiquant la bordure finale après la dernière lecture) afin de ne pas relire les mêmes données. Mais cela ne doit être fait qu'après l'envoi réussi des données d'événement à la plateforme. Il est également pratique de verrouiller la réception des données, puis d'envoyer une commande pour réécrire les limites de la machine.

image

Ce projet a trouvé sa suite en intégration avec notre système CRM interne, dans lequel sur la page d'informations sur les employés, nous voyons toujours des informations à jour sur qui est ou non au bureau. De plus, l'heure d'entrée / sortie du bureau est affichée, le nombre total d'heures par mois est pris en compte.

image

image

La collecte de données à partir de la plateforme est effectuée à l'aide de l'API RESTful. L'API de plate-forme offre la possibilité de travailler, d'interagir et d'utiliser les entités de plate-forme et leurs données dans des systèmes externes tels que des portails Web, des applications mobiles et Web ou, comme dans notre cas, des systèmes CRM.

Il y a aussi des cas où un invité / livreur de nourriture ou quelqu'un d'autre qui a besoin d'ouvrir la porte est venu dans l'entreprise. Afin de ne pas utiliser votre carte et donc de ne pas transmettre de lectures incorrectes sur votre statut, vous pouvez utiliser le bouton «Déverrouiller» sur la plateforme. Et si une personne doit être rencontrée à la porte, il est pratique de faire de même à partir d'une application mobile.

Cas n ° 4 Smart Garden


Mon histoire personnelle avec le jardin de l'appartement a commencé dans le contexte d'une panique folle de gens et d'achat de produits. Une fois de plus, en allant au magasin et en voyant des étagères vides où les pommes de terre devraient être, j'ai décidé d'utiliser la dernière pomme de terre trouvée dans le réfrigérateur non pas pour son usage prévu. J'ai planté cette pomme de terre dans un énorme pot. Avec une expérience aussi naïve, mon jardin sur le rebord de la fenêtre a commencé, qui deux mois plus tard ressemble déjà à ceci:

image

comme je ne sais pas quel cultivateur et que le jardin a besoin de plus d'eau que de fleurs, j'ai rapidement rencontré un problème que j'oublie de l'arroser. Je ne parlerai pas des systèmes d’irrigation automatiques, c’est trop un sujet et c’est assez difficile d’organiser son travail qualitativement. Au lieu de cela, j'ai eu les idées suivantes:

  1. - , - . , .
  2. , , , — . , , , . , .
  3. – 18:00, 6:00. , — . , , / , .

L'interface ressemblera à ceci: La

image

machine pour le premier cas ressemble à ceci. La transition vers l'état dans lequel la notification est envoyée se fait dans des conditions difficiles - dans l'une des usines, l'humidité est inférieure à la normale. Le lien entre les conditions est OU.

image

Le retour à l'état initial se produit en fonction de la condition - dans toutes les plantes, l'humidité du sol est supérieure à la normale, groupe I. La

image

machine pour le deuxième cas est la suivante. La transition s'effectue selon l'ordonnanceur, la réinitialisation est la transition inconditionnelle.

image

Et enfin, la machine pour ce dernier cas:

image

ces machines tournent sur le même objet et fonctionnent en parallèle.

image

C'est peut-être tout ce que je voulais couvrir dans mon article. L'idée principale que je voulais transmettre était que travailler avec la plate-forme Internet des objets facilite incroyablement la création de processus commerciaux de toute complexité, car dans ce cas, vous n'avez besoin d'étudier qu'une seule interface - l'interface de la plate-forme, qui évite une immersion profonde dans le travail du fer et sa programmation.

All Articles