Device Pulse: Network Monitoring for IP-Based Devices

Hi everyone, I’m excited to share a new project: Device Pulse, a custom integration that helps you monitor network-connected devices (IP-based) and get full visibility and control over their online/offline status.

GitHub: https://github.com/studiobts/home-assistant-device-pulse

:white_check_mark: What Device Pulse does

  • Monitors any IP-based devices integrated in Home Assistant (or manually via custom groups) and checks their connectivity.
  • Supports two modes:
    1. Integration-Based Monitoring — picks up devices from existing HA integrations (if they expose ip_address, host, etc.)
    2. Custom Group Monitoring — manually define devices by name + host (IP/hostname).
  • Lets you configure ping-interval and number of ping failures before considering a device “offline.”
  • Automatically creates three global summary sensors:
    • A sensor for the total number of devices under monitoring.
    • A binary sensor indicating whether all devices are online.
    • A sensor showing the total number of offline devices.
  • Optionally creates extra sensors per device: failed ping count, last offline timestamp, last ping round-trip time.
  • Emits custom events when device status changes, so you can build automations (for example: notify when a device goes offline or comes back online).

:bar_chart: UI: Timeline & Table cards for visibility

To help visualize network status and history, I built two custom cards to go with Device Pulse:

Timeline Card

A visual timeline card that shows when each monitored device went offline or came back online — great for spotting connectivity patterns or intermittent issues over time.

GitHub: https://github.com/studiobts/device-pulse-timeline-card

Table Card

A table view that shows all monitored devices with live status, last response time, ping failures, etc. Offers filtering and sorting, handy for quickly scanning network health — especially useful if you monitor many devices.

GitHub: https://github.com/studiobts/device-pulse-table-card

Both cards can be installed via HACS

6 Likes

that is pretty cool, I have been using nmaps, but I will have to check this out.

thanks for your project.

The purpose is the same, but with the goal of avoiding the need to enter data that already exists, ensuring faster setup and an optimal data display.

Thank you for sharing. This is a really useful project.
It’s excellent.

One question, since I installed I have noticed my H.A backup sizes are increasing considerably. I’m uncertain if it is linked but if it is, can I limit the database use of this integration ?
Thank you !

Thank you for the appreciation.

Regarding your issue, I don’t think it is related, unless you have a very large number of devices under monitoring, you have configured a very fast ping interval (e.g. every 10 seconds), and you have enabled secondary sensors, such as those related to ping response time. With some additional information, it would be possible to understand it better.

Well presented and easy to set up - thank you. I’m not getting anything on the timeline card, however. Installed through HACS - do I need to do anything else to get it going or does something actually have to go offline?

Thank you very much.

Well, the fact that you don’t see anything is a good sign :smile:

The timeline only shows device disconnection/reconnection events for the monitored devices.

If no device has gone offline since you activated the integration, it is normal not to see anything.

1 Like

Dear developer and community,

this project/solution is great.
I have installed it and it`s really nice!
Ihave installed via HACS Device Pulse and the Timeline Card (not the Table Card-not needed by me).

What makes me wondering:

Even that most devices were detected, some additionally added manually by me, these devices are not shown-even if they are online.

Is there a reason why?
Thank you in advance and have a nice day.

Thank you for your kind words and for appreciating the project.

Regarding your question: the Timeline Card is designed to display events only. This means it shows devices when there is a state change (for example, from offline to online or vice versa). If a device has remained continuously online since the initial configuration, no event is generated, and therefore it does not appear in the timeline.

This behaviour is expected and by design.

Thank you again for your feedback.

Hi,

thank you very much for your quick response.
What you explainded is clear to me.

The problem ist, that I have some devices which are not shown here even though that their status has changed (online - offline).
For example:

iPhone 1 - O.K.
iPhone 2 - not shown
Laptop changed from online to offline (shut down) - not shown, etc…

I have checked several times the settings, like correct IP-address, but everything was right.

:slight_smile:

@pdn Thank you for this great integration! Do you know what the default ping timeout response is before a ping would fail and the byte size packet of the ping that is being sent each time? I am getting some ping failures with the integration, but when I ping the same device from a Windows machine, I am not. I think Windows defaults to a ping timeout of 4000ms and byte size packet of 32.

Not showing in the Timeline card (no events) or as monitored devices in the integration page?

Do you know what the default ping timeout response is before a ping would fail and the byte size packet of the ping that is being sent each time?

Hi @zakrzep, and thank you for appreciating the project.

The integration under the hood uses the ping integration provided by Home Assistant, which has a fixed timeout of 1 second. I have no info about the packet size, but it is probably the same.

Do your devices respond in more than 1 second?

@pdn Yes, That was my problem. I had it configured for 3 pings, every 10 seconds and I was getting failures. When I was comparing the pings in Windows, I did not see that because it defaults to 4000 ms. I have since changed to 30 seconds between pings. Not sure if you could add another option for timeout ms? I also need to find out why some devices take so long to respond! :grinning:

Thanks

Changing the interval to 30 seconds doesn’t really help. The real issue is that some devices take too long to respond, so the request times out anyway.

Unfortunately, the timeout value is hardcoded in the original ping integration, and I don’t have a way to expose it as a configurable parameter.

That said, for a future version, I’m already planning to remove the dependency on the ping integration, which would allow me to manage the timeout setting as well.

Feel free to open an issue in the repository so we can keep track of the problem.