[PYTHON] Einfaches IoT, um mit Raspeye und MESH zu beginnen

Ubiregi Adventskalender 2019 Tag 4 führt ein einfaches IoT mit Raspeye und MESH ein.

Was zu machen

Wenn Sie die "Taste" des MESH-Blocks drücken, wird eine feste Nachricht an Slack gesendet, was sehr einfach ist. Als Anwendung befestige ich einen Monitor an der Raspeltorte und verwende ihn als Türsprechanlage. Ich denke, ich möchte ihn sehen. Wenn Sie alleine leben, gibt es ein Problem, bei dem Sie nicht wissen, ob Personen während Ihrer Abwesenheit zu Besuch sind. Wenn Sie stattdessen eine MESH-Taste drücken, können Sie beispielsweise Ihr Smartphone benachrichtigen, dass eine Person angekommen ist.

Was zuzubereiten ist (derjenige, der diesmal verwendet wurde)

Voraussetzungen

Verfahren

Machen Sie Rasppie zu einem "MESH Hub"

Die Formel ist in dieser Hinsicht sehr großzügig, daher sollten Sie sich darauf beziehen.

[Sagen Sie mir, wie Sie die App "MESH Hub" auf Raspberry Pi - MESH Support \ | Blockförmige elektronische Tags installieren, die aus Versehen eine Verbindung zur App herstellen](https://support.meshprj.com/hc/ ja / articles / 115002125554)

Ergänzung

Die Raspeltorte, die ich dieses Mal verwendet habe, ist Null, daher ist sie beim Starten des Browsers sehr schwer. Der Teil, auf den im obigen Verfahren mit dem Browser zugegriffen werden soll, wird mit einem normalen PC ausgeführt. ② So melden Sie sich bei Raspberry Pi an und führen den Download-Befehl aus Ich denke, es ist einfach, den Befehl zu kopieren und über SSH herunterzuladen.

Rufen Sie die URL des eingehenden Webhooks ab

Legen Sie im Voraus einen Benachrichtigungszielkanal fest.

Nächster, Verwenden Sie Slacks eingehende Webhooks \ -Qiita Fügen wir den eingehenden Webhook hinzu und kopieren Sie die URL unter Bezugnahme auf. Es wird empfohlen, die URL zu speichern, da es sich um einen Notizblock handeln kann (wir werden ihn beim nächsten Mal verwenden).

Server in Python schreiben

Ich benutze Python einfach, weil ich es oft benutze. Es spielt also keine Rolle, welche Sprache Sie verwenden, solange Sie dasselbe tun können. In Rasbian ist Python übrigens standardmäßig installiert, sodass Sie Python nicht selbst installieren müssen. Die diesmal verwendete Version von Python ist "Python 2.7.13".

Erstellen Sie einen einfachen HTTP-Server, um Raspeye-Programme von MESH aus zu erreichen. Diesmal habe ich ein leichtes Micro-Web-Framework namens "Flasche" verwendet.

Vorbereitungen

Installieren Sie die im Quellcode verwendete Bibliothek mit pip. (Requests wird verwendet, wenn Slack getroffen wird)

$ pip install bottle requests

Quellcode

Der Speicherort kann sich überall befinden. Erstellen Sie daher eine Datei an einem geeigneten Ort und schreiben Sie den folgenden Quellcode. Der Name kann alles sein, aber diesmal habe ich "server.py" gewählt. (Siehe "Erstellen eines von Apple Watch mit der Himbeerversion MESH \ -Qiita betriebenen Chatroboters")

server.py


# -*- coding: utf-8 -*-

from bottle import route, run, template
import json
import requests

slack_settings = {
    # channel_Lassen Sie uns den Namen willkürlich ändern
    #Dies liegt daran, dass es einfach ist, die Einstellung zu erhöhen, wenn Sie auch andere Kanäle benachrichtigen möchten.
    'channel_name': {
        'url'    : '{URL erhalten im Prozess "URL des eingehenden Webhooks abrufen"}',
        'botname': 'test',
        'icon'   : ':muscle:',
        'message': '<!here>\Benachrichtigung von nMESH'
    }
}

def push(setting):
    datas = {
        'username'   : setting['botname'],
        'icon_emoji' : setting['icon'],
        'text'       : setting['message'],
        'contentType': 'application/json'
    }
    payload = json.dumps(datas)
    result  = requests.post(setting['url'], payload)
    print(result)

@route('/post/slack/<command>')
def mesh_button(command):
    if command == 'channel_name':
        push(slack_settings['channel_name'])
    else:
        raise Error

run(host='localhost', port=8080, reloader=True)

Starten Sie den Server

Starten Sie den Server mit dem folgenden Befehl. Ich denke nicht, dass es besonders schwierig ist.

$ python server.py

Wenn Sie es gut starten, sehen Sie diese Anzeige.

Bottle v0.12.17 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

Versuchen Sie es mit "Curl". Wenn Sie die Konsole schließen, auf der "python server.py" ausgeführt wird, wird der Server gestoppt. Öffnen Sie also eine andere Konsole (auch wenn Sie eine SSH-Verbindung haben).

$ curl http://localhost:8080/post/slack/channel_name

Auf der Seite läuft der Server

<Response [200]>
127.0.0.1 - - [04/Dec/2019 13:46:15] "GET /post/slack/channel_name HTTP/1.1" 200 0

Ich denke, dass ein Protokoll angezeigt wird. Wenn dies der Fall ist, ist es ein Erfolg.

Erstellen Sie einen benutzerdefinierten Block aus dem MESH SDK

In MESH wird die Verarbeitung erstellt, indem die als Blöcke bezeichnete Standardverarbeitung mit Zeilen verbunden wird. (Später eingestellt) Sie müssen also einen Block erstellen, der auf die zuvor erstellte URL von "server.py" trifft. Also mach es zuerst.

Greifen Sie auf die Seite zum Erstellen benutzerdefinierter Blöcke zu

Greifen Sie auf [SDK \ _TOP \ _JP] zu (https://meshprj.com/sdk-jp/). Sie können unter "MESH SDK verwenden" zum Bildschirm für die benutzerdefinierte Blockverwaltung wechseln. FireShot Capture 005 - SDK_TOP_JP - meshprj.com.png

Erstellen Sie einen benutzerdefinierten Block

Klicken Sie auf "Neuen Block erstellen", um den Bildschirm zum Erstellen benutzerdefinierter Blöcke anzuzeigen. Legen Sie ihn also fest. Die Einstellungen sind wie folgt. Wenn Sie alles eingestellt haben, klicken Sie oben links auf "Speichern", um zu speichern.

FireShot Capture 010 - MESH SDK - meshprj.com.png FireShot Capture 011 - MESH SDK - meshprj.com.png

Quellcode in Code eingestellt


var localhost = 'http://localhost:8080' + properties.path;

ajax({
  url    : localhost,
  type   : 'get',
  timeout: 5000,
  success: function (data) {
    callbackSuccess({
      resultType : 'continue'
    });
  },
  error: function(request, errorMessage) {
    log('ERROR: ' + errorMessage);
    callbackSuccess({
      resultType: 'continue'
    });
  }
});

return {
  resultType: 'pause'
}

Eine kurze Beschreibung der Einstellungen

Für die Einstellungen in diesem Bereich habe ich auf "Erstellen eines von Apple Watch mit der Himbeerversion MESH \ -Qiita betriebenen Chatroboters" verwiesen.

Connector Dies stellte nur den Eingangsanschluss ein. Wie Sie später durch Berühren der MESH-App sehen werden, befinden sich im MESH-Block Ein- und Ausgänge. Dieses Mal wird nach dem Drücken der Taste die Verarbeitung dieses benutzerdefinierten Blocks gestartet und es fühlt sich wie das Ende an, sodass im Ausgangsanschluss keine Einstellung vorhanden ist. Wenn Sie etwas anderes tun möchten, nachdem dieser benutzerdefinierte Block funktioniert, muss auch der Output Connector konfiguriert werden.

Property Auf diese Weise können Sie Eigenschaften erstellen, auf die Sie in Ihrem Code verweisen können. Sie können den Wert der Eigenschaft anpassen, wenn Sie einen benutzerdefinierten Block platzieren. Selbst wenn Sie beispielsweise einen anderen Kanal benachrichtigen möchten, müssen Sie keinen neuen Block erstellen. Sie können den Wert der Eigenschaft beim Anordnen einfach ändern, und es ist in Ordnung.

Code Dies ist der JavaScript-Code, der ausgeführt wird, wenn der benutzerdefinierte Block gekickt wird. Sobald der Code gekickt ist, werde ich den Server treffen, den ich zuvor in Python mit Ajax geschrieben habe.

Erstellen Sie ein Rezept mit der MESH-App

Eine kurze Beschreibung der MESH-App

Um einen Prozess mit MESH zu erstellen, müssen Sie mit der MESH-App ein "Rezept" erstellen. ** Dieses Rezept kann nur über die MESH-App erstellt werden. ** Rezepte, die mit Razzpie funktionieren, werden ebenfalls über die MESH-App erstellt.

MESH Hub Registrierung

Lassen Sie uns als vorläufige Vorbereitung Bluetooth für Smartphones und Raspetorte aktivieren. Starten Sie die MESH-App von Ihrem Smartphone aus. Oben rechts befindet sich eine Smartphone-Markierung. Wenn Sie jedoch darauf tippen, wird die folgende Meldung "Zu einem anderen Terminal wechseln" angezeigt. Tippen Sie also auf diese Markierung.

IMG_5206.PNG

Daraufhin wird der Bildschirm "Gerät auswählen" angezeigt. Melden Sie sich an und tippen Sie auf "Hub hinzufügen". IMG_5208.PNG

Tippen Sie auf "Hub hinzufügen", um den nächsten Bildschirm anzuzeigen. Tippen Sie auf "Start Setup", um fortzufahren. IMG_5210.PNG

Dieser Bildschirm fährt auch mit "Weiter" fort. IMG_5211.PNG

Wenn die Verbindung zwischen dem Smartphone und Raspeye erfolgreich ist, wird der folgende Bildschirm angezeigt. Wenn Sie nicht einige Minuten warten können, überprüfen Sie Bluetooth oder prüfen Sie, ob Raspeye zur Einrichtung bereit ist (tippen Sie auf den Link auf dem Bildschirm, und Sie werden sehen, wie es geht). .. IMG_5213.PNG

Dieser Bildschirm gibt an, ob das WLAN von Raspeye eingestellt werden soll oder nicht. Wenn Sie keine drahtgebundene Verbindung hergestellt haben, sollte die Wi-Fi-Verbindung grundsätzlich beendet sein. Überspringen Sie sie daher. IMG_5215.PNG

Entscheiden Sie den Namen des Hubs entsprechend und fahren Sie mit dem nächsten fort. IMG_5218.PNG

Wenn alles gut geht, wird dieser Bildschirm angezeigt. Wählen Sie also den MESH-Hub des Raspeye aus, den Sie gerade hinzugefügt haben, und tippen Sie unten auf dem Bildschirm auf "Auswählen". IMG_5220.PNG

Block hinzufügen / benutzerdefinierten Block / Rezept erstellen

Tippen Sie im oberen Bildschirmbereich der App auf "Neues Rezept", um diesen Bildschirm anzuzeigen. Fügen wir zunächst einen MESH-Block hinzu. Schalten Sie den MESH-Block ein und tippen Sie unten links auf die Plus-Markierung "Block hinzufügen". (Die Stromversorgung kann durch Drücken und Halten des Siliziummaterialteils des MESH-Blocks eingeschaltet werden. Wenn es sich nicht einschalten lässt, laden Sie es auf.) IMG_5222.PNG

Wenn Sie es erfolgreich hinzufügen können, wird im unteren linken Block ein "Schaltflächenblock" angezeigt. Tippen Sie also darauf und ziehen Sie ihn, um ihn zu platzieren. Es sollte wie auf dem Bildschirm unten aussehen. IMG_5226.PNG

Fügen Sie dann einen benutzerdefinierten Block hinzu. Ich habe gerade den JavaScript-Code auf dem Webbildschirm registriert. Obwohl dies auf dem oberen Bildschirm angezeigt wird, können Sie zum Additionsbildschirm wechseln, indem Sie auf das Pluszeichen "Benutzerdefinierte Addition" tippen. Anschließend wird der zuvor registrierte benutzerdefinierte Block wie unten gezeigt angezeigt. Tippen Sie also darauf und dann auf die Schaltfläche "Hinzufügen". IMG_5227.PNG

Ich glaube, ich konnte es sicher hinzufügen. Platzieren Sie den benutzerdefinierten Block auf die gleiche Weise wie den "Schaltflächenblock" zuvor und verbinden Sie das Ende des Schaltflächenblocks und das Ende des benutzerdefinierten Blocks wie unten gezeigt. Sie können eine Verbindung mit einer Linie herstellen, indem Sie vom platzierten Schaltflächenblock zum benutzerdefinierten Block ziehen. IMG_5230.PNG

Ergänzung

Wenn Sie auf den platzierten benutzerdefinierten Block tippen, wird ein Bildschirm wie dieser angezeigt. Hier können Sie den Wert der Eigenschaft ändern. Wenn Sie das serverseitige Programm von Python ändern, können Sie das Verhalten ändern, indem Sie den Pfad hier im selben benutzerdefinierten Block ändern. IMG_5231.PNG

Funktionsprüfung

Nachdem die Einstellungen abgeschlossen sind, drücken wir die MESH-Taste. Wenn Sie bei Slack posten, sind Sie erfolgreich. 無題.png

Zusammenfassung

Damit ist die Benachrichtigung (über Raspeye) über Slack abgeschlossen, wenn Sie die MESH-Taste drücken. Es gibt ziemlich viele Schritte, aber wie Sie vielleicht bemerkt haben, ist der Quellcode, den ich geschrieben habe, sehr klein. Erstens gibt es eine Hürde, dass Sie Raspeye installieren müssen, aber wenn Sie diese überschreiten, können Sie dies relativ schnell tun. Zusätzlich zu den Tasten verfügt MESH über verschiedene Blöcke wie LED, menschlicher Sensor, Bewegungssensor, Temperatur- / Feuchtigkeitssensor, Helligkeitssensor und GPIO. Eine seiner Stärken ist, dass Sie Ihr eigenes IoT erstellen können, auch wenn Sie überhaupt keine elektronische Arbeit leisten können (außer GPIO). Wenn es um elektronische Arbeit geht, sind einige Kenntnisse in Elektrotechnik und Elektronik erforderlich. Für diejenigen, die gewöhnliche Softwareentwickler waren, sind die Hürden daher etwas hoch. MESH-Tags erfordern jedoch fast keine Kenntnisse der elektronischen Arbeit und werden empfohlen, da die meisten Dinge durch Software überfordert sein können. Übrigens, wenn Sie etwas physisch tun möchten, aber keine Kenntnisse über elektronische Arbeit haben, können Sie versuchen, den Befehl Auswerfen zu verwenden, was sehr praktisch ist (Referenz: Befehl Auswerfen ist Himbeere). Spielen wir mit Pi ~ Einfache Arbeit mit CD \ -ROM-Laufwerk ~).

Recommended Posts

Einfaches IoT, um mit Raspeye und MESH zu beginnen
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Einfache Verbindung zwischen Raspberry Pi und AWS IoT
Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform
Haustierüberwachung mit Rekognition und Raspberry pi
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens
MQTT Radicon Car mit Arduino und Himbeere
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Steuern Sie die Musikwiedergabe auf einem Smartphone, das mit Raspberry Pi 3 und Bluetooth mit AVRCP verbunden ist
Mutter pflanzt mit Raspberry Pi
Ich habe mit Raspberry Pi gesprochen
Machen Sie es mit der Syntax einfach
Einführung von PyMySQL in Himbeer-Pi3
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Aktualisieren Sie Raspberry Pi Python mit pyenv auf 3.7 oder höher
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
[Razpai] So überwachen Sie das Verzeichnis kontinuierlich und führen eine Shell mit Hooks auf Änderungen aus
Port FreeRTOS auf Raspberry Pi 4B
Melden Sie sich mit ssh ohne Passwort bei Raspberry PI an (Schlüsselauthentifizierung)
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
MQTT auf Raspberry Pi und Mac
Einfacher Slackbot mit Docker und Errbot
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Serielle Kommunikation mit Raspberry Pi + PySerial
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Home Hack zum automatischen Kauf, wenn es mit Amazon Dash Button und Raspberry Pi billiger wird
Ausgabe von Raspberry Pi an Line
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Betriebssystem-Setup mit Raspberry Pi Imager
Einfach pyspark mit conda installieren
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Probieren Sie L Chika mit Himbeerpi
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Automatischer Programmstart beim Start mit Raspberry Pi 3B + systemd Zusammenfassung
Aufbau eines VPN-Servers mit Raspberry Pie
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Einfaches und einfaches IoT-Leben mit Micropython!
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen
Zeichnen Sie einfach Diagramme mit matplotlib