Naprawa działania czujnika Tuya “Tem&Hum Sensor with Probe” w Home Assistant za pomocą niestandardowego quirka

Niektóre czujniki temperatury i wilgotności Tuya z sondą zewnętrzną przekazują do Home Assistanta przez oficjalną integrację Tuya tylko temperaturę wewnętrzną.
Sonda zewnętrzna działa w aplikacji Tuya i jest widoczna na platformie Tuya IoT jako ext_temp (DP 101), ale Home Assistant w ogóle nie tworzy dla niej encji.

Aby to naprawić, zbudowaliśmy niestandardowy quirk Tuya korzystający z biblioteki tuya-device-handlers, której Home Assistant używa wewnętrznie do normalizacji zachowania urządzeń Tuya.
Quirk ten uczy Home Assistanta o dodatkowych datapointach urządzenia, dzięki czemu może on wystawić temperaturę z sondy zewnętrznej (oraz opcjonalne ustawienia sondy) jako encje.

Dlaczego ten quirk był potrzebny

Konkretne urządzenie to Tuya „Tem&Hum Sensor with Probe”:

  • Kategoria Tuya: wsdcg

  • Product ID: m7kacaxrxbxeegfs

Na platformie Tuya IoT urządzenie raportuje dodatkowe datapointy dla sondy:

  • ext_temp (DP 101) – temperatura sondy zewnętrznej

  • ext_maxtemp (DP 102) – górny próg alarmu temperatury

  • ext_mintemp (DP 103) – dolny próg alarmu temperatury

  • ext_temp_sensivitity (DP 104) – czułość zmian temperatury

  • ext_temp_alarm (DP 105) – tryb alarmu

  • ext_temp_calibration (DP 106) – kalibracja temperatury

W diagnostyce Home Assistanta i w oficjalnej integracji Tuya widać jednak tylko:

  • temperaturę wewnętrzną (va_temperature)

  • wilgotność (va_humidity)

  • stan baterii (battery_state)

Temperatura z sondy zewnętrznej w Home Assistant nie istnieje, co sprawia, że czujnik słabiej nadaje się do monitorowania lodówek, zamrażarek czy zbiorników, gdzie istotny jest pomiar właśnie w zewnętrznym punkcie.

Jak zbudowano quirk

Integracja Tuya w Home Assistant korzysta z biblioteki tuya-device-handlers, która definiuje tzw. quirks – małe skrypty Python mapujące surowe datapointy Tuya (DP) na uporządkowane encje.

W przypadku tego czujnika przygotowaliśmy plik quirku, który:

  1. Celuje w urządzenie po Product ID

    python
    .applies_to(product_id="m7kacaxrxbxeegfs")

    Dzięki temu quirk dotyczy tylko tego produktu Tuya, a nie wszystkich urządzeń kategorii wsdcg.

  2. Dodaje sondę zewnętrzną jako czujnik temperatury typu integer

    python
    .add_dpid_integer( dpid=101, # ext_temp dpcode="ext_temp", # lub inny kod rozpoznawany jako temperatura dpmode=DPMode.READ, unit="℃", min=-200, max=1000, scale=1, step=1, )

    Zakres i skalowanie odpowiadają wewnętrznej temperaturze (va_temperature), więc surowa wartość 245 jest interpretowana jako 24,5 °C.

  3. Opcjonalnie mapuje DP dla alarmów i kalibracjiKolejne wywołania add_dpid_integer mogą mapować ext_maxtemp, ext_mintemp, ext_temp_sensivitity i ext_temp_calibration, aby Home Assistant mógł te wartości odczytywać i – jeśli integracja na to pozwala – również zapisywać.

  4. Rejestruje quirk w globalnym rejestrze

    python
    .register(TUYA_QUIRKS_REGISTRY)

    Dzięki temu integracja Tuya wykryje quirk podczas startu Home Assistanta.

Efektem jest niewielki plik Pythona, który mówi Home Assistantowi, jak interpretować DP 101–106 jako temperaturę i ustawienia sondy zamiast je ignorować.

Instalacja quirku w Home Assistant (File Editor)

Nie trzeba modyfikować kodu Home Assistanta. Quirk instalujemy jako niestandardowy quirk Tuya w katalogu /config, podobnie jak własne quirki ZHA.

  1. Zainstaluj dodatek File Editor

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

    • Zainstaluj File Editor (lub Studio Code Server).

  2. Utwórz folder na quirki Tuya

    • W File Editorze otwórz /config.

    • Utwórz nowy folder, np.:
      tuya_quirks

    • W tym folderze utwórz nowy plik, np.:
      wsdcg_bf0376ec16496a5b0apzxs.py (nazwa pliku jest dowolna).

  3. Wklej kod quirku

    • Wklej kod z DeviceQuirk(), wywołaniem add_dpid_integer dla DP 101 i ewentualnych pozostałych DP sondy oraz z .register(TUYA_QUIRKS_REGISTRY) na końcu.

    • Zapisz plik.

  4. Zrestartuj Home Assistanta

    • Pełny restart pozwoli integracji Tuya wczytać nowy quirk.

  5. Przeładuj lub dodaj ponownie urządzenie Tuya

    • Ustawienia → Urządzenia i usługi → Tuya → Reload lub usuń i dodaj dane urządzenie ponownie.

Korzystanie z nowej encji temperatury zewnętrznej

Po restarcie i przeładowaniu urządzenie powinno wystawić dodatkową encję temperatury, np.:

  • sensor.tem_hum_sensor_with_probe_external_temperature
    albo

  • sensor.tem_hum_sensor_with_probe_ext_temp

Możesz ją:

  • dodać do dashboardu,

  • użyć w automatyzacjach (np. alarm, gdy temperatura w zamrażarce rośnie),

  • śledzić w Historii i Statystykach.

Pamiętaj, że wiele bateryjnych czujników Tuya wysyła dane tylko przy większych zmianach lub w określonych odstępach czasu, więc aktualizacje mogą pojawiać się z opóźnieniem.

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