Oprava Tuya “Tem&Hum Sensor with Probe” v Home Assistant pomocou vlastného Quirku

Niektoré Tuya teplotné a vlhkostné senzory s externou sondou posielajú do Home Assistanta cez oficiálnu Tuya integráciu iba vnútornú teplotu.
Externá sonda pritom v Tuya aplikácii funguje a na Tuya IoT Platforme sa zobrazuje ako ext_temp (DP 101), ale Home Assistant pre ňu nevytvorí žiadnu entitu.

Preto sme postavili vlastný Tuya quirk s použitím knižnice tuya-device-handlers, ktorú Home Assistant interne používa na úpravu správania Tuya zariadení.
Tento quirk naučí Home Assistant, aké extra dátové body zariadenie má, aby vedel sprístupniť teplotu z externej sondy (a voliteľne ďalšie parametre) ako entity.

Prečo bol quirk potrebný

Konkrétne ide o Tuya „Tem&Hum Sensor with Probe“:

  • Tuya kategória: wsdcg

  • Product ID: m7kacaxrxbxeegfs

V Tuya IoT Platforme zariadenie posiela tieto dodatočné DP pre sondu:

  • ext_temp (DP 101) – teplota na externej sonde

  • ext_maxtemp (DP 102) – horná hranica teplotného alarmu

  • ext_mintemp (DP 103) – dolná hranica teplotného alarmu

  • ext_temp_sensivitity (DP 104) – citlivosť na zmenu teploty

  • ext_temp_alarm (DP 105) – režim alarmu

  • ext_temp_calibration (DP 106) – kalibrácia teploty

V diagnostike Home Assistanta a v oficiálnej Tuya integrácii však vidíme len:

  • vnútornú teplotu (va_temperature)

  • vlhkosť (va_humidity)

  • stav batérie (battery_state)

Teplota z externej sondy v Home Assistantovi úplne chýba, a tým sa senzor výrazne menej hodí na monitoring chladničiek, mrazničiek alebo nádrží, kde ide práve o externý snímač.

Ako bol quirk postavený

Tuya integrácia v Home Assistantovi používa knižnicu tuya-device-handlers, ktorá definuje tzv. quirks – malé Python skripty mapujúce surové Tuya DP (datové body) na štruktúrované entity.

Pre tento senzor sme vytvorili quirk súbor, ktorý:

  1. Zacieli konkrétny produkt podľa Product ID

    python
    .applies_to(product_id="m7kacaxrxbxeegfs")

    Vďaka tomu sa quirk použije iba pre toto zariadenie, nie pre všetky wsdcg.

  2. Pridá externú sondu ako číselnú teplotnú entitu

    python
    .add_dpid_integer( dpid=101, # ext_temp dpcode="ext_temp", # alebo iný teplotný kód dpmode=DPMode.READ, unit="℃", min=-200, max=1000, scale=1, step=1, )

    Rozsah a škálovanie kopírujú vnútornú teplotu (va_temperature), takže hodnota 245 znamená 24.5 °C.

  3. Voliteľne pridá DP pre alarmy a kalibráciuĎalšie volania add_dpid_integer môžu mapovať ext_maxtemp, ext_mintemp, ext_temp_sensivitity a ext_temp_calibration, takže Home Assistant vie tieto hodnoty čítať a prípadne zapisovať.

  4. Zaregistruje quirk v globálnom registri

    python
    .register(TUYA_QUIRKS_REGISTRY)

    Takto integrácia Tuya quirk nájde pri štarte Home Assistanta.

Výsledkom je malý Python súbor, ktorý Home Assistantu povie, ako interpretovať DP 101–106 ako teplotu a nastavenia sondy namiesto ich ignorovania.

Inštalácia quirku v Home Assistantovi (File Editor)

Nie je potrebné meniť kód Home Assistanta. Quirk sa nainštaluje ako vlastný Tuya quirk do adresára /config, podobne ako custom ZHA quirks.

  1. Nainštalujte doplnok File Editor

    • Nastavenia → Add-ons → Add-on Store.

    • Nainštalujte File Editor (alebo Studio Code Server).

  2. Vytvorte priečinok pre Tuya quirks

    • Vo File Editore otvorte /config.

    • Vytvorte nový priečinok, napr.:
      tuya_quirks

    • V ňom vytvorte nový súbor, napr.:
      wsdcg_bf0376ec16496a5b0apzxs.py (názov je ľubovoľný).

  3. Vložte kód quirku

    • Skopírujte kód s DeviceQuirk(), add_dpid_integer pre DP 101 a prípadné ďalšie Sonda-DP a zakončite .register(TUYA_QUIRKS_REGISTRY).

    • Súbor uložte.

  4. Reštartujte Home Assistanta

    • Odporúča sa plný reštart, aby Tuya integrácia načítala nový quirk.

  5. Znova načítajte alebo znova pridajte Tuya zariadenie

    • Nastavenia → Zariadenia a služby → Tuya → Reload alebo zariadenie odstráňte a znova pridajte.

Používanie novej entity externej teploty

Po reštarte a reloade by malo zariadenie vystaviť novú teplotnú entitu, napr.:

  • sensor.tem_hum_sensor_with_probe_external_temperature
    alebo

  • sensor.tem_hum_sensor_with_probe_ext_temp

Túto entitu môžete:

  • pridať na dashboard,

  • použiť v automatizáciách (napr. upozornenie pri prekročení teploty v mrazničke),

  • sledovať v histórii a štatistikách.

Majte na pamäti, že veľa batériových Tuya senzorov posiela údaje len pri väčšej zmene alebo v dlhších intervaloch, takže aktualizácie nemusia byť okamžité.

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