ble2mqtt icon indicating copy to clipboard operation
ble2mqtt copied to clipboard

Support for Generic iTag buttons

Open jclds139 opened this issue 1 year ago • 1 comments

I'm trying to add support for these cheap BLE button tags but I'm struggling with what needs to be defined in a "protocol" vs a "device". They're a basic presence device but with a couple of extra features once connected:

  1. Battery percentage is a readable characteristic (some of them allow it to be notified, too)
  2. There's an "alert" characteristic that makes the device beep depending on what's written to it.
  3. There's a button that can be subscribed to to get notifications when it is clicked.

(1) seems like a straightforward sensor, (2) I'm not quite sure, but I'd imagine this could be a "select" or "switch" domain device. (3) seems the weirdest because the state is always off when read directly, and it sends an event whenever it's pressed. Any guidance or documentation I'm missing for these?

jclds139 avatar Jan 12 '24 16:01 jclds139

Hi! Protocol is an abstraction for complex communication with a device. You may ignore protocol folder if your device doesn't need to implement something odd.

There are two ways of communicating - direct connection (high battery consumption) and advertisement decoding (doesn't require connection, which allows the battery to work longer)

  1. looks like a sensor, see other devices

  2. Looks like a 'button' entity

  3. A button should be exposed to HA as 'device_automation' domain. There is no examples in the current project, but you may use https://www.home-assistant.io/integrations/device_trigger.mqtt/ as a documentation for discovery implementation and button handling from my other project https://github.com/openlumi/lumimqtt/blob/main/lumimqtt/lumimqtt.py#L269-L308 https://github.com/openlumi/lumimqtt/blob/main/lumimqtt/lumimqtt.py#L444-L468

If you have a connection, you may subscribe to a characteristic to receive data from it periodically, maybe clicks are also transmitted through this mechanism.

devbis avatar Jan 13 '24 15:01 devbis