Hello kakabsat.
Before anything else, I want to give a quick background on why I created this notification tool.
I have been working remotely for almost a decade now. For remote work, electricity and internet are two of the most important things that keep the work going. Yes, power banks can help keep your phone or router alive for a while, but there are also times when the internet provider itself gets affected because of a power outage.
Because of that, it became a normal routine for me to check BENECO’s Facebook page once in a while just to see if there are scheduled outages. Funny enough, it did not occur to me earlier to check their actual website. Do not ask me.
Then the other night, while browsing Facebook, I accidentally clicked a BENECO link and it led me to their site. While checking around, I came across the power service information page. To my surprise, there was a live service monitor.
Naturally, I checked if the data behind it could be monitored. That was when it clicked: this could actually work.
A few weeks before that, I also started using ntfy for my own notifications. ntfy is a simple notification service. You send a message to a topic, then any phone or browser subscribed to that topic can receive the notification.
So I decided to build a small MVP for BENECO outage notifications.
Contents
- What this tool does
- Current MVP features
- Current limits
- How to install ntfy and subscribe
- Final notes
What this tool does
The tool watches the BENECO outage feed and sends notifications through ntfy.
The goal is simple: instead of manually checking Facebook or the website again and again, I want the outage information to come in as a notification.
This is still an MVP, so I am keeping it small and practical for now. The first version focuses on the basic flow: check the outage feed, save what was already seen, and send alerts only when something meaningful changes.
The app uses polling plus database state. That means it checks the feed repeatedly, stores the outage records it already knows, and avoids sending the same notification again after a restart.
Current MVP features
The first version has three main features.
1. Daily 6 AM outage list
Every morning at 6 AM, the app sends one daily list of ongoing outages for the local day.
The message is kept short so it stays readable as a phone notification. Each row is condensed into this format:
Area | Status | Off time
The app also tracks if the daily digest was already sent for that date. Once it has been sent, it will not send another morning list for the same day.
2. New outage notifications
When the monitor sees a new outage from the BENECO feed, it saves the source ID in the database.
If the outage has an outage time and has not been restored yet, the app sends a notification like this:
Power outage reported
After the notification is sent successfully, the app marks that outage as already notified. This is the spam guard. The same feed item will not keep sending alerts on every poll.
This is near real-time, not instant. It still depends on the polling interval. For an MVP, that is good enough.
3. Power restored notifications
When an existing outage later gets a restored time, the app sends a power restoration notification.
The restored message includes:
Area
Feeder
Restored time
Duration
Cause
After the notification is sent successfully, the app marks the restoration as already notified. Same idea: one restoration alert per outage record.
There is also one important guard here. If the app first sees an outage that is already restored, it saves the record but does not send a restoration alert. This avoids flooding everyone with old restored outages during the first import.
Current limits
This is just a start.
Area detection is still basic. Right now, the app can filter by configured watched-area text, but precise matching for places like Baguio, La Trinidad, or nearby barangays still needs more work.
Another limit is how the source data identifies outages. If BENECO creates a new ID for the same physical outage, the app will treat it as a new outage. For now, that is acceptable because the feed ID is the safest source event key for the MVP.
Hosting is also something I am still working out.
At first, I thought of hosting this on my own repurposed old Android tablet. But of course, the obvious problem is: kasanu ngay nu ag brownout hehe.
So if people actually use this, I will most likely host it on a small VPS. That can cost around $5 to $6 a month. Not too bad, but still something to consider if this becomes a community tool.
The public ntfy service is also better treated as a starting point. If usage grows, self-hosting ntfy may be the better long-term setup.
How to install ntfy and subscribe
You only need ntfy if you want to receive the outage notifications.
For now, the topic name below is still a placeholder:
beneco-power-outage
I will replace that with the final topic before publishing this.
Important note: ntfy topics are public if someone knows the topic name. Treat the topic like a simple password. Do not use personal information, names, birthdays, or easy-to-guess words as the topic name.
Android
-
Install the ntfy app from Google Play or F-Droid.
-
Open the app.
-
Add a new subscription.
-
Use this server:
http://ntfy.jjosh.dev:8080 -
Enter this topic:
beneco-power-outage -
Allow notifications when Android asks for permission.
-
Keep the subscription enabled.
After that, outage updates should show up as phone notifications.
iPhone
-
Install the ntfy app from the App Store.
-
Open the app.
-
Add a new subscription.
-
Use this server:
http://ntfy.jjosh.dev:8080 -
Enter this topic:
beneco-power-outage -
Allow notifications when iOS asks for permission.
After that, you should receive alerts when the outage monitor sends updates.
Final notes
This is not an official BENECO service. It is just a small personal/community MVP built around publicly visible power service information and ntfy notifications.
For now, I want to keep the scope simple:
- daily outage list
- new outage alerts
- restored service alerts
If people find it useful, then I can expand it from there.
The next useful feature would probably be area-based notifications. For example, you may only want to receive alerts for your area instead of every outage in the feed.
Let us see where it goes.