Cet article a le même contenu que ** Article Omron Environmental Sensor (BAG Type) **. Cet article a été réalisé avec un ** capteur de température / humidité SwitchBot ** avec un écran d'affichage à petit prix.
Une série d'appareils IoT pour la maison développés par Wonderlabs Inc., un fabricant à Shenzhen, en Chine. Cette fois, les capteurs de température et d'humidité de la série ci-dessus Utilisez le. À bas prix (environ 2000 yens), la multifonctionnalité qui comprend l'acquisition de données et l'affichage d'écran à l'aide d'applications et d'API pour smartphone est intéressante.
** ・ RaspberryPi ** (Pi3 Model B est utilisé cette fois) ** - Environnement d'exécution Python ** (Cette fois, pyenv utilise Python 3.7.6) ** ・ Capteur de température et d'humidité SwitchBot **
** ① Vérifiez la connexion Bluetooth entre le Raspberry Pi et le capteur ** ** ② Obtenez la valeur mesurée du capteur avec Python ** ** ③ Accédez à l'API GAS de Python pour écrire des données dans la feuille de calcul ** ** ④ Exécution périodique du script **
J'en ai parlé. https://qiita.com/warpzone/items/11ec9bef21f5b965bce3
** - Configuration du capteur ** Insérez des piles AAA dans le capteur
** - Recherche d'appareils Bluetooth ** Après avoir vérifié l'adresse MAC sur SwitchBot Official App Exécutez la commande suivante sur Raspberry Pi
sudo hcitool lescan
LE Scan ...
AA:EE:BB:DD:55:77 (unknown)
Si l'adresse MAC confirmée par l'application ci-dessus apparaît, cela signifie qu'elle a réussi.
bluepy est une bibliothèque pour accéder à Bluetooth Low Energy (BLE) en Python (Définition de classe)
** ・ Installation des packages requis ** Installez ce qui suit
sudo install libglib2.0-dev
** ・ Installation de bluepy **
Installer avec pip avec la commande suivante
pip install bluepy
** ・ Autoriser bluepy ** Vous devez autoriser bluepy Sudo à scanner.
Allez dans le dossier où bluepy est installé et
cd ~.pyenv/versions/3.7.6/lib/python3.7/site-packages/bluepy
Accordez l'autorisation Sudo à bluepy-helper avec la commande suivante
sudo setcap 'cap_net_raw,cap_net_admin+eip' bluepy-helper
Créez le script suivant pour obtenir la valeur du capteur
switchbot.py
from bluepy import btle
import struct
#Délégué d'acquisition de données de diffusion
class SwitchbotScanDelegate(btle.DefaultDelegate):
#constructeur
def __init__(self, macaddr):
btle.DefaultDelegate.__init__(self)
#Variables pour conserver les données du capteur
self.sensorValue = None
self.macaddr = macaddr
#Gestionnaire de scan
def handleDiscovery(self, dev, isNewDev, isNewData):
#Si vous trouvez un appareil avec l'adresse Mac cible
if dev.addr == self.macaddr:
#Extraire les données publicitaires
for (adtype, desc, value) in dev.getScanData():
#Effectuer la récupération des données lorsque le capteur d'environnement
if desc == '16b Service Data':
#Extraire les données du capteur
self._decodeSensorData(value)
#Extraire les données du capteur et les convertir au format dict
def _decodeSensorData(self, valueStr):
#Données du capteur à partir de la chaîne de caractères(4e et suivants caractères)Sortir et convertir uniquement en binaire
valueBinary = bytes.fromhex(valueStr[4:])
#Convertir les données binaires du capteur en valeur numérique
batt = valueBinary[2] & 0b01111111
isTemperatureAboveFreezing = valueBinary[4] & 0b10000000
temp = ( valueBinary[3] & 0b00001111 ) / 10 + ( valueBinary[4] & 0b01111111 )
if not isTemperatureAboveFreezing:
temp = -temp
humid = valueBinary[5] & 0b01111111
#Stocker dans le type de dict
self.sensorValue = {
'SensorType': 'SwitchBot',
'Temperature': temp,
'Humidity': humid,
'BatteryVoltage': batt
}
Identique à la version BAG du capteur d'environnement Omron, la valeur du capteur est acquise en mode diffusion. Le contenu des données acquises étant compliqué, la référence ci-dessus
Créez un script principal pour appeler le script d'acquisition de la valeur du capteur
switchbot_toSpreadSheet.py
from bluepy import btle
from switchbot import SwitchbotScanDelegate
######Obtenez la valeur de SwitchBot######
#switchbot.Définit le délégué d'acquisition de la valeur du capteur de py pour qu'il s'exécute au moment du scan
scanner = btle.Scanner().withDelegate(SwitchbotScanDelegate())
#Scan pour obtenir la valeur du capteur (délai d'attente 5 secondes)
scanner.scan(5.0)
#Afficher la température à titre d'essai
print(scanner.delegate.sensorValue['Temperature'])
#Décrivez le processus de téléchargement vers la feuille de calcul Google dans ④
Essayez de courir à partir de la console
python switchbot_toSpreadSheet.py
25.49
Vous avez maintenant obtenu des mesures de capteurs en Python.
[Article sur le capteur environnemental d'Omron](https://qiita.com/c60evaporator/items/ed2ffde4c87001111c12#python%E3%81%8B%E3%82%89gas%E3%81%AEapi%E3%82%92%E5% 8F% A9% E3% 81% 84% E3% 81% A6% E3% 82% B9% E3% 83% 97% E3% 83% AC% E3% 83% 83% E3% 83% 89% E3% 82% B7% E3% 83% BC% E3% 83% 88% E3% 81% AB% E3% 83% 87% E3% 83% BC% E3% 82% BF% E6% 9B% B8% E3% 81% 8D% E8% BE% BC% E3% 81% BF) Veuillez vous référer
[Article sur le capteur environnemental Omron](https://qiita.com/c60evaporator/items/ed2ffde4c87001111c12#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83 % 88% E3% 81% AE% E5% AE% 9A% E6% 9C% 9F% E5% AE% 9F% E8% A1% 8C) Veuillez consulter