Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Panavox PSS-12 INV Core — Arduino & ESP32 Driver Library

A hardware-agnostic C++ driver library for controlling the Panavox PSS-12 INV split inverter air conditioner via its W950 WiFi module UART connector.

What it does

This library handles the full serial protocol between a microcontroller and the AC indoor unit:

  • Builds and sends command frames (power, mode, temperature, fan speed, swing, presets)
  • Sends periodic status requests and parses the 150-byte status response frames
  • Exposes decoded state via a callback (onStatusUpdate) and a clean DeviceStatus struct
  • Manages the TX state machine (queueing, inter-message gaps, ACK handling)

The library takes a Stream& reference, making it compatible with any Arduino-based platform (ESP32, ESP8266, etc.) or any environment that provides a Stream interface.

Hardware

Connect to the indoor unit's W950 WiFi module connector via UART at 9600 baud, 8N1.

Note: the W950 connector TX/RX lines may require signal inversion depending on your hardware. On the reference ESP32-S3 implementation, GPIO TX uses software+hardware inversion (net: normal) and GPIO RX uses hardware inversion via a 2N2222 transistor.

Usage (PlatformIO)

Add to your platformio.ini:

lib_deps =
    panavox-core=https://github.com/The-sultan/Panavox-PSS12-INV-Core.git

Basic example:

#include <PanavoxAC.h>

PanavoxAC ac(Serial1);

void setup() {
    Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
    ac.onStatusUpdate([](const DeviceStatus& s) {
        // s.power, s.mode, s.target_temp_c, s.current_temp_c, etc.
    });
    ac.begin();
}

void loop() {
    ac.loop();
}

Pinning to a stable version

By default the example above tracks the latest commit on main. To pin to a specific release instead, append a version tag:

lib_deps =
    panavox-core=https://github.com/The-sultan/Panavox-PSS12-INV-Core.git#v1.0.0

See the Releases page for available versions.

ESPHome

This library is used as the protocol core by the Panavox PSS-12 INV ESPHome component, which exposes a full climate entity in Home Assistant.

Protocol

The serial protocol is documented in docs/Panavox_PSS-12_INV_Protocol_Specification.docx.pdf.

Note for porters: The Panavox PSS-12 INV sends a 150-byte status response frame (LEN_STATUS_RSP = 0x8D). This differs from the 62-byte Device_Status struct used in the original esphome_airconintl codebase, which also caps its UART buffer at 128 bytes — too small to receive a valid frame from this unit. If adapting this library for another unit, verify the actual response frame size on your hardware before assuming compatibility.

This is not an official manufacturer document. It was reverse-engineered by analysing the source code of the open-source ESPHome component for Hisense/Aircon International compatible units:

https://github.com/pslawinski/esphome_airconintl

The protocol used by the Panavox PSS-12 INV via its W950 WiFi module connector appears to be compatible with that family of units. The specification was further refined through empirical testing on a physical unit, correcting several inaccuracies found in the original codebase and documenting behaviors not previously described.

License

MIT

About

PlatformIO driver library for the Panavox PSS-12 INV split inverter AC via W950 UART serial interface

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages