Unofficial client for Eero Mesh Routers
SDK Design Considerations
The SDK leverages pydantic to return models for all supported endpoints, endpoints are created using a method factory and configurations in the routes.py file allowing for easy extension.
GETMethods are exposed as class propertiesPOSTMethods are exposed as class methods with**kwargsfor route params (if applicable).
As this is an undocumented API, I was only able to create models for the objects returned in my network, please consider contributing / updating models if your network has additional parameters.
Usage Example
Authentication
from eero import Eero, FileSessionStorage
session = FileSessionStorage("session.cookie")
eero = Eero(session=session)
if not eero.is_authenticated:
auth_source = input("Phone Number or Email: ")
user_token = eero.login(auth_source)
verification_code = input("verification key from email or SMS: ")
eero.login_verify(verification_code, user_token)
Routes
Get Requests
GET_RESOURCES defines the get properties in the structure of {property_name: tuple[url, response_model]}
The following get properties are defined:
account
ac_compat
device_blacklist
devices
diagnostics
eeros
forwards
ouicheck
guestnetwork
profiles
reservations
speedtest
updates
support
insights
routing
thread
networks
Post Requests
POST_RESOURCES defines the post methods in the structure of {property_name: tuple[url, response_model]}
The following get properties are defined:
burst_reporters
reboot
reboot_eero - takes in the id of the error to reboot, available from the client.eeros get endpoint.
run_speedtest
Inspiration
Thank you to Max von Webel for his original work, eero-client, I hadn't considered accesssing my router's data until I saw his project and only opted to fork and rewrite to add more of my own opinionated design patterns.
Future Plans
Device Triangulation
I played with the idea of using the signal strength for each connected device captured while looping over the network turn off all but one eero at a time, and the relative 3D coordinates of the eero devices to create a 3D rendering of all of the devices in my home. This worked decently well for devices in a room with an eero, but for obstructed devices their positions there were too many intersection points with a mesh of four units. If I circle back to this in the future I may add code in a post.
Home Assistant Integration
My next goal is to expose the eeros & devices in Home Assistant through an integration, when I'm successful I'll post a link to that repo/HACS integration here my intent is to use this SDK as the foundation for that work.
Release files for eero-client 2.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eero_client-2.2.6.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eero_client-2.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.1 kB
Release files / eero_client-2.2.6.tar.gz
| Download URL | eero_client-2.2.6.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0714265f6fce9f35f9e74319427c3f2958e41a76033e4833d9b7b394cd4cf56
|
|
BLAKE2b-256 checksum How to use checksums |
20323f2e5b092363828e9d515e44c8051064f3c03a5d0b93a8a6b64f5fda64f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / eero_client-2.2.6-py3-none-any.whl
| Download URL | eero_client-2.2.6-py3-none-any.whl |
|---|---|
| Size | 22.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f6e6de3ec9e8e0efb93bdff96afc80cb99d0bb842ef5d427e8137c323861cca0
|
|
BLAKE2b-256 checksum How to use checksums |
7c04205a4285a6feed2b950f3053d4510ec0794f4abab375ff61acdafe9f5a62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|