Pluggit AP310 in Home Assistant: native Modbus or a HACS integration?
Two local routes to the AP310
The Pluggit AP310 heat-recovery ventilation unit can be connected to Home Assistant locally over Modbus TCP. You can either configure registers in Home Assistant's native Modbus integration or install a community integration through HACS. Native YAML gives complete control but makes the register map, data types, and write safety your responsibility. A HACS integration is faster to set up but executes third-party code inside Home Assistant.
The claim that Pluggit and Dantherm units share controller hardware is phrased as “appear to share” in the Tvalley71 project. I cannot confirm it as a manufacturer statement.
Native Modbus: maximum control, maximum verification work
Configure a TCP hub at the AP310 address and port 502, then define only the registers you need. Community register lists mention temperatures at addresses 133, 135, 137, and 139; fan speeds at 101 and 103; bypass state at 198; humidity at 196; air quality at 430; operating mode at 472; and filter days at 555. These lists are useful starting points, not a replacement for the correct controller documentation and a check on the installed firmware.
Home Assistant's current Modbus syntax uses data_type values such as float32 and a swap option for byte/word order. slave_count does not declare the width of a 32-bit value; it creates additional virtual sensors at following addresses. A float32 value already determines its register width automatically.
modbus:
- name: pluggitAP310
type: tcp
host: 192.168.X.X
port: 502
timeout: 5
message_wait_milliseconds: 30
sensors:
- name: Pluggit_Outdoor_T1
slave: 1
address: 133
unit_of_measurement: "°C"
data_type: float32
- name: Pluggit_Fan1_Speed
slave: 1
address: 101
unit_of_measurement: rpm
data_type: float32
If a value is implausible, verify register numbering and then test the documented swap: byte, swap: word, or swap: word_byte options. Do not guess write values.
In the user's running setup, fan level is read from register 323 while commands are written to 324. That differs from some community tables and is a useful warning: a copied map must be verified on the actual device. The user's dashboard calls modbus.write_register directly:
- type: button
icon: mdi:fan-speed-2
name: "Fan 2"
tap_action:
action: call-service
service: modbus.write_register
service_data:
address: 324
unit: 255
value: [2, 0]
hub: pluggitAP310
This is a documented personal configuration, not a universally validated AP310 register recipe. Writes can change ventilation and protection behavior; start read-only, keep a backup, and verify every address and value against the controller documentation.
HACS integrations
Two relevant projects are:
- Tvalley71/pluggit: lists AP190 and AP310 as known supported units, requires Home Assistant 2025.8.0 or newer, and provides numerous sensor, switch, select, fan, and cover entities. It supports Modbus over TCP/IP. Some HAC-module functions remain unsupported because of limited testing.
- Goemon64/Pluggit-HA: advertises AP190, AP310, and AP460 support and states that it was tested with an AP310 running firmware 3.14.
The Tvalley71 integration is available in HACS search at the time of verification. Repository status, requirements, and entities can change, so read the current release notes before installing. Home Assistant itself warns that HACS projects do not receive the same review as core integrations and run code inside Home Assistant. Make a backup and download it to another device before installation.
Typical installation:
1. Open HACS and search for the Pluggit integration.
2. Read its current requirements and release notes.
3. Install the selected release and restart Home Assistant.
4. Add Pluggit under Settings → Devices & services.
5. Enter the ventilation unit's reserved IP address.
6. Enable only the entities supported by the installed options and firmware.
Comparison
| Criterion | Native Modbus | HACS integration |
|---|---|---|
| Initial effort | high | low to moderate |
| Register control | complete | defined by the project |
| Third-party runtime code | no | yes |
| Maintenance | your YAML and register map | project releases and compatibility |
| Write risk | visible but entirely your responsibility | encapsulated, still requires verification |
Cold-weather observation and power isolation
On this specific installation, intake problems were observed at approximately −2 to −3 °C. This is a personal observation; I cannot confirm the cause or threshold from Pluggit documentation.
The installation was temporarily power-cycled through a smart plug. This must not be generalized into an automation recommendation. A central ventilation unit has its own frost-protection and run-on strategies. External power isolation may bypass them, produce faults, or interrupt required moisture-control ventilation. Discuss the cause and permitted remedy with Pluggit or a qualified ventilation contractor, and follow the manufacturer documentation.
Temporary shutdowns were also used when outdoor odors were present. Even then, minimum ventilation, moisture protection, fireplace interaction, and local requirements must be considered.
Troubleshooting
1. Reserve the AP310 IP and verify TCP port 502.
2. Start with one read-only register.
3. Check data type and swap only against a known plausible value.
4. Reload native Modbus with modbus.reload where applicable.
5. For HACS, compare the integration's current minimum HA version and release notes.
6. Do not experiment with writes while occupants or building safety depend on ventilation behavior.
Sources and technical documentation
- Tvalley71/pluggit
- Goemon64/Pluggit-HA
- Home Assistant: Modbus
- Home Assistant: HACS and community-code warning
- Home Assistant Community: Pluggit Modbus thread
- gersilex register collection
- User's running
packages/pluggit.yamland dashboard configuration (personal operating evidence; not publicly verifiable)