A lightweight Raspberry Pi monitor for the Central Boiler Firestar XP wood-fired outdoor boiler.
Note: This project is not affiliated with, endorsed by, or in any way connected to Central Boiler. It reads data from the local HTTP status page the Firestar XP controller already exposes on your home network — the same page viewable in any browser. No proprietary protocols are reversed, no cloud services are accessed, and no Central Boiler systems are modified.
Central Boiler offers a paid cloud subscription service that provides remote monitoring, advanced alerts, and historical data for the Firestar XP. If you just want to know whether your fire has gone out or the boiler has shut off unexpectedly — and you'd rather not pay a monthly fee — this project does exactly that using the local web interface the boiler already exposes on your network.
The Firestar XP controller hosts a small status page at a static IP on your home network. This project runs a Python script on a Raspberry Pi that polls that page every minute, parses the Furnace Status, Water Temp, and Fire Temp values, and sends a push notification to your phone if anything falls outside acceptable limits.
The Firestar XP serves a plain HTML/JavaScript status page on your local network. The page embeds the furnace state as an integer in inline JavaScript, renders Water Temp and Fire Temp as plain text in an HTML table, and populates two alarm fields via JavaScript string literals. This script fetches that page, extracts all of those values with a regex and BeautifulSoup, compares them against configurable thresholds, and fires a push notification via ntfy.sh when a threshold is violated.
The alarm fields carry firmware fault codes (e.g. DOOR, T.C., BYPASS) which are mapped to human-readable labels using the same lookup table the Firestar XP's own web UI uses.
No login, no cloud API, no proprietary protocol — just a local HTTP GET.
-
Polls
http://192.168.1.113every 5 minutes under normal conditions -
Sends push notifications via ntfy.sh (free, no account needed)
-
Detects and alerts on:
- Furnace Status ≠ ON (fire out, fault condition, etc.)
- Water Temp < 165 °F
- Fire Temp < 200 °F
- Any non-empty alarm field reported by the firmware (Door Open, Failed Thermocouple, Gas Fail, Bypass Handle Up, etc.)
-
Alarm codes are resolved to human-readable labels using the same lookup table as the Firestar XP web UI; unknown codes fall back to their raw value
-
Retries up to 3 times before alerting if temp values are unreadable
-
Smart alert backoff — avoids spamming you if the problem persists:
Alerts sent Poll interval 0 (normal) 5 minutes 1st alert sent 10 minutes 2nd alert sent 30 minutes 3rd+ alert sent 60 minutes 6 hours in error Stop alerting; check hourly for recovery -
Sends a recovery notification when the boiler returns to normal
-
Sends a startup notification with current temps and active config on every service start
-
Restarting the service resets all alert backoff state
-
Runs as a systemd service — starts automatically at boot, restarts on crash
-
All thresholds and intervals are configurable via
config.iniwithout editing code -
Logs to the systemd journal and a local
monitor.logfile with automatic rotation (1 MB cap, 3 backups kept)
The boiler page doesn't expose a history API, but since this script already polls every minute, it's straightforward to extend it to log readings to a local database or CSV file. That data could then be visualized with tools like:
- Grafana + InfluxDB — the standard self-hosted time-series dashboard stack. Runs well on a Pi.
- Home Assistant — if you already use it, the monitor could push readings as sensors.
- A simple CSV log + Python/spreadsheet for a lightweight option.
If you'd like temperature history tracking added to this project, open an issue or submit a PR.
- Raspberry Pi (any model with a network connection)
- Python 3.9+
- Your Firestar XP controller assigned a static IP on your local network (default used here:
192.168.1.113) - The ntfy app installed on your phone (iOS or Android)
firestar-alert/
├── monitor.py # Main polling and alerting script
├── config.ini # Configuration — edit this before deploying
├── requirements.txt # Python dependencies
├── firestar-alert.service # systemd unit file
├── install.sh # Installer script for the Raspberry Pi
├── monitor.log # Created at runtime — rotates at 1 MB, keeps monitor.log.1-.3
└── state.json # Created at runtime — cleared on every service restart
scp -r firestar-alert <user>@<pi-ip-address>:~/firestar-alertOr clone directly on the Pi:
git clone https://github.com/csphu/firestar-alert.git
cd firestar-alertSSH into the Pi, then:
cd ~/firestar-alert
nano config.iniFill in the following values (see Configuration Reference below):
[boiler]→url— the local IP of your Firestar XP (e.g.http://192.168.1.113)[ntfy]→topic— the topic name you subscribed to in the ntfy app
chmod +x install.sh
./install.shThe installer will:
- Create a Python virtual environment at
~/firestar-alert/venv - Install
requestsandbeautifulsoup4 - Register and enable the systemd service
Note: If you run
install.shfrom within the project directory (the normal case afterscp), it will detect that and skip the file copy step automatically.
sudo systemctl start firestar-alertsudo systemctl status firestar-alertjournalctl -u firestar-alert -fAll settings live in config.ini.
| Key | Default | Description |
|---|---|---|
url |
http://192.168.1.113 |
URL of the Firestar XP status page |
water_temp_min |
165 |
Alert threshold for Water Temp (°F) |
fire_temp_min |
200 |
Alert threshold for Fire Temp (°F) |
| Key | Default | Description |
|---|---|---|
topic |
your-unique-topic-name |
Your ntfy topic name — must match what you subscribed to in the app. Make it unique. |
server |
https://ntfy.sh |
ntfy server URL. Change only if self-hosting. |
| Key | Default | Description |
|---|---|---|
normal_interval |
5 |
Polling interval when everything is OK (minutes) |
interval_after_first_alert |
10 |
Polling interval after 1st alert (minutes) |
interval_after_second_alert |
30 |
Polling interval after 2nd alert (minutes) |
interval_after_third_alert |
60 |
Polling interval after 3rd+ alert (minutes) |
max_error_hours |
6 |
Hours before alerts stop (checks hourly for recovery) |
ntfy is a free, open-source push notification service. No account is needed.
- Install the ntfy app on your phone (iOS / Android)
- Tap + and subscribe to a topic name you make up (e.g.
my-boiler-alerts) - Test it from any terminal:
curl -d "test" ntfy.sh/my-boiler-alerts - Set that topic name in
config.iniunder[ntfy]
Security tip: Make your topic name long and hard to guess — anyone who knows it can subscribe and receive your notifications.
# Start / stop / restart
sudo systemctl start firestar-alert
sudo systemctl stop firestar-alert
sudo systemctl restart firestar-alert
# Enable / disable autostart at boot
sudo systemctl enable firestar-alert
sudo systemctl disable firestar-alert
# View status
sudo systemctl status firestar-alert
# Follow live logs
journalctl -u firestar-alert -f
# View all logs
journalctl -u firestar-alert --no-pagerAlerts appear as push notifications in the ntfy app with a 🔔 tag on startup, 🔥 for problems, and ✅ for recovery.
Startup notification (ntfy title): MONITOR STARTED
Time: 2026-03-03 11:49
Furnace: ON
Water: 186.4°F
Fire: 197°F
────────────────────
Water min: 165°F
Fire min: 200°F
Interval: 5m
Startup notification with active alarm (ntfy title): MONITOR STARTED
Time: 2026-03-04 08:12
Furnace: ON
Water: 191.6°F
Fire: 233°F
Alarm 2: BYPASS
────────────────────
Water min: 165°F
Fire min: 200°F
Interval: 5m
Problem alert (ntfy title): BOILER ALERT
Firestar XP Alert
Time: 2026-03-03 02:14
────────────────────
• Furnace Status: OFF (expected ON)
• Fire Temp: 143.0°F (min 200°F)
────────────────────
Furnace: OFF
Water: 158.2°F
Fire: 143.0°F
Alarm alert (ntfy title): BOILER ALERT
Firestar XP Alert
Time: 2026-03-04 09:47
────────────────────
• Alarm 2: Door Open
────────────────────
Furnace: ON
Water: 190.5°F
Fire: 256°F
Alarm 2: Door Open
Recovery notification (ntfy title): BOILER RECOVERED
Firestar XP recovered.
Time: 2026-03-03 03:45
Furnace: ON
Water: 187.5°F
Fire: 312.0°F
| Firmware code | Displayed as |
|---|---|
GAS |
Auto Relight |
GAS2 |
Wood Ignition |
HIGH |
High Water |
HIGH2 |
High Water Snapdisk |
LOW |
Low Water |
DIAG |
Diagnostics |
DOOR |
Door Open |
E.F. |
EEPROM Failure |
T.C. |
Failed Thermocouple |
G.F. |
Gas Fail |
A-2 |
Auto Relight Failure |
WEB |
Web Connection Lost |
| (unknown) | Raw code as-is (e.g. BYPASS) |
This project is not affiliated with or endorsed by Central Boiler Inc. "Firestar XP" is a product of Central Boiler. This software reads data from the local HTTP interface the device exposes on your own home network and does not interact with any Central Boiler cloud service, API, or server. Use at your own risk.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
MIT — see LICENSE.