This custom integration allows you to monitor and track your Peplink router from Home Assistant. It uses the local Peplink API to provide sensors for WAN connections and device tracking capabilities.
-
Local Communication: Communicates directly with your Peplink router over your local network
-
WAN Status Sensors:
- Connection Status (connectivity sensor)
- Download Rate (data rate sensor)
- Upload Rate (data rate sensor)
- WAN Type (text sensor)
- WAN Name (text sensor)
- WAN IP Address (text sensor)
- WAN Up Since (timestamp sensor)
-
Starlink Sensors (for a WAN the router reports as Starlink; the router polls the dish, so no extra call is made):
- Starlink Ping, Download and Upload
- Starlink Obstruction and Time Obstructed (percent)
- Starlink Last Restart, Boot Count and Software Version (with dish ID, hardware version and mobility class as attributes)
- Starlink Azimuth and Elevation (with the desired values as attributes)
-
Cellular Signal Sensors (for each cellular WAN whose module reports signal, including one in standby):
- Signal Level (bars), RSRP, RSRQ, SINR and RSSI of the serving cell
- Band (with channel, PCI and channel width as attributes), Network Technology and Carrier
-
SpeedFusion Status: one connectivity sensor per SpeedFusion (PepVPN) profile, on while it is connected, with its peers and their status as attributes
-
Wi-Fi Access Point: on while the router's built-in access point is on, with its SSIDs as an attribute
-
Port Link Sensors: one connectivity sensor per LAN and WAN Ethernet port, with the port name, enabled state and link speed as attributes
The SpeedFusion, access point and port sensors use one extra read-only call each. Routers without the feature (a FusionHub has no access point or Ethernet ports) get no such entities, and an unsupported call is not repeated.
-
Controls (only with an admin login; a read-only login gets none of these):
- Wi-Fi Access Point switch (turns the built-in access point on or off)
- PoE switch per LAN port that supports PoE
- Priority select per enabled WAN (1–4, applied immediately)
- Starlink Reboot, Stow and Unstow buttons on a Starlink WAN (the router needs an active Care plan)
- Reset Cellular Module button per cellular WAN
- Reboot button for the router (disabled by default)
Setup checks once whether the login is an admin one (
GET /api/auth.client). To move an existing entry to an admin login, use Reconfigure on the entry. -
Router Sensors:
- Fan Speed Sensors (speed sensors, dynamically created for each fan)
- System Temperature (temperature sensor)
- System Temperature Threshold (temperature sensor)
- Serial Number (diagnostic sensor)
- Device Name (diagnostic sensor)
- Firmware Version (diagnostic sensor)
-
GPS Tracking (for GPS-enabled Peplink routers):
- Device Tracker Entity (for mapping and zone detection)
- Speed Sensor (meters per second)
- Altitude Sensor (meters)
- Heading Sensor (degrees)
-
Device Tracking: Tracks client devices connected to your Peplink router
-
Traffic Statistics:
- WAN Download (data rate sensor)
- WAN Upload (data rate sensor)
- Total Download (data rate sensor)
- Total Upload (data rate sensor)
-
Configurable Polling: Adjust how frequently the integration polls your router (default: 5 seconds)
- The router must be accessible on your local network
- Valid admin credentials for your Peplink router
- Peplink firmware version 8.1.1 or higher
- Ensure HACS is installed in your Home Assistant instance
- Add this repository as a custom repository in HACS:
- Go to HACS > Integrations > ⋮ > Custom repositories
- Add
https://github.com/weirded/ha-peplink-localas a repository - Select "Integration" as the category
- Click "Install" on the Peplink Local integration
- Restart Home Assistant
- Download the latest release from the GitHub repository
- Extract the
custom_components/peplink_localdirectory into your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
- Go to Settings > Devices & Services > Add Integration
- Search for "Peplink Local"
- Choose Router, FusionHub or SD Switch (or AP One, see below)
- Enter the following information:
- IP Address: The IP address of your Peplink router
- Username: Admin username for your Peplink router
- Password: Admin password for your Peplink router
- Verify SSL (optional): Disable this if your router uses a self-signed certificate
- Polling Frequency (optional): How often to poll the router for updates (in seconds, default: 5)
- Click "Submit"
An SD Switch is added the same way as a router: enter the switch's own IP address and a login it accepts (a switch managed by a router's Switch Controller takes that router's logins). The integration recognises the switch by its model and polls only its system information and ports. It creates:
- System Temperature, CPU Load and Last Restart
- a link sensor per port, with the port name, enabled state and speed as attributes
- a PoE Power sensor (W) per PoE port
- with an admin login: a PoE switch per PoE port and a Reboot button (disabled by default)
PoE changes are sent to the switch itself (cmd.port.poe.enable / disable).
AP One firmware has no local REST API, so an AP One is read over SNMPv2c (Pepwave enterprise MIB). Enable SNMP v2c on the access point, then add it with AP One: its IP address, the SNMP community (default public) and a polling frequency (default 30 s). It creates Wi-Fi Clients (with the client list as an attribute), SSID, Firmware Version, Last Restart and a channel sensor per radio. These are read-only; an AP One has no controls here.
The GPS tracking features are automatically enabled when your Peplink router has GPS capabilities. This is particularly useful for mobile routers like MAX Transit or MAX BR1 series with cellular connectivity.
- Device Tracker: The router's GPS location will appear on your Home Assistant map and can be used with zones
- Sensors: Speed, altitude and heading sensors provide additional data about the router's movement and orientation
- Accuracy: GPS accuracy is calculated based on horizontal dilution of precision (HDOP) when available
Contributions to improve the integration are welcome! Please feel free to submit a pull request or open an issue on the GitHub repository.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.