Dies ist ein Thema, über das ich eine Weile nachgedacht habe, vor allem, weil das "IoT" -Konzept in letzter Zeit viel im Umlauf war.
Ich werde mit dem beginnen, was ich meine, wenn ich "IoT" sage . Ich weiß, dass der Begriff IoT verschiedene Bedeutungen haben kann und dass er manchmal missbraucht wird. Es könnte ein Begriff sein, der nicht klar definiert ist und zu großen Diskussionen darüber führen kann, was es genau bedeutet. Ich selbst kenne die richtige und allgemein akzeptierte Definition des Begriffs nicht. Für mich ist IoT also ein Konzept, das die Möglichkeit definiert, eine Remote-Verbindung zu einem eingebetteten Gerät über das Internet entweder von einem anderen eingebetteten Gerät oder von einem Mobiltelefon aus herzustellen . So einfach ist das.
In diesem Zusammenhang spielt der Zweck der Verbindung keine Rolle, ob Sie ein Gerät in Ihrem Büro mit einem anderen zu Hause verbinden können oder ob Sie von Ihrem Handy aus eine Verbindung zu einem Gerät zu Hause herstellen können, und zwar über das Internet. Dann sprechen wir über IoT-Geräte (die eingebetteten Geräte, nicht das Telefon).
Nachdem ich mich darauf geeinigt habe, was ich unter IoT verstehe, werde ich nun beschreiben, was ich erreichen möchte.
Was ich versuche zu erreichen, ist genau das, was ich in meiner Definition von IoT beschreibe.
Ich möchte ein oder mehrere eingebettete Geräte zu Hause über Ethernet oder WLAN mit meinem Internet-Router verbinden und mit anderen eingebetteten Geräten an einem Remotestandort eine Remoteverbindung herstellen können (und mit Remote meine ich, nicht im selben Netzwerk). und vielleicht auch, um mit einer Überwachungs-App auf meinem Handy eine Verbindung zu ihnen herzustellen
Beispielsweise kann ein einfaches eingebettetes Gerät als Ein- / Ausschalter an meinem Garagentoröffner angeschlossen sein und ein anderes eingebettetes Gerät als großer roter Knopf an meinem Schreibtisch, damit ich den roten Knopf an meinem Schreibtisch drücken kann und das garagentor öffnet sich.
Ein anderes Beispiel wäre ein eingebettetes Gerät mit ADC-Funktionen, das die Temperatur meines Hauses überwachen und mir eine Warnung senden kann, wenn es einen Schwellenwert erreicht. Die Benachrichtigung kann entweder über eine einfache Android-App oder über ein anderes eingebettetes Gerät mit einem kleinen Bildschirm auf meinem Schreibtisch bei der Arbeit empfangen werden.
Diese Beispiele mögen albern sein, dienen aber nur der Veranschaulichung der möglichen Szenarien und Anwendungsfälle für das, was ich erreichen möchte. Am Ende ist die Idee dieselbe, ein eingebettetes Gerät über das Internet mit einem anderen zu verbinden.
Eine andere Sache, die klargestellt werden muss, ist, dass der Datenaustausch zwischen diesen Geräten sehr gering sein wird, nur ein paar Bytes jedes Mal, es sind nicht Hunderte von Kilobytes erforderlich, um zwischen Geräten ausgetauscht zu werden.
Außerdem sind die "eingebetteten Geräte", auf die ich mich beziehe, einfache, aber leistungsfähige Geräte, die auf 100-MHz- oder 200-MHz-Cortex-m4-Mikrocontrollern basieren. Dies ist wichtig zu klären, da auf diesen Geräten keine Linux- oder komplexen Bibliotheken ausgeführt werden. Am Ende ist eine solche Verschwendung von Ressourcen und völlig unnötig, um einen leistungsstarken Prozessor unter Linux zu haben, nur um eine Glühbirne ein- und auszuschalten . Auf jeden Fall plane ich, ein BeagleBoard, Raspberry Pi oder ein anderes Board wie dieses als meine eingebetteten Geräte zu verwenden. Nur Mikrocontroller, weil nicht mehr Komplexität erforderlich ist.
Ich weiß nicht viel über IoT-Plattformen und solche komplexen Lösungen. Als ich mich auf die Suche nach einer Möglichkeit machte, ein eingebettetes Gerät über das Internet mit einem anderen zu verbinden, stieß ich auf einige Websites mit IoT-Diensten.
Ich weiß, dass es einige IoT-Cloud-Dienste gibt, z.
Nur um ein paar zu nennen. Die Hauptprobleme dabei sind Kosten und Komplexität. Sie müssen bezahlen, um diese Dienste zu erhalten, und Sie müssen lernen, wie Sie alle Dienste implementieren, die sie haben, falls Sie sie alle benötigen, und ihre APIs und möglicherweise eine Reihe anderer Dinge, die mir nicht notwendig erscheinen in der Lage, nur einige Bytes zwischen Geräten auszutauschen. Ich möchte nur etwas Einfacheres als das, etwas, das ich selbst tun kann.
Sie können sagen, dass das Implementieren meiner eigenen "Cloud", wenn ich das tun muss, nicht einfach ist und es manchmal besser ist, diese Art von Diensten der Einfachheit halber zu verwenden, aber es gibt zwei Hauptgründe, warum ich wissen möchte, wie es geht Implementieren Sie meine eigenen IoT-Dienste.
Der Hauptgrund ist, dass ich es selbst machen will. Ich möchte mich nicht darauf verlassen, dass Dritte meine Geräte miteinander verbinden, und da ich den Code und die Hardware für meine Geräte entwickeln werde, ist es besser, meine eigenen Mittel zu erstellen, um sie als IoT-Geräte zu verbinden.
Der zweite Grund ist zu lernen, wie man es macht. Wenn ich alle notwendigen Dinge kenne, um dies zu erreichen, kann ich die IoT-Welt besser verstehen.
Außerdem möchte ich erwähnen, dass ich C beherrsche und Linux sowohl bei der Arbeit als auch zu Hause als Alltagsbetriebssystem verwende. Vermeiden Sie daher Windows, da dies für mich nutzlos ist. Ich habe keine Angst vor irgendetwas, das ich in C für meine eingebetteten Geräte oder unter Linux implementieren muss, um alles zu implementieren, was zum Erreichen meines Ziels erforderlich ist.
Meine Frage ist also, was muss implementiert werden und wo müssen zwei oder mehr eingebettete Geräte miteinander verbunden werden, um Daten zwischen ihnen auszutauschen?
Diese Frage Was kann ich verwenden, um ein IoT auf unserem eigenen Server zu erstellen? habe etwas ähnliches aber ist geschlossen und hat keine antworten, setzt auch voraus, dass eine bereits vorhandene cloud infrastruktur genutzt wird. Also hilft es mir nicht.
Dieser andere Beitrag Welche IoT-Dienste stehen zum Speichern / Senden / Veröffentlichen von allgemeinen Daten in der Cloud zur Verfügung? hat eine ähnliche Frage, aber das OP fragt ausdrücklich nach IoT-Diensten und ich versuche, diese zu vermeiden.
quelle
Antworten:
Vielleicht habe ich den Punkt der Frage verpasst, aber ich denke, das ist ein guter Anfang für eine Antwort.
Sie brauchen mindestens drei Dinge.
Dann vergessen Sie nicht die Sicherheit. Auf diese Weise sind Sie näher dran, alles in Ihrem Heimnetzwerk für Angriffe zu öffnen. Vielleicht nur ein bisschen, aber es ist gut, sich des Risikos bewusst zu sein. Sie können versuchen, auf sich aufzupassen, aber gehen Sie davon aus, dass Sie Fehler machen werden.
quelle
Leichte Geräte und Datenraten von einigen Bytes erfordern , wie bereits erwähnt, die Verwendung von MQTT . Ihre Sensorknoten könnten auf eigenständigen ESP8266-Modulen basieren, die leistungsstark genug sind, um eine MQTT-Client-Implementierung zu hosten. Oder Sie können diese Module einfach zusammen mit Ihren externen Mikrocontrollern als AT-befehlsgesteuertes WLAN-Modul verwenden.
Sie können Ihre eigene MQTT-Lösung auf viel weniger leistungsfähigen Mikrocontrollern wie diesem implementieren , der einen Atmega48V mit 4 kB Flash verwendet hat .
Sie können einen Broker auf Ihrem Computer hosten, obwohl es energieeffizienter wäre, stattdessen einen Raspberry Pi auszuführen. Wenn Sie gerne codieren, können Sie auch hier einen eigenen MQTT-Broker implementieren. Ich persönlich fand Mosquitto großartig für diesen Zweck.
Nachteil, dass alle Ihre Sensorknoten eine TCP / IP-Verbindung benötigen würden.
Eine akkufreundliche Lösung könnte darin bestehen, LoraWAN- oder ZigBee- fähige Sensor- / Aktorknoten zu verwenden und ein Gateway auf einem Raspberry / BeagleBone zu implementieren, auf dem auch ein einfacher Webserver gehostet werden kann, auf den von Ihrem Telefon oder anderen Geräten aus zugegriffen werden kann.
In jedem Fall kommt es darauf an, Ihren Hub, Ihr Gateway oder Ihren Server außerhalb Ihres privaten Netzwerks zugänglich zu machen. Es gibt mehr Möglichkeiten, und das Hauptanliegen ist immer die Sicherheit. Dies ist meiner Meinung nach der riskanteste Teil.
Die grundlegenden Anforderungen werden von @Sean recht gut zusammengefasst.
quelle
Sie haben die beiden vorherigen Antworten zur Notwendigkeit eines Controllers / Hubs in Frage gestellt. Bedenken Sie, dass Regeln existieren müssen, um Dinge zu ermöglichen. Wenn Sie einen großen roten Knopf drücken möchten, um ein Garagentor zu öffnen, müssen Sie den Sensor (Knopf) mit der gewünschten Aktion (Öffnen der Tür) verbinden. Dies kann auf zwei Arten geschehen: Sie können die Regel direkt in die Schaltfläche oder in einen separaten Computer einfügen.
Lassen Sie uns mehr über die direkte Lösung nachdenken. Wenn Sie den Knopf für das Garagentor einlernen, enthält der Knopf die internen Regeln. Die Taste benötigt die ID des Garagentors. Wenn Sie das Garagentor austauschen, funktioniert die Taste nicht. Wenn sich der Knopf auf Ihrem Schreibtisch befindet und Ihr Haus ein proprietäres Netzwerk verwendet, muss der Knopf sowohl die Adresse des Gateways Ihres Hauses als auch die Adresse der Tür kennen. Die Taste muss das spezifische Protokoll kennen, um das Öffnen Ihrer Tür zu signalisieren. Stellen alle Hersteller kompatible Tasten her, die über alle Türsignale Bescheid wissen? Die Taste kann nur dann etwas anderes tun, wenn Sie sie neu programmieren. Besitzen Sie einen Flash-Programmierer für den herumliegenden Chip der Taste und ist dieser Programmierer mit anderen Geräten kompatibel? Wenn Sie das Garagentor öffnen und 5 Minuten später schließen möchten, Ihre Schaltfläche benötigt die Komplexität einer Echtzeituhr. Ihr Knopf kennt den Zustand der Tür nicht, so dass Sie nur schwer erkennen können, ob Sie die Tür schließen oder öffnen. Und wie sichern Sie die Regeln, damit Ihre Ersatzschaltfläche den Job erledigen kann, wenn Ihre Schaltfläche kaputt geht? Auf der positiven Seite klingt es billig: Sie brauchen keinen separaten Computer.
Bei einem Controller ist das anders. Alle Meldungen aller Sensoren werden an die Steuerung übermittelt. Jeder Sensor ist einfach: Senden Sie das Signal an die Steuerung. Die Steuerung kann dann alle erforderlichen Eingaben auf sehr komplexe Regeln anwenden: Sie kann den Sonnenscheinsensor überprüfen und die Außenbeleuchtung nur dann einschalten, wenn es dunkel ist, oder die Sprinkler nicht betreiben, wenn der durchschnittliche Niederschlag für den Monat über dem Durchschnitt liegt und die aktuelle Temperatur liegt ist fünf Grad unter dem Durchschnitt. Der Controller kann den Status verfolgen. Dies kann wichtig sein, wenn Sie eine Taste "Garagentor schließen", aber keine Taste "Garagentor öffnen" möchten (wenn ich nicht zu Hause bin, möchte ich die Tür selten öffnen, aber ich möchte sie auf jeden Fall schließen, wenn dies der Fall ist versehentlich offen gelassen.)
Der Controller bietet Platz für Gerätetreiber, die Tasten und andere Treiber, die mit Türen sprechen können, anhören können. Der Controller kann möglicherweise besser auf neue Geräte und Gerätetypen aufgerüstet werden als ein kleiner Chip, der sich in einer Taste befindet.
Die Steuerung kann auch eine komplexere Logik für Infrastrukturaufgaben haben, z. B. die Zustellung von Nachrichten, indem bestimmte Serviceebenen angeboten werden. Das MQTT-Protokoll ermöglicht beispielsweise drei verschiedene Ebenen: Versuchen Sie, die Nachricht einmal zuzustellen, wiederholen Sie die Zustellung, bis sie mindestens einmal angezeigt wird, oder stellen Sie sie einmal und nur einmal zu.
Der Controller bietet einen architektonisch logischen Ort, um alle Nachrichten von und zu einem Kommunikations-Gateway zu konsolidieren und die Verwendung einer externen Schnittstelle zu ermöglichen. Dies bedeutet, dass Ihr Knopf und Ihr Telefon beide Signale senden können und die Regeln herausfinden können, dass beide das Garagentor öffnen dürfen. Das Gateway kann auch die Sicherheit bieten. Sie müssen Ihren Knopf und Ihr Garagentor nicht ins Internet stellen. Sie können beide in private isolierte Netzwerke stellen und das Gateway zum Übertragen der Signale verwenden. Der Controller bietet auch einen einzigen Punkt, um alle Regeln für Ihr System zu sichern.
Die Nachteile des Controllers sind zusätzliche Latenz und zusätzliche Komplexität. Überraschenderweise erhöhen sich die Kosten durch einen Controller nicht nennenswert. Sie können einen Controller auf einem Raspberry Pi für weniger als die Kosten eines durchschnittlichen fernsteuerbaren Lichtschalters implementieren. Diskontieren Sie die Idee nicht allein aufgrund der Kosten.
quelle