Raspberry Pi čtení dat z teploměru QINGPING Temperature & RH monitor, M version – Xiaomi mi

Pojďme si ukázat jak číst teplotu a vlhkost z e-link teploměru a vlhkoměru QINGPING Temperature & RH monitor, M version

Čtení hodnot z Android zařízení

Do telefonu stáhněte aplikaci Xiaomi Home z Google Play. Na teploměru podržíte zadní tlačítko několik vteřin aby na displeji začala blikat/svítit ikonka bluetooth. Pak v aplikaci dáte vyhledat nové zařízení a objeví se vám dostupné teploměry. Pak postupujete podle instrukcí

Čtení hodnot z Raspberry Pi

Aby bylo možné číst teplotu z RaspBerryPi je potřeba v teploměru upravit firmware – tím nebude možné se na teploměr připojit z Android telefonu (viz bod výše)!

Úpravu firmwate provede podle: https://github.com/pvvx/ATC_MiThermometer

Úprava firmware probíhá bezdrátově přes bluetooth – není potřeba nic stahovat a speciální znalosti. Stačí notebook s bluetooth. Původní firmware je možné nahrát zpět.

Aktualizaci provedet vybráním požadovaného teploměru a klikem na tlačítko OTA:

Na notebooku zapněte Blutooth

  1. Jděte na stránku https://github.com/pvvx/ATC_MiThermometer vyberte teploměr a klikněte na OTA
  2. Několik vteřin podržte zadní tlačítko aby blikala bluetooth ikona
  3. Vstupní pole „BLE device name prefix filter(s):“ můžete nechat prázdné. Tlačítkem „connect“ spustíte prohledávání bluetoth zařízení. Musíte tam najít váš „QINGPING Temp RH M“ se kterým se spárujete. Je potřeba chvilku počkat aby se zobrazil další formulář s tlařítkem „Do Activation“
  4. Tlačítkem „Do Activation“ provedete změnu firmware
  5. Po několika vteřinách skočí do polí „Device known id“, „Mi token“, „Mi bind key“ hodnoty, nahoře na stránce se zobrazí aktuální teplota a vlkost.
  6. vyberete firmwer (tady můžete nahrát i originální) – já vybral CGG1M_V48.bin
  7. Tlačítkem „Start Flashing“ provedete změnu firmware

Před aktualizací firmware se teploměr jmenoval „Qingping Temp RH M“ a po aktualizaci se jmenoval „CGG_83F48D“

Připojujeme se z Raspberry Pi

  1. instalce nezbytných nástrojů
sudo apt-get update
sudo apt-get install bluez python3-pip
sudo pip3 install bluepy

2. zjištění MAC adresy teploměru

sudo hcitool lescan

Vypíše se seznam BLE zařízení, mezi nimi hledejte název CGD_XXXXXX.

3. python script pro čtení teploty

V tomto scriptu stačí nastavit správnou MAC adresu

from bluepy.btle import Peripheral

# Nahraď MAC adresu adresou svého teploměru
MAC_ADDRESS = "83:F4:8D:XX:XX:XX"

def read_temperature(mac):
    try:
        # Připojení k teploměru
        device = Peripheral(mac)

        # Čtení dat ze specifického UUID (např. pro teplotu)
        characteristics = device.getCharacteristics(uuid="00002a6e-0000-1000-8000-00805f9b34fb")
        if characteristics:
            temperature_data = characteristics[0].read()
            # Konverze získaných dat na teplotu (pokud je třeba)
            temperature = int.from_bytes(temperature_data, byteorder='little', signed=True) / 100
            return temperature

        device.disconnect()

    except Exception as e:
        print(f"Error: {e}")
        return None

temperature = read_temperature(MAC_ADDRESS)
if temperature is not None:
    print(f"Teplota: {temperature} °C")
else:
    print("Nelze získat teplotu.")

Script sputíme příkazem:

ubuntu@ubuntu:~$ python3 temperature.py
Teplota: 21.65 °C