[PYTHON] So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi

Wenn Sie mehr Zeit zu Hause verbringen, möchten Sie möglicherweise Ihr Zuhause komfortabler gestalten. In diesem Artikel mit Raspberry Pi aus dem Thermo-Hygrometer von SwitchBot, einem billigen Bluetooth-Thermometer. Ich möchte beschreiben, wie man die Temperatur und Luftfeuchtigkeit erhält.

Annahme

--Die Einstellungen wurden so weit abgeschlossen, dass Sie sich mit ssh bei raspberryPi anmelden können.

Tor

--SwitchBot Ruft Temperatur und Luftfeuchtigkeit vom Thermo-Hygrometer ab und gibt sie in eine Textdatei aus.

Thermometer zu verwenden

Sie können das switchBot-Thermo-Hygrometer bei Amazon kaufen. Ab September 2020 ist es zu einem Preis von weniger als 2000 Yen erhältlich.

1. Zuallererst

Stellen Sie sicher, dass der Himbeer-Pi das SwitchBot-Thermo-Hygrometer mit Bluetooth erkennt. Sie können diesen Vorgang überspringen.

1.1 Ermitteln Sie die MAC-Adresse des Bluetooth des SwitchBot-Thermo-Hygrometers

Überprüfen Sie die MAC-Adresse von Bluetooth in der switchBot-App.

1.1.1 Öffnen Sie die App und tippen Sie auf den Gerätenamen, für den Sie die Bluetooth-MAC-Adresse erhalten möchten.

1.1.2. Tippen Sie oben rechts auf dem Bildschirm auf "..."

1.1.3 Die MAC-Adresse von Bluetooth wird in BLE MAC angezeigt

Im Beispiel im Bild ist F2: 4C: 0A: 14: 24: 13 </ b> die Mac-Adresse von Bluetooth.

1.2 Überprüfen Sie, ob der Rasberry Pi das SwitchBot-Thermo-Hygrometer erkennt

sudo hcitool lescan

Die Bluetooth-Mac-Adresse wird wie unten gezeigt ausgegeben. Es ist in Ordnung, wenn die Bluetooth-MAC-Adresse des Switchbot-Thermo-Hygrometers, mit dem Sie die Temperatur ermitteln möchten, unten aufgeführt ist.

LE Scan ...
1C:C2:8E:27:DE:CF (unknown)
40:58:BF:7E:B1:22 (unknown)
40:58:BF:7E:B1:22 (unknown)
5E:3D:12:6C:E7:E6 (unknown)
5E:3D:12:6C:E7:E6 (unknown)
73:69:9F:B9:C6:8C (unknown)
73:69:9F:B9:C6:8C (unknown)
18:81:0E:EA:B6:7B (unknown)
18:81:0E:EA:B6:7B (unknown)
21:BF:DD:3B:CD:A5 (unknown)
53:15:4D:6C:AE:5C (unknown)
53:15:4D:6C:AE:5C (unknown)
5E:FC:F6:B4:7D:02 (unknown)
  • Auch wenn es nicht angezeigt wird, kann es angezeigt werden, wenn Sie eine Weile warten.

Wenn der Scan abgeschlossen ist, stoppen Sie den Scan mit ctl + c </ b>.

2. Laden Sie die Quelle herunter

Ein Skript, das die Temperatur vom Switchbot-Thermo-Hygrometer abrufen kann, ist auf Github verteilt. Lassen Sie uns den Quellcode mit Git-Klon erhalten.

#Erstellen Sie einen Ordner namens iot
mkdir iot
cd iot
#Laden Sie die Quelle von github herunter
git clone https://github.com/OpenWonderLabs/python-host.git

Wenn Sie einen Ordner namens Python-Host haben, ist das in Ordnung

3. Installieren Sie die für die Ausführung erforderlichen Module

Installieren Sie die Module, die zum Ausführen der heruntergeladenen Quelle erforderlich sind.

sudo apt-get -y install libglib2.0-dev
sudo pip install pexpect
sudo pip install bluepy

4. Überprüfen Sie den Betrieb

Führen Sie den folgenden Befehl aus, um den Vorgang zu überprüfen.

cd python-host
sudo python switchbot_meter.py

Wenn das Scan-Ergebnis wie unten gezeigt angezeigt wird, ist es in Ordnung

Usage: "sudo python switchbot.py [mac_addr  cmd]" or "sudo python switchbot.py"
Start scanning...
22 16b Service Data 000d540064089a37 16
22 16b Service Data 000d540064039a39 16
scan timeout
(0, [u'f2:4c:0a:14:24:13', "Humiture:26.8'C 55%"])
(1, [u'f8:26:b7:72:bf:51', "Humiture:26.3'C 57%"])

Drücken Sie ctl + c </ b>, um die Befehlsausführung zu beenden.

5. Ändern Sie, um das Ergebnis in eine Textdatei auszugeben

Ändern Sie einen Teil der heruntergeladenen Datei switchbot_meter.py so, dass das Ergebnis der Temperaturerfassung in eine Textdatei ausgegeben wird. Erstellen Sie zunächst die Ausgabezieldatei mit einem Touch-Befehl.

touch ondo.txt

Öffnen Sie switchbot_meter.py in vi.

sudo vi switchbot_meter.py

Ändern Sie die Zeilen 210-222 wie folgt.

  • Geben Sie im vi-Befehlsmodus : 210 </ b> ein, um zur Zeile 210 zu gelangen.

Vorher ändern

if not dev_list:
    print("No SwitchBot nearby, exit")
    sys.exit()
for idx, val in enumerate(dev_list):
    print(idx, val)

    dev_number = int(input("Input the device number to control:"))

    if dev_number >= len(dev_list) :
        print("Input error, exit")
    bluetooth_adr = dev_list[dev_number]

#Trigger the device to work
#If the SwitchBot address is known you can run this command directly without scanning

    trigger_device(bluetooth_adr)

Nach der Änderung (Zeilen 210 und danach auskommentieren und neu schreiben, um die Datei zu lesen und zu schreiben)

if not dev_list:
    print("No SwitchBot nearby, exit")
    sys.exit()
    with open("/home/pi/iot/python-host/ondo.txt","w") as f:
        f.write("")
    with open("/home/pi/iot/python-host/ondo.txt","a") as f:
        for idx, val in enumerate(dev_list):
              f.write(str(val[0])+","+str(val[1])+","+str(val[2])+"\n")

#for idx, val in enumerate(dev_list):
#    print(idx, val)

#    dev_number = int(input("Input the device number to control:"))

#    if dev_number >= len(dev_list) :
#        print("Input error, exit")
#    bluetooth_adr = dev_list[dev_number]

#Trigger the device to work
#If the SwitchBot address is known you can run this command directly without scanning

#    trigger_device(bluetooth_adr)

Zeile 114 umschreiben Vorher ändern

elif dev_type == 'T':
    meter_list.append([mac,"Humiture:%.1f'C %d%%"%(meterTemp, meterHumi)])
if ord(dev_type) == ord('L') + 128:

Nach der veränderung

elif dev_type == 'T':
    meter_list.append([mac,meterTemp, meterHumi])
if ord(dev_type) == ord('L') + 128:

6. Überprüfen Sie den Betrieb

Überprüfen Sie nach dem Ändern des Codes den Vorgang.

sudo python switchbot_meter.py 

Stellen Sie sicher, dass es fehlerfrei läuft.

Bestätigen Sie, dass das Ergebnis in ondo.txt ausgegeben wird.

cat ondo.txt 

Es ist in Ordnung, wenn die MAC-Adresse, die Temperatur und die Luftfeuchtigkeit in der unten gezeigten Reihenfolge angezeigt werden.

f2:4c:0a:14:24:13,27.5,47

Das Obige bedeutet, dass das Thermometer bei f2: 4c: 0a: 14: 24: 13 27,5 Grad und 47% Luftfeuchtigkeit aufzeichnete.

7. Zukunft

Zum Beispiel können Sie die Temperatur und Luftfeuchtigkeit ermitteln, indem Sie sie regelmäßig mit cron ausführen. Dieses Mal gebe ich es in eine Textdatei aus, aber es kann gut sein, es in sqlite3 usw. auszugeben und Temperaturdaten zu sammeln.

8. Suchen Sie nach Schlüsselwörtern

Haus Iot Temperatur und Luftfeuchtigkeit Switchbot-Thermometer Switchbot Feuchtigkeitsmesser Ich bin kein Anfänger Razz Pie Home Iot Haushack

Recommended Posts