Access API for echorobotics robot lawn mowers
Project description
pyechorobotics
Allows control and reads status of robot lawn mowers by echorobotics.
Used by Home Assistant Echorobotics integration.
Example:
import sys
import echoroboticsapi
import aiohttp
import asyncio
import logging
async def main():
async with aiohttp.ClientSession(cookies=echoroboticsapi.create_cookies(user_id="your-user-id", user_token="user-user-token")) as session:
api = echoroboticsapi.Api(session, robot_ids=["your-robot-id"])
print(await api.last_statuses())
print(await api.set_mode("chargeAndWork"))
if __name__ == "__main__":
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
loop = asyncio.new_event_loop()
loop.run_until_complete(main())
Unfortunately, the API doesn't tell is which mode ("chargeAndWork", "work" or "chargeAndStay") the robot is in. We can make an educated guess though, depending on what we set ourselves, history events and the status. This is what SmartMode does:
import sys
import echoroboticsapi
import aiohttp
import asyncio
import logging
async def main():
async with aiohttp.ClientSession(cookies=echoroboticsapi.create_cookies(user_id="your-user-id", user_token="user-user-token")) as session:
api = echoroboticsapi.Api(session, robot_ids=["your-robot-id"])
smartmode = echoroboticsapi.SmartMode("your-robot-id")
api.register_smart_mode(smartmode)
print(await api.history_list())
print(await api.last_statuses())
print(smartmode.get_robot_mode())
if __name__ == "__main__":
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
loop = asyncio.new_event_loop()
loop.run_until_complete(main())
See also src/main.py
SmartFetch
While calling last_statuses()
and history_list()
regularly (suggestion every 2min and 15min), this is somewhat wasteful of bandwidth.
Especially history_list()
uses some 60KiB of data volume. If calling this every 15mins is an issue for you, you may be interested in
SmartFetch.
import sys
import echoroboticsapi
import aiohttp
import asyncio
import logging
async def main():
async with aiohttp.ClientSession(cookies=echoroboticsapi.create_cookies(user_id="your-user-id", user_token="user-user-token")) as session:
api = echoroboticsapi.Api(session, robot_ids=["your-robot-id"])
smartmode = echoroboticsapi.SmartMode("your-robot-id")
api.register_smart_mode(smartmode)
smartfetch = echoroboticsapi.SmartFetch(api)
last_statuses = await smartfetch.smart_fetch()
print(last_statuses)
print(smartmode.get_robot_mode())
if __name__ == "__main__":
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
loop = asyncio.new_event_loop()
loop.run_until_complete(main())
Dev notes
To make a new release, use GitHub website and draft a release manually. Make sure the version number in pyproject.toml matches the new tag. GitHub Actions will publish it to pypi.
Adding a new state
If a new state is found, it must be added to models.py
.
Also check notify_laststatuses_received()
in smart_mode.py
if it should be recognized as a specific Mode.
Finally, in home-assistant-echorobotics-integration, increment the version number in the manifest.json. Also check the translations in echorobotics/translations, and any custom dashboard code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyechorobotics-0.0.21.tar.gz
.
File metadata
- Download URL: pyechorobotics-0.0.21.tar.gz
- Upload date:
- Size: 23.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 102689559b2ece46ffddb8fa06c4c38d1a7f3372a47577f12a26569e32519d92 |
|
MD5 | 767ea1089e295fd7ea121894abfd353a |
|
BLAKE2b-256 | cab68fe3099cd6594aa14f6fc09bf7db5acabc6fc0d46a4350f6fa376adbab27 |
File details
Details for the file pyechorobotics-0.0.21-py3-none-any.whl
.
File metadata
- Download URL: pyechorobotics-0.0.21-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | caf852fb18bf7457930fb03e216b7e4872512b4416e555f9d8bf0c7b66f307c4 |
|
MD5 | add3e507e3ef85f87bf00fba8ed7dc09 |
|
BLAKE2b-256 | f5e116cc5c472e89dd50ed17c5e9976ba538289cc540d41a370895e2f1a041b0 |