Skip to main content

Manage eero network devices

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eero-client-2.2.1.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eero_client-2.2.1-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file eero-client-2.2.1.tar.gz.

File metadata

  • Download URL: eero-client-2.2.1.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for eero-client-2.2.1.tar.gz
Algorithm Hash digest
SHA256 b87bd1526465fb6bb1d49b0480e6e20616a326956f46f1c34b5b831c5c9c57e2
MD5 25b0baf1d8dda4098395069e59aae2e9
BLAKE2b-256 3e8575a616d2b766b7634a9d732f99e8dc6b27445f7dd5dbf1a6c78d9217cf44

See more details on using hashes here.

File details

Details for the file eero_client-2.2.1-py3-none-any.whl.

File metadata

  • Download URL: eero_client-2.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for eero_client-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c113721255b3efd4a344459b1cca3c4462ed77613d74532134473b95f130302
MD5 96eeaaceb93cccdd4d1d9e9731cf34bc
BLAKE2b-256 8539b2db238ef827caf9ada4df346a678d70f31f29d78a336e31fb689eec0141

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page