Skip to main content

CoolAutomation CoolMaster

Local TCP integration for the CoolAutomation CoolMaster family — CoolMasterNet and the larger CoolMaster Pro. These boxes are universal VRF/VRV-to-IP gateways: they sit on a manufacturer's indoor-unit bus (Daikin, Samsung, Mitsubishi Electric/Heavy, Toshiba, Hitachi, LG, Panasonic, and more) and expose every indoor unit over a single ASCII "line" protocol on TCP 10102.

One CoolMaster becomes one GEM device row; each indoor air handler becomes a climate zone addressed by its CoolMaster UID (for example L7.400 — line 7, address 400).

What this integration covers

  • Power — on / off per indoor unit.
  • Mode — cool, heat, auto, dry, fan (mapped to GEM system_mode; off powers the unit down).
  • Setpoint — single target temperature per unit, reported and set in °F.
  • Fan speed — low, medium, high, very_strong (CoolMaster "Top"/turbo), auto.
  • Swing — auto / vertical / horizontal / off, where the indoor unit supports it.
  • Status polling of on/off state, mode, room temperature, setpoint, fan speed, the unit fault code, and the active heating/cooling demand flag.
  • Auto-discovery — the driver enumerates indoor units with ls and (by default) creates a climate zone per unit.

What this integration does NOT cover (yet)

  • Push updates. The CoolMaster line protocol is strictly request/response with no unsolicited event stream, so a change made at a wall controller appears at the next poll (within poll_interval), not instantly.
  • Dual heat/cool setpoints. A CoolMaster indoor unit has a single setpoint; the setpoint command accepts a mode argument for climate-UI compatibility but always applies that one setpoint.
  • Line / DIP configuration. Assigning an HVAC line to a manufacturer (Daikin, Samsung, …) is done on the box — by DIP switches for lines L1/L2 and on-device for L3–L8. The driver consumes whatever lines are already configured.
  • PRO-only object data (ostat/istat outdoor and indoor "PRO" telemetry), filter-life resets, group management, and the box's other gateway roles (Modbus, BACnet, KNX, REST). The driver speaks only the indoor-unit control surface.

Prerequisites

  • A CoolMaster reachable from the GEM host on TCP 10102 (the "ASCII server" / aserver port). Confirm it is enabled on the box.
  • HVAC lines already configured on the CoolMaster with indoor units detected (verify with ls / line on the device console).

Setup steps

  1. In GEM, go to System → Devices → Add Device (Open Devices) and pick CoolAutomation CoolMaster as the driver.
  2. Enter the device ip and port (default 10102).
  3. Save. After a few seconds the device row should show Connected — the driver reads the box's °C/°F setting and identity, then polls ls.
  4. Run the discover command to list the indoor units the CoolMaster currently reports (UID, mode, setpoint, temperature).
  5. Leave auto_create_zones on (the default) to have a climate zone created per indoor unit, or set it off and create zones by hand with address = the CoolMaster UID (e.g. L7.400).
Subsystem placement

Auto-created zones are placed under the seeded Climate subsystem. If your site has no climate subsystem the driver logs a warning and skips creation — create the zones manually (any subsystem works; the subsystem only affects grouping/presentation, not whether commands work).

Attribute reference

Device attributes

NameTypeRequiredDescription
ipstringyesLAN IP or hostname of the CoolMaster.
portintnoASCII server port (default 10102).
poll_intervalintnoHow often to poll all indoor units with ls, in ms (default 15000).
auto_create_zonesboolnoCreate a climate zone per discovered indoor unit (default true).
firmwarestringRead from the box (version).
model / serialstringRead from the box (S/N).

Zone attributes

NameTypeDescription
addressstringCoolMaster unit UID, e.g. L7.400 (required).
statestringon / off.
system_modestringoff when the unit is off, otherwise cool / heat / auto / dry / fan.
device_modestringThe underlying mode regardless of power — used for an optimistic power-on.
setpointintTarget temperature in °F.
temperatureintCurrent room temperature in °F.
fan_modestringauto / low / medium / high / very_strong.
system_modes / fan_modesjsonCapability lists published once so the climate UI renders the right buttons.
min / maxintSetpoint bounds seeded by the driver (60–90 °F, or 16–32 when the box is °C).
faultstringThe CoolMaster fail-code for the unit; empty when OK.
demandbooltrue while the unit is actively calling for heating/cooling.
swingstringLast swing value applied.

Commands

CommandArgsNotes
on / offaddressPower the unit. on resumes its last mode.
system_modeaddress, modeoff, cool, heat, auto, dry, fan. Any non-off mode also powers the unit on (a CoolMaster mode verb does not power on by itself).
fan_modeaddress, modeauto, low, medium, high, very_strong (= "Top"/turbo).
setpointaddress, setpoint, modeTarget temperature in °F. mode is accepted for UI compatibility but the unit has a single setpoint.
swingaddress, modeauto, vertical, horizontal, off, where supported.
get_temperature / get_system_mode / get_fan_modeaddressReturn the last-polled value for the zone.
discoverList all indoor units the box currently reports.

How state mapping works

  • Temperature units. GEM works in °F. The CoolMaster has one display unit (°C or °F); each ls temperature carries a C/F suffix and the driver also reads the unit from the box's set reply. Reads are converted to °F; setpoints are converted back to the device unit before sending. On a °F box this is a no-op.
  • Off vs. mode. The climate UI treats "off" as a mode, so when a unit is off the driver reports system_mode = off while preserving the real cool/heat selection in device_mode. Turning the unit back on optimistically restores device_mode, and the next poll reconciles.
  • Polling. Every ls reply line is parsed independently and keyed by UID, so one poll refreshes every zone. Duplicate UIDs (only possible with the device's simul test mode) collapse onto a single zone.

Troubleshooting

SymptomCheck
discover returns no units but the device connectsThe HVAC line may be configured but have no indoor units detected on the bus. Run ls / line on the CoolMaster directly.
Setpoint lands a degree or two offThe box is likely in °C while GEM works in °F; the driver rounds on conversion. Confirm the device unit with the set command.
A zone shows a fault valueThe CoolMaster reports a non-OK fail-code for that indoor unit — check the unit's error code on the equipment.
Zone state lags a manual change at a wall controllerExpected — there is no push; state refreshes on poll_interval.