[PYTHON] 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, l'humidité, la pression, l'éclairement et le niveau de la batterie avec TI SensorTag et utilisez Bluetooth Low Energy (BLE) pour Raspberry Je l'ai envoyé à Pi3 (RPi3) et l'ai envoyé de RPi3 au service de visualisation de données IoT "Ambient" pour représenter graphiquement les données. Part 1 est une simple qui scanne le BLE, lit les données SensorTag trouvées et les envoie à Ambient toutes les 5 secondes. Cependant, cette fois, il prend en charge plusieurs SensorTags et l'intervalle de lecture est défini sur 5 minutes. Nous mettons au défi la mesure à long terme avec un lecteur de pile bouton.

Raspberry Pi3と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 barométrique, des capteurs de lumière ambiante, des capteurs d'accélération, des gyroscopes, des boussoles et des capteurs magnétiques, qui fonctionnent avec une seule pile bouton (CR2032).

SensorTag

Puisque SensorTag communique avec BLE, j'ai décidé d'utiliser Raspberry Pi3 (RPi3) comme passerelle, d'acquérir les données SensorTag de RPi3 avec BLE et de les envoyer à Ambient.

Dans la communication BLE, le terminal (périphérique) envoie des données de publicité, les scanne du côté central, trouve le terminal nécessaire, s'y connecte et envoie et reçoit des données.

SensorTag envoie des données publicitaires et s'il n'y a pas de connexion pendant 2 minutes, il passe en mode veille et consomme moins d'énergie. Lorsque vous entrez en mode veille, vous ne pouvez pas réveiller le terminal depuis le côté central car il ne communique pas, et vous pouvez revenir en mode publicité en cliquant sur le bouton d'alimentation du terminal.

Comme SensorTag ne peut se connecter qu'à une seule centrale, vous devez attendre en mode publicité si vous souhaitez vous connecter à plusieurs centrales, mais si vous l'utilisez comme capteur d'environnement, vous ne pouvez vous connecter qu'à une seule passerelle en tant que centrale. Ça va. Si vous acquérez périodiquement des données de mesure alors que vous êtes connecté à la passerelle, l'intervalle d'acquisition ne passera pas en mode veille même s'il est de 2 minutes ou plus. Si la connexion est perdue pour une raison quelconque, essayez de vous reconnecter.

Partie 1 déclare: «Si vous laissez le SensorTag dans l'état annoncé pendant 2 minutes, il entrera en mode veille et vous ne pourrez pas communiquer, alors utilisez-le comme terminal pour des mesures à long terme. J'ai écrit: "C'est difficile", mais j'ai trouvé qu'il peut être utilisé comme terminal pour des mesures à long terme sans aucun problème car il ne passera pas en mode veille s'il est laissé connecté.

Programmes sur Raspberry Pi 3 (RPi3)

Le programme sur RPi3 a été écrit en Python. Le fonctionnement général est le suivant.

  1. Scannez BLE pour SensorTag
  2. Une fois que vous avez trouvé le SensorTag, connectez-le, mesurez la température, l'humidité, la pression, l'éclairement et le niveau de la batterie toutes les 5 minutes et envoyez-le à Ambient
  3. Si la connexion avec le SensorTag est perdue, reconnectez-vous et poursuivez la mesure.

Lorsqu'un SensorTag est trouvé, un thread indépendant est démarré pour chaque SensorTag afin qu'il puisse gérer plusieurs SensorTag, et un thread se connecte à un SensorTag pour la communication.

J'ai également géré un serveur Web en Python et lancé le portail de paramètres SensorTag. L'ID de canal et la clé d'écriture lors de l'envoi vers Ambient ne sont pas décrits dans le programme, mais peuvent être définis à partir du navigateur.

La figure ci-dessous montre la configuration du programme sur RPi3.

プログラム構成

Construction de l'environnement RPi3

J'ai utilisé bluepy comme bibliothèque pour accéder à BLE. Cette bibliothèque est bien documentée et est recommandée car elle contient également des modules pour accéder aux SensorTags.

Tout d'abord, installez bluepy sur 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 ../..

Modifié pour définir l'ID de canal et écrire la clé de Ambient à partir du navigateur. Pour ce faire, vous devez transmettre les données du gestionnaire de requêtes HTTP au programme principal qui communique avec le SensorTag. Il existe différentes méthodes de communication inter-processus, mais cette fois j'ai utilisé Redis, qui semble avoir une bonne affinité avec Python. Là, installez Redis et la bibliothèque Redis Python.

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

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

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

Les fichiers requis pour le programme Python et le portail de configuration SensorTag ont été publiés sur Github.

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 ..

Commencez

Étant donné que les privilèges root sont requis pour exécuter un programme qui accède à BLE sur RPi3, exécutez le programme comme suit.

pi$ sudo python3 st2ambient2.py -v

Si vous vous déconnectez de RPi3, le programme se terminera, donc pour continuer à fonctionner même si vous vous déconnectez, procédez comme suit.

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

Il existe deux options de programme:

Après un certain temps, le programme démarre, vous trouverez le SensorTag. Si vous le démarrez avec l'option -v, vous verrez un message semblable au suivant:

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

Après «New Sensor Tag» se trouve l'adresse MAC du terminal.

Si vous ne trouvez pas le SensorTag, appuyez sur le bouton d'alimentation du SensorTag pendant au moins 3 secondes pour éteindre le terminal, puis cliquez à nouveau sur le bouton d'alimentation. La publicité commencera et la LED verte du SensorTag commencera à clignoter toutes les secondes. Après un certain temps, le programme devrait trouver le terminal.

Une fois que vous avez trouvé l'appareil, connectez-vous à l'adresse Raspberry Pi 3 depuis votre navigateur. Ensuite, le portail de configuration SensorTag suivant s'affiche, et l'adresse MAC et la force du signal (rssi) du terminal trouvé s'affichent.

SensorTag設定ポータル

Entrez l'ID de canal et la clé d'écriture de l'Ambient pour envoyer les données sur cet écran, cliquez sur le bouton de réglage, l'ID de canal et la clé d'écriture seront transmis au programme Python et les données de mesure seront envoyées à l'Ambient.

Si vous vérifiez avec Ambient, vous pouvez vérifier les données mesurées comme suit.

Ambient画面

Recommended Posts

Mesurez la température, l'humidité, etc. avec SensorTag et envoyez-le à Ambient via Raspberry Pi 3 pour le représenter graphiquement Partie 2
Envoyez la température, l'humidité, etc. mesurées par SensorTag à Ambient via Raspberry Pi 3 et tracez-les.
Mesurez et comparez les températures avec Raspberry Pi et générez automatiquement des graphiques
Raspberry + am2302 Mesure la température et l'humidité avec un capteur de température et d'humidité
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC
Mesurer la température du processeur de Raspeye avec Python
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Visualisons la pièce avec tarte aux râpes, partie 1
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
Production de système de contrôle de température avec tarte aux framboises et ESP32 (1)
Home Hack pour acheter automatiquement quand il devient moins cher avec Amazon Dash Button et Raspberry Pi
Affichage graphique de la consommation électrique des ménages avec 3GPI et Raspeye
Acquérir la valeur du capteur de Grove Pi + avec Raspberry Pi et la stocker dans Kintone
[Python + PHP] Créez un moniteur de température / humidité / pression avec Raspberry Pi
Traitement de flux de Python et SensorTag, Kafka, Spark Streaming - Partie 1: Raspberry Pi 3
Production d'un système de contrôle de température avec tarte aux framboises et ESP32 (2) Production d'un appareil de transmission
Mesurer la force du signal SIM avec Raspberry Pi
Surveillance des animaux avec Rekognition et Raspberry pi
Création d'un système de contrôle de température avec tarte aux framboises et ESP32 (3) Réception d'un fichier Python
Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~
Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
Utilisez le capteur de température analogique Raspberry Pi Python vers TMP36 et le convertisseur MCP3008 AD