Skip to content

BX2 MK1: exact alias BX2 and two-outlet start on f006 byte 1 - #9

Open
matthewhand wants to merge 1 commit into
scottmckenzie:masterfrom
matthewhand:pr1/bx2-hose-byte1
Open

BX2 MK1: exact alias BX2 and two-outlet start on f006 byte 1#9
matthewhand wants to merge 1 commit into
scottmckenzie:masterfrom
matthewhand:pr1/bx2-hose-byte1

Conversation

@matthewhand

@matthewhand matthewhand commented Aug 26, 2026

Copy link
Copy Markdown

Fixes #8

Confirmed on BX2 Dual Outlet Bluetooth Tap Timer MK1 only (SKU CO3112):
https://www.holmanindustries.com.au/product/bx2-dual-outlet-bluetooth-tap-timer-mk1/

Not tested on the newer BX2:
https://www.holmanindustries.com.au/product/bx2-dual-outlet-bluetooth-tap-timer/

Summary

Two BX2 MK1 gaps in the Linux SDK:

  1. Alias filter. Advertised name is exactly BX2. Discovery uses an exact-string allowlist: Tap Timer (existing BX1) and BX2. Empty alias does not match. Constructor accepted_aliases or HOLMAN_ACCEPTED_ALIASES (comma-separated) adds another exact name, not a prefix.

  2. Second byte selects the outlet. Current start() is [0x01, 0x00, 0x00, minutes] with byte 1 hardcoded 0. Zone 1 (--zone 1) stays that payload. Zone 2 (--zone 2) is byte 1 = 0x01: [0x01, 0x01, 0x00, minutes]. Stop stays all-zero. The current CLI has no --zone; start() always writes byte 1 as 0.

start = [0x01, tap_index, 0x00, minutes]
tap_index 0 = zone 1  (--zone 1)
            1 = zone 2  (--zone 2)
stop  = [0x00, 0x00, 0x00, 0x00]

Some units expose c001. Writing AE 8E there first unlocks the session so the following f006 write is accepted. If c001 is missing, skip it.

HOLMAN_SERVICE_UUIDS (or constructor service_uuids) replaces the vendor UUID filter. Defaults stay CO3015 / CO3012 / CO3011.

This PR is the SDK change (holman/holman.py, holmanctl.py) plus a short README supported-devices note.

Test plan

  • python3 -m py_compile holman/holman.py holmanctl.py
  • TapTimer.start zone 1 -> 01 00 00 NN, zone 2 -> 01 01 00 NN
  • holmanctl --help shows --zone 1 / --zone 2
  • Discover accepts exact Tap Timer and BX2 only by default
  • Unset HOLMAN_SERVICE_UUIDS keeps CO3015 / CO3012 / CO3011

Exact alias allowlist Tap Timer + BX2. start() uses f006 byte 1 as tap
index (zone 1 = 0, zone 2 = 1). Unlock AE 8E on c001 when present.
Env/constructor overrides for extra aliases and service UUIDs. CLI gains --zone.

Confirmed on BX2 Dual Outlet MK1 (SKU CO3112) only. Newer BX2 not tested.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BX2: exact alias BX2 and two-outlet start on f006 byte 1

1 participant