Skip to main content

Asynchronous Python TCP Client for FlicHub

Project description

Asynchronous Python TCP Client for FlicHub

Get events from the FlicHub when a Flic/Twist Button is clicked and send them to home-assistant-flichub.

To be able to use this client you need to enable the Flic Hub SDK described on this page.

Create a new module and name it pyflichub-tcpclient (or any name) and paste the code found in tcpserver.js in the editor and press play. Check the box "Restart after crash or reboot."

This will open a TCP Server on port 8124 (configurable by changing PORT)

Usage

import asyncio
from pyflichub.client import FlicHubTcpClient
from pyflichub.button import FlicButton
from pyflichub.event import Event

def event_callback(button: FlicButton, event: Event):
    print(f"Received event: {event.event}")
    if button:
        print(f"Button: {button.name} ({button.bdaddr})")

    if event.event == 'button':
        print(f"Action: {event.action}")

def command_callback(cmd):
    print(f"Received command: {cmd.command}")

async def main():
    loop = asyncio.get_event_loop()
    client = FlicHubTcpClient(
        ip='192.168.1.100',
        port=8124,
        loop=loop,
        event_callback=event_callback,
        command_callback=command_callback
    )

    await client.async_connect()

    # Retrieve all buttons
    buttons = await client.get_buttons()
    print(f"Found {len(buttons)} buttons.")

    # Keep the connection alive
    while True:
        await asyncio.sleep(1)

if __name__ == '__main__':
    asyncio.run(main())

Emitted Events

The following events are explicitly dispatched to the event_callback provided during initialization:

  • button: Fired when a button interaction occurs (e.g. click, double-click, hold). Provides the action type in event.action ('down', 'up', 'single', 'double', 'hold', 'idle').
  • buttonAdded: Fired when a new button is paired to the hub. The library will automatically try to fetch its details in the background. The button argument to the callback may be None initially.
  • buttonDeleted: Fired when a button is unpaired/deleted.
  • buttonConnected: Fired when a button makes a physical connection to the hub.
  • buttonDisconnected: Fired when the connection to the button drops.
  • buttonReady: Fired when the button connection has been fully verified and is ready for use.
  • actionMessage: Fired when a Flic Hub Studio message action is executed (configured as a trigger in the Flic app).
  • virtualDeviceUpdate: Fired when a Flic Twist rotates to control a virtual device. Contains values in event.values (like brightness, volume, etc.).

Disclaimer

This python library was not made by Flic. It is not official, not developed, and not supported by Flic.

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

pyflichub_tcpclient-0.1.14.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

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

pyflichub_tcpclient-0.1.14-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file pyflichub_tcpclient-0.1.14.tar.gz.

File metadata

  • Download URL: pyflichub_tcpclient-0.1.14.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pyflichub_tcpclient-0.1.14.tar.gz
Algorithm Hash digest
SHA256 95263b31d44a9563b4ff0d7a41cf0167bc081abb3cb26e09d422877b5396a937
MD5 eb01d53934115b74cf230bc6480e3cf9
BLAKE2b-256 eaf90f6adb584d327019e66dd6c9e7e04cfa8bd1df90456e2e68419441e14e11

See more details on using hashes here.

File details

Details for the file pyflichub_tcpclient-0.1.14-py3-none-any.whl.

File metadata

File hashes

Hashes for pyflichub_tcpclient-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 a0e0186c417a2e94aed19a9c0a144509df0f09132f483a8ec429806aa0b09685
MD5 39b1b24ad90fc1d95de6dbfe0ec1e98e
BLAKE2b-256 152ec1b6895ebe9eff1a11d1c88af591b7bf0c7fea66baef2ba8ea0b25063afc

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