Skip to main content

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.

  • GET Methods are exposed as class properties
  • POST Methods are exposed as class methods with **kwargs for 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

example.ipynb

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)

Source distribution for eero-client 2.2.6
File Size Uploaded
eero_client-2.2.6.tar.gz 17.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eero-client 2.2.6
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

2.2.6 This release

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page