Cześć,
od kilku dni walczę z lokalną integracją dwóch klimatyzatorów Rotenso (moduły Tuya Wi‑Fi) z Home Assistant i LocalTuya/Tuya Local.
Sprzęt:
– HAOS w kamperze (Home Assistant OS).
– W domu router TP‑LINK, dwie klimy Rotenso pod Tuya/Smart Life.
– Połączenie między kamperem a domem przez Tailscale, dodatkowo stary laptop Lenovo w domu jako subnet router (tailscale up --advertise-routes=10.1.0.0/24).
Z HA mam ping do pierwszej klimy (Kuchnia) po IP:
– 10.1.0.251 działa.
– druga klima Julia jest obecnie pod 10.1.4.118 (docelowo też przeniosę ją w zakres 10.1.0.x).
Dane z Tuya IoT / tinytuya (przykład dla Kuchni):
{
"name": "Klimatyzacja kuchnia",
"id": "bfbebb50bc51e99b3c0ued",
"key": "FCZ+B\~V=b/|B{up<",
"mac": "00:33:7a:dd:56:d7",
"uuid": "ccd77067eff0c57d",
"sn": "10022602205D6D",
"category": "kt",
"product_name": "Air conditioner",
"product_id": "nn2ooaacswz6uyi0",
"biz_type": 18,
"sub": false,
"mapping": {
"1": {"code": "switch","type": "Boolean","values": {}},
"2": {"code": "temp_set","type": "Integer","values": {"unit": "°C","min": 1600,"max": 3100,"scale": 2,"step": 50}},
"3": {"code": "temp_current","type": "Integer","values": {"unit": "°C","min": -10000,"max": 10000,"scale": 2,"step": 50}},
"7": {"code": "mode_auto","type": "Boolean","values": {}},
"8": {"code": "mode_eco","type": "Boolean","values": {}},
"9": {"code": "mode_dry","type": "Boolean","values": {}},
"12": {"code": "heat","type": "Boolean","values": {}},
"13": {"code": "light","type": "Boolean","values": {}},
"16": {"code": "beep","type": "Boolean","values": {}},
"24": {"code": "temp_set_f","type": "Integer","values": {"unit": "°F","min": 61,"max": 88,"scale": 0,"step": 1}},
"26": {"code": "health","type": "Boolean","values": {}},
"27": {"code": "cleaning","type": "Boolean","values": {}},
"39": {"code": "fresh_air_valve","type": "Boolean","values": {}}
},
"ip": "10.1.0.251",
"version": "3.5"
}
Analogicznie mam pełne dane dla Julii (id, key, ip, mapping, version": “3.5”).
W HA zainstalowane mam:
– LocalTuya integration (rospogrigio)
– Tuya Local (make‑all/tuya-local) przez HACS
– oficjalną Tuya (chmura).
Problem:
– Zarówno w LocalTuya, jak i w Tuya Local wpisuję:
– Device ID: bfbebb50bc51e99b3c0ued
– IP: 10.1.0.251 (ping z HA działa)
– Local key: FCZ+B~V=b/|B{up<
– W Tuya Local wybieram wersję protokołu auto.
– Po kliknięciu Zatwierdź kreator wraca do tego samego ekranu, bez żadnej dodatkowej informacji, nie dochodzi do listy typów urządzeń / encji.
Z logów LocalTuya (włączony debug) mam m.in. taki błąd podczas discovery:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa3 in position 5: invalid start byte
2026-07-07 11:06:32.966 ERROR (MainThread) \[homeassistant\] Error doing job: Exception in callback \_SelectorDatagramTransport.\_read_ready() (task: None)
Traceback (most recent call last):
File "/config/custom_components/localtuya/discovery.py", line 65, in datagram_received
data = decrypt_udp(data)
File "/config/custom_components/localtuya/discovery.py", line 30, in decrypt_udp
return \_unpad(decryptor.update(message) + decryptor.finalize()).decode()
ValueError: The length of the provided data is not a multiple of the block length.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/localtuya/discovery.py", line 67, in datagram_received
data = data.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9a in position 0: invalid start byte
Wygląda to tak, jakby:
– LocalTuya nie potrafiła poprawnie odszyfrować UDP/handshake (protokół 3.5 / specyficzny moduł Rotenso/Midea?),
– Tuya Local też nie kończy handshake’u i nie przechodzi kreatora (wraca do „Zatwierdź”), mimo poprawnego ID, IP, key i działającego pinga.
Z tinytuya mam też poprawne dane konta deweloperskiego:
{
"apiKey": "uu8fxxc4dsuc54uvsss4",
"apiSecret": "80497fa2a6fb445a8aaa48c6dcb2fa20",
"apiRegion": "eu",
"apiDeviceID": "bfbebb50bc51e99b3c0ued"
}
Pytania:
Czy ktoś z Was z podobnym Rotenso/Midea (protokół 3.5, kategoria kt, produkt nn2ooaacswz6uyi0) miał taki efekt „wraca do Zatwierdź” w Tuya Local i udało się to obejść?
Czy jedyną sensowną drogą jest tutaj Tuya Local + ręczna definicja klimatyzatora po DP (na bazie mappingu z tinytuya), albo Midea AC LAN / Midea Smart AC, zamiast LocalTuya?
Na jakie jeszcze logi zwrócić uwagę (Tuya Local), żeby było łatwiej zdiagnozować, czemu handshake z urządzeniem się nie kończy?
Zależy mi na pełnej lokalnej kontroli (tryby, temp_set, temp_current itd.), bo Rotenso przez chmurę ma bardzo ograniczone możliwości w porównaniu z pilotem, a sieć między kamperem a domem już działa.
Z góry dzięki za wszelkie wskazówki, szczególnie jeśli ktoś ma działające Rotenso z Tuya Local albo Midea AC.