Skip to content

About

Home Assistant custom integration for ParkAir air conditioners via ZHA TS1201 IR blasters

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ParkAir for Home Assistant

ParkAir is a custom Home Assistant integration that provides a native climate entity for the reverse-engineered ParkAir air conditioner. It dynamically generates TCL112 infrared commands and sends them through a Tuya TS1201 IR blaster paired with Home Assistant's built-in ZHA integration. MQTT and Zigbee2MQTT are not required.

Since version 2.1.2, the package includes local icon and logo assets in the brand/ directory. Home Assistant 2026.3 and newer display these assets automatically.

Since version 2.2.0, the repository includes hacs.json and automated HACS and Hassfest validation workflows, making it ready for installation through HACS.

Features

  • power on and off;
  • Cool, Dry, and Fan only HVAC modes;
  • target temperature from 16 to 31 °C in 0.5 °C increments;
  • Auto, Low, and High fan speeds;
  • vertical swing off, automatic, or fixed at 90°, 85°, 45°, 25°, or 0°;
  • restoration of the last known state after a Home Assistant restart.

The entity uses optimistic state tracking. A physical remote can change the air conditioner without Home Assistant being aware of the change.

Power-off uses a complete TCL112 packet with the Power bit cleared while preserving the last mode, temperature, fan speed, and swing position. The original 28-bit short command is retained in the protocol module for reference but is not used by the entity.

Requirements

  • Home Assistant 2026.3.0 or newer;
  • a Tuya TS1201 IR blaster paired with ZHA;
  • the ZHA TS1201 quirk must be active for the selected device.

Installation

HACS

  1. Open HACS → ⋮ → Custom repositories.
  2. Add https://github.com/lukefx/parkair-ir-climate with the category Integration.
  3. Find and install ParkAir, then restart Home Assistant.
  4. Pair the Tuya TS1201 blaster with ZHA.
  5. Open Settings → Devices & services → Add integration, search for ParkAir, and select the TS1201 device.

Manual installation

  1. Pair the Tuya TS1201 blaster from Settings → Devices & services → ZHA → Add device. Its device page must report the model as TS1201.
  2. Copy custom_components/parkair_ir_climate into Home Assistant's /config/custom_components/ directory.
  3. Restart Home Assistant.
  4. Open Settings → Devices & services → Add integration.
  5. Search for ParkAir and select the TS1201 blaster from the ZHA device list.

Home Assistant creates an entity similar to climate.parkair_air_conditioner, compatible with the standard Thermostat card.

When upgrading from the former MQTT version, replace all integration files and restart Home Assistant. Migration is automatic when exactly one TS1201 exists in ZHA. If ZHA contains no TS1201 or more than one, remove the old ParkAir configuration entry and add it again, selecting the correct device.

How commands are sent

The entity calls zha.issue_zigbee_cluster_command locally using endpoint 1, cluster 0xE004, and server command 0x02 (IRSend). The TS1201 quirk bundled with ZHA handles the required exchange with the blaster.

Action examples

Cool mode at 26 °C:

action: climate.set_temperature
target:
  entity_id: climate.parkair_air_conditioner
data:
  hvac_mode: cool
  temperature: 26

Fan-only mode:

action: climate.set_hvac_mode
target:
  entity_id: climate.parkair_air_conditioner
data:
  hvac_mode: fan_only

Dry mode:

action: climate.set_hvac_mode
target:
  entity_id: climate.parkair_air_conditioner
data:
  hvac_mode: dry

Low fan speed:

action: climate.set_fan_mode
target:
  entity_id: climate.parkair_air_conditioner
data:
  fan_mode: low

Automatic swing:

action: climate.set_swing_mode
target:
  entity_id: climate.parkair_air_conditioner
data:
  swing_mode: auto

Fixed 45° vertical position:

action: climate.set_swing_mode
target:
  entity_id: climate.parkair_air_conditioner
data:
  swing_mode: "45°"

Power off:

action: climate.turn_off
target:
  entity_id: climate.parkair_air_conditioner

Protocol

Long messages use the TCL112 protocol: 14 bytes transmitted least-significant bit first. The checksum is the sum of bytes 0 through 12 modulo 256. Timings and the original short power-off command were derived from captured remote-control samples. Pulse timings are compressed with FastLZ and Base64-encoded in the format accepted by Tuya IR blasters.

Byte 6 stores the HVAC mode (2 dry, 3 cool, 7 fan-only). In byte 8, the three least-significant bits store fan speed (0 auto, 2 low, 5 high), and the next three bits store vertical swing (0 off, 1 90°, 2 85°, 3 45°, 4 25°, 5 0°, 7 automatic).

License

ParkAir is licensed under the Apache License 2.0.

About

Home Assistant custom integration for ParkAir air conditioners via ZHA TS1201 IR blasters

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages