My HA Tuya Pioneer setup has been working fine for a couple of weeks. Today I noticed it wasn’t working at all (the pioneer was working–the HA integration was not). I went into the devices folder and sure enough, the pioneer file was gone. I did happen to notice in the last couple of days I did get a tuya update. Any chance that update deleted the pioneer file? Anyway, I recreated the pioneer file and restarted HA; everything is working now.
In HA, go to Settings > Devices and Services > (Integrations Tab, should already be selected) > Tuya Local > Configure. You’ll see the option for polling there.
Thank you.
I am however I’m using the slwf-01pro
So I’m hoping to just use Esphome.
This will be a Tuya question for sure, but hopefully someone here can answer it. I created the yaml file that @backcountrymountains posted, but it seems that whenever Tuya updates, the file gets lost. Is there a way to keep it from getting deleted? Or a more permanent way to install this integration?
Pioneer sent me a replacement unit under warranty which is the WYT instead of the Midea manufactured WYS I was using. I used this component along with a JST connector instead of the USB on the same ESP32 development board I was already using. Arranged the wiring as described and it seems to work great. Easy peasy. Thanks for this awesome integration!
Just wanted to add some info about IR follow-me mode now that I’ve played around with this some more.
I can’t get it to work with this component, which tracks what’s written in the readme
The IR protocol as used by the
remote has been fully decoded, but I’m not certain the feature is activated in the unit.
Even with the original remote it seems to have no real effect. The temp indicated doesn’t
change what’s shown in the pioneer app and the unit doesn’t react aside from a beep
acknowledging the IR command was received.
I can confirm that it receives the signal if I enable the beeper but no state change is shown.
What I can confirm is how it works with the factory IR remote.
Indoor room temp is 72F, matching the current state reported by the unit based on it’s internal sensor.
Placed the remote in a warm location and got it up to about 82F, then turned on iFeel and the state reported by the unit immediately changed to 82F. Fan speed automatically ramped up (in auto mode) and it changed from “idle” to cooling.
So yes the feature definitely makes a difference.
I’m suspecting that the iFeel command being sent by this component s incorrect somehow. Hopefully it’s something that we can eventually figure out.
Hello there,
do you mind sharing your configuration?
I can’t seem to get mind to work properly. (see above)
Any help would be greatly appreciated.
Thanks
Here is my config. It is really just the example from mikesmitty’s github.
Make sure your secrets file has your SSID and Password
esphome:
name: pioneerwyt-ac
friendly_name: PioneerWYT_AC
esp8266:
board: esp12e
external_components:
- source: github://mikesmitty/esphome-components@main
components: [ pioneer, remote_base ]
climate:
- platform: pioneer
name: My Heatpump
beeper: false # Feedback beep when commands are sent
display: true # Show temperature on the LED display
# Optional sensors
defrost_status:
name: Defrosting
indoor_fan_speed:
name: Indoor Fan Speed
outdoor_fan_speed:
name: Outdoor Fan Speed
outdoor_temperature:
name: Outdoor Temperature
power_usage:
name: Power Usage
uart:
tx_pin: 12 # Hardware-dependent
rx_pin: 14 # Hardware-dependent
baud_rate: 9600
parity: EVEN
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Pioneerwyt-Ac"
captive_portal:
I used the SLWF-01pro (v.2.1) dongle and simple re-pinned the cable that connects the dongle to the Pioneer’s control board so that it matched standard USB type A.
Sigh.
The seems to be the same as what I have…
I’m not sure why I keep getting:
“uart:015]
Reading from UART timed out at byte 0!
22:52:45 [E] [pioneer.climate:108]
Status query timed out”
I am able to send commands to the unit via home assistant; I get a beep and the commands don’t stick they just keep reverting to 61 degrees…
Do I have a faulty SLWF?
Any help would be greatly appreciated…
Thanks
Here is my setup.
I used the USB cable that came with the Pioneer. I re-pinned it as shown in this picture.
(white-TX),
(green-Rx),
(black-GND),
(red-5V)
The PCB actually shows what the pins are.
Once it was pinned correctly. I just plugged in the dongle.
If you had the pin-out wrong when you plugged it in, it may have damaged the dongle or the control board…, or both.
I think you can test the SLWF-01pro dongle with a Rx/Tx loopback test.
Can you test that the control board is ok by using the Tuya dongle and the phone app? (make sure to put the pin-out back to factory.!!!)
Here is the original and modified pinout in case you didn’t record it.
Thank you for your help.
So after fiddling around (to make sure I had the proper connection), and updating the esphome firmware, it seems to be working!
Fingers crossed that this “solve” sticks.
Thanks!
So I’m not sure why but this didn’t stick again and I’m back to erratic behavior. I can send commands to the unit via wifi but it doesn’t stick. Generally shuts the unit off, but if I send another command quickly it will pick it up…
If I damaged the devices am I toast or can this be repaired?
I don’t know how to do a loop back test so I bought another dongle… same thing…
| 15:03:41 | [E] | [pioneer.climate:108] | Status query timed out |
|---|---|---|---|
| 15:03:43 | [E] | [uart:015] | Reading from UART timed out at byte 0! |
How can I do a loopback test?
Thanks for your help.
Edit:
Added the debug line as instructed on the ESPHome website and I get this output while connected to the unit but have no idea what it means. Does this reveal anything?
[15:48:33.607][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:33.739][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:35.608][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:35.736][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:37.611][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:37.736][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:39.616][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:39.756][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:41.618][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:41.755][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:43.615][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
[15:48:43.756][D][uart_debug:158]: <<< "\xBB\x01\x00\x047\x04\x005\x85\x00\x80\x00\x00\x00\x00\x00\x00i#\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\xFFB\x00U!\")\x00\x00\x80\x00\x00\x00\x00r\x00\x00\x00D@\x00\x00\x00\x00\x1A\x00\x00\x00\x00\xBA"
[15:48:45.643][D][uart_debug:158]: >>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"
Just a heads up, the current version of the pioneer multi-zone head units (WT024GLSI24HLG) changed the pinout of the usb connector in particularly horrible way. According the to markings on the circuit board and connectivity tests on the connector wire:
head unit +5V → usb GND
head unit GND → usb D+
head unit RX → usb +5V
head unit TX → usb D-
This is particularly annoying because common usb breakout boards tie usb GND to the connector shield…which effectively creates a short circuit ![]()
Edit:
Looks like my pinout matches the one from @badfrogg:
Pioneer WYT mini split wifi integration - #73 by badfrogg
Where can we buy the flashed dongles?
@igorbernstein did you get this working? I have a Pioneer Quantum head unit (WT009GLSI24HLG, hopefully identical to yours except for BTU) that’s part of a multizone system, a re-pinned USB connector, and a SLWF-01pro 2.1 flashed with a configuration like the one @badfrogg posted. I’ve added a debug stanza to the UART section, but all I’m getting back from the unit is gibberish that doesn’t look like valid serial data (unlike what @Refuge posted in his debug output, which starts with the expected 0xBB). I’m about to start experimenting with different baud settings, but I’m doubtful that’ll be productive.
This is an example of my serial traffic:
|14:14:24|[D]|[uart_debug:157]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
|14:14:26|[E]|[uart:014]|Reading from UART timed out at byte 33!|
|14:14:26|[E]|[pioneer.climate:163]|Status query timed out|
|14:14:26|[D]|[uart_debug:157]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
|14:14:28|[D]|[uart_debug:157]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
|14:14:28|[W]|[pioneer.climate:062]|Invalid response header: 0x40|
|14:14:28|[E]|[pioneer.climate:163]|Status query timed out|
|14:14:28|[D]|[uart_debug:157]|<<< "@Q\x00\x12\x00\xE1\x000\x0089\x00\x01\x00\xFE \x10\b\xFC\x80\xB0\x12\xEF\xD4\xF9\x801\x10!B\x00@\xF1@Q\x00\x12\x00\xE1\xC00\x0089\x00\x01\x00\xFE\xE0\x10\b\xFC\x00\xB0\x80\x1594)Y\xFF\x001\x10!B\x00@\xF1"|
|14:14:30|[E]|[uart:014]|Reading from UART timed out at byte 6!|
Because the response looks so garbled, I doubt either direction is working properly.
So it’s weird because I was really careful with the wiring so I’m pretty confident my wiring is fine.
Ever since I added debug in my yaml it seems to be working fine (aside Fromm the constant error messages in the logs). Also occasionally the commands don’t stick when sent, so I just send again and I generally works.
So I’ll just keep rolling along like this… seems ok…
Are you able to share a sanitized version of your yaml for the dongle? I cannot get my SLWF-01pro to work. Thanks
here is what I am using:
substitutions:
# device_name: SLWF-01pro
friendly_name: Studio AC
esphome:
name: esphome-web-5fa6bd
friendly_name: Studio AC
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "redacted"
ota:
- platform: esphome
password: "redacted"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Studio-Ac Fallback Hotspot"
password: "redacted"
captive_portal:
uart:
tx_pin: 12 # should be 12
rx_pin: 14 # should be 14
baud_rate: 9600
parity: EVEN
debug:
direction: BOTH
dummy_receiver: false
after:
delimiter: "\n"
sequence:
- lambda: UARTDebug::log_string(direction, bytes);
external_components:
- source: github://mikesmitty/esphome-components@main
components: [ pioneer, remote_base ]
climate:
- platform: pioneer
name: Studio AC
beeper: true # Feedback beep when commands are sent
display: true # Show temperature on the LED display
# Optional sensors
defrost_status:
name: Defrosting
indoor_fan_speed:
name: Indoor Fan Speed
outdoor_fan_speed:
name: Outdoor Fan Speed
outdoor_temperature:
name: Outdoor Temperature
power_usage:
name: Power Usage
# Sensor from HASS for setting up FollowMe temperature
#remote_transmitter:
# pin: GPIO13 # For slwf-01pro-v2 dongle
# carrier_duty_percent: 50% # 50% for IR LED, 100% for direct connect to TSOP IR receiver output.
sensor:
# - platform: homeassistant
# entity_id: ${follow_me_sensor}
# id: follow_me_sensor
# filters:
# - throttle: 10s
# - heartbeat: 2min
# - debounce: 1s
# on_value:
# midea_ac.follow_me:
# temperature: !lambda "return x;"
# beeper: false
- platform: wifi_signal
name: ${friendly_name} Wi-Fi Signal
update_interval: 60s
- platform: uptime
name: "Uptime"
id: uptime_sec
internal: true
- platform: template
name: ${friendly_name} Uptime Days
lambda: |-
return (id(uptime_sec).state/60)/60/24;
icon: mdi:clock-start
unit_of_measurement: days
update_interval: 60s
# - platform: ...
# id: my_remote_temp_sensor
# on_value:
# then:
# - pioneer_wyt.remote_temp:
# # Requires conversion from fahrenheit to celsius (if needed) at the moment
# temperature: !lambda "return fahrenheit_to_celsius(x);"
# # beeper: false
# "Power toggle" script
#script:
# - id: on_button_click
# then:
# midea_ac.power_toggle:
web_server:
port: 80
@sowbug did you have any luck getting yours working? your output is similar to mine. I have a quantum wall mount unit (WT012GLSI25HLH). Re-pinned using an extender and a SLWF-01pro. Flashed with a config like @Refuge posted.
serial traffic examples:
|14:36:30|[D]|[uart_debug:158]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
| --- | --- | --- | --- |
|14:36:31|[D]|[uart_debug:158]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
|14:36:31|[W]|[pioneer.climate:062]|Invalid response header: 0x40|
|14:36:31|[E]|[pioneer.climate:163]|Status query timed out|
|14:36:31|[D]|[uart_debug:158]|<<< "@\x00\x8A\xE3\x01 \x10\x00\x10\xFC\x00\xB8\x00\xB8@\bH\xA1\x00\xF8@\xF8@0RH \xFE\x00\x00\x8A\xE3\x01 \x10\x00\x10\xFC\x00\xB8\x00\xB8\x00\bH\xA1\x00\xF8@\xF8@0RH \xFE\x00\x00\x8A\xE3\x01 \x10@\x10\xFC@\xB8@\xB8@\bH\xA1\x00\xF8"|
|14:36:33|[E]|[uart:015]|Reading from UART timed out at byte 2!|
|14:36:34|[E]|[pioneer.climate:163]|Status query timed out|
|14:36:41|[D]|[uart_debug:158]|>>> "\xBB\x00\x01\x04\x02\x01\x00\xBD"|
| --- | --- | --- | --- |
|14:36:41|[W]|[pioneer.climate:062]|Invalid response header: 0x40|
|14:36:41|[E]|[pioneer.climate:163]|Status query timed out|
|14:36:42|[D]|[uart_debug:158]|<<< "@\xF8@0RH \xFE\x00\x00\x8A\xE3\x01 \x10\x00\x10\xFC@\xB8\x00\xB8\x00\bH\xA1\x00\xF8@\xF8@\x000RH \xFE\x00\x00\x8A\xE3\x01 \x10@\x10\xFC\x00\xB8\x00\xB8@\bH\xA1\x00\xF8@\xF8\x000RH \xFE\x00\x00\x8A\xE3\x01 \x10\x00\x10\xFC@\xB8@\xB8@\bH\xA1\x00\xF8"|
|14:36:43|[E]|[uart:015]|Reading from UART timed out at byte 2!|
|14:36:44|[E]|[pioneer.climate:163]|Status query timed out|
Nope, I gave up. It got really cold here, and I was worried about breaking the mini-splits and losing my last shred of DIY credibility that I have with my family. If I were really determined to figure this out, I’d add an inline logic probe and get an independent view of the traffic. It’s good to hear I wasn’t the only one with the problem, though I’m sorry it’s happening to you, too. It almost makes me wonder whether Pioneer is changing the protocol or even voltages without changing the model; otherwise, how would Refuge’s be working at all?
Good luck and please update us if you learn anything.


