Stream-Verarbeitung von Python und SensorTag, Kafka, Spark Streaming - Teil 1: Raspberry Pi 3

In dieser Serie erhalten wir die Umgebungsdaten von SensorTag von Raspberry Pi 3. Danach werde ich den Code von Python für die Windanalyse mit Spark Streaming über Kafka schreiben.   Es gibt viele Beispiele zum Einrichten von Raspberry Pi 3. Hier bereiten wir uns darauf vor, die Umgebungsdaten von SensorTag einfach zu erfassen.

Was vorzubereiten?

Raspberry Pi 3 verfügt über integriertes Wi-Fi und Bluetooth. Der Dongle wird nicht mehr benötigt und es muss weniger vorbereitet werden. In diesem Beispiel wird ein altes MacBook Pro (macOS Sierra 10.12.6) mit einem USB-A-Terminal als Entwicklungsterminal verwendet. Bereiten Sie ein Peripheriegerät vor, das über Ethernet eine Verbindung zu Raspberry Pi 3 herstellt.

Der Texas Instruments SensorTag kann über Bluetooth mit dem Raspberry Pi 3 verbunden werden, um auf einfache Weise Umgebungsdaten wie Temperatur und Luftfeuchtigkeit abzurufen.

Brennen Sie das Raspbian Lite-Bild unter macOS

Befolgen Sie die offiziellen Anweisungen Installieren von Betriebssystemabbildern unter Mac OS. Überprüfen Sie den Gerätenamen der SD-Karte und heben Sie die Bereitstellung auf. In diesem Beispiel ist es / dev / disk2.

$ diskutil list
...
/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk2
   1:             Windows_FAT_32 NO NAME                 15.6 GB    disk2s1

$ diskutil unmountDisk /dev/disk2

Laden Sie Raspbian Jessie Lite (https://www.raspberrypi.org/downloads/raspbian/) herunter und brennen Sie es auf Ihre SD-Karte. Vergessen Sie nicht, auch SSH zu aktivieren.

$ cd ~/Downloads
$ wget http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-07-05/2017-07-05-raspbian-jessie-lite.zip
$ unzip 2017-07-05-raspbian-jessie-lite.zip
$ sudo dd bs=1m if=2017-07-05-raspbian-jessie-lite.img of=/dev/rdisk2
$ touch /Volumes/boot/ssh
$ diskutil unmountDisk /dev/disk2

SSH-Verbindung mit mDNS

macOS kann einfach SSHed werden, indem der Raspberry Pi 3 mit einem Ethernet-Kabel verbunden wird. Standardmäßig sind die folgenden Benutzer festgelegt.

$ ssh [email protected]

Kopieren Sie den öffentlichen macOS-Schlüssel auf Raspberry Pi 3 nach `~ / .ssh / authorized_keys '.

$ mkdir -p -m 700 ~/.ssh
$ cat << EOF > ~/.ssh/authorized_keys
ssh-rsa AAAA...
EOF
$ chmod 600 ~/.ssh/authorized_keys

Nochmal anmelden.

$ exit

WLAN

Richten Sie den WLAN-Zugangspunkt (ESSID) ein und starten Sie das Netzwerk neu. Überprüfen Sie Ihre Internetverbindung von ping.

$ sudo sh -c 'wpa_passphrase [ESSID] [Passwort] >> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo ifdown wlan0
$ sudo ifup wlan0
$ ping -c 1 www.yahoo.co.jp

raspi-config

Ändern Sie das Passwort und die Zeitzone mit raspi-config.

$ sudo raspi-config

apt-get

Wechseln Sie zu einer japanischen Spiegelsite und aktualisieren Sie das Paket. Installieren Sie vim, um die Datei zu bearbeiten.

$ sudo sed -i".bak" -e "s/mirrordirector.raspbian.org/ftp.jaist.ac.jp/g" /etc/apt/sources.list
$ sudo apt-get update && sudo apt-get dist-upgrade -y
$ sudo apt-get install vim -y

Bluetooth und SensorTag

Schalten Sie den SensorTag ein und scannen Sie vom Raspberry Pi 3. Überprüfen Sie die BD-Adresse.

$ sudo hcitool lescan
...
B0:B4:48:BE:5E:00 CC2650 SensorTag
...

gatttool

Stellen Sie eine Verbindung zum SensorTag der BD-Adresse her, die im interaktiven Modus des Befehls gatttool bestätigt wurde.

$ gatttool -b B0:B4:48:BE:5E:00 --interactive
[B0:B4:48:BE:5E:00][LE]> connect
Attempting to connect to B0:B4:48:BE:5E:00
Connection successful
[B0:B4:48:BE:5E:00][LE]>

Den Sensorwert erhalten Sie unter Abrufen des Werts des TI-Sensor-Tags (CC2650) mit Raspberry Pi. Ich werde.

[B0:B4:48:BE:5E:00][LE]> char-write-cmd 0x24 01
[B0:B4:48:BE:5E:00][LE]> char-read-hnd 0x21
Characteristic value/descriptor: 94 0b f0 0d

Sie erhalten einen 4-Byte-Wert. Gemäß dem SensorTag-Benutzerhandbuch werden die folgenden Daten der Reihe nach angezeigt.

ObjLSB ObjMSB AmbLSB AmbMSB

Konvertiert 4 von Python REPL erhaltene Bytes in Grad Celsius und gibt die Umgebungstemperatur und die Objekttemperatur aus.

>>> raw_data = '94 0b f0 0d'
>>> rval = raw_data.split()
>>> obj_temp = int(rval[1] + rval[0], 16) / 4
>>> amb_temp = int(rval[3] + rval[2], 16) / 4
>>> obj_temp_celcius = obj_temp * 0.03125
>>> amb_temp_celcius = amb_temp * 0.03125
>>> print("Umgebungstemperatur: {:.2f} ℃".format(amb_temp_celcius))
Umgebungstemperatur: 27.88 ℃
>>> print("Objekttemperatur: {:.2f} ℃".format(obj_temp_celcius))
Objekttemperatur: 23.16 ℃

bluepy sensortag Befehl

Installieren Sie bluepy, um Bluetooth LE-Geräte von Python aus zu betreiben.

$ sudo apt-get install python-pip libglib2.0-dev -y
$ sudo pip install bluepy

Sie können den Befehl sensortag verwenden. Führen Sie mit dem Flag "-T" und der BD-Adresse als Argument aus.

$ sensortag -T B0:B4:48:BE:5E:00

Wenn Sie das Flag "-T" angeben, können Sie die Umgebungstemperatur und die Objekttemperatur in dieser Reihenfolge abrufen.

Connecting to B0:B4:48:BE:5E:00
('Temp: ', (28.34375, 24.25))
('Temp: ', (28.375, 23.28125))
...

SensorTag

Schreiben Sie ein Python-Skript, um die Umgebung, das Objekt und die Luftfeuchtigkeit zu ermitteln.

~/python_apps/temp.py


# -*- coding: utf-8 -*-
from bluepy.sensortag import SensorTag
import sys
import time

def main():
    argvs = sys.argv
    argc = len(argvs)
    if (argc != 2):
        print 'Usage: # python {0} bd_address'.format(argvs[0])
        quit()
    host = argvs[1]
    print('Connecting to ' + host)

    timeout = 5.0
    count = 3

    tag = SensorTag(host)

    tag.IRtemperature.enable()
    tag.humidity.enable()

    time.sleep(1.0)

    counter = 0
    while True:
        counter += 1
        tAmb, tObj = tag.IRtemperature.read()

        print("Temperatur:Umfeld: {0:.2f},Objekt: {1:.2f}".format(tAmb, tObj) )
        humidy, RH = tag.humidity.read()
        print("Feuchtigkeit: humidy: {0:.2f}, RH: {1:.2f}".format(humidy, RH))

        if counter >= count:
           break

        tag.waitForNotifications(timeout)

    tag.disconnect()
    del tag

if __name__ == '__main__':
    main()

Führen Sie das Skript mit der BD-Adresse von SensorTag als Argument aus.

$ python temp.py B0:B4:48:BE:5E:00

Das Ergebnis der dreimaligen Messung in Intervallen von 5 Sekunden wird ausgegeben. Die Klimaanlage funktioniert und ist daher komfortabel.

Connecting to B0:B4:48:BE:5E:00
Temperatur:Umfeld: 25.03,Objekt: 19.94
Feuchtigkeit: humidy: 25.25, RH: 69.47
Temperatur:Umfeld: 25.06,Objekt: 20.69
Feuchtigkeit: humidy: 25.25, RH: 69.37
Temperatur:Umfeld: 25.06,Objekt: 20.69
Feuchtigkeit: humidy: 25.25, RH: 69.37

Recommended Posts

Stream-Verarbeitung von Python und SensorTag, Kafka, Spark Streaming - Teil 1: Raspberry Pi 3
Stream-Verarbeitung von Python und SensorTag, Kafka, Spark Streaming - Teil 1: Raspberry Pi 3
Streaming von Python und SensorTag, Kafka, Spark Streaming-Teil 5: Verbindung von Jupyter zu Spark mit Apache Toree
Streaming von Python und SensorTag, Kafka, Spark Streaming-Teil 5: Verbindung von Jupyter zu Spark mit Apache Toree
Installieren Sie PyCall auf Raspberry PI und versuchen Sie, die GPIO-Bibliothek für Python von Ruby zu verwenden
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Installieren Sie pyenv auf Raspberry Pi, um Python zu verwalten
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens
Aktualisieren Sie Raspberry Pi Python mit pyenv auf 3.7 oder höher
Führen Sie das AWS IoT Device SDK für Python auf Raspberry Pi aus
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen
Erstellen von Raspberry Pi zum Lernen von Python und maschinellem Lernen (RaspberryPi4 & Buster-Version (RaspberryPi3 ist ebenfalls möglich))
Bildverarbeitung mit Python (Teil 2)
Bildverarbeitung mit Python (Teil 1)
Raspeye + Python + OpenGL-Memo
Bildverarbeitung mit Python (3)
Himbeere pi 1 Modell b, Python
[Python] Iterative Verarbeitung (für, während)
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
Verbinden Sie SORACOM mit Haushaltsgeräten und LINE Bot [Python / Flask / Raspberry Pi]