Skip to main content

Access API for echorobotics robot lawn mowers

Project description

pyechorobotics

Echorobotics Logo

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


Download files

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

Source Distribution

pyechorobotics-0.0.21.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

pyechorobotics-0.0.21-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

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

Hashes for pyechorobotics-0.0.21.tar.gz
Algorithm Hash digest
SHA256 102689559b2ece46ffddb8fa06c4c38d1a7f3372a47577f12a26569e32519d92
MD5 767ea1089e295fd7ea121894abfd353a
BLAKE2b-256 cab68fe3099cd6594aa14f6fc09bf7db5acabc6fc0d46a4350f6fa376adbab27

See more details on using hashes here.

File details

Details for the file pyechorobotics-0.0.21-py3-none-any.whl.

File metadata

File hashes

Hashes for pyechorobotics-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 caf852fb18bf7457930fb03e216b7e4872512b4416e555f9d8bf0c7b66f307c4
MD5 add3e507e3ef85f87bf00fba8ed7dc09
BLAKE2b-256 f5e116cc5c472e89dd50ed17c5e9976ba538289cc540d41a370895e2f1a041b0

See more details on using hashes here.

Supported by

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