~ SMAK ~ - Programmierbare Controller fĂŒr Smart Homesteads, die die Asyncio-Bibliothek von MicroPython verwenden



PrÀambel


Die Nutzung des Internet der Dinge in lĂ€ndlichen Gebieten ist viel umfassender als die Hausautomation, obwohl dies natĂŒrlich eine Frage der Terminologie ist - was damit gemeint ist. Trotzdem habe ich das Konzept von Smart Homestead als ein Projekt der rationalen Automatisierung von Prozessen konzipiert, die an Objekten auf dem Territorium meines Anwesens stattfinden, und manchmal in angemessener Entfernung von dem Ort, an dem ich mich zu der einen oder anderen Zeit befinde, aber gleichzeitig möchte ich es zumindest sein hinreichend sicher, dass das, was an diesen Objekten geschieht, nicht ĂŒber die Grenzen des ZulĂ€ssigen hinausgeht, dass ich mir bei Bedarf schnell ein Bild von der Situation auf dem gesamten Anwesen und insbesondere bei jedem kontrollierten Objekt machen kann In Ihrem Aufsatz, um in die Prozesse einzugreifen, eilen Sie nicht kopfĂŒber zu dem Objekt, das meine Besorgnis verursacht hat,weil ich gerade mit etwas Wichtigem beschĂ€ftigt bin oder einfach banal kalt und zu faul, um das Haus zu verlassen.

Gleichzeitig wird mir die Implementierung dieses Konzepts ermöglichen, mein VerstĂ€ndnis fĂŒr die Verwendung von Mikrocontrollern mithilfe der Funktionen von MicroPython zu vertiefen, die ich mit seiner Illusion von Leichtigkeit im Vergleich zu C ++, in dem ich heldenhaft Projekte unterschiedlicher KomplexitĂ€t in frĂŒheren Leben durchgefĂŒhrt habe, sowie Algorithmen implementiere die entweder nicht in die HĂ€nde gelangten oder noch nicht in Bibliotheken in Hochsprachen enthalten waren. Dies hat in der Tat mein Interesse genau an meiner eigenen Implementierung bestimmt, ohne auf weit verbreitete Lösungen zurĂŒckzugreifen, die von bekannten Herstellern derselben Xiaomy bis zu speziellen Anwendungen wie EspHome oder Frameworks reichen. Obwohl ich die Möglichkeit nicht ausschließe, dass ich ausatme, nachdem ich durch einen großen und dornigen Kreis meines eigenen Designs gelaufen bin, gefĂŒllt mit Zapfen und Körnern, ziemlich gezupft, aber natĂŒrlich nicht besiegt,Ich werde mein hart verdientes Geld fĂŒr wunderschön verpackte und entworfene GerĂ€te auslĂ€ndischer und russischer Produktion bereits zu einem sehr marktĂŒblichen Preis ausgeben und die Erfahrungen aus vorhandenen bewölkten und nicht so monströsen Monstern wie MiHime, Domoticz, IFTT oder etwas anderem umsetzen.

Zusammenfassend: Ich wollte mich an der Erfindung des Fahrrads erfreuen, als es dafĂŒr endlich Zeit vor dem Sommerleiden gab, in der es nicht mehr einfach war, aber keine Zeit zum Nachdenken, wĂ€hrend ich mein Anwesen wartete. Ich habe dies geschrieben, um fĂŒr mich selbst genau zu verstehen, was ich will, aber um mir im Voraus das Recht zu geben, nicht auf Kommentare zu antworten, die auf bestehende und offensichtlich umfassendere Lösungen hinweisen könnten. Obwohl Algorithmen zur Lösung eines bestimmten Problems im Zusammenhang mit der Umsetzung des Plans sehr willkommen sind.



Allgemeiner Ansatz


Die an den Objekten ablaufenden Prozesse werden von programmierbaren Steuerungen gesteuert, die zur Lösung lokaler Probleme zweckmĂ€ĂŸig entwickelt werden und spĂ€ter, falls erforderlich, in einer Hierarchie kombiniert werden, indem drahtlose Verbindungen hergestellt werden. Lokale Aufgaben werden gelöst, wenn es möglich ist, eine Kabelverbindung oder kurze Funkverbindungen mit Sensoren und Aktoren bereitzustellen, wobei die einfachsten Protokolle fĂŒr den Informationsaustausch verwendet werden. Die rĂ€umliche Lösung besteht in der Tatsache, dass die maximale Entscheidungslast auf die Steuerung fĂ€llt, die die BlĂ€tter des orientierten Graphen in Form von Sensoren und GerĂ€ten steuert, die gleichzeitig zusammenfassende Informationen in verpackter Form an den Knoten dieses drahtlosen Graphen senden können, der solche Informationen angefordert hat.Im Internet, auf einem Telefon oder einem anderen GerĂ€t reicht es aus, einen leeren Bildschirm zu sehen, was bedeutet, dass alles wie gewohnt funktioniert. Die Möglichkeit, Details anzufordern und im Notfall in die Aktionen des endgĂŒltigen Controllers einzugreifen, sollte mir als Schöpfer dieses Bereichs gehören. Vorerst verschiebe ich die Sicherheit und den Schutz vor Ă€ußeren EinflĂŒssen auf spĂ€ter.

Der Controller selbst verfĂŒgt möglicherweise bereits ĂŒber leistungsfĂ€higere KommunikationskanĂ€le und verwendet erweiterte Protokolle wie MQTT oder ZigBee, um ein stabiles Mesh-Netzwerkdiagramm mit anschließendem Zugriff auf das Internet zu organisieren.

Derzeit ist das Konzept durch die Logik der programmierbaren Steuerung begrenzt, wobei die Möglichkeit ihrer Aufnahme in einen Schwarm oder mit anderen Worten in eine Gruppe, die durch drahtlose Verbindungen verbunden ist, berĂŒcksichtigt wird. Der Geltungsbereich des Controllers ist ein Objekt, das der Kontrolle und Verwaltung unterliegt, und keinesfalls eine vollstĂ€ndige Liste, von der ich im Folgenden Folgendes gebe:

  • GewĂ€chshaus - Temperatur, Beleuchtung, Boden- und Luftfeuchtigkeit
  • Garten - BewĂ€sserung, Bodenfeuchtigkeit
  • Inkubator - Temperatur, Luftfeuchtigkeit, Drehung des Tabletts, Schall
  • Bruder - Temperatur, Luftfeuchtigkeit und Beleuchtung
  • Coop - Temperatur, Beleuchtung
  • Bienenstock - Temperatur, Luftfeuchtigkeit, Gewicht und GerĂ€usch (Schwarm)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )
  • –
  • —

Um das Problem zu beschreiben, zu erforschen und zu lösen, wurde eine Metasprache entwickelt, die es uns ermöglicht, die als Quellen und Verbraucher verwendeten GerĂ€tetreiber, Verzögerungen bei der Verarbeitung von Informationen, KommunikationskanĂ€le, ĂŒber die diese Informationen geleitet werden, ZeitplĂ€ne und Zeitgeber fĂŒr die Erzeugung zyklischer Aktionen, Variablen, kurz zu beschreiben. Hier finden Sie Informationen, die fĂŒr die Steuerung und Verwaltung der in der Einrichtung ablaufenden Prozesse unerlĂ€sslich sind.

In diesem Teil können Sie in der Metasprache die Beschreibung des Projekts in lesbarer Form lesen. Dies ist hilfreich fĂŒr die Erstellung von Dokumentationen sowie fĂŒr eine Liste von HardwaregerĂ€ten und Logik, die auf Leiterplatten angegeben sind, auf denen oder an die diese HardwaregerĂ€te angeschlossen werden mĂŒssen.

Im zweiten Teil prĂ€sentiert die Metasprache die Grundelemente, mit denen der Prozess gesteuert wird und die bei der Initialisierung und anschließenden Analyse des Zustands der von der Steuerung gesteuerten Prozesse verwendet werden. Wenn genĂŒgend Ressourcen fĂŒr die verwendeten Mikrocontroller vorhanden sind, kann dieser Teil als Interpreter implementiert werden, dessen Eingabe mit Textdateien gespeist wird, die die Initialisierung von Treibern, KommunikationskanĂ€len, Variablen und dem Skript selbst beschreiben, das die Logik der Steuerung beschreibt und keine Änderung des NĂ€hens erfordert, wenn das Szenario geklĂ€rt ist.

Wenn Sie eine Idee so nennen, wird sie schweben, daher ist Smart Manor ein Smart Homestead. Der Geburtsort einer Idee ist Altai. Die Automatisierung ist jedoch auch geeignet, obwohl sie in diesem Zusammenhang eine Art Tautologie zur Definition von Smart darstellt und natĂŒrlich einen programmierbaren Controller verwendet . Es stellte sich heraus, dass die Großbuchstaben kombiniert und die englischen und russischen Wörter gemischt wurden - ~ SMAK ~ , aber die Metasprache der Systembeschreibung ~ MEAT ~ . Dieses kulinarische Konzept kam heraus - die Anwendung ~ SMAK ~ mit ~ MEAT ~ . Übrigens, das primitive drahtlose Protokoll fĂŒr die Interaktion von Controller und GerĂ€ten, die nicht im Voraus mit eigenen Protokollen ausgestattet sind, habe ich ~ JuJu ~ genannt .

Die Hardware-Implementierung wurde unter Verwendung der Funktionen von ESP8266 und Arduino mit RF24 + oder anderen, moderneren, aber nicht weniger billigen - fĂŒr Sensoren und Aktoren - Relais, Ventilen, Schaltern usw. konzipiert, wenn sie aus irgendeinem Grund nicht direkt mit der Logik selbst verbunden werden können Versuchen Sie, den Controller auf ESP32 und, falls dies fehlschlĂ€gt, auf STM32 zu platzieren. Ziel ist es, die Eisenkosten zu minimieren. Ich gebe zu, dass die Hardware-Implementierung einer Reihe von Prozessen wie Temperaturreglern mit Hysterese- oder LuftqualitĂ€tsmessgerĂ€ten verwendet wird. Da ich jedoch kein Elektronikingenieur bin, ist die Entwicklung einer Schaltung mit Kondensatoren, WiderstĂ€nden und Transistoren fĂŒr mich schmerzhaft und dies bestimmt ein angemessenes Gleichgewicht zwischen Hardware- und Software-Implementierung auch der Wunsch nach direkter Teilnahme,oder zumindest die Betrachtung dessen, was in der Steuerung geschieht.

Die Software-Implementierung basiert auf der Syntax der Metasprache ~ MEAT ~ , der Asyncio-Bibliothek und verwandten Algorithmen, der unten beschriebenen allgemeinen Logik ~ SMAK ~ . Die Aufgabe, die in der Anlage ablaufenden Prozesse zu steuern, besteht darin, bestimmte Betriebsbedingungen aufrechtzuerhalten und diese Bedingungen im Falle von Abweichungen wiederherzustellen. DarĂŒber hinaus können mit einer stĂ€rkeren Abweichung energischere Maßnahmen sowie eine Reaktion auf Notfallsituationen eingesetzt werden.

In Zukunft wird im Text die folgende Terminologie verwendet:

Quellen (Quelle) - Sensoren, eingehende KommunikationskanÀle
Verbraucher - ExekutivgerÀte, ausgehende KommunikationskanÀle

Das Zusammenspiel von Quellen und Verbrauchern wird im Szenario beschrieben, indem die von den Quellen empfangenen Werte analysiert werden. Status von Timern und Verbrauchern; Werte von Variablen; ZeitplÀne, auf deren Grundlage Steuerbefehle an Verbraucher ausgegeben werden.

Das Quellregister wird verwendet, um die neuesten Daten zu speichern, die als Ergebnis einer QuellenĂŒbersicht erhalten wurden, von denen jede mit ihrer eigenen HĂ€ufigkeit abgefragt werden kann. Nach der Aktualisierung der Daten mindestens einer der Quellen wird eine Analyseeinheit gestartet, um die Betriebsmodi der Verbraucher zu klĂ€ren.

Das Verbraucherregister wird verwendet, um Programm- und physische Daten zu trennen, um den Mechanismus der PrioritĂ€tslogik fĂŒr die SkriptausfĂŒhrung zu implementieren, der darin besteht, dass bei der Analyse der im Skript beschriebenen Bedingungen widersprĂŒchliche Befehle an dasselbe GerĂ€t ausgegeben werden können und der endgĂŒltige Befehl berĂŒcksichtigt wird welches zuletzt im Skript aufgezeichnet wurde. Somit kann durch Bilden einer Folge von BedingungsprĂŒfungen im Szenario des Betriebs von GerĂ€ten ihre PrioritĂ€t gebildet werden. Physikalisch werden die Befehle erst nach dem Ende der Analyseeinheit ausgefĂŒhrt.

Die Abfrage von Quellen und die AusfĂŒhrung von Befehlen durch Verbraucher erfolgt im asynchronen Modus, dh ihre Treiber ĂŒbertragen die Steuerung an den Systemplaner in Erwartung des Zeitpunkts der Abfrage oder des Befehls sowie im Falle einer TrĂ€gheit des Betriebs, wĂ€hrend der sich die Quelle oder der Verbraucher in einem Besetztzustand befindet, und anschließend werden nachfolgende Anforderungen gestellt Wende.

Je nach GerĂ€tetyp kann der Fahrer mehr als einen Informationskanal verwenden. Beispielsweise verwendet ein DHT-Temperatur- und Feuchtigkeitssensor zwei KanĂ€le zur Übertragung von Temperatur und Luftfeuchtigkeit und DS18B20-GerĂ€te, die an einen gemeinsamen Bus angeschlossen sind, um den Kollektor des warmen Bodens zu steuern - noch mehr, oder einen integrierten Servoantrieb. Steuerung mehrerer Motoren oder Ventile gleichzeitig.

Zu den Merkmalen des Treibers gehören eine Reihe gerĂ€tespezifischer Anforderungen und Befehle, die Verzögerungszeit fĂŒr deren AusfĂŒhrung sowie die Art der Kommunikation, ĂŒber die ein Signal ĂŒbertragen wird, das Hardware sein kann (1Wire, I2C, SPI, UART usw.). Wireless (WiFi, RF-Radio, BT usw.), das die Methoden zum Übertragen von Anforderungen und Befehlen ergĂ€nzt. DarĂŒber hinaus bietet der Treiber Selbstdiagnosemodi beim Laden, Aktionen beim Ausschalten und die Diagnose unvorhergesehener ZustĂ€nde wĂ€hrend des normalen Betriebs im asynchronen Modus. Der Treiber kann mehrere asynchrone Aufgaben ausfĂŒhren, z. B. wenn eine RĂŒckmeldung zum Status des GerĂ€ts erforderlich ist.

Über die Analyseeinheit können Sie auf die Register der Quellen, Verbraucher, Zeitgeber und Variablen, Systemkonstanten sowie den Zeitplan zugreifen. Im Idealfall wird die Analyseeinheit als Interpret einer einfachen Skriptbeschreibungssprache angesehen, die durch eine Textdatei dargestellt wird. In den ersten Versionen werde ich mich jedoch beim Schreiben eines Skripts im Firmware-Code an die Grundelemente dieser Sprache halten, um eine prĂ€zisere Darstellung zu erstellen. Derzeit wird die Skriptbeschreibungssprache verwendet, um den Betrieb von Objekten (Brutkasten, Brutapparat, HĂŒhnerstall, Bienenhaus, GewĂ€chshaus, Garten, Heizungskeller, Hotelzimmer) zu simulieren, die erforderliche Anzahl von GerĂ€ten und deren Eigenschaften zu bestimmen, was sich bereits als sehr nĂŒtzlich erwiesen hat.

Weiter in den PlÀnen ist die Veröffentlichung von bereits angesammelten und erstellten:

  • ~ SMAK ~ - Beschreibung allgemein funktionierender Algorithmen
  • ~ SMAK ~ - Beschreibung der Metasprache ~ MEAT ~
  • ~ SMAK ~ - Protokollbeschreibung ~ JuJu ~
  • ~ SMAK ~ - Beschreibung der Anforderungen zum Erstellen von GerĂ€tetreibern in ~ SMAK ~
  • ~ SMAK ~ - Bewerbungspraxis

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


All Articles