Integration

Your network, inside Home Assistant

NetPulse publishes the fleet state to an MQTT broker and Home Assistant discovers it on its own: it creates the devices and their entities without you defining anything by hand. Everything happens on your local network.

What you get

Your network as one more entity at home

NetPulse writes your network state to the MQTT broker you already run for Home Assistant. From there, the routers and their metrics are available for dashboards, automations and alerts, just like a light or a temperature sensor.

The whole install

One device with the global health (score and label), clients online and total, routers online and total, and unread alerts.

Each router, on its own

One device per router with whether it is online, its health, CPU, memory, temperature and client count. Linked to the install so it groups in the panel.

Alerts as they happen

Every alert is published as an event the moment it fires (temperature, WAN down, new device...), so you turn it into whatever automation you want.

NetPulse writes, it does not listen: it is a publisher. From Home Assistant you read the network; to act on a router you use NetGrip, its panel, which speaks MQTT too and does accept commands.

Getting started

Four steps, once

It ships disabled: until you turn it on, NetPulse publishes nothing. It is configured with environment variables (or UCI options in on-box mode).

  • An MQTT broker (Home Assistant's Mosquitto add-on is the usual choice)
  • MQTT discovery enabled in Home Assistant (the norm with Mosquitto)
  • An instance name if you run more than one install (home, office...)
  • Nothing else: no ports to open, no router to touch

Environment variables (or the MQTT card in Settings)

NETPULSE_MQTT_ENABLED=1 NETPULSE_MQTT_HOST=10.0.0.10 NETPULSE_MQTT_USER=netpulse NETPULSE_MQTT_PASS=... NETPULSE_MQTT_INSTANCE=casa

After a restart the log shows "[mqtt] connected ... as instance \"home\"". The first state takes at most one interval.

Entities

What shows up in Home Assistant

One device for the install and one per router, hanging from the first. These are the entities created on their own:

Device Entity Type Unit
NetPulse <instancia>Health scoresensor
Clients onlinesensor
Routers onlinesensor
Unread alertssensor
NetPulse versionsensor (diagnostic)
each routerOnlinebinary (connectivity)
Healthsensor
CPU usagesensor%
Memory usagesensor%
Temperaturesensor°C
Clientssensor (diagnostic)

If a router runs NetGrip with its MQTT on, NetGrip is the one exposing it to Home Assistant and NetPulse does not publish it: you only see one device per router.

A router device in Home Assistant, with its entities created by discovery.

And more: NetGrip

Control the router from Home Assistant

NetPulse only publishes, but routers running NetGrip (its panel) also accept commands over MQTT. With NetGrip on, Home Assistant does not only see the router: it drives it.

Action Command topic Value
Guest Wi-Finetgrip/<router>/command/guest_wifiON / OFF
banIPnetgrip/<router>/command/banipON / OFF / RELOAD
IPv6netgrip/<router>/command/ipv6ON / OFF
SQMnetgrip/<router>/command/sqmON / OFF
Rebootnetgrip/<router>/command/rebootPRESS

Each router replies with the result on netgrip/<router>/result. It also publishes 17 sensors of its own: clients per band, weakest and average WiFi signal, and local network traffic.

A Home Assistant dashboard with the local network traffic and the install health.

What you should know

  • The broker connection has no TLS (port 1883): meant for a broker on your local network, not to expose it to the internet.
  • It is disabled until you turn it on, and in demo mode it publishes nothing.
  • No cloud in between: data goes from NetPulse to your broker and from there to your Home Assistant, through no third party.
  • If the broker goes down, NetPulse does not notice: publishing fails silently and retries. Monitoring keeps working.

Try it on your network

Install NetPulse, point its instance at the broker and in a minute you will have your network inside Home Assistant.

Appearance
Theme