Skip to main content

Airzone HVAC (HTTP)

Local network integration for Airzone multi-zone HVAC systems through the Airzone Local API. An Airzone webserver (Airzone Cloud webserver, Aidoo, or Easyzone) sits on the installation's zone bus and exposes every conditioned zone over a small JSON API on TCP port 3000. GEM talks only to that webserver — it does not touch the indoor units, dampers, or the manufacturer bus directly.

One Airzone webserver becomes one GEM device row; each Airzone zone becomes a GEM climate zone, addressed by its Airzone zone number (1, 2, 3, …).

In the Add Device picker this driver is listed as Airzone HVAC (HTTP).

What this integration covers

  • System mode per zone — off, cool, heat, fan, dry, auto (mapped to GEM system_mode). There is no separate power command; off is a mode.
  • Setpoints per zone — separate heat and cool setpoints (Airzone reports both), so GEM presents the zone as a dual-setpoint thermostat.
  • Fan speed per zone — auto, low, medium, high.
  • Status polling of room temperature, relative humidity, the heat and cool setpoints, the current system mode, and the current fan speed — refreshed on the poll interval.
  • Multi-system webservers — a single webserver can host several Airzone systems; the device's Airzone System ID selects which one the zones belong to.

What this integration does NOT cover

  • Auto-creation of zones. Unlike some HVAC gateways, this driver does not discover and create zones for you. You create one GEM zone per Airzone zone by hand and set its address (see Setup steps). The driver polls only the zones already bound to the device.
  • Push updates. The Local API is request/response with no event stream, so a change made at an Airzone thermostat or the app appears at the next poll (within the Status Poll Interval), not instantly.
  • Temperature-unit conversion. Values are passed through in whatever unit the Airzone webserver is configured for (°C or °F). GEM displays and sends the raw number — it does not convert. Set the display unit on the Airzone webserver, and enter setpoint bounds (Min/Max Setpoint) in that same unit.
  • Airzone Cloud (remote) API. This driver uses the on-site Local API only. It must reach the webserver over the LAN.

Prerequisites

  • An Airzone webserver (Cloud webserver, Aidoo, or Easyzone) reachable from the GEM host on TCP 3000.
  • The Local API enabled on the webserver. It is disabled by default — turn it on from the webserver's installer/advanced menu in the Airzone app before GEM can connect.
  • The Airzone zone numbers for the zones you want to control (visible in the Airzone app / thermostats). These become the GEM zone addresses.

Setup steps

  1. Go to System → Devices → Add Device (Open Devices) and pick Airzone HVAC (HTTP) as the driver.
  2. Enter the webserver's Airzone IP Address. Leave HTTP Port at 3000 unless you have changed it.
  3. If the webserver hosts more than one Airzone system, set Airzone System ID to the system you are wiring (defaults to 1). Leave it at 1 for a single-system installation.
  4. Optionally adjust the Status Poll Interval (ms) (default 30000 = 30 s; minimum 1000). This is how often GEM refreshes each zone's temperature, humidity, setpoints, and modes.
  5. Save. The device should show connected within a few seconds.
  6. For each Airzone zone, go to System → Zones → Add Zone (Open Zones), select this Airzone device, and set the zone Address to the Airzone zone number (1, 2, …). The subsystem defaults to Climate.
  7. Give the zone a Control style of a climate/thermostat control so it renders as a thermostat on the UI. Because Airzone reports separate heat and cool setpoints, a dual-setpoint climate control matches the hardware.
  8. Save the zone. On the next poll GEM fills in the zone's temperature, humidity, setpoints, mode, and fan speed, and it publishes the list of available modes and fan speeds so the thermostat control shows the right buttons.
Subsystem placement

New Airzone zones default to the seeded Climate subsystem (the driver hints climate). The subsystem only affects grouping and presentation — commands work regardless of which subsystem the zone lives in.

Zone address = Airzone zone number

The single most common setup mistake is a zone whose Address does not match its Airzone zone number. An unmatched address polls nothing, so the zone's temperature and setpoints never populate. Confirm the number in the Airzone app.

Attribute reference

Device attributes

NameTypeRequiredDescription
ipstringyesLAN IP or hostname of the Airzone webserver.
portintnoLocal API port (default 3000).
system_idintnoWhich Airzone system on the webserver these zones belong to (default 1).
status_intervalintnoPoll cadence in ms (default 30000, minimum 1000).

Zone attributes

NameTypeDescription
addressstringAirzone zone number within the system, e.g. 1 (required).
system_modestringCurrent mode: off / cool / heat / fan / dry / auto.
fan_modestringCurrent fan speed: auto / low / medium / high.
temperatureintCurrent room temperature, in the webserver's unit.
humidityintRelative humidity %, where the zone reports it.
cool_setpointintCooling target temperature.
heat_setpointintHeating target temperature.
min / maxintOptional setpoint bounds you set on the zone; setpoints outside this range are rejected.
advanced_controlsboolExpose the expanded thermostat controls for this zone on the UI.
setpoint_label / temperature_labelstringOptional custom labels shown under the setpoint / temperature readouts.
system_modes / fan_modesjsonCapability lists the driver publishes once so the thermostat control renders the correct mode and fan buttons. Set automatically — you do not edit these.

Commands

These are the driver-declared commands. The thermostat control issues them for you; you can also run them from the command tester, macros, and triggers. The address argument is filled from the zone automatically.

CommandArgsNotes
system_modeaddress, modeoff, cool, heat, fan, dry, auto. off stops conditioning in the zone — there is no separate on/off command.
setpointaddress, setpoint, modeTarget temperature. mode is heat or cool and selects which setpoint to write (heat vs. cool). Values outside the zone's Min/Max Setpoint are rejected.
fan_modeaddress, modeauto, low, medium, high.
Turning a zone off

Use system_mode = off to stop a zone. The fan_mode dropdown also lists an off entry, but Airzone's fan-speed table only covers auto/low/medium/high, so set the system mode — not the fan — to off.

How state mapping works

  • Dual setpoints. Airzone maintains independent heating and cooling targets. GEM stores them as heat_setpoint and cool_setpoint; the dual-setpoint thermostat control adjusts the one that matches the current mode (or both in auto). Each setpoint command carries the heat/cool mode so the correct side is written.
  • Off is a mode. GEM (and the thermostat control) treat off as one of the system modes rather than a power switch. Selecting off sends the Airzone "system off" mode; selecting cool/heat/auto/etc. resumes conditioning.
  • Setpoint limits. If you set Min Setpoint / Max Setpoint on a zone, any commanded setpoint outside that window is discarded before it reaches the webserver (the command returns an error and the value does not change). Leave both blank to accept whatever the hardware allows.
  • Units follow the webserver. The driver never converts temperatures. Whatever unit (°C or °F) the Airzone webserver reports is what GEM stores and displays, and any setpoint you send is passed through in that unit. Keep the webserver's unit and the zone's Min/Max in agreement.
  • Polling. Every poll cycle the driver asks the webserver for each bound zone's status and updates the zone only when a value actually changed, so unchanged readings do not churn history.

Troubleshooting

SymptomCheck
All commands time out or return 404, device won't connectThe Local API is almost certainly still disabled on the webserver, or port 3000 is not reachable from the GEM host. Enable the Local API in the Airzone app's installer menu and confirm the port.
A zone's temperature / setpoints stay blankThe zone Address does not match its Airzone zone number, so the poll returns nothing for it. Fix the address to the real Airzone zone number.
Setpoint changes are ignoredThe value is outside the zone's Min/Max Setpoint, so it is rejected. Widen or clear the limits, and confirm you are sending the value in the webserver's unit (°C vs °F).
Zones on a multi-system webserver report the wrong dataThe device's Airzone System ID points at a different Airzone system. Set it to the system these zones belong to.
State lags a change made at a thermostat or the appExpected — there is no push. State refreshes on the Status Poll Interval; lower it if you need snappier feedback (at the cost of more polling traffic).
  • Devices — adding the Airzone webserver as a device and editing its connection settings.
  • Zones — creating the per-zone climate zones and setting each zone's address and control style.
  • Subsystems — the Climate subsystem these zones file under.
  • Commands — running system_mode, setpoint, and fan_mode by hand to verify the link.
  • Attributes — setting a zone's Min/Max Setpoint and display labels.
  • Macros, Triggers, and Macro Schedules — driving setpoints and modes on a schedule or in response to events.