rospogrigio / localtuya

local handling for Tuya devices
GNU General Public License v3.0
2.85k stars 546 forks source link

Ceiling fan device qualifying, DPs included, cannot set speed. #438

Open MrFlibbles opened 3 years ago

MrFlibbles commented 3 years ago

The problem

New tuya based ceiling fan (no light) added into HA via localtuya. On/off functionality works fine but speed setting is ignored even after modifying fan.py as per tinglis1 quick fix. Would be great to be able to expose the other functions as well

Environment

Steps to reproduce

  1. Add fan via config flow and set options as per DPs gathered
  2. Try to use speed control

Configuration: config_flow

Configure Tuya Device Basic configuration for device id bf55f78ce00fe1e7806lia. (Firmware 1.0.5) Friendly Name Casa DC Ceiling Fan Host 192.168.xx.94 Local key da................b9 Protocol Version 3.3

DP dump

DPS [1] VALUE [False]   on/off
DPS [2] VALUE [normal]  mode (normal/sleep/nature)
DPS [3] VALUE [1]       speed (1-6)
DPS [8] VALUE [forward] Direction for summer/winter (forward/reverse)
DPS [22] VALUE [off]    Timer (1hour/2hour/4hour/8hour)

Provide Home Assistant taceback/logs (This is attempting to set speed via HA, hope it is not too much)

2021-04-10 19:55:41 DEBUG (MainThread) [custom_components.localtuya.discovery] Listening to broadcasts on UDP port 6666 and 6667 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.fan] [bf5...lia] Adding fan.bedroom_fan with configuration: {'fan_speed_low': '1', 'fan_speed_medium': '3', 'fan_speed_high': '6', 'id': 1, 'friendly_name': 'Bedroom Fan', 'fan_speed_control': 3, 'platform': 'fan'} 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.common] [bf5...lia] Connecting to 192.168.xx.94 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Started heartbeat loop 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.common] [bf5...lia] Retrieving initial state 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command status (device type: type_0a) 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{"gwId":"bf55f78ce00fe1e7806lia","devId":"bf55f78ce00fe1e7806lia"}' 2021-04-10 19:55:42 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number 1 2021-04-10 19:55:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:55:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:55:43 DEBUG (MainThread) [customcomponents.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=1, cmd=10, retcode=0, payload=b'\x03\xcf\x92\x14\x8e\x07\xa8\xa5b9%\xe2\x9f\xa3#k\x9dd\xc1#\xd6\x9c\xd7c\xc4N\xe1\x9dFT\x04x\xa5i\xa1\xab\x85;\xabS/\xbcgI6\xa2\x98Ym\x83\xa6\x9ctXR<+#\xd8ht\xfa\x9c', crc=2085373996) 2021-04-10 19:55:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching sequence number 1 2021-04-10 19:55:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:55:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {"dps":{"1":false,"2":"normal","3":1,"8":"forward","22":"off"}} 2021-04-10 19:55:43 WARNING (SyncWorker_3) [custom_components.localtuya.fan] [bf5...lia] Bedroom Fan/fan.bedroom_fan: Ignoring unknown fan controller state: 1 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:55:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:43 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command set (device type: type_0a) 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{"devId":"bf55f78ce00fe1e7806lia","uid":"bf55f78ce00fe1e7806lia","t":"1618050408","dps":{"1":true}}' 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number 8 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=8, cmd=7, retcode=0, payload=b'', crc=579904508) 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching sequence number 8 2021-04-10 19:56:48 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:56:53 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=8, retcode=0, payload=b'3.3\x00\x00\x00\x00\x00\x00\xc5@\x00\x00\x00\x01|rU|\x05\x90\x95\xcb^\xc5\xa2\xc0\x91\x97)EA\x1d%\xe3\xc0\x8f2\x8b(e\xd2\xd6\x8f\xf1\x95P\t\xb1S\x9c\x187\x97\r\x83!\xe8\x93\xed\xfe\xf5\x87', crc=2668881728) 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got status update 2021-04-10 19:57:03 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {"dps":{"1":true},"t":1618050421} 2021-04-10 19:57:03 WARNING (SyncWorker_6) [custom_components.localtuya.fan] [bf5...lia] Bedroom Fan/fan.bedroom_fan: Ignoring unknown fan controller state: 1 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command set (device type: type_0a) 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{"devId":"bf55f78ce00fe1e7806lia","uid":"bf55f78ce00fe1e7806lia","t":"1618050431","dps":{"3":"6"}}' 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number 11 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=11, cmd=7, retcode=0, payload=b'', crc=2673528626) 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching sequence number 11 2021-04-10 19:57:11 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:57:13 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:57:23 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {} 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Sending command heartbeat (device type: type_0a) 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Send payload: b'{}' 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Waiting for sequence number -100 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Dispatching message TuyaMessage(seqno=0, cmd=9, retcode=0, payload=b'', crc=2958142211) 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Got heartbeat response 2021-04-10 19:57:33 DEBUG (MainThread) [custom_components.localtuya.pytuya] [bf5...lia] Decrypted payload: {}

Additional information

While using the Tuya smart life app to help gather DPs, I noticed whenever I set a speed on the app and then attempted to set a speed in HA it reset the smart life app and fan speed to 1.

tinglis1 commented 3 years ago

Might be worth trying this. I have put a pull request in for updating to the new fan percentage configuration.

https://github.com/rospogrigio/localtuya/pull/542

CloCkWeRX commented 2 years ago

542 has been merged, is this now closable?