I did have to pair the device with the “Tuya Smart” app; it wasn’t complicated but I don’t remember the process. I think the steps needed to get a “device id” and “local key” that are required to add the device to the tuya-local integration are more involved but the instructions provided by the integration are good.
Ok, I’ll give it a go when I get home. When you say you used the starlight heatpump device config. Is this set in the Tuya Smart app or in the Home Assistant Integration?
Tuya Local will query the device and come up with some possible device configs to use. Select “starlight heatpump” in the dropdown (instead of daizuki in the pic).
It will make a device with the following entities:
It works pretty well.
Remember to force close/kill the “Tuya Smart” app on your phone before using Tuya Local or iot.tuya.com. The device doesn’t like multiple connections and will sometimes throw weird errors if more that on service is trying to talk to it, which the app will do in the background if it isn’t force closed. I only used the “Tuya Smart” app to connect it to the Tuya ecosystem and never use the app.
Worked like a charm! Here’s what I had to do to get the device on the tuya app.
-
Hold the reset button on the wifi module until display reads AP (mine said CF the first time so you may have to reset more than once)
-
Go into the Tuya app and select Add Device > Large Home Appliances > Air Conditioner (Wi-Fi)
-
Enter the Wi-Fi SSID and pwd that you want your mini-split to connect to > Click Next
-
You will be prompted to connect your phone to the SmartLife_XXX wifi created by your mini-split
-
A 2 min timer will start and it will try to connect, power on the device (via infrared remote) and the setup should complete.
I followed this video to figure out the device_id and local_key.
** Note I would recommend making an IP reservation for your mini-split as well
That’s awesome to see there’s a solution! Before I go out and buy it, I’d like to confirm that this is the same module we’re talking about:
(free shipping in the US through Home Depot for that same $35 price, by the way)
Yep, that’s it.
I did this same thing for integrating my mini splits, but both of them seem to report the target temperature anywhere from 158 to 161 at all times. not to mention that the temperature steps are not in whole numbers.
So there are at least two versions of the Pioneer AC/Heat pump: the WYT series and the WYS series. The WYS uses a USB dongle instead of the device that plugs into the mainboard on the WYT.
I recommend double checking which Pioneer AC/Heat pump you have.
Also, for the WYT mainboard connection, I was able to remove the screwed on cover over the power connection and mainboard, and slightly slide out the board to connect the device. There is a video on the internet where somebody totally disassembled the thing to connect the device, which is not necessary at all.
Also, also, the two devices configs that I have found to work with the Pioneer AC/Heat pump are daizuki_heatpump
and starlight_heatpump
. I personally found the starlight_heatpump
to work better as far as temperature control and display, but it’s worth testing them both.
I made my own config based on those two, which includes some other sensors that don’t work (they might work on the WYS model):
name: Pioneer WYT Mini Split AC/Heat Pump
primary_entity:
entity: climate
translation_key: aircon_extra
dps:
- id: 1
name: hvac_mode
type: boolean
mapping:
- dps_val: false
value: "off"
icon: "mdi:hvac-off"
- dps_val: true
constraint: mode
conditions:
- dps_val: auto
icon: "mdi:hvac"
value: heat_cool
- dps_val: cold
icon: "mdi:snowflake"
value: cool
- dps_val: hot
icon: "mdi:fire"
value: heat
- dps_val: wind
icon: "mdi:fan"
value: fan_only
- dps_val: wet
icon: "mdi:water"
value: dry
- id: 2
type: integer
name: temperature
range:
min: 610
max: 880
mapping:
- scale: 10
step: 10
unit: F
- id: 3
name: current_temperature
type: integer
mapping:
- dps_val: 15
value: 59
- dps_val: 16
value: 61
- dps_val: 17
value: 63
- dps_val: 18
value: 64
- dps_val: 19
value: 66
- dps_val: 20
value: 68
- dps_val: 21
value: 70
- dps_val: 22
value: 72
- dps_val: 23
value: 73
- dps_val: 24
value: 75
- dps_val: 25
value: 77
- dps_val: 26
value: 79
- dps_val: 27
value: 81
- dps_val: 28
value: 82
- dps_val: 29
value: 84
- dps_val: 30
value: 86
- dps_val: 31
value: 88
- dps_val: 32
value: 90
unit: F
- id: 4
name: mode
type: string
hidden: true
- id: 5
name: fan_mode
type: string
mapping:
- dps_val: auto
value: auto
- dps_val: mute
value: quiet
- dps_val: low
value: low
- dps_val: mid_low
value: medlow
- dps_val: mid
value: medium
- dps_val: mid_high
value: medhigh
- dps_val: high
value: high
- dps_val: strong
value: strong
- id: 20
name: unknown_20
type: integer
- id: 105
name: sleep_mode
type: string
- id: 110
name: unknown_110
type: integer
- id: 113
name: swing_mode
type: string
mapping:
- dps_val: "0"
constraint: horizontal_swing
conditions:
- dps_val: "0"
value: "off"
- dps_val: "1"
value: horizontal
- value: horizontal
- dps_val: "1"
constraint: horizontal_swing
conditions:
- dps_val: "0"
value: vertical
- dps_val: "1"
value: both
- value: both
- dps_val: "2"
constraint: horizontal_swing
conditions:
- dps_val: "0"
value: vertical
- value: both
- dps_val: "3"
constraint: horizontal_swing
conditions:
- dps_val: "0"
value: vertical
- value: both
- id: 114
name: horizontal_swing
type: string
hidden: true
- id: 116
name: unknown_116
type: integer
optional: true
- id: 119
name: electricity_management
type: string
- id: 120
name: unknown_120
type: string
- id: 123
name: flags
type: string
- id: 126
name: vertical_flow_position
type: string
- id: 127
name: horizontal_flow_position
type: string
- id: 128
name: unknown_128
type: string
- id: 129
name: unknown_129
type: string
- id: 130
name: maybe_eco_temp
type: integer
- id: 131
name: unknown_131
type: boolean
- id: 132
name: unknown_132
type: boolean
- id: 133
name: unknown_133
type: string
- id: 134
name: unknown_134
type: json
secondary_entities:
- entity: sensor
name: Current humidity
category: diagnostic
class: humidity
dps:
- id: 18
name: sensor
type: integer
unit: "%"
class: measurement
- entity: select
name: Vertical swing
category: config
icon: "mdi:arrow-up-down-bold"
dps:
- id: 113
type: string
name: option
mapping:
- dps_val: "0"
value: "Off"
- dps_val: "1"
value: Full
- dps_val: "2"
value: Upper
- dps_val: "3"
value: Lower
- entity: select
name: Vertical position
category: config
icon: "mdi:unfold-more-horizontal"
dps:
- id: 126
type: string
name: option
mapping:
- dps_val: "0"
value: Unknown
- dps_val: "1"
value: Top
- dps_val: "2"
value: Slightly Up
- dps_val: "3"
value: Middle
- dps_val: "4"
value: Slightly Down
- dps_val: "5"
value: Bottom
- entity: select
name: Horizontal swing
category: config
icon: "mdi:arrow-left-right-bold"
dps:
- id: 114
type: string
name: option
mapping:
- dps_val: "0"
value: "Off"
- dps_val: "1"
value: Full
- dps_val: "2"
value: Left
- dps_val: "3"
value: Center
- dps_val: "4"
value: Right
- entity: select
name: Horizontal position
category: config
icon: "mdi:unfold-more-vertical"
dps:
- id: 127
type: string
name: option
mapping:
- dps_val: "0"
value: Unknown
- dps_val: "1"
value: Leftmost
- dps_val: "2"
value: Slight Left
- dps_val: "3"
value: Center
- dps_val: "4"
value: Slight Right
- dps_val: "5"
value: Rightmost
- entity: select
name: Sleep mode
category: config
icon: "mdi:weather-night"
dps:
- id: 105
type: string
name: option
mapping:
- dps_val: "off"
value: "Off"
- dps_val: "normal"
value: Standard
- dps_val: "old"
value: "Elderly"
- dps_val: "child"
value: "Child"
- entity: sensor
class: power
category: diagnostic
name: Power
dps:
- id: 116
optional: true
type: integer
name: sensor
unit: "W"
class: measurement
mapping:
- scale: 30
- entity: sensor
class: power
category: diagnostic
name: unk_119
dps:
- id: 119
optional: true
type: integer
name: sensor
unit: "W"
class: measurement
- entity: sensor
category: diagnostic
name: unk_120
dps:
- id: 120
optional: true
type: string
name: sensor
- entity: sensor
category: diagnostic
name: unk_128
dps:
- id: 128
optional: true
type: string
name: sensor
- entity: sensor
category: diagnostic
name: unk_129
dps:
- id: 129
optional: true
type: string
name: sensor
- entity: sensor
category: diagnostic
name: unk_130
dps:
- id: 130
optional: true
type: integer
name: sensor
- entity: sensor
category: diagnostic
name: unk_131
dps:
- id: 131
optional: true
type: boolean
name: sensor
- entity: sensor
category: diagnostic
name: unk_132
dps:
- id: 132
optional: true
type: boolean
name: sensor
- entity: sensor
category: diagnostic
name: unk_133
dps:
- id: 133
optional: true
type: string
name: sensor
- entity: sensor
category: diagnostic
name: unk_134
dps:
- id: 134
optional: true
type: string
name: sensor
- entity: switch
name: Display
category: config
icon: "mdi:lightbulb-on-outline"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "0008"
- entity: switch
name: Buzzer
category: config
icon: "mdi:access-point"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "0010"
- entity: switch
name: Soft wind
category: config
icon: "mdi:weather-windy"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "8000"
- entity: switch
name: Anti-mildew
category: config
icon: "mdi:water-off-outline"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "0100"
- entity: switch
name: Health
category: config
icon: "mdi:heart-outline"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "0020"
- entity: switch
name: Anti-freeze
category: config
icon: "mdi:radiator"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "1000"
- entity: switch
name: Eco mode
category: config
icon: "mdi:leaf"
dps:
- id: 123
type: hex
name: switch
mapping:
- scale: 1
mask: "0001"
You can save this as pioneer_mini_split.yaml
in config\custom_components\tuya_local\devices
and restart HA. Then you can delete and re-add the device in in the tuya_local
integration and it should come up as an option in the Choose the type of device
menu.
The device looks like this:
And the lovelace thermostat card looks like:
and
Trying to learn all of this myself and I just realized how recent this information is. Figured I’d throw in what I found in case someone can figure out how to integrate it in (if needed) faster than I can figure it out. I don’t understand the value mapping to tuya but poking around I have a few guesses for some of these values.
It seems to me that unk_134 is the start time/power on time for the device, in unix time (t part is, at least, unsure what “s” and “clr” are for)
I’m guessing Unk_120 is filter dirty status, but I suppose I’ll have to wait until the filter is dirty to confirm this. It did show filter dirty for me as soon as I setup the app but was unflagged by the time I got it added to HA.
There is an elapsed time that is always 1 - maybe Unk_129?
Some of the unmapped “0” values for mine are Error Code and PM2.5. Unsure how to test this/if it works.
Also have an air quality report in tuya, that shows “good”, don’t see mapped in HA, but possibly doesn’t work anyway.
Two battery values that I don’t see mapped in this, but show in tuya. values 225 for one and 250-15000 for the other. Useless since there is no battery, I’m assuming, maybe an internal voltage monitor, not sure who that would help.
Anyway, sorry if this information doesn’t contribute. Was trying to get this info incorporated into the yaml above but alot of this is over my head so far. Thanks for everyone’s help getting me this far.
Can you share more details on what you did? I have two of these - I took one all the way apart to get the controller installed after not being able to figure out how to do it without taking the entire thing apart. the second controller has been sitting in front of the second unit mocking me because I’d already installed it and haven’t wanted to tear it down while it’s on the wall… would LOVE to not have to do that.
Can you still drop a .yaml in the devices folder? I’ve tried but can’t seem to get Local Tuya to recognise a device when adding my WYT’s as a new device.
config\custom_components\tuya_local\devices
I’ve noticed that my tuya local directory is named tuyalocal & not tuya_local, maybe something to do with it.
Thanks!
Hey all. I am new here.
I found this place because I am currently reverse engineering the serial protocol of the Pioneer WYT mini-split. My unit uses the TCWBRCU1 dongle and can be controlled with the Tuya Smart app.
I do not have Home Assistant so I am only working on the raw serial commands.
I see that some others here have been working on this but I haven’t seen any of their progress.
I wonder if I am just doing work that someone else has already finished…?
Can anyone bring me up to date?
Update: I have this completely working. As I said before, I don’t actually use Home Assistant, so it’s up to someone else to make an integration.
There’s still portions of the message I don’t understand. At some point soon I’ll try to write up what I know about this, but for now, here’s a message generator and message parser in Python that appear to work:
Good work, I’m about to purchase and install a WYT unit so I may be able to help bridge the gap between creating/testing an integration.
Can you please confirm if there are any issues or inconstancies with your library currently. I saw some notes about not understanding successful command response and some uncertainty about delay tining
For example do any commands seem to have no effect or require multiple issues to trigger? Is there any delay currently?
Also can you please specify which functions are confirmed working? It looked to me like your library indicated that there was swing control, temperature, current mode, etc. But how does the protocol report changes made from the remote? Does one have to poll the mini split itself? Or does any command received by the IR remote report over UART?
Thanks again, library looks good.
Now that the Tuya local add-on can no longer be configured by the .yaml file, what is the best way to configure a Pioneer WYT in Tuya local?
+1 I am also wondering this.
@DallasJW and @wkelley70 just spent some time trying to figure this out. I went down the wrong albeit educational path because I started with the localtuya integration. You actually want the tuya-local integration to get backcountrymountains’s config working: GitHub - make-all/tuya-local: Local support for Tuya devices in Home Assistant
That was it; thanks! Its working now! Confusing; i never would have noticed the difference between tuya-local and local-tuya.
My Tuya cloud subscription expired and I would get an error when trying to poll the device values that it had expired. Hit the button and filled out the form to request an extension and it worked (no email received, but I had permission again).
To continue, I’ve also been working for quite a while on reverse engineering the serial protocol between the WYT dongle and the Pioneer unit. Just stumbled on this thread, which motivated me to clean up my notes a bit and put them somewhere. See GitHub - squidpickles/tuya-serial: Reverse engineering notes on serial protocol between Tuya WiFi dongle and Pioneer WYT mini-split for yet another take on the protocol.
Guess it’s time to come back to this and get it going
I’d love if we could have proper local control that doesn’t rely on Tuya.