Dieser Artikel hat den gleichen Inhalt wie ** Artikel zum Omron-Umweltsensor (BAG-Typ) **. Dieser Artikel wurde mit einem ** SwitchBot-Temperatur- / Feuchtigkeitssensor ** mit einer Bildschirmanzeige zu einem niedrigen Preis durchgeführt.
Eine Reihe von IoT-Heimgeräten, die von Wonderlabs Inc., einem Hersteller in Shenzhen, China, entwickelt wurden. Diesmal die Temperatur- und Feuchtigkeitssensoren der oben genannten Serie Verwenden Sie die. Zu einem niedrigen Preis (ca. 2000 Yen) ist die Multifunktionalität, die Datenerfassung und Bildschirmanzeige mit Smartphone-Apps und APIs umfasst, attraktiv.
** ・ RaspberryPi ** (diesmal wird Pi3 Modell B verwendet) ** ・ Python-Ausführungsumgebung ** (Dieses Mal verwendet pyenv Python 3.7.6) ** ・ SwitchBot Temperatur- und Feuchtigkeitssensor **
** ① Überprüfen Sie die Bluetooth-Verbindung zwischen dem Raspberry Pi und dem Sensor ** ** ② Ermitteln Sie den Messwert des Sensors mit Python ** ** ③ Drücken Sie die GAS-API von Python, um Daten in die Tabelle zu schreiben ** ** ④ Regelmäßige Ausführung des Skripts **
Ich habe darauf hingewiesen. https://qiita.com/warpzone/items/11ec9bef21f5b965bce3
** - Sensoreinrichtung ** Legen Sie AAA-Batterien in den Sensor ein
** - Nach Bluetooth-Geräten suchen ** Nach Überprüfung der MAC-Adresse in der SwitchBot Official App Führen Sie den folgenden Befehl auf Raspberry Pi aus
sudo hcitool lescan
LE Scan ...
AA:EE:BB:DD:55:77 (unknown)
Wenn die von der obigen Anwendung bestätigte MAC-Adresse angezeigt wird, ist dies erfolgreich.
bluepy ist eine Bibliothek für den Zugriff auf Bluetooth Low Energy (BLE) in Python (Klassendefinition).
** - Installation der erforderlichen Pakete ** Installieren Sie Folgendes
sudo install libglib2.0-dev
** ・ Installation von Bluepy **
Installieren Sie mit pip mit dem folgenden Befehl
pip install bluepy
** ・ Bluepy Autorität erteilen ** Sie müssen bluepy Sudo die Berechtigung zum Scannen erteilen.
Gehen Sie zu dem Ordner, in dem bluepy installiert ist, und
cd ~.pyenv/versions/3.7.6/lib/python3.7/site-packages/bluepy
Erteilen Sie Sudo die Erlaubnis, mit dem folgenden Befehl zu helfen
sudo setcap 'cap_net_raw,cap_net_admin+eip' bluepy-helper
Erstellen Sie das folgende Skript, um den Sensorwert abzurufen
switchbot.py
from bluepy import btle
import struct
#Delegierter für Broadcast-Datenerfassung
class SwitchbotScanDelegate(btle.DefaultDelegate):
#Konstrukteur
def __init__(self, macaddr):
btle.DefaultDelegate.__init__(self)
#Variablen zum Speichern von Sensordaten
self.sensorValue = None
self.macaddr = macaddr
#Scan-Handler
def handleDiscovery(self, dev, isNewDev, isNewData):
#Wenn Sie ein Gerät mit der Ziel-Mac-Adresse finden
if dev.addr == self.macaddr:
#Werbedaten extrahieren
for (adtype, desc, value) in dev.getScanData():
#Führen Sie den Datenabruf beim Umgebungssensor durch
if desc == '16b Service Data':
#Sensordaten extrahieren
self._decodeSensorData(value)
#Extrahieren Sie Sensordaten und konvertieren Sie sie in das Diktatformat
def _decodeSensorData(self, valueStr):
#Sensordaten aus der Zeichenfolge(4. und nachfolgende Zeichen)Nur herausnehmen und in Binär konvertieren
valueBinary = bytes.fromhex(valueStr[4:])
#Konvertieren Sie binäre Sensordaten in numerische Werte
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
#In Diktat speichern
self.sensorValue = {
'SensorType': 'SwitchBot',
'Temperature': temp,
'Humidity': humid,
'BatteryVoltage': batt
}
Wie bei der Omron-Umgebungssensor-BAG-Version wird der Sensorwert im Broadcast-Modus erfasst. Da der erfasste Dateninhalt kompliziert war, wird auf die obige Referenz verwiesen
Erstellen Sie ein Hauptskript, um das Skript zur Erfassung des Sensorwerts aufzurufen
switchbot_toSpreadSheet.py
from bluepy import btle
from switchbot import SwitchbotScanDelegate
######Holen Sie sich den Wert von SwitchBot######
#switchbot.Stellen Sie den Delegierten für die Sensorwerterfassung von py so ein, dass er zur Scan-Zeit ausgeführt wird
scanner = btle.Scanner().withDelegate(SwitchbotScanDelegate())
#Scannen, um den Sensorwert zu erhalten (Zeitüberschreitung 5 Sekunden)
scanner.scan(5.0)
#Zeigen Sie die Temperatur als Test an
print(scanner.delegate.sensorValue['Temperature'])
#Beschreiben Sie den Vorgang des Hochladens in eine Google-Tabelle in ④
Versuchen Sie, von der Konsole aus zu laufen
python switchbot_toSpreadSheet.py
25.49
Sie haben jetzt Sensormessungen in Python erhalten.
[Artikel zum Omron-Umweltsensor](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) Bitte beziehen Sie sich
[Artikel zum Omron-Umweltsensor](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) Bitte beziehen Sie sich
Recommended Posts