Skip to main content

An unofficial reverse engineered Husqvarna Automower Connect BLE library

Project description

AutoMower-BLE

This is an unofficial reverse engineered Husqvarna Automower Connect BLE library. This allows connecting and controlling an Automower without any accounts, cloud or network connection.

<a href="https://liberapay.com/alistair23/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>

This library is written with the intent of integrating into Home Assistant, but it can be used independently as well.

Details on how this was developed are available at: https://www.alistair23.me/2024/01/06/reverse-engineering-automower-ble

This was developed and tested against a Automower 305, but it should work on all Automowers. If you are able to test on different models please do and report any results back.

Installation

This library can be installed by

pip3 install automower-ble

Please note that the library is under active development and that the code on github might not be released for pip.

Testing Connections

You can test querying data with the following

python3 ./mower.py --address D8:B6:73:40:07:37

You can uncomment parts of async def main(mower) to send commands, or send commands using parameters:

python3 ./mower.py --address D8:B6:73:40:07:37 --command park

Where command is one of: park pause override resume

(override will run for 3hrs)

To get the address, the ble_scanner.py script can be run.

Unit testing for developers

Unit tests are found in the /tests/ folder.

You can run the unit tests with pytest. Install it by pip3 install pytest. In the root path, just run

pytest

Debugging logs on an Android phone

You can get Bluetooth debug logs from an Android phone which will help development for new features, unknown codes or implementation of extra devices. To debug you need to enable developer mode on your Android handset/tablet (and have the manufacturer app installed to communicate with your mower)

To enable debug mode on Android:

  • Go into settings and System (Sometimes this is in About phone). Look for the "Build number" entry.
  • Tap this several times, onscreen you should then see a note confirming by tapping 7 times developer mode will be enabled.
  • Once enabled, click BACK and you'll see a "Developer Options" menu. In there scroll to find "Enable Bluetooth HCI snoop log".
  • Set "Enable Bluetooth HCI snoop log" to "Enabled"
  • Turn bluetooth OFF then back ON to enable the logging.

Go into your mower app and carry out the commands, making a note of precise time you send the command to the mower. Once you've captured the commands, to retrieve the log you can either grab it using your phones file browser. The file location is /data/misc/bluetooth/logs The filename is btsnoop_hci.log (This varies, for example Samsung phones store them elsewhere)

An alternative is to use the adb via usb to retrieve the log. Plug your phone in via usb and use adb to download your bug report: adb bugreport MyFilename (This will generate a bugreport and save it as MyFilename.zip) Extract that zip file and the bluetooth HCI snoop file is in FS/data/log/bt/btsnoop_hci.log

These bluetooth hci snoop files (btsnoop_hci.log) are in wireshark file format so use wireshark to view them. You can then see the commands sent and received from your mower and can then decode/investigate the commands.

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

automower_ble-0.2.2.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

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

automower_ble-0.2.2-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file automower_ble-0.2.2.tar.gz.

File metadata

  • Download URL: automower_ble-0.2.2.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for automower_ble-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b2acb975e1489ceb5ae5125e76be5e34b82d47a4eaedba76bd30808e7f8bf094
MD5 71abfd733519a2f55bb9392ccb5f87d2
BLAKE2b-256 e9b01f0bfe839940c2c561570b2cedf6ab61678196766ca67bb64b4be95f4f16

See more details on using hashes here.

File details

Details for the file automower_ble-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: automower_ble-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 28.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for automower_ble-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6fff7ef039827a7a802e39a80a19f857f1379fe1949486e7ca5e29f3b5164082
MD5 3ccc4c450b65403c8357f77f49681980
BLAKE2b-256 3964094ccbd2cd2bda32a4251a0ad48ded098d9a3b02cc7fa1315d48d11ecbc8

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