TapHome

Husdata H66 – IVT Rego 2000 Heat Pump (HTTP API)

Packet Parser → HTTP
Submitted by
Last updated: 10. 2026

Requires external gateway

Husdata H66 with cable 10 (local HTTP API) — product page

Husdata H66 – IVT Rego 2000 Heat Pump (HTTP API)

The Husdata H66 – IVT Rego 2000 template connects TapHome to an IVT or Bosch heat pump with the Rego 2000 controller through a Husdata H66 gateway. The H66 sits on the EMS bus of the heat pump, connected with the Husdata interface cable 10, and joins the home network over Wi-Fi or Ethernet. TapHome talks to the H66 over its local HTTP REST API (port 80, JSON); no cloud connection is needed and there is no wiring between the heat pump and TapHome.

The template reads the outdoor, supply, heat carrier, room and hot water temperatures, the compressor and alarm status and the energy counters. It sets the heating/cooling mode and the room and cooling setpoints of heating circuit 1, the hot water program, extra hot water and the four external control inputs of the heat pump.

Community template — not yet tested with TapHome. The template was generated in the TapHome portal from the Husdata C10 variable list and two answers of Husdata support; it has not been verified on a real installation yet, and feedback from the field is welcome. Download the XML on this page, or get it from the TapHome portal: Husdata H66 – IVT Rego 2000 — community template, and import it as a new module.

Compatible heat pumps and controllers

Cable 10 is the Husdata interface for the IVT / Bosch Rego 2000 and Rego 3000 / 3100 controllers; the Husdata installation guide for it names the IVT Geo, Air X, Vent 202, Airbox and the Bosch Compress 7000 LWM and AW. This template is written for the Rego 2000 — the controller with the black-and-white display and buttons, called HMC in the Husdata variable list:

  • IVT AirX, Geo and AirSplit with Rego 2000
  • Bosch heat pumps with Rego 2000 (Pro Control 600)

The Rego 3000 / 3100 with the colour touch display (HMI) uses other values for the hot water program and is not covered. The template covers heating circuit 1 and the hot water; heating circuit 2 (MM100 mixing valve module) and the pool (MP100 module) are not part of it.

Which values a heat pump reports depends on its type and accessories; the H66 HOME page lists the values of the connected pump with their IDX numbers. The indoor temperature exists only with a wired room sensor, the cooling setpoint only with an installed and enabled cooling circuit, the power draw only on newer pumps, and the external control inputs not on exhaust-air (Vent) pumps.

Hardware connection

H66 gateway and cable 10

The H66 is sold as a main unit together with the cable for the heat pump — order it with cable 10.

VariantSKUNetwork
H66 WiFi GatewayH66Wi-Fi 802.11 b/g/n, 2.4 GHz
H66 Ethernet + WiFi GatewayH66-EthEthernet 100 Mbps and Wi-Fi 2.4 GHz

Both get their IP address by DHCP or use a fixed IP. Before the first start, open the H66 case and attach cable 10 to the main unit, using the cable cut-out in the case as guidance for its direction. A cable 10 of the older Husdata H60 does not work with the H66 without modification.

Connecting cable 10 to the Rego 2000

The older version of cable 10 has a 3.5 mm plug; the current one connects with three wires directly to the EMS terminal. Husdata changed the design because some 3.5 mm jacks were wired incorrectly at the factory, which destroyed H66 units.

  1. Power down the heat pump and open the front cover.
  2. Locate the grey main unit and its terminal marked EMS.
  3. Connect the three wires in parallel with the wires already on the terminal:
WireFunctionTerminalAlternative terminal
WhiteEMS data2320
BlueGround2419
Purple+12 V2530
  1. Plug the interface module into the H66, close the front cover and power the heat pump up.

The terminal photo in the Husdata installation guide shows the wires on the terminals labelled 23 BBT, 24 BBT gnd and 25 BBT 12VDC; the alternatives are labelled 20 EMS, 19 EMS gnd and 30 OUT 12VDC. The wires already on terminals 23–25 lead only to a service connector and may be removed.

Cable 10 powers the H66 from the heat pump (+12 V on the purple wire), so no external power supply is needed. The H66 draws 60 mA at 12 V (0.8 W).

Do not connect a power supply or a computer to the USB-C port of the H66 while it is connected to the heat pump power — this can damage the computer, the H66 and the heat pump. If the USB port is needed, first disconnect the purple (+12 V) wire from the cable interface.

The TapHome Core reaches the H66 over the local network by its IP address. Wi-Fi needs a good signal at the heat pump; Husdata recommends a dedicated 2.4 GHz Wi-Fi network for the H66 (on UniFi equipment, set “802.11 DTIM Period” from Auto to 3). Where the signal is weak, the Ethernet variant connects by network cable.

Configuration

First start of the H66
  1. Power up the heat pump. The green LED of the H66 flashes fast — the H66 is in access-point mode. If it does not, hold the INIT button for 2 seconds.
  2. Connect a phone or computer to the Wi-Fi network “Husdata H66” (no password) and open husdata.net in a browser.
  3. Enter the SSID and the password of the home Wi-Fi (both case sensitive) and an e-mail address — the H66 then mails its IP address at every start. Click SAVE AND RESTART.
H66 settings for TapHome

Open the H66 web interface on its IP address and set:

SettingValueWhy
API_ENABLED2 (Read/Write)The default 0 switches the API off. 1 is read only — the values appear, but every write from TapHome fails.
DHCP_ENAB with FIXED_IP, FIXED_SUB, FIXED_GW, FIXED_DNS0 and a fixed address, or keep DHCP and reserve the address in the routerThe template addresses the H66 by IP address; Husdata documents no mDNS name for it.
WEB_PORT80 (default)The template uses port 80. If WEB_PORT was changed, change the port of the module in TapHome after the import.

Restart the H66 after changing API_ENABLED (the Reset button on its side) — the change takes effect only after a restart. The IP address of the H66 is in the router and in the startup e-mail; a short press of INIT makes both LEDs blink its last digit.

Controller type HMC. The Husdata C10 variable list asks to set the controller type (HMI / HMC) in the H66 settings, and the template expects HMC, the type of the Rego 2000. No Husdata source names this setting or says where it is — the settings explanation of the H66 manual does not list it. If your H66 offers an HMI / HMC choice, select HMC.

Web password. WEB_PASS protects the H66 web pages. The template sends no credentials, and Husdata does not document whether the web password also applies to the API — this is not verified. The Husdata API documentation shows /api/status returning the H66 configuration, the web password included, so keep the H66 reachable from the local network only and do not forward its port to the internet.

Import parameterDescription
IpAddressIP address of the Husdata H66 (placeholder 192.168.1.100)
Heat pump settings for cooling

Cooling is the value Cooling of the Operating Mode device (IDX 2202 = 3). This value is not in the Husdata C10 list — it comes from a Husdata support reply, and it has not been tested with TapHome yet. The heat pump has to be prepared for it:

  • “Cooling Heating” must be enabled in the heat pump service menu (Husdata support). This is an installer setting on the heat pump, not in the H66.
  • In the IVT installer guide for the AirModule E 9/15 (indoor unit of the IVT AirX), cooling is a circuit function — “Cooling” or “Heating and cooling” (service menu › Set heating/cooling › Circuit 1) — and the guide states: “If cooling mode is used, a room controller is a must.” The room controller (CR10 or CR10H) is selected as the programming unit of heating circuit 1.
  • The guide recommends condensation sensors and condensation insulation of all pipes, because cooling below the dew point causes condensation on the floor and the pipes; a CR10H with humidity sensor lets the controller adjust the flow temperature to the dew point. The guide is the 2014 UK edition (the UK model has cooling disabled), so menu names can differ.

In Auto the heat pump changes between heating and cooling by the outdoor temperature; the IVT defaults are heating below 17 °C and cooling above 28 °C.

Heat pump settings for the external control inputs

The H66 simulates a signal on the four external inputs of the heat pump (IDX 2233–2236). What an input blocks is set on the heat pump:

  1. Hold the Menu button to enter the service menu.
  2. Select Heat pump › External inputs (External connections in the IVT installer guide).
  3. Choose the input and what it should block — for example the auxiliary heater on input 1 and hot water on input 2.

The IVT installer guide offers blocking the compressor, hot water, heating, cooling or the booster heater. Its service menu configures external connections 1–3 only, so input 4 may have no effect on some systems. Exhaust-air (Vent) pumps have no external inputs.

Device capabilities

Heating circuit 1
  • Operating Mode — Off, Auto, Constant Heating or Cooling. In Auto the heat pump switches between heating and, when enabled, cooling by the outdoor temperature. Cooling needs the heat pump settings above and is not tested with TapHome.
  • Room Thermostat — the temperature of the wired indoor sensor and the room temperature setpoint, which the controller uses with an indoor sensor and/or with the display in Manual or Optimized mode. Without a wired sensor the device shows a warning and only the setpoint, which still works.
  • Cooling Temperature — cooling temperature setpoint, readable and writable; only a heat pump with an installed and enabled cooling circuit has it.

The template writes both setpoints without range limits, and no source gives the ranges the Rego 2000 accepts — keep the values within what the heat pump display allows. Operating mode 1 (Optimized / Auto time program), the heating curve and the output limits of the service menu stay on the heat pump. The template does not use the room controller emulation of the H66, which can feed a room temperature from the home automation into the heat pump.

Temperatures
  • Outdoor Temperature
  • Supply Temperature — water fed to the radiators or the floor heating
  • Heat Carrier Forward and Heat Carrier Return — the internal heat carrier circuit of the heat pump
  • Hot Water Temperature — top sensor of the hot water tank; its Hot Water Setpoint service attribute shows the target temperature as the controller reports it

The H66 sends temperatures in tenths of a degree and negative values as unsigned 16-bit numbers; the template converts them to °C with 0.1 °C resolution.

Hot water
  • Hot Water Program — Off, ECO or Comfort. ECO lets the tank cool down more before heating starts and stops at a lower temperature; Comfort gives more and hotter hot water. The start and stop temperatures of each program are set in the heat pump service menu. The values 0 = Off, 1 = ECO and 2 = Comfort are those of the Rego 2000 (HMC); the H66 web interface may label value 1 as “Normal”. Any other value puts the device into an error.
  • Extra Hot Water — starts the extra hot water function of the controller, for example to store hot water while electricity is cheap. How long it runs and its stop temperature are set on the heat pump.
Heat pump status
  • Compressor — Running / Stopped. Service attributes: Compressor Speed in percent (Husdata: % same as Hz) and Compressor Power — the power output produced by the compressor, not the electrical consumption of the heat pump.
  • Heat Pump Alarm — Alarm / OK. While an alarm is active, the device shows a warning with the latest error code of the heat pump as a raw number, not translated to the codes on the heat pump display.
External control
  • External Control 1–4 — Active simulates a signal on the external input, and the heat pump blocks what is set for that input in its service menu. The block takes effect immediately, interrupts operation and lasts until the input is switched back to Inactive.

Husdata warns that when an automation controls the heat pump, a failure in the chain can leave the pump in an unwanted state. Let the automation watch the operating state and set the pump back when needed, and test it under controlled conditions.

Energy
  • Electricity Meter — the demand is the electrical power draw of the heat pump (reported in W, shown in kW); only newer pumps report it, others show a warning and an empty demand. The total consumption is the compressor plus the electric auxiliary heater consumption in kWh; without the auxiliary heater counter it is the compressor alone, with a warning.
  • Service attributes: Heat Supplied Total — heat energy supplied by the heat pump, not electricity consumption; Compressor Consumed and Auxiliary Heater Consumed — the two consumption counters on their own.

Scaling not confirmed. No source states the raw scaling of the compressor speed (IDX 3108, divided by 10 by the template), the compressor power (IDX 9112, divided by 10) or the kWh counters (IDX 5C51, 5C54, 5C57, used unscaled). Verify these values against the heat pump display or the H66 HOME page before using them in automations.

How the template talks to the H66

The module sends one GET /api/alldata every 30 s. The H66 answers with one JSON object that holds every value of the heat pump, keyed by its four-character IDX from the Husdata C10 variable list (for example "0007":65218 = −31.8 °C), and all devices read their values from this one answer. Writes are GET /api/set?idx=XXXX&val=YYY requests; temperatures are sent ×10 (22.5 °C = 225). A device takes its state from the next poll, so after a write the old value can show for up to 30 s.

Every setting written goes to the flash memory of the Rego controller. Husdata’s rule of thumb is to stay below about 7000 writes per year — about 19 per day for the whole heat pump — so write setpoints and modes only when they change.

Why the HTTP API and not Modbus TCP. The H66 is also a Modbus TCP server, but its Modbus register number is the row position of the value on the H66 HOME page. Husdata support confirms that it depends on the heat pump model the H66 detects and can change with an H66 firmware update; the H66 does not update itself, so this happens only after an update someone starts. The HTTP API addresses each value by its IDX from the C10 list instead.

A manual Modbus TCP integration is possible: set MODBUS_PORT (for example 502) and restart the H66, take the register numbers from the “Modbus” column of the H66 HOME page (input registers for readable values, holding registers for writable ones, values ×10), write with function code 6 only — writing multiple registers is not supported — and check the register numbers again after every H66 update. Only one Modbus client can be connected.

Troubleshooting

Device error “IDX … not found in H66 data”

The heat pump does not report this value; the H66 HOME page shows which values the connected pump has. Devices that read several values keep working when an optional one is missing and show a warning instead — the Room Thermostat without a wired indoor sensor, the Electricity Meter without power draw or auxiliary heater counter. Delete a device only when all its values are missing; the other devices keep working.

All devices show “No data from the H66 - see the module error”

The module could not read /api/alldata. “H66 /api/alldata failed: HTTP …” means the request got no answer or an HTTP error — check the IP address, WEB_PORT and API_ENABLED (restart the H66 after a change). “H66 /api/alldata answer is not JSON” means the H66 answered, but not with data. In both cases open http://<H66-IP>/api/alldata in a browser: it must return a JSON object with the IDX values.

Write fails or has no effect
  • “Write IDX … failed” means the H66 did not answer Ok. Check that API_ENABLED is 2 and that the H66 was restarted after the change.
  • The H66 answers Ok for any IDX, also one the heat pump does not have, so such a write is not reported as an error. A device for a missing value already shows the “not found” read error.
  • Operating Mode set to Cooling, but the heat pump does not cool — check the heat pump settings for cooling above.
Hot Water Program error “not in the list - check controller type HMC”

The heat pump reported a value outside 0–2. Either the controller is a Rego 3000 / 3100 (HMI values, not covered) or the controller type in the H66 is not HMC.

H66 not reachable
  1. Check the green LED: one flash = connecting to Wi-Fi, two flashes = Wi-Fi OK and connecting to the heat pump, short–long = wrong Wi-Fi password, short–two long = wrong SSID, slow flashing = normal operation, fast flashing = access-point mode.
  2. If the IP address has changed, find the new one (router, startup e-mail, short press of INIT) and set a fixed IP or a DHCP reservation.
  3. A dark or constantly lit red LED, or a repeating fast-blink-dark pattern, means a problem with the heat pump communication (a short fixed light while the H66 initializes is normal) — check the cable 10 connection.
  4. The LOG page of the H66 web interface shows error messages. Holding INIT for 8 seconds resets the H66 to factory defaults.

Available devices

Husdata H66 Module
Custom Variables

Husdata H66

Read (module)
alldata := "";
VAR r := SENDHTTPREQUEST("/api/alldata");
IF r.IsSuccess = false
    ADDERROR(0, "H66 /api/alldata failed: HTTP " + r.StatusCode);
ELSEIF INDEXOF(r.Content, "{") < 0
    ADDERROR(0, "H66 /api/alldata answer is not JSON: " + r.Content);
ELSE
    alldata := r.Content;
END
Operating Mode Multi-value Switch

Heating/cooling mode of heating circuit 1 — Off, Auto (the heat pump switches by outdoor temperature), Constant Heating or Cooling; Cooling needs cooling enabled in the heat pump service menu and a room controller, and is not yet tested with TapHome

enum numeric
Values / States: Off · Auto · Constant Heating · Cooling

Operating Mode

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2202']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2202 not found in H66 data");
    RETURN(NaN);
END
IF raw < 0 OR raw > 3
    ADDERROR(3, "IDX 2202 value " + raw + " is not in the list");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2202&val=" + Mu);
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2202 failed: " + r.Content);
END
Room Thermostat Thermostat

Temperature of the wired indoor sensor of heating circuit 1 and the room temperature setpoint; without a wired sensor only the setpoint is shown

Int16 (JSON integer, ×10) Unit: °C numeric

Room Thermostat

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0008']", true);
IF ISNULL(raw)
    ADDWARNING(1, "IDX 0008 not reported - no cable indoor sensor; the setpoint still works");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Read desired temperature
IF alldata = ""
    ADDERROR(2, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0203']", true);
IF ISNULL(raw)
    ADDERROR(2, "IDX 0203 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Write desired temperature
VAR r := SENDHTTPREQUEST("/api/set?idx=0203&val=" + ROUND(Se * 10));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(3, "Write IDX 0203 failed: " + r.Content);
END
Cooling Temperature Variable

Cooling temperature setpoint of heating circuit 1; available only when a cooling circuit is installed and enabled on the heat pump

Int16 (JSON integer, ×10) Unit: °C numeric

Cooling Temperature

Read
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0214']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0214 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Write
VAR r := SENDHTTPREQUEST("/api/set?idx=0214&val=" + ROUND(Va * 10));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 0214 failed: " + r.Content);
END
Outdoor Temperature Temperature Sensor Read-only
Int16 (JSON integer, ×10) Unit: °C numeric

Outdoor Temperature

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0007']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0007 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Supply Temperature Temperature Sensor Read-only

Temperature of the water fed to the radiators or the floor heating

Int16 (JSON integer, ×10) Unit: °C numeric

Supply Temperature

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0002']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0002 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Heat Carrier Return Temperature Sensor Read-only

Return temperature of the heat pump's internal heat carrier circuit

Int16 (JSON integer, ×10) Unit: °C numeric

Heat Carrier Return

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0003']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0003 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Heat Carrier Forward Temperature Sensor Read-only

Supply temperature of the heat pump's internal heat carrier circuit

Int16 (JSON integer, ×10) Unit: °C numeric

Heat Carrier Forward

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0004']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0004 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Hot Water Temperature Temperature Sensor Read-only

Temperature at the top sensor of the hot water tank

Int16 (JSON integer, ×10) Unit: °C numeric
Service Attributes
Hot Water SetpointHot water target temperature as reported by the controller; N/A when the heat pump does not report it

Hot Water Temperature

Read temperature
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['0009']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 0009 not found in H66 data");
    RETURN(NaN);
END
RETURN(IF(raw > 32767, raw - 65536, raw) / 10);
Service Attributes
Hot Water Setpoint
VAR raw := PARSEJSON(alldata, "$['0111']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(IF(raw > 32767, raw - 65536, raw) / 10, "F1") + " °C")
Hot Water Program Multi-value Switch

Hot water program of the Rego 2000 — Off, ECO (the tank cools down more and is heated to a lower temperature) or Comfort (more and hotter hot water); start and stop temperatures are set on the heat pump

enum numeric
Values / States: Off · ECO · Comfort

Hot Water Program

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2213']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2213 not found in H66 data");
    RETURN(NaN);
END
IF raw < 0 OR raw > 2
    ADDERROR(3, "IDX 2213 value " + raw + " is not in the list - check controller type HMC");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2213&val=" + Mu);
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2213 failed: " + r.Content);
END
Extra Hot Water Switch

Starts the extra hot water function of the controller, for example while electricity is cheap; its duration and stop temperature are set on the heat pump

boolean (0/1)
Values / States: ON · OFF

Extra Hot Water

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['1231']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 1231 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=1231&val=" + IF(St, 1, 0));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 1231 failed: " + r.Content);
END
Compressor Reed Contact Read-only

Whether the heat pump compressor is running (Running / Stopped)

boolean (0/1)
Service Attributes
Compressor SpeedSpeed of the variable-speed compressor in percent (% same as Hz); scaling not yet confirmed
Compressor PowerPower output produced by the compressor — not the electrical consumption of the heat pump; scaling not yet confirmed

Compressor

Read
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['1A01']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 1A01 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Service Attributes
Compressor Speed
VAR raw := PARSEJSON(alldata, "$['3108']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(raw / 10, "F1") + " %")
Compressor Power
VAR raw := PARSEJSON(alldata, "$['9112']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(raw / 10, "F1") + " kW")
Heat Pump Alarm Reed Contact Read-only

Heat pump alarm (Alarm / OK); while an alarm is active, a warning shows the latest error code of the heat pump

boolean (0/1)

Heat Pump Alarm

Read
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['1A20']", TRUE);
VAR code := PARSEJSON(alldata, "$['BA91']", TRUE);
IF ISNULL(raw)
    ADDERROR(1, "IDX 1A20 not found in H66 data");
    RETURN(NaN);
END
IF raw = 1 AND ISNULL(code)
    ADDWARNING(2, "Heat pump alarm active, alarm code (IDX BA91) not reported");
ELSEIF raw = 1
    ADDWARNING(2, "Heat pump alarm active, code " + code);
END
RETURN(raw);
External Control 1 Switch

Simulates a signal on external input 1 of the heat pump; what it blocks is set in the heat pump service menu, and the block lasts until switched back to Inactive

boolean (0/1)
Values / States: Active · Inactive

External Control 1

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2233']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2233 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2233&val=" + IF(St, 1, 0));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2233 failed: " + r.Content);
END
External Control 2 Switch

Simulates a signal on external input 2 of the heat pump; what it blocks is set in the heat pump service menu, and the block lasts until switched back to Inactive

boolean (0/1)
Values / States: Active · Inactive

External Control 2

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2234']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2234 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2234&val=" + IF(St, 1, 0));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2234 failed: " + r.Content);
END
External Control 3 Switch

Simulates a signal on external input 3 of the heat pump; what it blocks is set in the heat pump service menu, and the block lasts until switched back to Inactive

boolean (0/1)
Values / States: Active · Inactive

External Control 3

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2235']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2235 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2235&val=" + IF(St, 1, 0));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2235 failed: " + r.Content);
END
External Control 4 Switch

Simulates a signal on external input 4 of the heat pump; the IVT service menu configures inputs 1–3 only, so on some systems this input has no effect

boolean (0/1)
Values / States: Active · Inactive

External Control 4

Read switch state
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['2236']", true);
IF ISNULL(raw)
    ADDERROR(1, "IDX 2236 not found in H66 data");
    RETURN(NaN);
END
RETURN(raw);
Write switch state
VAR r := SENDHTTPREQUEST("/api/set?idx=2236&val=" + IF(St, 1, 0));
IF r.IsSuccess = false OR INDEXOF(r.Content, "Ok") < 0
    ADDERROR(2, "Write IDX 2236 failed: " + r.Content);
END
Electricity Meter Electricity Meter Read-only

Electrical power draw of the heat pump (newer pumps only) and total electrical energy of the compressor and the electric auxiliary heater (kWh)

numeric Unit: W / kWh
Service Attributes
Heat Supplied TotalTotal heat energy supplied by the heat pump — thermal energy, not electricity consumption
Compressor ConsumedTotal electrical energy consumed by the compressor
Auxiliary Heater ConsumedTotal electrical energy consumed by the built-in electric auxiliary heater

Electricity Meter

Read total consumption
IF alldata = ""
    ADDERROR(2, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR comp := PARSEJSON(alldata, "$['5C54']", true);
VAR aux := PARSEJSON(alldata, "$['5C57']", true);
IF ISNULL(comp)
    ADDERROR(2, "IDX 5C54 not found in H66 data");
    RETURN(NaN);
END
IF ISNULL(aux)
    ADDWARNING(3, "IDX 5C57 (auxiliary heater) not reported - total is the compressor only");
    RETURN(comp);
END
RETURN(comp + aux);
Read demand
IF alldata = ""
    ADDERROR(1, "No data from the H66 - see the module error");
    RETURN(NaN);
END
VAR raw := PARSEJSON(alldata, "$['C130']", true);
IF ISNULL(raw)
    ADDWARNING(1, "IDX C130 (power draw) not reported - only newer pumps have it");
    RETURN(NaN);
END
RETURN(raw / 1000);
Service Attributes
Heat Supplied Total
VAR raw := PARSEJSON(alldata, "$['5C51']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(raw) + " kWh")
Compressor Consumed
VAR raw := PARSEJSON(alldata, "$['5C54']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(raw) + " kWh")
Auxiliary Heater Consumed
VAR raw := PARSEJSON(alldata, "$['5C57']", TRUE); IF(ISNULL(raw), "N/A", TOSTRING(raw) + " kWh")
Connection: Packet Parser → HTTP
Possible improvements (20)
  • Operating mode 1 (Optimized / Auto time program) — Heat circuit 1 program, HMC: 0 = Optimized, 1 = Auto (time program); the energy control guide names it, with 0203 and 0205 / 0206, as the way to limit heat production. Writable.
  • Heating curve, room sensor influence and program room temperature (heating circuit 1) — Heat curve base point (0205), end point for radiators (0206) and for floor heating (020E), room sensor influence (2204) and the room temperature used in Program mode (020C, AW pumps, with an indoor sensor); all writable 'Set temp'
  • Summer mode temperature — Outdoor temperature from which the pump blocks heating because it is summer; writable
  • Heating setpoint — Target temperature for heating (Temp variable, read only)
  • Room controller emulation (simulated indoor temperature and humidity) — With H66 setting ROOM_CTRL = 1 or 2 and RC100 / CR10 / TR111 selected for heating circuit 1 in the heat pump service menu, the H66 sends the 02F1 value (×10 over the API) to the Rego every 15 s — the documented way to feed a TapHome room temperature into the heat pump; validated on Rego 2000 and 3100, heating circuit 1 only. The Rego shows an info alarm when no update arrives for about a minute. 32F5 = simulated humidity (RC100H).
  • Refrigerant and brine circuit temperatures — Brine in / evaporator (0005), brine out / condenser (0006), hot gas (000B), suction gas (000C), compressor temperature (0014), drain pan (0A10, AW pumps)
  • Hot water tank mid sensor — Warm water 2 / Mid — second sensor of the hot water tank
  • Pump and valve states — Ground source pump (1A04, LW only), internal circulation pump (1A05), radiator pump (1A06), switch valve 1 (1A07: 0 = radiator heating, 1 = hot water heating), 4-way defrost valve (2A08, AW, not on all pumps)
  • Auxiliary heater and pump speeds — Applied electrical additional heater in percent (3104), circulation pump speed (3109, LW), brine pump speed (3110, LW only)
  • Electric heater enable and output limits — Enable / disable the built-in electric additional heater (2215) and the service-menu limits for compressor mode, auxiliary heat and hot water (2227–2229, value steps vary by model). C10 uses IDX 2229 twice (Limit Hot Water and Pool temp setpoint).
  • Energy counters split by heating and hot water — Heat supplied, compressor consumption and auxiliary heater consumption each split into heating and hot water production (kWh usage); the template reads only the totals
  • Operating hours and compressor starts — Total operating time (hours), compressor runtime (hours), compressor starts (counter)
  • Heating circuit 2 — Indoor sensor 2 (RC100), forward temperature, room setpoint and heating curve of heating circuit 2 (MM100 mixing valve module)
  • Indoor humidity — Humidity when an RC100H room controller is used
  • Pool and secondary circuit accessories — Pool temperature (MP100 module), pool shunt and secondary circuit shunt positions
  • Exhaust-air pump values — Air intake temperature, fan status and fan speed setting — exhaust-air (EW / Vent) pumps only
  • H66 status and configuration — JSON with the H66 firmware version, MAC address, Wi-Fi signal (rssi), heat pump connection state (hpconn) and the H66 configuration; candidate for module service attributes
  • Restart H66 — CLI over the API (H66 only, API_ENABLED = 2); restarts the gateway — candidate for a module service action
  • Own registers added in the H66 — Advanced users can add readable / writable registers on the H66 HOME page; for Rego 2000 / 3000 the register numbers must be provided by Husdata. They appear in /api/alldata like the standard IDX.
  • Other H66 interfaces — The H66 is also a Modbus TCP server (one client, input / holding registers, writes with function code 6 only) and an MQTT client; the Modbus register numbers depend on the detected heat pump and can shift after an H66 update, which is why the template uses the HTTP API addressed by IDX

Sources

  • Husdata C10 variable list — IVT Rego 2000 / 3000, Bosch Pro Control (H66)
    PDF
  • Husdata H60/H66 manual — API integration
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Settings explanation
    husdata.se 2026-10-20
  • Husdata installation guide — Rego 2000 / 3000 (cable 10)
    husdata.se 2026-10-20
  • Husdata energy control guides — external inputs on Rego 2000 / 3000
    husdata.se 2026-10-20
  • Husdata support — answers on H66 registers and cooling with Rego 2000 (e-mail, October 2026)
    2026-10-20
  • Husdata H66 WiFi Gateway — product page
    husdata.se 2026-10-20
  • Husdata H66 Ethernet + WiFi Gateway — product page
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Product overview
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Quick start guide
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Troubleshooting
    husdata.se 2026-10-20
  • Husdata — RC100 room sensor emulation (Rego 2000 / 3100)
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Modbus TCP integrations
    husdata.se 2026-10-20
  • Husdata H60/H66 manual — Custom registers
    husdata.se 2026-10-20
  • IVT AirModule E 9/15 installer guide (AirX, EMS bus, external inputs, cooling)
    PDF

Found a problem with this device template?

Tell us what's wrong, what's missing, or how the template should behave. We rely on your feedback to keep the catalog accurate.

Community — unreviewed

Want to use this in your TapHome Core?

Open this template in the Customer Portal to apply it to one of your homes, or to draft a refinement and submit it back to the catalog.

Open in portal