[PYTHON] Comment obtenir la température du thermo-hygromètre SwitchBot à l'aide de Raspberry Pi

En passant plus de temps à la maison, vous voudrez peut-être rendre votre maison plus confortable. Dans cet article, en utilisant Raspberry Pi, du thermo-hygromètre de SwitchBot, qui est un thermomètre Bluetooth bon marché. Je voudrais décrire comment obtenir la température et l'humidité.

supposition

objectif

Thermomètre à utiliser

Vous pouvez acheter le thermo-hygromètre switchBot sur Amazon. Depuis septembre 2020, il est disponible à un prix inférieur à 2000 yens.

1.Tout d'abord

Assurez-vous que le raspberry Pi reconnaît le thermo-hygromètre switchBot avec Bluetooth. Vous pouvez ignorer cette procédure.

1.1. Découvrez l'adresse MAC du bluetooth du thermo-hygromètre switchBot

Vérifiez l'adresse MAC de Bluetooth depuis l'application switchBot.

1.1.1. Ouvrez l'application et appuyez sur le nom de l'appareil pour lequel vous souhaitez obtenir l'adresse MAC Bluetooth.

1.1.2. Appuyez sur "..." en haut à droite de l'écran

1.1.3. L'adresse MAC de Bluetooth est affichée dans BLE MAC

Dans l'exemple de l'image, F2: 4C: 0A: 14: 24: 13 </ b> est l'adresse Mac de bluetooth.

1.2. Vérifier si le rasberry Pi reconnaît le thermo-hygromètre switchBot

sudo hcitool lescan

L'adresse mac Bluetooth est sortie comme indiqué ci-dessous. Ce n'est pas grave si l'adresse MAC Bluetooth du thermo-hygromètre Switchbot dont vous souhaitez obtenir la température est indiquée ci-dessous.

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)
  • Même s'il n'est pas affiché, il peut s'afficher si vous attendez un moment.

Lorsque la numérisation est terminée, arrêtez la numérisation avec ctl + c </ b>.

2. Téléchargez la source

Un script qui peut obtenir la température du thermo-hygromètre switchbot est distribué sur github. Obtenons le code source avec git clone.

#Créez un dossier appelé iot
mkdir iot
cd iot
#Téléchargez la source depuis github
git clone https://github.com/OpenWonderLabs/python-host.git

Si vous avez un dossier appelé python-host, c'est ok

3. Installez les modules nécessaires à l'exécution

Installez les modules nécessaires pour exécuter la source téléchargée.

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

4. Vérifiez le fonctionnement

Exécutez la commande suivante pour vérifier l'opération.

cd python-host
sudo python switchbot_meter.py

Si le résultat de l'analyse s'affiche comme indiqué ci-dessous, tout va bien

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%"])

Appuyez sur ctl + c </ b> pour terminer l'exécution de la commande.

5. Modifier pour afficher le résultat dans un fichier texte

Modifiez une partie du fichier switchbot_meter.py téléchargé afin que le résultat de l'acquisition de température soit sorti dans un fichier texte. Tout d'abord, créez le fichier de destination de sortie avec une commande tactile.

touch ondo.txt

Ouvrez switchbot_meter.py dans vi.

sudo vi switchbot_meter.py

Modifiez les lignes 210 à 222 comme suit.

  • Entrez : 210 </ b> en mode commande vi pour passer à la ligne 210.

Changer avant

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)

Après le changement (commentez les lignes 210 et suivantes et réécrivez pour lire et écrire le fichier)

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)

Réécrire la ligne 114 Changer avant

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

Après le changement

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

6. Vérifiez le fonctionnement

Après avoir changé le code, vérifiez le fonctionnement.

sudo python switchbot_meter.py 

Assurez-vous qu'il fonctionne sans erreurs.

Confirmez que le résultat est affiché dans ondo.txt.

cat ondo.txt 

Ce n'est pas grave si l'adresse MAC, la température et l'humidité sont affichées dans cet ordre comme indiqué ci-dessous.

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

Ce qui précède signifie que le thermomètre à f2: 4c: 0a: 14: 24: 13 a enregistré 27,5 degrés et 47% d'humidité.

7. Avenir

Par exemple, vous pouvez obtenir la température et l'humidité en l'exécutant régulièrement avec cron. Cette fois, je le sortie dans un fichier texte, mais il peut être bon de le sortir dans sqlite3 etc. et d'accumuler les données de température.

8. Rechercher des mots-clés

Maison Iot Température et humidité thermomètre Switchbot humidimètre switchbot Iot débutant Tarte Razz Accueil Iot Piratage de la maison

Recommended Posts