Es scheint, dass Sie neulich gelesen haben Zusammenfassen der Statusbestätigung und des Betriebs von IRKit und Philips Hue mit MQTT, und schließlich ist IoT heiß. Ich habe ein Gefühl.
Lassen Sie uns diesmal über MQTT mit Pepper sprechen. Dieses Mal hatte ich das Gefühl, dass ** "Wenn Sie den Speichermechanismus (AL Memory) und MQTT miteinander verbinden, können Sie problemlos eine Cloud-Kooperation oder eine externe Kooperationsanwendung schreiben", also habe ich eine solche Box erstellt **.
Suna hat es bereits mit MQTT mit Pepper versucht, daher habe ich es als Referenz verwendet. Es ist sehr sorgfältig organisiert, daher finden Sie hier den technischen Hintergrund und die Elemente.
Übrigens gibt es einige persönliche Tipps, wie Sie das Modul, das das Modul verwendet, einfach in der Python-Box mit der Box-Bibliothek verteilen können. Ich mache es als individuelle Entwicklung bis zuletzt, aber da ich alles getan habe, möchte ich aufschreiben, wie man es benutzt und wie man darüber nachdenkt.
NAOqi ist die Software-Grundlage von Pepper und im Zentrum dieses Frameworks steht ein Modul namens ** ALMemory **. Es unterstützt das Auslösen von Ereignissen, das Abonnieren von Ereignissen, das Einstellen und Abrufen von Werten usw. sowie das Überwachen von Sensoren und das Abrufen von Werten aus Anwendungen über dieses Modul. Es ist dafür gedacht. (Einzelheiten finden Sie unter [Ereignis- und Werterfassung über ALMemory](http://qiita.com/Atelier-Akihabara/items/4162192129f366da1240#almemory%E3%82%92%E4%BB%8B%E3%81%97] % E3% 81% 9F% E3% 82% A4% E3% 83% 99% E3% 83% B3% E3% 83% 88% E5% 80% A4% E3% 81% AE% E5% 8F% 96% E5 Siehe ungefähr% BE% 97))
Auf der anderen Seite, ** MQTT **, wie Sie aus Mr. Shiguredos Weitere Informationen zu MQTT ersehen können, geben verschiedene Geräte Nachrichten aus und Mit diesem Protokoll können Sie Nachrichten abonnieren, die von einem anderen Gerät ausgegeben wurden. Verschiedene Geräte können Nachrichten über den sogenannten MQTT-Broker veröffentlichen und abonnieren.
Diese Modelle, wie das Ausgeben und Abonnieren von Nachrichten, werden als Pub / Sub-Modelle bezeichnet, aber sowohl ALMemory als auch MQTT sind ** dasselbe Modell, und ich bin sicher, dass sie eine hohe Affinität ** haben. Deshalb.
Ich habe bei Veranstaltungen usw. mit Pepper zusammengearbeitet, und das Gefühl, dass "durch die Verknüpfung von Pepper mit verschiedenen externen Diensten nicht nur Pepper selbst, sondern auch der Wert des Dienstes weiter gesteigert wird", wird immer stärker. Ich werde.
Jeder Dienst bietet eine sehr praktische Client-Bibliothek, aber es ist ziemlich schwierig, diese Bibliotheken direkt aus der Box-Bibliothek zu verwenden, die von Peppers Entwicklungstool Choregraphe bereitgestellt wird, und in vielen Fällen gibt es eine Codierungswand. Ich kann es nicht vermeiden. Obwohl NAOqi eine auf Python basierende Ausführungsumgebung ist, ist es eine Umgebung, in der das Codieren einfach ist, da Paketverwaltungstools wie pip nicht frei verwendet werden können und es Dinge wie "NAOqi-spezifische Manieren" gibt. Die aktuelle Situation ist, dass dies nicht der Fall ist.
Obwohl die CPU und der Speicher von Pepper für den allgemeinen Verkauf verbessert wurden, ist es außerdem erforderlich, die Rechenleistung für eine autonome Steuerung wie Sicherheit und Teile wie Emotionskarten zu verwenden, und es ist auch möglich, die Berechnung mit der Anwendung zu verteilen. Es scheint ein Problem zu geben. Es scheint, dass umfangreiche Berechnungen wie die Erkennungsverarbeitung in der Cloud oder auf einem Server außerhalb von Pepper berücksichtigt werden müssen.
Aus diesem Grund dachte ich, dass durch die Verbindung von ALMemory und MQTT eine einfache Verbindung mit externen Systemen wie der Cloud nur mit der Box möglich ist, die ALMemory verwaltet.
Ich denke, es wäre interessant, sich so bewegen zu können.
Deshalb habe ich die MQTT Adapter Box gemacht.
Ich versuche, es derselben Box-Bibliothek wie die vorherige Mit qi Framework umgeschriebene Event-Box abonnieren hinzuzufügen. GitHub ist unten
Das Verzeichnis ** web-boxen ** ist die Box-Bibliothek. Ich werde erklären, wie die Box-Bibliothek geladen und verwendet wird.
Um die MQTT Adapter-Box in Ihrer App zu platzieren, müssen Sie zuerst die Box-Bibliothek in Choregraphe öffnen. Mach Folgendes:
Wählen Sie im Bereich [Box Library] die Option [Open Box Library].
Wählen Sie ** Webboxen-Verzeichnis ** aus den von GitHub heruntergeladenen oder geklonten Verzeichnissen.
Beachten Sie, dass Sie als Dateityp "Box Library Directories" auswählen müssen.
** Web-Box-Box-Bibliothek ** wird im Box-Bibliotheksfenster angezeigt
Sie können jetzt die Webbox-Box-Bibliothek verwenden, die die MQTT-Adapter-Box enthält.
Das Feld Netzwerk> MQTT-Adapter in der Box-Bibliothek für Webboxen wird wie folgt verwendet.
Ziehen Sie das Feld Netzwerk> MQTT-Adapter per Drag & Drop aus der Box-Bibliothek "Web-Boxen" in das Bedienfeld "Flussdiagramm".
Diese MQTT-Adapterbox verwendet ein Modul namens paho, das beim Ziehen und Ablegen der MQTT-Adapterbox automatisch im Projekt ist. Es ist für den Import in konzipiert.
Benutzername ... Benutzername der MQTT Broker-Verbindung --Password ... MQTT Broker-Verbindungskennwort --Key-Topic Bindings ... Korrespondenz zwischen ALMemory-Schlüsseln und MQTT-Themen. Details werden später beschrieben
Die Details der Definitionsmethode und des Ausführungsbeispiels werden unten erläutert.
Mit der Einstellung Schlüsselthemenbindungen im Feld MQTT-Adapter können Sie angeben, welcher Schlüsselwert in ALMemory welchem Themenwert in MQTT zugeordnet werden soll.
Entsprechungen werden durch Trennen mit "ALMemory-Schlüssel: MQTT-Thema" usw. angegeben. Sie können mehrere Entsprechungen definieren, indem Sie sie durch ;
trennen.
Durch Hinzufügen von / am Ende des Schlüsselnamens und des Themennamens können Sie die folgenden Schlüsselthemen gleichzeitig angeben. Zum Beispiel
Sie können auch Wertkonvertierungen definieren, z. B. "ALMemory-Schlüssel: MQTT-Thema: Typ".
Unten finden Sie ein Beispiel für die Verwendung ...
Sie können einen Wert von einem anderen Gerät über den MQTT-Adapter in Peppers ALMemory werfen und damit etwas wie Say Text ausführen. Beispiele finden Sie unter ** samples / mqtt-say-text ** auf GitHub.
Verwenden Sie test.mosquitto.org für MQTT Broker
Setzen Sie das MQTT-Thema test-yacchin1205 / sample1 / Message
, das mit ALMemory MQTT / Test / Sample1 / Message
verbunden werden soll
Erstellen Sie eine Eingabe im Flussdiagramm, um das Ereignis "MQTT / Test / Sample1 / Message" zu abonnieren, und verbinden Sie es mit dem Feld "Text sagen".
Versuchen Sie als Test, während diese App ausgeführt wird, eine Nachricht an MQTT zu senden, wobei der Befehl mosquitto_pub auf Ihrem Raspberry Pi installiert ist. Wenn Sie beispielsweise ein Thema "test-yacchin1205 / sample1 / Message" (ALMemory in "MQTT / Test / Sample1 / Message") auf die Nachricht "Hallo" von "MQTT" werfen, lautet dies wie folgt.
pi@raspberrypi ~ $ mosquitto_pub -h test.mosquitto.org -t test-yacchin1205/sample1/Message -Hallo von m MQTT
Das Feld Text sagen antwortet dann über ALMemory.
Wenn Sie MQTT auf diese Weise durchlaufen, können Sie problemlos Anweisungen von außerhalb von Pepper an Pepper senden.
Wie in Aggregieren der Statusbestätigung und des Betriebs von IRKit und Philips Hue mit MQTT beschrieben, kann Hue bei mir zu Hause über MQTT betrieben werden. ..
Dieses Mal werde ich ein Beispiel schreiben, das die Beleuchtung von Hues Lampe durch Streicheln von Peppers Kopf steuert.
Zu Hause können Sie den Beleuchtungsstatus des Lichts ändern, indem Sie JSON-Daten in das unten gezeigte Thema "Benutzername / Farbton / xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx (Brücken-UDN) / Licht / x (Licht-ID) / Status" werfen. Ich versuche es zu kontrollieren.
username/hue/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/light/x/status {"on": true, "saturation": 254, "brightness": 204, "hue": 34297}
Wenn Sie ALMemory einen Wert für den Beleuchtungsstatus von Hue geben, möchten Sie den Status von Hue ändern. Wenn Sie jedoch solche JSON-Daten (dikt) angeben, geben Sie in ALMemory `[[" on ", True] , ["Sättigung", 254], ["Helligkeit", 204], ["Farbton", 34297]] wird automatisch konvertiert.
Erstellen Sie die App wie folgt. Informationen wie ID und Passwort werden mitgeliefert, daher nur eine Übersicht ...
Verwenden Sie Sango für den MQTT-Broker. Verwenden Sie die von Sango angegebenen Informationen für Host, Port, Benutzername und Passwort
Da wir versuchen, Hue-Ereignisse unter dem Thema "Benutzername / Farbton /" zu veröffentlichen, stellen Sie alle diese Themen so ein, dass sie mit Schlüsseln verbunden sind, die mit "MQTT / Farbton /" in ALMemory beginnen. Das Format ist "json"
Platzieren Sie Sensing> Touch> Tactile Head Box und neue Python Box (Hue On, Hue Off), Programming> Memory> Raise Event Box
Das Feld Farbton ein sollte einen Wert ausgeben, der den Farbton aktiviert.
def onInput_onStart(self):
self.onStopped([["on", True], ["saturation", 254], ["brightness", 204], ["hue", 34297]])
Das Feld Farbton aus sollte einen Wert ausgeben, der den Farbton ausschaltet.
def onInput_onStart(self):
self.onStopped([["on", False], ["saturation", 254], ["brightness", 204], ["hue", 34297]])
Verbinden Sie das Feld "Ereignis auslösen" mit dem Feld "Farbton ein" und "Farbton aus" und geben Sie den Schlüssel an, der der Farbtonbrücke und dem Licht entspricht.
Wenn Sie nur die Vorderseite des Kopfes berühren, werden die Beleuchtungsanweisungsdaten über MQTT an das Steuerprogramm der Hue Bridge übertragen, und die Lampe kann durch Berühren der Rückseite ein- und ausgeschaltet werden.
In Erstellen einer Tweet-Box für Pepper habe ich eine Methode geschrieben, um ein Python-Modul (.py) in ein Projekt aufzunehmen und aus einer Python-Box zu importieren. Dieses Verfahren erfordert Verfahren wie das Kopieren von Dateien beim Erstellen eines Projekts und ist für die Implementierung etwas mühsam. ** Es wäre schön, einen Mechanismus zu haben, mit dem die Dateien dieser Python-Module in der Box-Bibliothek gespeichert werden können, sodass Sie beim Kopieren der Box in Ihr Projekt auch den Python-Code zusammen kopieren können **.
Dieses Mal haben wir dies mithilfe des Mechanismus ** angehängte Datei ** erreicht. Wenn Sie sich den Inhalt der MQTT-Adapter-Box ansehen, werden Sie feststellen, dass sich die MQTT-Adapter-Impl-Box der Python-Box tatsächlich darin befindet.
In diesem Feld befinden sich Variablen vom Typ [Anhang] mit den Namen LibFile1, ..., LibFile4. Hier habe ich die Dateien angegeben, die beim Kopieren aus der Box-Bibliothek in das Verhalten eingeschlossen werden sollen.
Auf diese Weise werden die Dateien unter "/ paho / ..." kopiert, wenn sie aus der Box-Bibliothek in das Verhalten kopiert werden.
Ich habe die MQTT-Adapter-Impl-Box absichtlich als untergeordnetes Element der MQTT-Adapter-Box erstellt, weil ich den Box-Benutzern die mit diesen Anhängen verbundenen Elemente nicht anzeigen wollte (um Verwirrung usw. zu vermeiden).
Im Moment scheint es gut zu funktionieren, aber beim Erstellen einer Box-Bibliothek, beim Kopieren von einem Verhalten in eine Box-Bibliothek, sieht der Pfad der angehängten Datei wie der relative Pfad im Projekt aus (nicht der relative Pfad im Verhalten). Es kann einige Fallstricke geben und es kann andere Fallstricke geben, also ist es diesmal nur ein Versuch.
Durch die MQTT-Unterstützung von Hue und IRKit hatte ich das Gefühl, dass es einfacher ist, Apps mithilfe von MQTT zu verknüpfen. Deshalb habe ich eine Box erstellt, die MQTT auch mit Pepper verarbeiten kann, und sie zu einem Formular gemacht, das als Box-Bibliothek verteilt werden kann.
Ich habe es getan, ohne vorerst über Verschlüsselung nachzudenken, aber ich möchte weiterhin TLS unterstützen. Ich werde es auf GitHub aktualisieren, also schauen Sie bitte. Pull-Anfragen sind ebenfalls willkommen.
PubSub-Modelle wie MQTT sind jedoch gut geeignet, um die Kommunikation zwischen Knoten frei codieren zu können. Wenn ich jedoch verschiedene Codes flirtete und schrieb, habe ich versehentlich Code für Ping-Pong-Nachrichten und im Handumdrehen 10000 erstellt Es gab auch eine Tragödie wie das Senden einer Nachricht oder das Auslaufen freier Plätze. Ich bin der Meinung, dass es möglicherweise besser ist, einen MQTT-Broker selbst einzurichten, indem Sie Mosquitto zum Testen verwenden.
Recommended Posts