Skip to main content

Library to control Fellow Stagg Kettle EKG+

Project description

fellow-py

Huge thanks to emlove for paving the way on using Bleak in a library used in implementing a custom bluetooth component in HA. Any similarities my library may take to hers are not deliberate copying and pasting, but her library was an awesome example to follow and so my patterns were likely heavily influenced by her work.

Also huge thanks to u/bobobalooga on Reddit. They posted a fantastic breakdown of their discovery of how the Fellow kettle app talked to the kettle over BLE which enabled me to implement the logic in Python. Definitely standing on their shoulders here.

fellow-py is a library for controlling Fellow bluetooth devices (of which I am only aware of one at this time). So, more precisely speaking, it is a library for controlling their Stagg EKG+ Kettle.

This library currently supports connecting, turning on, setting the target temperature, turning off, and disconnecting. The library automatically subscribes to the 2a80 characteristic of the 1820 service on the kettle. The handler for the notifications the device sends to the connecting device will set the current and target temperature properties on the kettle object for the user to observe. The kettle object also implements a temperature graph that helps determine an average warming rate of the kettle. The purpose of this is to be able to identify if there's not enough water in the kettle. The library currently doesn't support device discovery, but it easily could in the near future. For now it simply implements a discover module that allows for obtaining a kettle given a mac address so as to instantiate the StaggEKGPlusKettle class.

Usage

import asyncio
import fellow

async def main()
    kettle = fellow.StaggEKGPlusKettle("MA:CA:DD:RE:SS:01")

    try:
        await kettle.connect()
        await kettle.turn_on()

        await asyncio.sleep(5)

        print(kettle.current_temperature, kettle.target_temperature)

        await kettle.set_target_temperature(206)

        await asyncio.sleep(2)

        print(kettle.current_temperature, kettle.target_temperature)

        await kettle.turn_off()
        await kettle.disconnect()

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Tests coming soon :)

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

fellow-py-0.2.3.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

fellow_py-0.2.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file fellow-py-0.2.3.tar.gz.

File metadata

  • Download URL: fellow-py-0.2.3.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for fellow-py-0.2.3.tar.gz
Algorithm Hash digest
SHA256 34162d99927ef3a7e9c253cf679f839a9a3f1e8eb91611c1f5a1b5cd5349880f
MD5 2e40f12b3541a3cbfbe8860e3327ca03
BLAKE2b-256 0ac323a7f617658889422a1ddc09bfe67f1fc3d3526e5d9cf5038f65011139aa

See more details on using hashes here.

File details

Details for the file fellow_py-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: fellow_py-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for fellow_py-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2cf34436df6c02000f8fe906881b59cf06047e0ed3434eee2fea67aff65d323a
MD5 dbf8e39bc29b79478fa54dc0be4e23b5
BLAKE2b-256 44d1ef824dd9da6c5ac7480243c9642b92f38d1ef193e0614fbd427e9fa56eeb

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