[PYTHON] Senden Sie die mit SensorTag gemessene Temperatur, Luftfeuchtigkeit usw. über Raspberry Pi 3 an Ambient und zeichnen Sie sie grafisch auf.

Temperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke und Batteriestand gemessen mit TI SensorTag mit Bluetooth Low Energy (BLE) Ich habe es an Raspberry Pi3 (RPi3) gesendet und von RPi3 an IoT-Datenvisualisierungsdienst "Ambient" gesendet, um die Daten grafisch darzustellen.

Hinzugefügt am 06.06.2017. Ich schrieb, dass "Sensor Tag als Terminal für Langzeitmessungen schwierig zu verwenden ist, da es in den Schlafmodus wechselt und Sie nicht kommunizieren können, wenn Sie es für 2 Minuten im angekündigten Zustand belassen", aber wenn Sie es verbunden lassen, wechselt es nicht in den Schlafmodus. Daher habe ich festgestellt, dass es problemlos als Terminal für Langzeitmessungen verwendet werden kann. Weitere Informationen finden Sie unter "Messen von Temperatur, Luftfeuchtigkeit usw. mit SensorTag und Senden an Ambient über Raspberry Pi 3 zur grafischen Darstellung".

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. Zu den Sensoren gehören Umgebungs- und Oberflächentemperatursensoren, Feuchtigkeitssensoren, Luftdrucksensoren, Umgebungslichtsensoren, Beschleunigungssensoren, Gyroskope, Kompasse und Magnetsensoren.

Wenn Sie den SensorTag 3 Minuten lang verlassen, wechselt er in den Ruhemodus. Obwohl es so konzipiert ist, dass Strom gespart wird, ist die Kommunikation nur möglich, wenn der Netzschalter erneut gedrückt wird. Daher ist es schwierig, es als Terminal zu verwenden, das irgendwo installiert ist und die Temperatur über einen langen Zeitraum misst.

Dieses Mal konzentrierte ich mich auf diese schwer zu verwendende Spezifikation und führte einen Test durch, um Daten von SensorTag über RPi3 an Ambient zu senden.

Relay zu Ambient mit Python für Raspberry Pi 3 (RPi3)

"Multi-Standard SensorTag" kommuniziert mit BLE. Daher habe ich Raspberry Pi3 (RPi3) als Gateway verwendet, SensorTag-Daten von RPi3 mit BLE erfasst und an Ambient gesendet. Das Programm wurde in Python geschrieben. Ich habe bluepy als Bibliothek verwendet. Installieren Sie zuerst bluepy auf RPi.

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

Installieren Sie dann auch die Python-Bibliothek von Ambient.

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

Der allgemeine Ablauf eines Python-Programms, das Daten von einem SensorTag abruft, ist wie folgt.

Als ich dieses Programm ausführte, konnte ich bestätigen, dass die SensorTag-Daten an Ambient gesendet und grafisch dargestellt wurden.

pi$ sudo python3 st2ambient.py
scanning tag
found SensorTag, addr = 24:71:89:bc:63:84
{'d4': 81, 'd5': 336.32, 'd2': 45.806884765625, 'd1': 25.1875, 'd3': 1016.45}
200

Folgendes wird auf dem Umgebungsbildschirm angezeigt. sensortag_ambient

Das Programm wird am Ende veröffentlicht. Diesmal ist es ein Test, Daten von SensorTag über RPi3 an Ambient zu senden. Wenn SensorTag in den Ruhemodus wechselt, müssen Sie zum Neustart manuell den Netzschalter drücken, und Python-Programme verfügen über mehrere SensorTags. Berücksichtigt den Fall nicht. Dies sind die nächsten Herausforderungen.

# -*- coding: utf-8 -*-
# while True:
#Scannen Sie den SensorTag, stellen Sie eine Verbindung zu dem Gerät her, das Sie finden.
#Holen Sie sich Temperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke, Batteriestand und senden Sie an Ambient
#
import bluepy
import time
import sys
import argparse
import ambient

def main():
    channelId =Kanal ID
    writeKey = 'Lichtschlüssel'

    parser = argparse.ArgumentParser()
    parser.add_argument('-i',action='store',type=float, default=120.0, help='scan interval')
    parser.add_argument('-t',action='store',type=float, default=5.0, help='scan time out')

    arg = parser.parse_args(sys.argv[1:])

    scanner = bluepy.btle.Scanner(0)
    am = ambient.Ambient(channelId, writeKey)

    while True:
        dev = None
        print('scanning tag...')
        devices = scanner.scan(arg.t)  #BLE scannen
        for d in devices:
            for (sdid, desc, val) in d.getScanData():
                if sdid == 9 and val == 'CC2650 SensorTag': #Der lokale Name ist'CC2650 SensorTag'Einen finden
                    dev = d
                    print('found SensorTag, addr = %s' % dev.addr)
        sys.stdout.flush()

        if dev is not None:
            tag = bluepy.sensortag.SensorTag(dev.addr) #Stellen Sie eine Verbindung zu dem Gerät her, das Sie finden

            tag.IRtemperature.enable()
            tag.humidity.enable()
            tag.barometer.enable()
            tag.battery.enable()
            tag.lightmeter.enable()

            # Some sensors (e.g., temperature, accelerometer) need some time for initialization.
            # Not waiting here after enabling a sensor, the first read value might be empty or incorrect.
            time.sleep(1.0)

            data = {}
            data['d1'] = tag.IRtemperature.read()[0]  # set ambient temperature to d1
            data['d2'] = tag.humidity.read()[1]  # set humidity to d2
            data['d3'] = tag.barometer.read()[1]  # set barometer to d3
            data['d5'] = tag.lightmeter.read()  # set light to d5
            data['d4'] = tag.battery.read()  # set battery level to d4

            tag.IRtemperature.disable()
            tag.humidity.disable()
            tag.barometer.disable()
            tag.battery.disable()
            tag.lightmeter.disable()

            print(data)
            r = am.send(data)
            print(r.status_code)
            sys.stdout.flush()

            time.sleep(arg.i)
            # tag.waitForNotifications(arg.t)

            tag.disconnect()
            del tag

if __name__ == "__main__":
    main()

Recommended Posts

Senden Sie die mit SensorTag gemessene Temperatur, Luftfeuchtigkeit usw. über Raspberry Pi 3 an Ambient und zeichnen Sie sie grafisch auf.
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 und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
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
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Die Temperatur wird automatisch mit Raspberry Pi 3 gemessen und automatisch zur Anzeige auf den Server (Docker Python3 + Flasche + MySQL) hochgeladen!
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
Raspberry Pi --1 - Zum ersten Mal (Schließen Sie einen Temperatursensor an, um die Temperatur anzuzeigen)
[Python] Senden Sie das von der Webkamera aufgenommene Bild an den Server und speichern Sie es
Stellen Sie eine Verbindung zur Raspberry PI-Konsole her und zeigen Sie lokale IP- und SD-Informationen an
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten, wenn es dunkel wird!
Verwenden Sie den analogen Temperatursensor Raspberry Pi Python to TMP36 und den AD-Wandler MCP3008