Oprava Tuya “Tem&Hum Sensor with Probe” v Home Assistant pomocí vlastního quirku

Některé Tuya teplotní a vlhkostní senzory s externí sondou do Home Assistantu přes oficiální integraci Tuya posílají pouze vnitřní teplotu.
Externí sonda přitom v aplikaci Tuya funguje a na Tuya IoT Platformě se zobrazuje jako ext_temp (DP 101), ale Home Assistant pro ni vůbec nevytvoří entitu.

Proto jsme vytvořili vlastní Tuya quirk s využitím knihovny tuya-device-handlers, kterou Home Assistant interně používá k „normalizaci“ chování Tuya zařízení.
Tento quirk Home Assistantu „vysvětlí“ další datové body zařízení, takže může zpřístupnit externí teplotu (a volitelně další parametry sondy) jako entity.

Proč byl quirk potřeba

Konkrétní zařízení je Tuya „Tem&Hum Sensor with Probe“:

  • Tuya kategorie: wsdcg

  • Product ID: m7kacaxrxbxeegfs

V Tuya IoT Platformě zařízení navíc posílá datové body sondy:

  • ext_temp (DP 101) – teplota na externí sondě

  • ext_maxtemp (DP 102) – horní teplotní limit pro alarm

  • ext_mintemp (DP 103) – dolní teplotní limit pro alarm

  • ext_temp_sensivitity (DP 104) – citlivost změny teploty

  • ext_temp_alarm (DP 105) – režim alarmu

  • ext_temp_calibration (DP 106) – kalibrace teploty

V diagnostice Home Assistantu a v oficiální integraci Tuya se ale zobrazují jen:

  • Vnitřní teplota (va_temperature)

  • Vlhkost (va_humidity)

  • Stav baterie (battery_state)

Teplota z externí sondy v Home Assistantu prostě neexistuje, což dramaticky snižuje použitelnost senzoru pro hlídání lednic, mrazáků, bojlerů nebo jiných míst, kde je důležitá právě externí sonda.

Jak byl quirk postaven

Integrace Tuya v Home Assistantu používá knihovnu tuya-device-handlers, která definuje tzv. quirks – malé Python skripty mapující surové Tuya DP (datové body) na strukturované entity.

Pro tento senzor jsme vytvořili quirk soubor, který:

  1. Cílí přímo na daný produkt podle Product ID

    python
    .applies_to(product_id="m7kacaxrxbxeegfs")

    Díky tomu se quirk použije pouze na toto konkrétní zařízení, ne na všechna wsdcg.

  2. Přidá externí sondu jako číselnou teplotní entitu

    python
    .add_dpid_integer( dpid=101, # ext_temp dpcode="ext_temp", # nebo jiný kód mapovaný na teplotu dpmode=DPMode.READ, unit="℃", min=-200, max=1000, scale=1, step=1, )

    Rozsah a škálování odpovídá vnitřní teplotě (va_temperature), takže surová hodnota 245 znamená 24.5 °C.

  3. Volitelně přidá i DP pro alarm a kalibraciDalší volání add_dpid_integer mohou mapovat ext_maxtemp, ext_mintemp, ext_temp_sensivitity a ext_temp_calibration, takže Home Assistant může tyto hodnoty číst a případně i zapisovat.

  4. Zaregistruje quirk do globálního registru

    python
    .register(TUYA_QUIRKS_REGISTRY)

    Tím se quirk zpřístupní integraci Tuya při startu Home Assistantu.

Výsledkem je malý Python soubor, který Home Assistantu řekne, jak interpretovat DP 101–106 jako teploty a nastavení sondy místo jejich ignorování.

Instalace quirku v Home Assistantu (File Editor)

Není nutné sahat do zdrojového kódu Home Assistantu. Quirk se instaluje jako vlastní Tuya quirk do /config, podobně jako custom ZHA quirks.

  1. Nainstalujte doplněk File Editor

    • Nastavení → Add-ons → Add-on Store.

    • Nainstalujte File Editor (nebo Studio Code Server).

  2. Vytvořte složku pro Tuya quirks

    • V File Editoru otevřete /config.

    • Vytvořte složku, např.:
      tuya_quirks

    • V ní vytvořte nový soubor, např.:
      wsdcg_bf0376ec16496a5b0apzxs.py (název může být libovolný).

  3. Vložte kód quirku

    • Vložte kód s DeviceQuirk(), voláním add_dpid_integer pro DP 101 a případné další DP sondy a zakončete .register(TUYA_QUIRKS_REGISTRY).

    • Soubor uložte.

  4. Restartujte Home Assistant

    • Doporučený je plný restart, aby integrace Tuya načetla nový quirk.

  5. Znovu načtěte nebo znovu přidejte Tuya zařízení

    • Nastavení → Devices & Services → Tuya → Reload nebo odeberte a znovu přidejte konkrétní zařízení.

Jak používat novou entitu externí teploty

Po restartu a reloadu by mělo zařízení vystavit novou teplotní entitu, typicky:

  • sensor.tem_hum_sensor_with_probe_external_temperature
    nebo

  • sensor.tem_hum_sensor_with_probe_ext_temp

Tu pak můžete:

  • přidat na dashboard,

  • použít v automatizacích (např. alarm při překročení 8 °C v lednici),

  • sledovat v Historii a Statistikách.

Počítejte s tím, že mnoho bateriových Tuya senzorů posílá data jen při větší změně nebo v delších intervalech, takže aktualizace nemusí být okamžité.

Doporučené produkty1

%s ...
%s
%image %title %code %s