Custom Home Assistant integration for Centrometal boilers with WiFi Box module. Provides complete control and monitoring of your Centrometal pellet boiler through Home Assistant.
- Subscribes directly to Centrometal MQTT broker
- Instant status updates (no polling delay)
- All MQTT parameters available as sensors
Temperature Sensors (17 total):
- Boiler Temperature (
B_Tk1) - Hot Water Temperature (
B_Tptv1) - Outdoor Temperature (
B_Tva1) - Buffer Tank Up/Down (
B_Tak1,B_Tak2) - Flue Gas Temperature (
B_Tdpl1) - Hydraulic Crossover (
B_Ths1) - Mixer Temperature (
B_Tpov1) - Low Temperature Sensor (
B_Tlo1) - Circuit 1/2 Temperatures (multiple sensors)
- Circuit 1/2 Room Temperatures
Status Sensors:
- Oxygen Level (
B_Oxy1) - Lambda sensor % - Fan State (
B_fan) - RPM or ON/OFF - Heater State (
B_gri) - Boiler Pump (
B_Pk) - Pellet Transporter (
B_puz) - Circuit 1/2 ON/OFF states
- Freeze Guard status
- Remote Start Enabled
- Day/Night modes
Counter Sensors (16 total):
- Burner Work Time (
CNT_0) - DHW Only Time (
CNT_1) - Freeze Protection Time (
CNT_2) - Burner Start Count (
CNT_3) - Fan Work Time (
CNT_4) - Electric Heater Work Time (
CNT_5) - Electric Heater Starts (
CNT_6) - Vacuum Turbine Work Time (
CNT_7) - Boiler Pump Work Time (
CNT_8) - And more counters (
CNT_9-CNT_15)
Additional Sensors:
- Pellet Tank Level
- Fire Sensor
- Mixing Valve
- Circuit Corrections
- Pellet Transporter Timing
Status Information:
- Boiler State (OFF, PP3, S7-2, etc.)
- Product Name
- Brand
- Nominal Power
- WiFi Version
- Firmware Version
- Configuration
- Operation Mode
Switches:
- 1st Heating Circuit (PWR 99) - ON/OFF control
- 2nd Heating Circuit (PWR 129) - ON/OFF control
Number Controls:
- Boiler Temperature Setpoint (PWR 3) - 75-90°C
- DHW (Domestic Hot Water) Temperature (PWR 10) - 40-80°C
- Day Room Temperature 2nd Circuit (PWR 140) - 5-30°C
All control values are automatically synchronized with portal
- Configuration via Home Assistant UI
- No YAML configuration required
- Automatic portal authentication
- Stores credentials securely
- Centrometal BioTec-L - Biomass pellet boiler
- Centrometal Cm Pelet-set - Pellet boiler
- Other Centrometal boilers with WiFi Box module
All devices using Centrometal WiFi Box (ESP32-based) with MQTT connectivity are supported.
-
Add Custom Repository:
- Open HACS in Home Assistant
- Go to "Integrations"
- Click the three dots (⋮) in the top right corner
- Select "Custom repositories"
- Add repository URL:
https://github.com/RobertBarbo/CentrometalHA - Category: "Integration"
- Click "Add"
-
Install Integration:
- Search for "CentrometalHA" in HACS
- Click "Download"
- Restart Home Assistant
-
Configure:
- Go to Settings → Devices & Services
- Click "+ Add Integration"
- Search for "CentrometalHA"
- Follow setup wizard
-
Download Integration:
cd /config mkdir -p custom_components cd custom_components git clone https://github.com/RobertBarbo/CentrometalHA centrometal
-
Restart Home Assistant
-
Configure:
- Settings → Devices & Services → Add Integration → CentrometalHA
- Navigate to Settings → Devices & Services
- Click "+ Add Integration"
- Search for "CentrometalHA"
- Enter your credentials:
- Email: Your portal.centrometal.hr login email
- Password: Your portal password
- Device ID: Your WiFi Box device ID (see below)
Your Device ID is the unique identifier of your WiFi Box (ESP32 module). This is required for MQTT communication.
Method 1: MQTT Monitoring (Recommended)
- Install mosquitto-clients:
sudo apt-get install mosquitto-clients - Run this command and wait for your boiler to send data:
mosquitto_sub -h 136.243.62.164 -p 1883 -u appuser -P appuser -t 'cm/inst/biotec/#' -v - You'll see messages like:
cm/inst/biotec/AD53C83A {"B_Tk1":68.3,...} - The Device ID is the part after
cm/inst/biotec/(e.g.,AD53C83A)
Method 2: Portal API (Advanced)
- Login to https://portal.centrometal.hr
- Open Developer Tools (F12) → Network tab
- Refresh the page
- Find API requests to
/api/inst/listor/api/inst/status - In the response, look for
device_idfield
Method 3: WiFi Box Label
- Check the WiFi Box module on your boiler
- The MAC address or device ID may be printed on a label
- It's usually 8 hexadecimal characters (e.g., AD53C83A)
Method 4: Mobile App
- If you use the Centrometal mobile app
- The device ID may be visible in device settings or details
After successful configuration, the integration creates the following entities:
switch.centrometal_1st_heating_circuit # PWR 99
switch.centrometal_2nd_heating_circuit # PWR 129
- Features: Turn heating circuits ON/OFF
- Services:
switch.turn_on,switch.turn_off,switch.toggle
number.centrometal_boiler_temperature # PWR 3 (75-90°C)
number.centrometal_dhw_temperature # PWR 10 (40-80°C)
number.centrometal_day_room_temperature_2nd_circuit # PWR 140 (5-30°C)
- Features: Set temperature setpoints
- Services:
number.set_value - Auto-sync: Values automatically pulled from portal every minute
All sensors follow the naming pattern: sensor.centrometal_<name>
Temperature Sensors:
sensor.centrometal_boiler_temperaturesensor.centrometal_hot_water_temperaturesensor.centrometal_outdoor_temperaturesensor.centrometal_buffer_tank_upsensor.centrometal_buffer_tank_downsensor.centrometal_flue_gas_temperaturesensor.centrometal_hydraulic_crossoversensor.centrometal_mixer_temperaturesensor.centrometal_low_temp_sensorsensor.centrometal_circuit1_temperaturesensor.centrometal_circuit2_temperature- And more...
Status Sensors:
sensor.centrometal_oxygen_levelsensor.centrometal_fan_statesensor.centrometal_heater_statesensor.centrometal_boiler_pumpsensor.centrometal_pellet_transportersensor.centrometal_boiler_status(with extensive attributes)
Counter Sensors:
sensor.centrometal_cnt_burner_worksensor.centrometal_cnt_burner_startssensor.centrometal_cnt_fan_work- And 13 more counters...
Entities Card with Controls:
type: entities
title: Centrometal Boiler Control
entities:
- entity: switch.centrometal_1st_heating_circuit
name: 1st Heating Circuit
- entity: switch.centrometal_2nd_heating_circuit
name: 2nd Heating Circuit
- type: section
label: Temperature Setpoints
- entity: number.centrometal_boiler_temperature
name: Boiler Temperature
- entity: number.centrometal_dhw_temperature
name: Hot Water Temperature
- entity: number.centrometal_day_room_temperature_2nd_circuit
name: Room Temperature (2nd Circuit)Entities Card with Sensors:
type: entities
title: Centrometal Boiler
entities:
- entity: climate.centrometal_boiler_1844
name: Boiler Control
- type: section
label: Temperatures
- entity: sensor.centrometal_boiler_temperature
name: Boiler
- entity: sensor.centrometal_hot_water_temperature
name: Hot Water
- entity: sensor.centrometal_outdoor_temperature
name: Outdoor
- entity: sensor.centrometal_flue_gas_temperature
name: Flue Gas
- type: section
label: Status
- entity: sensor.centrometal_oxygen_level
name: Oxygen Level
- entity: sensor.centrometal_fan_state
name: Fan
- entity: sensor.centrometal_boiler_status
name: State
- type: section
label: Counters
- entity: sensor.centrometal_cnt_burner_work
name: Burner Hours
- entity: sensor.centrometal_cnt_burner_starts
name: Burner StartsGauge Card (Oxygen Level):
type: gauge
entity: sensor.centrometal_oxygen_level
name: Oxygen Level
min: 0
max: 20
severity:
green: 0
yellow: 12
red: 15Turn on heating circuit at 6 AM:
automation:
- alias: "1st Heating Circuit ON in morning"
trigger:
platform: time
at: "06:00:00"
action:
service: switch.turn_on
target:
entity_id: switch.centrometal_1st_heating_circuitTurn off heating circuit at 10 PM:
automation:
- alias: "1st Heating Circuit OFF at night"
trigger:
platform: time
at: "22:00:00"
action:
service: switch.turn_off
target:
entity_id: switch.centrometal_1st_heating_circuitAdjust boiler temperature based on outdoor temp:
automation:
- alias: "Adjust boiler temp for cold weather"
trigger:
platform: numeric_state
entity_id: sensor.centrometal_outdoor_temperature
below: 0
action:
service: number.set_value
target:
entity_id: number.centrometal_boiler_temperature
data:
value: 90Set DHW temperature in morning:
automation:
- alias: "Higher DHW temperature in morning"
trigger:
platform: time
at: "06:00:00"
action:
service: number.set_value
target:
entity_id: number.centrometal_dhw_temperature
data:
value: 60Alert if oxygen level too high:
automation:
- alias: "High oxygen alert"
trigger:
platform: numeric_state
entity_id: sensor.centrometal_oxygen_level
above: 15
action:
service: notify.mobile_app_your_phone
data:
title: "Boiler Alert"
message: "Oxygen level is {{ states('sensor.centrometal_oxygen_level') }}%"
data:
priority: highTemperature-based control:
automation:
- alias: "Auto boiler based on outdoor temp"
trigger:
platform: numeric_state
entity_id: sensor.centrometal_outdoor_temperature
below: 10
action:
service: climate.turn_on
target:
entity_id: climate.centrometal_boiler_1844Notification when burner starts:
automation:
- alias: "Burner started notification"
trigger:
platform: state
entity_id: sensor.centrometal_heater_state
to: "ON"
action:
service: notify.mobile_app_your_phone
data:
message: "Boiler burner has started"The integration uses a hybrid approach:
Home Assistant → Portal API → MQTT → WiFi Box → Boiler
- Commands (switches, number setpoints) sent via Centrometal portal API
- Portal generates valid MQTT signatures
- WiFi Box receives and executes commands
Boiler → WiFi Box → MQTT → Home Assistant
- Real-time sensor status via MQTT subscription
- No polling delay
- All sensor parameters updated instantly
Portal API → Home Assistant (every 60 seconds)
- Number control values (PVAL_*) pulled from portal
- Ensures setpoints are always synchronized
- No more "unknown" states on startup
┌─────────────────────┐
│ Home Assistant │
│ + Centrometal │
│ Integration │
└──────┬──────┬───────┘
│ │
│ │ MQTT Subscribe
│ │ (Real-time status)
│ ▼
│ ┌─────────────────────┐
│ │ MQTT Broker │
│ │ 136.243.62.164 │
│ └─────────┬───────────┘
│ │
│ API │ MQTT
│ Commands │ Messages
▼ ▼
┌─────────────────────┐
│ Centrometal Portal │
│ portal.centrometal │
│ .hr │
└──────────┬──────────┘
│
│ MQTT (signed)
▼
┌─────────────────────┐
│ CM WiFi Box │
│ (ESP32) │
└──────────┬──────────┘
│
│ RS485
▼
┌─────────────────────┐
│ Boiler Controller │
└─────────────────────┘
-
Check file location:
ls -la /config/custom_components/centrometal/
Should contain:
__init__.py,manifest.json, etc. -
Check logs:
grep centrometal /config/home-assistant.log
-
Restart Home Assistant
-
Verify credentials:
- Test login at https://portal.centrometal.hr
- Check email and password
-
Check Installation ID:
- Verify ID from portal API or URL
-
Check logs: Settings → System → Logs
-
Check MQTT connection:
- Integration logs should show "Connected to MQTT broker"
- Check internet connectivity
-
Verify device ID:
- Integration uses device ID from portal
- Check logs for MQTT subscription topic
Add to configuration.yaml:
logger:
default: info
logs:
custom_components.centrometal: debug
paho.mqtt: debugRestart Home Assistant and check logs at Settings → System → Logs.
The integration supports multiple installations. Add each one separately:
- Add Integration
- Enter credentials for first installation
- Repeat for additional installations
Each will create separate entities with unique IDs.
Device → Server (Status):
cm/inst/biotec/{DEVICE_ID}
Example: cm/inst/biotec/AD53C83A
Server → Device (Commands):
cm/srv/biotec/{DEVICE_ID}
Example: cm/srv/biotec/AD53C83A
- Host: 136.243.62.164 (web-boiler.com)
- Port: 1883 (plaintext MQTT)
- Username: appuser
- Password: appuser
- Protocol: MQTT v3.1
- Base URL: https://portal.centrometal.hr
- Authentication: Session-based (PHPSESSID)
- Commands:
/api/inst/control/multiple
Turn ON:
{"PWR 99": 1, "srvMsgId": 123456, "_sign": "..."}Turn OFF:
{"PWR 99": 0, "srvMsgId": 123457, "_sign": "..."}Refresh Status:
{"REFRESH": 0, "srvMsgId": 123458, "_sign": "..."}Signatures (_sign) are generated by the portal API.
- Internet required: Requires connection to Centrometal portal and MQTT broker
- Read-only counters: Counter values are read-only (cannot be reset)
- Portal dependency: All control commands require portal authentication
- Automatic device ID detection from portal
- Additional command support (more PWR parameters)
- Energy consumption tracking and statistics
- Historical data charts
- Local MQTT broker support
- Offline mode (local control without portal)
Contributions are welcome! Please open an issue or pull request on GitHub.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Based on reverse engineering of Centrometal WiFi Box MQTT protocol
- Inspired by existing Centrometal integrations
- Built with Home Assistant integration best practices
MIT License - See LICENSE file for details.
This is an unofficial custom integration.
- Use at your own risk
- Not affiliated with or endorsed by Centrometal
- May stop working if Centrometal changes their API/MQTT protocol
- No warranty or support from Centrometal
Made with ❤️ for the Home Assistant community
If you find this integration useful, consider starring the repository on GitHub!