[PYTHON] Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi

Einführung

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.

Was ist SwitchBot?

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

Dinge notwendig

** ・ RaspberryPi ** (diesmal wird Pi3 Modell B verwendet) ** ・ Python-Ausführungsumgebung ** (Dieses Mal verwendet pyenv Python 3.7.6) ** ・ SwitchBot Temperatur- und Feuchtigkeitssensor **

Verfahren

** ① Ü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

① Überprüfen Sie die Bluetooth-Verbindung zwischen Raspberry pi und dem Sensor

Bestätigung der Sensorerkennung

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

** ② Ermitteln Sie den Messwert des Sensors mit Python **

Anerkennungsbestätigung mit bluepy

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 eines Skripts zur Erfassung von Sensorwerten

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

Hauptskript erstellen

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.

③ Drücken Sie die GAS-API von Python, um Daten in die Tabelle zu schreiben

[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

④ Regelmäßige Ausführung des Skripts

[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

Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Erstellen Sie eine API für das Switchbot-Thermo-Hygrometer mit Node-RED
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Messen Sie die CPU-Temperatur von Raspeye mit Python
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Benachrichtigen Sie regelmäßig den Verarbeitungsstatus von Raspberry Pi mit Python → Google Spreadsheet → LINE
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Mutter pflanzt mit Raspberry Pi
Spielen Sie mit dem Raspberry Pi Zero WH-Kameramodul Teil 1
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ihre URL hat nicht mit dem Wert des Challenge-Parameters geantwortet.
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi
Der wahre Wert der Terraform-Automatisierung ab Oracle Cloud
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Finden Sie die Definition des Wertes von errno
Melden Sie sich mit ssh ohne Passwort bei Raspberry PI an (Schlüsselauthentifizierung)
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Extrahieren Sie den Maximalwert mit Pandas.
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Ich habe gelernt, wie die Infrarot-Fernbedienung mit Raspberry Pi funktioniert
Serielle Kommunikation mit Raspberry Pi + PySerial
Über den Rückgabewert von pthread_mutex_init ()
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Betriebssystem-Setup mit Raspberry Pi Imager
Über den Rückgabewert des Histogramms.
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Echtzeitklassifizierung mehrerer Objekte in Kamerabildern mit tiefem Erlernen von Raspberry Pi 3 B + & PyTorch
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Lösung des Anfangswertproblems gewöhnlicher Differentialgleichungen mit JModelica
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Tipps: [Python] Berechnen Sie den Durchschnittswert des angegebenen Bereichs mit Bedgraph
Verwenden einer Webkamera mit Raspberry Pi
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
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
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
Verwenden Sie Rasppie, um das Problem einer unzureichenden mobilen Wi-Fi-Verbindung zu lösen
[Ich habe den Raspberry Pi (1) berührt] Ich habe die grundlegenden Funktionen der Minecraft Pi Edition (Vorabversion 2015.5.23) zusammengefasst.
CSV-Ausgabe von Pulsdaten mit Raspberry Pi (Analogeingang mit Python prüfen)
Lassen Sie mich Ihnen die Leistung des neuen Raspberry Pi Zero (v1.3) zeigen!
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Ruft den Rückgabewert eines externen Shell-Skripts (ls) mit python3 ab
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Messen Sie die SIM-Signalstärke mit Raspberry Pi