[PYTHON] Envoyez la température, l'humidité, etc. mesurées par SensorTag à Ambient via Raspberry Pi 3 et tracez-les.

Température, humidité, pression, éclairement et niveau de batterie mesurés avec TI SensorTag avec Bluetooth Low Energy (BLE) Je l'ai envoyé à Raspberry Pi3 (RPi3) et l'ai envoyé du RPi3 au service de visualisation de données IoT "Ambient" pour représenter graphiquement les données.

Ajouté le 2017/6/1. J'ai écrit que "Sensor Tag est difficile à utiliser comme terminal pour la mesure à long terme car si vous le laissez dans l'état annoncé pendant 2 minutes, il passera en mode veille et vous ne pourrez pas communiquer", mais si vous le laissez connecté, il ne passera pas en mode veille. Par conséquent, j'ai trouvé qu'il peut être utilisé comme terminal pour des mesures à long terme sans aucun problème. Pour plus de détails, voir "Mesurer la température, l'humidité, etc. avec SensorTag et envoyer à Ambient via Raspberry Pi 3 pour la représentation graphique".

sensortag

SensorTag

SensorTag dispose de trois types d'appareils avec différents modules de communication. Cette fois, j'ai utilisé un "SensorTag multi-standard" qui communique avec BLE. Les capteurs comprennent des capteurs de température ambiante et de surface, des capteurs d'humidité, des capteurs de pression de pression, des capteurs de lumière ambiante, des capteurs d'accélération, des gyroscopes, des boussoles et des capteurs magnétiques.

Si vous laissez le SensorTag pendant 3 minutes, il passera en mode veille. Bien qu'il soit conçu pour économiser de l'énergie, la communication n'est possible que si le bouton d'alimentation est à nouveau enfoncé, il est donc difficile de l'utiliser comme un terminal installé quelque part et qui mesure la température pendant une longue période.

Cette fois, je me suis concentré sur cette spécification difficile à utiliser et j'ai effectué un test pour envoyer des données de SensorTag vers Ambient via RPi3.

Relais vers Ambient avec Python pour Raspberry Pi 3 (RPi3)

"Multi-standard SensorTag" communique avec BLE. Par conséquent, j'ai utilisé Raspberry Pi3 (RPi3) comme passerelle, acquis les données SensorTag de RPi3 avec BLE et les ai envoyées à Ambient. Le programme a été écrit en Python. J'ai utilisé bluepy comme bibliothèque. Tout d'abord, installez bluepy sur 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

Ensuite, installez également la bibliothèque Python d'Ambient.

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

Le flux général d'un programme Python qui récupère les données d'un SensorTag est le suivant.

Lorsque j'ai exécuté ce programme, j'ai pu confirmer que les données SensorTag ont été envoyées à Ambient et représentées sous forme de graphique.

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

Les éléments suivants sont affichés sur l'écran Ambiant. sensortag_ambient

Le programme sera affiché à la fin. Cette fois, il s'agit d'un test pour envoyer des données de SensorTag à Ambient via RPi3, donc si SensorTag passe en mode veille, vous devez appuyer manuellement sur le bouton d'alimentation pour redémarrer, et les programmes Python ont plusieurs SensorTags. Ne considère pas le cas. Ce sont les prochains défis.

# -*- coding: utf-8 -*-
# while True:
#Scannez le SensorTag, connectez-vous à l'appareil que vous trouvez,
#Obtenez la température, l'humidité, la pression, l'éclairement, le niveau de la batterie et envoyez à Ambient
#
import bluepy
import time
import sys
import argparse
import ambient

def main():
    channelId =Identifiant de la chaine
    writeKey = 'Touche lumière'

    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)  #Scan BLE
        for d in devices:
            for (sdid, desc, val) in d.getScanData():
                if sdid == 9 and val == 'CC2650 SensorTag': #Le nom local est'CC2650 SensorTag'Trouvez-en un
                    dev = d
                    print('found SensorTag, addr = %s' % dev.addr)
        sys.stdout.flush()

        if dev is not None:
            tag = bluepy.sensortag.SensorTag(dev.addr) #Connectez-vous à l'appareil que vous trouvez

            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

Envoyez la température, l'humidité, etc. mesurées par SensorTag à Ambient via Raspberry Pi 3 et tracez-les.
Mesurez la température, l'humidité, etc. avec SensorTag et envoyez-le à Ambient via Raspberry Pi 3 pour le représenter graphiquement Partie 2
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
La température est automatiquement mesurée à l'aide de Raspberry Pi 3 et automatiquement téléchargée sur le serveur (Docker python3 + bouteille + MySQL) pour visualisation!
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Mesurez et comparez les températures avec Raspberry Pi et générez automatiquement des graphiques
Raspberry Pi --1 --Première fois (Connectez un capteur de température pour afficher la température)
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la
Connectez-vous à la console Raspberry PI et affichez les informations IP et SD locales
Utilisez python sur Raspberry Pi 3 pour éclairer la LED quand il fait noir!
Utilisez le capteur de température analogique Raspberry Pi Python vers TMP36 et le convertisseur MCP3008 AD