[PYTHON] Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi

Zweck

Wie der Titel schon sagt. Ich verweise vollständig auf die folgenden Artikel. Vielen Dank. Der Code ist fast derselbe. Wenn Sie also darauf hinweisen, werden wir ihn sofort löschen.

Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi https://qiita.com/c60evaporator/items/7c3156a6bbb7c6c59052

Es gab einen Teil, der in meiner Umgebung nicht funktioniert hat, daher werde ich den Code, der als privates Protokoll funktioniert hat, einfügen.

Umgebung

IMG_5275.jpg

Überprüfen Sie die Mac-Adresse des SwitchBot-Thermo-Hygrometers

Sie können dies in der Anwendung auf Ihrem Smartphone überprüfen.

IMG_5276.PNG IMG_5277.PNG

Überprüfen Sie, ob der Sensor Daten überspringt

pi@raspberrypi:~ $ sudo hcitool lescan | grep EB:F6:31:8C:1F:E9
EB:F6:31:8C:1F:E9 (unknown)
EB:F6:31:8C:1F:E9 (unknown)
EB:F6:31:8C:1F:E9 (unknown)

Was ist dieser Befehl?

NAME
       hcitool - configure Bluetooth connections

DESCRIPTION
       hcitool  is  used to configure Bluetooth connections and send some spe-
       cial command to Bluetooth devices. If no command is given,  or  if  the
       option -h is used, hcitool prints some usage information and exits.

Holen Sie sich Wert in Python

Verwenden Sie bluepy. Verweisen Sie auf die verknüpfte URL.

pi@raspberrypi:~ $ sudo install libglib2.0-dev
pi@raspberrypi:~ $ pip3 install bluepy
pi@raspberrypi:~ $ cd .local/lib/python3.7/site-packages/bluepy
pi@raspberrypi:~ $ sudo setcap 'cap_net_raw,cap_net_admin+eip' bluepy-helper

Python-Skript

switchbot.py


from bluepy import btle
import struct

class SwitchbotScanDelegate(btle.DefaultDelegate):
    def __init__(self, macaddr):
        btle.DefaultDelegate.__init__(self)
        self.sensorValue = None
        self.macaddr = macaddr

    def handleDiscovery(self, dev, isNewDev, isNewData):
        if dev.addr == self.macaddr:
            for (adtype, desc, value) in dev.getScanData():  
                if desc == '16b Service Data':
                    self._decodeSensorData(value)

    def _decodeSensorData(self, valueStr):
        valueBinary = bytes.fromhex(valueStr[4:])
        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
        self.sensorValue = {
            'SensorType': 'SwitchBot',
            'Temperature': temp,
            'Humidity': humid,
            'BatteryVoltage': batt
        }

main.py


from bluepy import btle
from switchbot import SwitchbotScanDelegate

scanner = btle.Scanner().withDelegate(SwitchbotScanDelegate('eb:f6:31:8c:1f:e9'))
scanner.scan(5.0)
print(scanner.delegate.sensorValue)
pi@raspberrypi:~ $ python3 ./main.py
{'SensorType': 'SwitchBot', 'Temperature': 25.2, 'Humidity': 68, 'BatteryVoltage': 100}

Recommended Posts

Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
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
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
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
Machen Sie LCD-Screenshots mit Python-LEGO Mindstorms
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
Steuern Sie die Anzeige des RGB LED Matirix Lightning Bulletin Boards mit Raspberry Pi 3B + frei
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Finden Sie die Definition des Wertes von errno
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)
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Serielle Kommunikation mit Raspberry Pi + PySerial
Nimm das Ausführungsprotokoll von Sellerie
Ü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
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
Ü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
Anzeige der Signalstärke RSSI einer bestimmten SSID (Himbeer-Pi (Linux))
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)