Klimatyzacja Rotenso Teta - integracja z Homessistant

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.

Klimatyzatorów nie integrowałem, ale miałem problem z jednym urządzeniem na protokole 3.5 - jak sam autor (rospogrigio) pisze na stronie projektu:

Currently, Tuya protocols from 3.1 to 3.4 are supported.

więc jeśli tam jest 3.5 to najprawdopodobniej to jest problem.
Jest jeszcze fork:

obsługuje protokół 3.5 - u mnie to rozwiązało problem.

Wiem, że to nie odpowiedź bezpośrednio na pytanie. Ja mam Rotenso Versu ale z Hacs pobrałem Midea AC LAN i działa bardzo dobrze