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.
--Die Einstellungen wurden so weit abgeschlossen, dass Sie sich mit ssh bei raspberryPi anmelden können.
--SwitchBot Ruft Temperatur und Luftfeuchtigkeit vom Thermo-Hygrometer ab und gibt sie in eine Textdatei aus.
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.
Stellen Sie sicher, dass der Himbeer-Pi das SwitchBot-Thermo-Hygrometer mit Bluetooth erkennt. Sie können diesen Vorgang überspringen.
Überprüfen Sie die MAC-Adresse von Bluetooth in der switchBot-App.
Im Beispiel im Bild ist F2: 4C: 0A: 14: 24: 13 </ b> die Mac-Adresse von Bluetooth.
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)
Wenn der Scan abgeschlossen ist, stoppen Sie den Scan mit ctl + c </ b>.
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
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
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.
Ä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.
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:
Ü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.
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.
Haus Iot Temperatur und Luftfeuchtigkeit Switchbot-Thermometer Switchbot Feuchtigkeitsmesser Ich bin kein Anfänger Razz Pie Home Iot Haushack
Recommended Posts