Skip to main content

Mitsubishi Electric AE-200 / EW-50

Controls commercial Mitsubishi Electric City Multi VRF systems through an AE-200A, AE-50A or EW-50A centralized controller, using the controller's local XML servlet. Everything runs on the LAN — there is no cloud account, no MELCloud login, and no per-indoor-unit Wi-Fi adapter.

Which Mitsubishi driver do I want?

This driver is for commercial City Multi equipment behind a centralized controller. For residential ductless mini-splits (M-Series, Mr. Slim) with Kumo Wi-Fi adapters, use mitsubishi_kumo_cloud instead. For accounts driven through the MELCloud portal, use melcloud.

Prerequisites

  • An AE-200A / AE-50A / EW-50A on the LAN with a static IP address. Older non-A models (AE-200E, EW-50E) serve the same servlet but some firmware builds reject individual attribute names — see Known limitations.
  • The controller's integrated web function must be enabled: Initial Settings ▸ Basic System ▸ Web monitoring. On a number of firmware builds this is a licensed option that has to be unlocked with a registration code purchased from Mitsubishi. If the controller's web page does not load in a browser, this driver cannot talk to it either.
  • Indoor units must already be grouped and commissioned on the controller. This driver reads and writes existing groups; it does not commission equipment or change grouping.
  • Network path from the GEM server to the controller on TCP 80. AE-200 controllers usually live on a dedicated BMS or mechanical VLAN — either open the path or put GEM on that VLAN.

Setup steps

  1. Confirm reachability. From the GEM server, open http://<controller-ip>/ in a browser. You should get the controller's web monitoring page. If you get nothing, stop here and fix the network path or enable the web function before continuing.

  2. Add the device. Go to Devices, create a device with driver mitsubishi_ae200, and set Controller IP Address to the controller's address. Leave HTTP Port at 80 unless the site has remapped it.

  3. Credentials, only if prompted. If the controller's web page asked you for a login in step 1, put those credentials in Web Account Username and Web Account Password — typically the Maintenance (installer) account. Controllers left on an open web page need no credentials at all; leave both blank.

  4. Enumerate groups. Run the get_zones command. It returns every commissioned group with its number, the name configured on the controller's web page, and current drive/mode/setpoint:

    {
    "groups": [
    {"address": "1", "name": "Lobby", "drive": "ON", "mode": "COOL", "setpoint": 24, "temperature": 25.5},
    {"address": "2", "name": "Conf Room A", "drive": "OFF", "mode": "HEAT", "setpoint": 21, "temperature": 20.0}
    ]
    }
  5. Create zones. Add one GEM zone per group under the HVAC subsystem, setting zone.address to the group number as a plain string.

  6. Set the temperature scale. If the site displays Fahrenheit, set Temperature Scale to f. GEM then converts in both directions; the wire protocol stays Celsius regardless.

Attribute reference

Device attributes

AttributeRequiredDefaultDescription
ipyesLAN IP or hostname of the AE-200 / AE-50 / EW-50.
portno80Controller web port.
protocolnohttphttp or https. AE-200 firmware serves plain HTTP by default.
usernamenoWeb account username. Only needed if the controller's web page requires a login.
passwordnoWeb account password. Stored encrypted.
temperature_scalenocc or f. Controls what GEM displays and what commands accept.
group_rangeno1-50Group numbers probed by get_zones, formatted "1-50".
status_intervalno30000Status poll interval in milliseconds.

Zone attributes written by the driver

AttributeTypeDescription
statestringon / off — the group's drive state.
system_modestringoff when stopped, otherwise auto / cool / heat / dry / fan.
device_modestringThe mode the unit will resume in, retained while stopped.
setpointint/floatTarget temperature in the configured scale.
temperatureint/floatIndoor-unit return-air (inlet) temperature — see limitations.
fan_modestringlow / mid2 / mid1 / high / auto.
swingstringVane position or swing.
error_statusstringnormal, or error when the controller reports a fault.
error_codestringThe raw M-NET error code when faulted. This is what a service call needs.
system_modes, fan_modes, swing_modesjsonPicker option lists, written once per connect.

Zone address format

zone.address is the City Multi group number exactly as configured on the controller, as a plain string: "1", "2", … "50".

Group numbers are assigned during commissioning and are visible on the controller's web page and in the get_zones output. They are not M-NET addresses and not indoor-unit serial numbers.

Commands

CommandArgumentsNotes
get_zonesEnumerate commissioned groups.
get_statusRead current state of every group in the scan range.
on / offaddressStart / stop the group.
set_modeaddress, modeauto, cool, heat, dry, fan. Starts a stopped group in the same packet. off is accepted and maps to a stop.
set_setpointaddress, setpointIn the configured temperature_scale. Range-checked to 10–35 °C / 50–95 °F.
set_fan_modeaddress, fan_modeAvailability depends on the indoor-unit model.
set_air_directionaddress, directionVane position or swing.
all_offStops every group bound to a GEM zone (or the whole scan range if none are bound).
refreshForce an immediate status poll.

Known limitations

  • Read-only telemetry beyond the basics. The driver reads drive, mode, setpoint, inlet temperature, fan speed, vane and error sign. Energy metering, filter-sign state, outdoor-unit telemetry and the controller's own schedule are not read.
  • temperature is return-air, not room air. The controller reports the indoor unit's inlet sensor. On a ducted unit this reads several degrees off the occupied space, especially right after the fan starts. For accurate room temperature, pair the zone with a separate space sensor.
  • Setpoint resolution is 0.5 °C. A Fahrenheit setpoint is converted to the nearest 0.5 °C, so round-tripping °F → °C → °F can land one degree away from the number that was sent.
  • AUTO reports as AUTOCOOL / AUTOHEAT. While a group runs in auto the controller shows which way it is currently driving. Both collapse to system_mode: auto; the raw value stays in device_mode.
  • Fan vocabulary is model-dependent. Four-speed indoor units report LOW / MID2 / MID1 / HIGH. Two-speed units only ever report LOW and HIGH, and writing mid1 to one is accepted by the controller and silently discarded.
  • Air direction is the least-verified surface. Vane values differ by indoor unit, and ducted units with no vanes accept the write and discard it. Confirm behaviour against the actual equipment before relying on set_air_direction in a macro.
  • 50 groups per controller. AE-50A and EW-50A expansion controllers each answer for their own 50 groups. A site larger than that needs one GEM device row per controller.
  • Scheduling belongs to one system. The AE-200 runs its own schedules. If you also drive the equipment from GEM macro schedules, the two will fight — pick one owner per group.
  • No commissioning. Grouping, addressing and interlock configuration stay on the controller.

Troubleshooting

Nothing connects; the log shows mitsubishi ae200 missing ip. The ip attribute is blank on the device row.

Connect succeeds but 0 groups reporting. The controller answered, but no group in group_range returned a Drive value. Either the groups are numbered outside the default 1-50 span (widen group_range), or the controller has no commissioned groups yet.

HTTP 401 / the log shows a request error mentioning status 401. The controller's web page requires a login. Fill in username and password. If they are already set, confirm them by logging into the controller's web page directly — the AE-200 locks the Maintenance account after repeated failures.

controller error in a command result. The servlet answers HTTP 200 with an XML error body rather than a 4xx, so this is the controller rejecting the packet, not a transport problem. The usual causes are an attribute the firmware does not support (older non-A models), or a value outside what the indoor unit accepts.

Timeouts. The controller polls the M-NET bus on its own cadence and can be slow to answer while a bus scan is running. If timeouts are intermittent, raise request_timeout. If they are constant, it is a network path problem — most often a VLAN or firewall rule between GEM and the mechanical network.

Commands appear to work but nothing changes on the equipment. Check whether the group is under a controller-side schedule or an interlock that immediately reverts the change. Also confirm the indoor unit actually supports the value written — see the fan and vane notes above.