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”:
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
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:
-
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. -
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ść245jest interpretowana jako24,5 °C. -
Opcjonalnie mapuje DP dla alarmów i kalibracjiKolejne wywołania
add_dpid_integermogą mapowaćext_maxtemp,ext_mintemp,ext_temp_sensivitityiext_temp_calibration, aby Home Assistant mógł te wartości odczytywać i – jeśli integracja na to pozwala – również zapisywać. -
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.
-
Zainstaluj dodatek File Editor
-
Utwórz folder na quirki Tuya
-
Wklej kod quirku
-
Zrestartuj Home Assistanta
-
Pełny restart pozwoli integracji Tuya wczytać nowy quirk.
-
-
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.




