[PYTHON] Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen

Messen Sie Temperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke und Akkuladestand mit TI SensorTag und Himbeere mit Bluetooth Low Energy (BLE). Ich habe es an Pi3 (RPi3) und von RPi3 an IoT-Datenvisualisierungsdienst "Ambient" gesendet, um die Daten grafisch darzustellen. Teil 1 ist eine einfache Methode, die die BLE scannt, die gefundenen SensorTag-Daten liest und alle 5 Sekunden an die Umgebung sendet. Dieses Mal werden jedoch mehrere SensorTags unterstützt und das Leseintervall ist auf 5 Minuten eingestellt. Wir fordern die Langzeitmessung mit Münzbatterieantrieb heraus.

Raspberry Pi3とSensorTag

SensorTag

SensorTag verfügt über drei Arten von Geräten mit unterschiedlichen Kommunikationsmodulen. Diesmal habe ich einen "Multi-Standard SensorTag" verwendet, der mit BLE kommuniziert. Die Sensoren umfassen Umgebungs- und Oberflächentemperatursensoren, Feuchtigkeitssensoren, Luftdrucksensoren, Umgebungslichtsensoren, Beschleunigungssensoren, Gyroskope, Kompasse und Magnetsensoren, die mit einer Einknopfbatterie (CR2032) betrieben werden.

SensorTag

Da SensorTag mit BLE kommuniziert, habe ich mich entschieden, Raspberry Pi3 (RPi3) als Gateway zu verwenden, SensorTag-Daten von RPi3 mit BLE zu erfassen und an Ambient zu senden.

Bei der BLE-Kommunikation sendet das Terminal (Peripheriegerät) Werbedaten, scannt sie auf der zentralen Seite, findet das erforderliche Terminal, stellt eine Verbindung dazu her und sendet und empfängt Daten.

SensorTag sendet Werbedaten und wenn 2 Minuten lang keine Verbindung besteht, wechselt es in den Ruhemodus und verbraucht weniger Strom. Wenn Sie in den Ruhemodus wechseln, können Sie das Terminal nicht von der zentralen Seite aus aktivieren, da es nicht kommuniziert. Sie können zum Werbemodus zurückkehren, indem Sie auf den Netzschalter am Terminal klicken.

Da SensorTag nur eine Verbindung zu einer zentralen Zentrale herstellen kann, müssen Sie im Werbemodus warten, wenn Sie eine Verbindung zu mehreren Zentralen herstellen möchten. Wenn Sie es jedoch als Umgebungssensor verwenden, können Sie nur eine zentrale Verbindung zu einem Gateway herstellen. Es ist in Ordnung. Wenn Sie regelmäßig Messdaten erfassen, während Sie mit dem Gateway verbunden sind, wechselt das Erfassungsintervall nicht in den Ruhemodus, selbst wenn es 2 Minuten oder länger beträgt. Wenn die Verbindung aus irgendeinem Grund unterbrochen wird, versuchen Sie erneut, die Verbindung herzustellen.

In Teil 1 heißt es: "Wenn Sie den SensorTag 2 Minuten lang im angekündigten Zustand belassen, wird er in den Ruhemodus versetzt und Sie können nicht kommunizieren. Verwenden Sie ihn daher als Terminal für Langzeitmessungen. Es ist schwierig ", aber ich fand heraus, dass es problemlos als Terminal für Langzeitmessungen verwendet werden kann, da es nicht in den Ruhemodus wechselt, wenn es angeschlossen bleibt.

Programme auf Raspberry Pi 3 (RPi3)

Das Programm auf RPi3 wurde in Python geschrieben. Die allgemeine Funktionsweise ist wie folgt.

  1. Scannen Sie BLE nach SensorTag
  2. Wenn Sie den SensorTag gefunden haben, schließen Sie ihn an, messen Sie alle 5 Minuten Temperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke und Batteriestand und senden Sie ihn an Ambient
  3. Wenn die Verbindung zum SensorTag unterbrochen wird, stellen Sie die Verbindung wieder her und setzen Sie die Messung fort.

Wenn ein SensorTag gefunden wird, wird für jeden SensorTag ein unabhängiger Thread gestartet, damit er mehrere SensorTags verarbeiten kann, und ein Thread wird zur Kommunikation mit einem SensorTag verbunden.

Ich habe auch einen Webserver in Python ausgeführt und das SensorTag-Einstellungsportal gestartet. Die Kanal-ID und der Schreibschlüssel beim Senden an Ambient werden im Programm nicht beschrieben, können jedoch über den Browser eingestellt werden.

Die grafische Konfiguration des Programms auf RPi3 ist wie folgt.

プログラム構成

Aufbau einer RPi3-Umgebung

Ich habe Bluepy als Bibliothek verwendet, um auf BLE zuzugreifen. Diese Bibliothek ist gut dokumentiert und wird empfohlen, da sie auch Module für den Zugriff auf SensorTags enthält.

Installieren Sie zuerst bluepy auf RPi3.

pi$ cd /var
pi$ sudo mkdir -p www/html
pi$ cd www/html
pi$ sudo apt-get install python-pip libglib2.0-dev
pi$ git clone https://github.com/IanHarvey/bluepy.git
pi$ cd bluepy
pi$ python3 setup.py build
pi$ sudo python3 setup.py install
pi$ cd bluepy
pi$ cp blescan.py btle.py bluepy-helper __init__.py sensortag.py uuids.json ../..

Geändert, um die Kanal-ID und den Schreibschlüssel von Ambient über den Browser festzulegen. Dazu müssen Sie Daten vom HTTP-Anforderungshandler an das Hauptprogramm übergeben, das mit dem SensorTag kommuniziert. Es gibt verschiedene Methoden der Kommunikation zwischen Prozessen, aber dieses Mal habe ich Redis verwendet, das eine gute Affinität zu Python zu haben scheint. Installieren Sie dort Redis und die Redis Python-Bibliothek.

pi$ sudo apt-get install redis-server
pi$ sudo pip3 install redis

Installieren Sie abschließend auch die Python-Bibliothek von Ambient.

pi$ sudo pip3 install git+https://github.com/TakehikoShimojima/ambient-python-lib.git

Die für das Python-Programm und das SensorTag-Konfigurationsportal erforderlichen Dateien wurden auf Github veröffentlicht.

pi$ cd /var/www/html
pi$ sudo wget https://github.com/TakehikoShimojima/sensortag-ambient/archive/master.zip
pi$ sudo unzip master.zip
pi$ cd sensortag-ambient-master
pi$ sudo chmod +x cgi-bin/sensortaglist.py cgi-bin/result.py
pi$ sudo mv * ..
pi$ cd ..

Anlaufen

Da Root-Berechtigungen erforderlich sind, um ein Programm auszuführen, das auf BLE unter RPi3 zugreift, führen Sie das Programm wie folgt aus.

pi$ sudo python3 st2ambient2.py -v

Wenn Sie sich von RPi3 abmelden, wird das Programm beendet. Führen Sie die folgenden Schritte aus, damit es auch nach dem Abmelden weiterhin ausgeführt wird.

pi$ sudo nohup python3 st2ambient2.py -v < /dev/null &

Es gibt zwei Programmoptionen:

Nach einer Weile, in der das Programm gestartet wird, finden Sie den SensorTag. Wenn Sie es mit der Option -v starten, wird eine Meldung ähnlich der folgenden angezeigt:

New SensorTag 24:71:89:bc:63:84

Nach "New Sensor Tag" steht die MAC-Adresse des Terminals.

Wenn Sie den SensorTag nicht finden können, drücken Sie den Netzschalter des SensorTag mindestens 3 Sekunden lang, um das Terminal auszuschalten, und klicken Sie dann erneut auf den Netzschalter. Die Werbung startet und die grüne LED am SensorTag beginnt jede Sekunde zu blinken. Nach einer Weile sollte das Programm das Terminal finden.

Wenn Sie das Gerät gefunden haben, stellen Sie über Ihren Browser eine Verbindung zur Raspberry Pi 3-Adresse her. Anschließend wird das folgende SensorTag-Einstellungsportal angezeigt und die MAC-Adresse und die Signalstärke (rssi) des gefundenen Terminals werden angezeigt.

SensorTag設定ポータル

Geben Sie die Kanal-ID und den Schreibschlüssel des Ambient ein, um die Daten auf diesem Bildschirm zu senden. Klicken Sie auf die Einstellungsschaltfläche. Die Kanal-ID und der Schreibschlüssel werden an das Python-Programm übergeben und die Messdaten werden an den Ambient gesendet.

Wenn Sie mit Ambient prüfen, können Sie die gemessenen Daten wie folgt überprüfen.

Ambient画面

Recommended Posts

Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen
Senden Sie die mit SensorTag gemessene Temperatur, Luftfeuchtigkeit usw. über Raspberry Pi 3 an Ambient und zeichnen Sie sie grafisch auf.
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
Himbeere + am2302 Temperatur und Luftfeuchtigkeit mit Temperatur- und Feuchtigkeitssensor messen
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
Messen Sie die CPU-Temperatur von Raspeye mit Python
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Home Hack zum automatischen Kauf, wenn es mit Amazon Dash Button und Raspberry Pi billiger wird
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Stream-Verarbeitung von Python und SensorTag, Kafka, Spark Streaming - Teil 1: Raspberry Pi 3
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Messen Sie die SIM-Signalstärke mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
Versuchen Sie, ein Objekt mit RaspberryPi zu erkennen ~ Teil 1: Vergleich der Erkennungsgeschwindigkeit ~
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
Verwenden Sie den analogen Temperatursensor Raspberry Pi Python to TMP36 und den AD-Wandler MCP3008