IoT in meinem Leben. So erstellen Sie ein intelligentes Büro und verfolgen dank IoT das Wachstum von Kartoffeln in Ihrer Wohnung

Ich grüße dich, Chabrowitscher!

Im Jahr 2020 wissen wir alle, was das Internet der Dinge ist und warum es benötigt wird. Aber wie viele von uns kennen Cloud-Plattformen, die eine der wichtigsten Ebenen des IoT darstellen? Lass es uns richtig machen.

Es ist kein Geheimnis, dass die Heterogenität der Protokolle die Prozesse zum Verbinden intelligenter Geräte, deren Konfiguration und Datenverarbeitung erheblich verkompliziert. Ähnliche Probleme werden durch die Cloud des Internet der Dinge angegangen. Heute werde ich am Beispiel einer der russischen Internet-of-Things-Plattformen zeigen, wie einfach es ist, Geräte mit unterschiedlichen Protokollen zu verbinden und die erhaltenen Informationen zum Erstellen von Automatisierungsprozessen zu verwenden.

Auf der Plattform, die ich normalerweise für meine Aufgaben verwende, habe ich bereits die Interaktion mit Geräten implementiert, die mit Protokollen wie MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus und einigen anderen arbeiten.

Zusätzlich zur Verwendung der vorgestellten Protokolle können für Geräte ohne Internetzugang Software-Agenten geschrieben werden - einige Vermittler zwischen dem Gerät und der Plattform, die auf einem anderen Gerät (z. B. Raspberry Pi) installiert und mit diesem Gerät verbunden sind.

Angenommen, Sie möchten die Interaktion mit einem Gerät sicherstellen, das mit einem der vorgestellten Protokolle funktioniert. In diesem Fall reichen drei Schritte aus:

  1. Konfigurieren Sie das Modell mit den gewünschten Parametern und Befehlen.
  2. Erstellen Sie ein Objekt mit einer eindeutigen Kennung auf der Plattform.
  3. Konfigurieren Sie das Gerät für die Verbindung mit der Plattform.

Lassen Sie uns einige Fälle analysieren und sehen, wie sich alles verbindet.

Fall Nr. 1 Agiler Gong


Zunächst dachte unser Team eines Tages ernsthaft darüber nach, wie Arbeitsprozesse im Büro automatisiert werden können.

Entsprechend dem Agile-Konzept versammeln sich alle Mitarbeiter mittags zum Daily Meeting. Es ist leicht, eine Benachrichtigung in Slack über ein bevorstehendes Meeting während der Arbeit zu verpassen, und es ist nicht sehr bequem, sich von der Uhr ablenken zu lassen ... So entstand die Idee, Agile-Gong zu entwickeln - ein automatisiertes Sound-Benachrichtigungssystem.

Wie ist es implementiert? Eisen ist NodeMCU (ein Miniaturanalog von Arduino mit einem eingebauten Wi-Fi-Modul), ein Servoantrieb und ein Kondensator. An jedem Wochentag um 12 Uhr müssen Sie sicherstellen, dass die Abtriebswelle des Servoantriebs mit Aufprallausrüstung am Ende in einem Winkel gedreht wird, der ausreicht, um den Gong zu läuten und alle über den Anstieg zu informieren.

Der Anschlussplan für Eisen ist recht einfach:

Bild

Der auf NodeMCU verdrahtete Code bietet:

  1. Installation der Wi-Fi-Verbindung und Verbindung zur Plattform unter Verwendung des MQTT-Protokolls;
  2. Einstellen der Ausgangsposition des Servos auf 0 Grad;
  3. Veröffentlichung von Nachrichten mit Daten zur aktuellen Situation;
  4. Befehle abonnieren und den Servowinkel per Befehl drehen.

#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;
}


Auf der Plattformseite wurde ein Gerätemodell entwickelt. Es beschreibt die Parameter, die vom Gerät empfangen werden können, und die Befehle, die an das Gerät gesendet werden können. Bei der Interpretation des MQTT-Befehls handelt es sich um Nachrichten für den Client mit einem bestimmten Thema und Daten. In unserem Fall enthalten die Daten den erforderlichen Drehwinkel.

Bild

Anschließend wurde ein Objekt mit einer Kennung erstellt, mit der die Autorisierung auf der Plattform erfolgt. Nach dem Verbinden sieht die Anzeige wie folgt aus:

Bild

In Teams besteht die Möglichkeit, einen Rotationsbefehl in einem Winkel von 0 und 90 Grad zu senden.

Bild

Jetzt müssen Sie Automatisierungsskripte hinzufügen. Wir werden eine automatische Maschine erstellen, die zum richtigen Zeitpunkt in einen 90-Grad-Rotationszustand wechselt und dann im Zyklus für eine konfigurierbare Anzahl von Wiederholungen die erforderliche Anzahl von Hüben ausführt und in den anfänglichen Wartezustand von 12 Stunden zurückkehrt.

Jedes Automatisierungsszenario ist ein bestimmtes Blockdiagramm, das die Logik des Objektverhaltens definiert. Nachdem Sie ein solches Szenario registriert haben, können Sie alle Änderungen berücksichtigen, die am Gerät auftreten. Basierend auf den Änderungen, die vorgenommen wurden, kann das Gerät die entsprechenden Aktionen automatisch ausführen, ohne einen Befehl an den Benutzer zu senden.
Die resultierende Maschine kann nicht nur für ein bestimmtes Gerät verwendet werden.

Sie können beispielsweise genau dasselbe System mit einem Gong erstellen und in einem anderen Büro in Ihrem Büro installieren. Dann haben Sie dasselbe Modell, zwei verschiedene Objekte und eine Maschine, die auf zwei Objekten ausgeführt wird.

Bild

Fall Nr. 2 Kohlendioxidsensor


Die zweite nützliche Lösung für uns war der Anschluss eines Kohlendioxidsensors. Auch über MQTT verbunden. Auch hier ist das Eisenmontageschema trivial.

Bild

Ja, wir waren übrigens an der Implementierung des ersten und zweiten Falls innerhalb des Hackathons innerhalb des Unternehmens beteiligt. Und keiner von uns war in die Arbeit des Eisens eingetaucht, und das war nicht nötig.

Bild

Weiter ist das Verfahren das gleiche. Das Modell enthält den Parameter ppm (1000 ppm = 0,1% des 2-Gehalts), den das Gerät überträgt. Es ist jedoch nicht sehr offensichtlich. Daher wurde sofort ein weiterer Parameter im Modell angezeigt - der Prozentsatz des CO2-Gehalts. Es wird berechnet als ppm geteilt durch 10000.

Bild

Hier sehen Sie auch zwei Befehle zum Einschalten der Glühbirne. Sie beschlossen, es als Indikation zu verwenden. Und das schaffen wir natürlich von der Plattformmaschine aus. Nach dem Anschließen des Geräts werden die Parameter wie folgt angezeigt. Diese Werte werden akzeptiert und in Echtzeit angezeigt. Sie können jedoch auch vergangene akkumulierte Pakete im Verlauf anzeigen oder eine grafische Darstellung der Parameteränderungen über einen bestimmten Zeitraum anzeigen.

Bild

Der Automat für dieses Objekt funktioniert wie folgt. Im oberen Zustand erlischt das Licht. Unten - Starten Sie den Timer für eine Minute und schalten Sie die Glühbirne ein. Der Übergang vom ersten zum zweiten Zustand erfolgt durch den Empfang von Daten vom Gerät unter der Bedingung, dass der ppm-Wert mehr als 600 Einheiten beträgt. Die Rückkehr (Übergang vom zweiten in den ersten Zustand) erfolgt, wenn der Timer ausgelöst wird.

Bild

Sie können zwei Fragen haben.

  1. Warum automatisch? Ist es nicht einfacher, solche Bedingungen auf der Hardware selbst zu registrieren? Immerhin ist hier alles so einfach.
  2. Warum gibt es einen Timer?

In der Tat ist der Vorteil der Maschine sogar in einem so einfachen Fall. Ich legte diesen Sensor zum Debuggen mit einer Glühbirne auf meinen Schreibtisch, und jedes Mal, wenn ich zur Arbeit kam, ging das Licht an, da der Schwellenwert in der Maschine ziemlich niedrig war. Für eine Weile habe ich verschiedene Werte in der Maschine ausprobiert und dadurch den optimalen Wert von 600 Einheiten erreicht. Um den gewünschten Wert auszuwählen, musste ich nur den Wert in der Maschine ändern und speichern. Kein Blinken des Geräts. Und wenn wir dieses Gerät in ein Büro bringen, in dem die beste Klimaanlage aufrechterhalten werden muss und eine häufige Belüftung erforderlich ist, kann der Wert erneut einfach geändert werden. Schnell und bequem.

Hier ist ein Timer für eine Minute. Dies ist notwendig, damit wir uns für eine Minute in einem Zustand mit hohem CO2-Ausstoß befinden und nicht auf die Tatsache reagieren, dass der hohe Wert für eine Weile anhält. Andernfalls würden wir ständig eine Glühbirne blinken lassen und Übergänge machen, bis sich die Klimaanlage normalisiert. Sie könnten bereits vermuten, dass es möglich ist, auf andere Weise in den Ausgangszustand überzugehen. Auch beim Empfang von Daten, bei denen jedoch die entgegengesetzte Bedingung zutrifft - ppm <600. Dann befinden wir uns genau im zweiten Zustand, bis der Normalwert erreicht ist.

Fall Nr. 3 ACS


Das komplexeste Beispiel ist die Beschreibung der Arbeit mit einem Zugangskontroll- und -verwaltungssystem, einem elektronischen Modul zur Kontrolle des Zugangs zu Räumlichkeiten unter Berücksichtigung von Durchgangszeiten und Ereignissen.

Bild

Die Steuerung verarbeitet die vom Lesegerät kommenden Informationen über die Wiegand-Ausgangsschnittstelle und pendelt über das eingebaute Relais den Aktuator - die elektromagnetische Verriegelung. Es hat keine Internetverbindung und keine sichtbare Verbindung zur Plattform. Es verfügt jedoch über ein eigenes Protokoll für den Datenaustausch mit dem Steuercomputer, mit dem Befehle an die Steuerung gesendet werden können, z. B. Lesen von der Steuerung, Schreiben an die Steuerung, Öffnen / Schließen der Sperre und andere. Daher wurde in diesem Fall ein nicht standardmäßiger Ansatz organisiert - die Verwendung des Agenten, die ich am Anfang des Artikels erwähnt habe.

Die Arbeit am Controller-Protokoll wurde in C ++ - Code implementiert und zur Ausführung auf dem Raspberry Pi gestartet, der wiederum über RS-485 über einen Schnittstellenkonverter mit dem Controller verbunden war. Die Hauptaufgabe des Programms besteht darin, eine Verbindung zur Plattform herzustellen, Befehle zu serialisieren und die vom Controller empfangenen Daten zu deserialisieren. So konnten wir das Gerät mit einer kleinen Softwareschicht „intelligent“ machen.

Das Gerätemodell lautet wie folgt:

Bild

Die Hauptinformationen von der Steuerung sind Ereignisse. Es kommt im JSON-Format auf die Plattform und enthält Felder:

  • Ereigniszeit,
  • Ereigniscode
  • Mitarbeiterkartennummer.

Ein Modell wird auch verwendet, um JSON-Felder für verschiedene Parameter zu analysieren.

Bild

In der Benutzeroberfläche des Objekts sieht es folgendermaßen aus:

Bild

Und dies ist die Schnittstelle zum Senden von Befehlen:

Bild

Möglicherweise stellen Sie fest, dass es einen Befehl gibt, nicht nur den Ereignispuffer zu lesen, sondern auch neue Grenzen zu schreiben. Die Puffergrenzen werden im Controller-Speicher gespeichert - Anfang und Ende. Wenn ein Lesebefehl am Gerät eintrifft, werden diese Grenzen gelesen und innerhalb dieser Grenzen findet das Lesen aus dem Ereignispuffer statt. Das Ende der Puffergrenze wird auf der Steuerung automatisch verschoben, wenn neue Ereignisse empfangen werden. Der anfängliche Rand des Puffers muss jedoch neu geschrieben werden (wobei der letzte Rand nach dem letzten Lesevorgang angegeben wird), damit nicht dieselben Daten erneut gelesen werden. Dies muss jedoch erst erfolgen, nachdem die Ereignisdaten erfolgreich an die Plattform gesendet wurden. Es ist auch praktisch, den Empfang von Daten zu sperren und dann einen Befehl zum Umschreiben der Grenzen in der Maschine zu senden.

Bild

Dieses Projekt wurde in der Integration in unser internes CRM-System fortgesetzt, in dem auf der Informationsseite über Mitarbeiter immer aktuelle Informationen darüber angezeigt werden, wer im Büro ist oder nicht. Außerdem wird die Zeit des Ein- und Ausstiegs aus dem Büro angezeigt, wobei die Gesamtzahl der Stunden pro Monat berücksichtigt wird.

Bild

Bild

Daten werden mithilfe der RESTful-API von der Plattform übernommen. Die Plattform-API bietet die Möglichkeit, die Plattformentitäten und ihre Daten in externen Systemen wie Webportalen, Mobil- und Webanwendungen oder wie in unserem Fall in CRM-Systemen zu bearbeiten, zu interagieren und zu verwenden.

Es gibt auch Fälle, in denen ein Gast / Lebensmittellieferant oder eine andere Person, die die Tür öffnen muss, zum Unternehmen gekommen ist. Um Ihre Karte nicht zu verwenden und damit keine falschen Messwerte über Ihren Status zu übertragen, können Sie die Schaltfläche „Entsperren“ auf der Plattform verwenden. Und wenn eine Person an der Tür getroffen werden muss, ist es bequem, dasselbe über eine mobile Anwendung zu tun.

Fall Nr. 4 Smart Garden


Meine persönliche Geschichte mit dem Garten in der Wohnung begann vor dem Hintergrund einer verrückten Panik von Menschen und dem Kauf von Produkten. Als ich noch einmal in den Laden ging und leere Regale sah, in denen sich die Kartoffeln befinden sollten, beschloss ich, die zuletzt gefundene Kartoffel im Kühlschrank nicht für den vorgesehenen Zweck zu verwenden. Ich habe diese Kartoffel in einen riesigen Topf gepflanzt. Mit solch einem naiven Experiment begann mein Garten auf der Fensterbank, der bereits zwei Monate später so aussieht:

Bild

Da ich nicht weiß, welcher Züchter und der Garten noch mehr Wasser als Blumen benötigt, stieß ich schnell auf ein Problem, das ich vergessen habe, ihn zu gießen. Ich werde nicht über automatische Bewässerungssysteme sprechen, dies ist ein zu großes Thema und es ist ziemlich schwierig, seine Arbeit qualitativ zu organisieren. Stattdessen hatte ich folgende Ideen:

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

Die Schnittstelle sieht folgendermaßen aus: Die

Bild

Maschine für den ersten Fall sieht folgendermaßen aus. Der Übergang in den Zustand, in dem die Benachrichtigung gesendet wird, erfolgt unter schwierigen Bedingungen - in einer der Anlagen liegt die Luftfeuchtigkeit unter dem Normalwert. Die Verbindung zwischen den Bedingungen ist ODER.

Bild

Die Rückkehr in den Ausgangszustand erfolgt je nach Zustand - in allen Pflanzen ist die Bodenfeuchtigkeit höher als normal, Bündel I. Die

Bild

Maschine für den zweiten Fall ist wie folgt. Der Übergang erfolgt nach dem Scheduler, der Reset ist der bedingungslose Übergang.

Bild

Und schließlich die Maschine für den letzteren Fall:

Bild

Diese Maschinen laufen auf demselben Objekt und arbeiten parallel.

Bild

Vielleicht ist das alles, was ich in meinem Artikel behandeln wollte. Die Hauptidee, die ich vermitteln wollte, war, dass die Arbeit mit der Internet of Things-Plattform die Erstellung von Geschäftsprozessen jeder Komplexität unglaublich erleichtert, da Sie in diesem Fall nur eine Schnittstelle untersuchen müssen - die Plattformschnittstelle, die ein tiefes Eintauchen in die Arbeit von Eisen und Eisen vermeidet seine Programmierung.

All Articles