Air Conditioner Panavox PSS-12 INV (Uruguay brand)

Panavox PSS-12 INV — ESPHome Component for Home Assistant

Hi everyone! I’ve been reverse-engineering the serial protocol of the Panavox PSS-12 INV split inverter AC and built a fully local ESPHome integration for Home Assistant.

What it does

Exposes a full climate entity in Home Assistant with:

  • Power on/off
  • Modes: Cool, Heat, Dry, Fan Only
  • Target temperature (16–32°C)
  • Fan speeds: Auto, Quiet, Low, Medium, High
  • Swing: Off, Vertical, Horizontal, Both
  • Presets: Boost (Turbo), Eco
  • Optional diagnostic sensors: compressor frequency, outdoor temperature, indoor humidity

Compatibility

The Panavox PSS-12 INV uses a serial protocol compatible with the Hisense/Aircon International (F4F5) family. This component may also work with other brands sharing the same W950 WiFi module UART interface.

Hardware

Connect an ESP32 to the indoor unit’s W950 connector via UART at 9600 baud. Note: TX/RX lines may require signal inversion depending on your wiring — on my ESP32-S3 implementation I used a 2N2222 transistor inverter on RX.

Usage

external_components:
  - source: github://The-sultan/Panavox-PSS12-INV-ESPHome
    refresh: 0s
    components: [ panavox_ac ]

uart:
  id: ac_uart
  baud_rate: 9600
  parity: NONE
  tx_pin:
    number: 16
    inverted: true
  rx_pin:
    number: 17

climate:
  - platform: panavox_ac
    name: "Panavox AC"
    uart_id: ac_uart

Repositories

The protocol was reverse-engineered from the open-source esphome_airconintl component and refined through empirical testing on a physical unit. Happy to answer questions!

Hi @The-sultan! Amazing work — I have exactly the same unit (Panavox PSS-12
INV in Uruguay) and I'm planning to follow your ESPHome integration.

Quick question about the physical W950 connector before I order parts:

I opened my indoor unit and found a free 4-pin connector with a red retention
clip on a flat ribbon cable, currently unused (photo attached). Visually it
looks identical to the connector on the official Hisense AEH-W4G2 WiFi module.

Could you confirm:

  1. Is this connector the W950 UART port you're using? Or is it something else
    (display/IR receiver cable)?

  2. What's the exact connector type/part number? (JST XH, Molex Micro-Fit, or
    something proprietary?)

  3. What's the pinout order? (which pin is VCC / GND / TX / RX?)

  4. Did you source a compatible mating connector somewhere, or did you cut and
    splice an official AEH-W4G2 cable?

Thanks a lot for sharing this — it's exactly what I was looking for.

Hi Eltin,
I'm 99% sure that is the same terminal I've used. I didn't buy a specific terminal to connect it, nor did I cut and splice (would hate to do that to the original connector). What I did was to use four male dupont cables that fit perfectly on the terminal and make a good connection.
As for which is which: you will see the cables colors: Red VCC (5v), Yellow is RX (going to your ESP's TX), White is TX (going to your ESP's RX) and finally black is GND. If you want to check, please use the multimeter and measure DC voltage using the black cable as GND. What I've got with my measures was the following:

Red: 5v
White: 4.8v
Yellow: 0v

Glad you're going to use this. Please remember that the AC unit sends the information inverted so you have to either invert it using hardware or configure the UART pin to "inverted: true" to achieve the same through software. Let me know if there's any other questions I can answer.
Regards,

Farid.

Hi Farid!

Thank you SO much for the detailed answer, you just saved me hours of guesswork

Quick follow-up questions if you have the time:

  1. Schematic / wiring diagram: Do you happen to have a circuit
    diagram (even a hand-drawn sketch or photo) of your level shifter setup?
    The PDF mentions "2x 2N2222 transistors + pull-up resistors" but doesn't
    specify the exact values. I'd love to replicate your exact design
    instead of guessing — I'm planning to do all 4AC units in my house
    with this.

  2. Software inversion alternative: You mentioned that inverted: true
    in the UART config can replace one of the hardware inverters. Did you
    ever try running with just ONE 2N2222 (only for the level shifting,
    without the inversion) plus software inverted RX? It would simplify the
    build a lot if that works.

  3. Resistor values: If you remember, what values did you use for the
    base resistor and the pull-up resistor in the 2N2222 circuit? (10kΩ +
    1kΩ? 10kΩ + 10kΩ? something else?)

By the way — also Uruguayan here (Eltin from Montevideo). It's awesome
to find someone local sharing this kind of work openly. The Panavox
units are everywhere in Uruguay and your project is literally the only
real solution. I'll make sure to credit you properly when I document my
build, and if I find any improvements during my 4-unit deployment
I'll send them upstream.

Once again, mil gracias por compartir. Saludos!
Eltin

Hi Eltin,

Glad the previous answer was useful! Answers to your follow-ups below.

1. Schematic / wiring diagram

Attached is the full level shifter schematic for the 2N2222 setup. Two channels (one per direction) — the AC runs UART at 5V and the ESP at 3.3V, so we need to shift voltages in both directions.

2. Resistor values (with the asymmetry rationale)

  • Channel RX (AC → ESP): R1 = R2 = 4.7 kΩ. High impedance is fine here because the receiving end is the ESP's GPIO, which has very high input impedance.
  • Channel TX (ESP → AC): R3 = 1 kΩ, R4 = 220 Ω. Lower impedance on purpose — we want fast clean edges into the AC's MCU to ensure reliable UART framing at 9600 baud. The 220 Ω pull-up sources enough current to overcome cable capacitance.

The asymmetry is intentional, not a typo.

3. Single 2N2222 + software inverted?

Short answer: you can't collapse the design to one transistor. You still need voltage level shifting in both directions (5V→3.3V for RX, 3.3V→5V for TX), and a single 2N2222 only handles one direction.

About the inverted: true flag: the 2N2222 in this circuit is doing voltage shifting, but as a side effect of how it's wired (common-emitter), it also inverts the signal. The inverted flag in the UART config exists to compensate for that side effect — it's not the level shifter's job, it's a software correction for an unavoidable behavior of this specific transistor topology.

One nice thing I confirmed during recent testing: the Panavox AC actually accepts UART in either polarity. So with the schematic I attached, you can use either of these two YAML configurations and both work equally well:

  • Option A: tx_pin.inverted: true, rx_pin.inverted: false (the README default)
  • Option B: tx_pin.inverted: false, rx_pin.inverted: true

Don't try to use both true or both false — those won't work. But either of the two combinations above is fine.

Auto-polarity detection (new feature)

The component now includes a runtime diagnostic that detects polarity mismatches actively, not by absence of response. When the UART polarity is misconfigured, the AC's response still reaches the ESP — it just gets mis-decoded into a specific byte pattern (a deterministic side effect of the UART hardware reading inverted signals as standard). The component scans incoming buffers for that signature, and when it finds it, it knows with certainty that the AC is alive and responding, only the polarity is wrong. It then logs a clear warning telling you to toggle the inverted flag on your rx_pin. This means you get a precise diagnosis ("polarity is wrong, here's how to fix it") instead of a generic "no response" timeout that could mean a dozen things. Pull the latest from main before building.

For your 4-unit deployment

Build one end-to-end first and confirm it works before replicating. Once one is solid, the other three are just mechanical work. Since the W950 connector and the F4F5 protocol appear consistent across the Panavox lineup, all four units should work with identical configuration.

Bonus por ser uruguayo también: si documentás tu build, pasame el link y lo enlazo desde el README. Cualquier mejora upstream es bienvenida, especialmente si alguna de tus 4 unidades tiene variantes.

Saludos, Farid.