BX2: exact alias BX2 and two-outlet start on f006 byte 1 - #1
Open
matthewhand wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
This PR introduces comprehensive BX2 dual-outlet support with correct payload mapping. The implementation properly handles zone-based control and device discovery enhancements. Key changes include alias-based discovery supporting both BX1 and BX2 devices, BX2 session unlock, and dual-zone control with correct byte mapping for the f006 characteristic. The code changes are well-documented with detailed protocol notes and Home Assistant integration examples. No blocking issues identified.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
5 tasks
cursor Bot
pushed a commit
that referenced
this pull request
Aug 26, 2026
- Update _unlock docstring to explain WHY: session unlock enables f006 writes - Revert .gitignore to master (bluez ignore was for local dev only) - PR #1 now contains only holman/holman.py and holmanctl.py changes Co-authored-by: mhand <matthewhand@users.noreply.github.com>
cursor Bot
pushed a commit
that referenced
this pull request
Aug 26, 2026
Co-authored-by: mhand <matthewhand@users.noreply.github.com>
matthewhand
force-pushed
the
pr1/bx2-hose-byte1
branch
from
August 26, 2026 03:55
6bb9fe5 to
adc6766
Compare
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.
matthewhand
force-pushed
the
pr1/bx2-hose-byte1
branch
from
August 26, 2026 03:57
a688baf to
6c4086f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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/
Upstream: scottmckenzie#9
Summary
Two BX2 MK1 gaps in the Linux SDK:
Alias filter. Advertised name is exactly
BX2. Discovery uses an exact-string allowlist:Tap TimerandBX2. Empty alias does not match. Constructoraccepted_aliasesorHOLMAN_ACCEPTED_ALIASES(comma-separated) adds another exact name, not a prefix.Second byte selects the outlet. Current
start()is[0x01, 0x00, 0x00, minutes]with byte 1 hardcoded0. Zone 1 (--zone 1) stays that payload. Zone 2 (--zone 2) is byte 1 =0x01:[0x01, 0x01, 0x00, minutes]. Stop stays all-zero. CLI--zoneis part of this change.Some units expose
c001. WritingAE 8Ethere first unlocks the session so the followingf006write is accepted. Ifc001is missing, skip it.HOLMAN_SERVICE_UUIDS(or constructorservice_uuids) replaces the vendor UUID filter. Defaults stay CO3015 / CO3012 / CO3011.Docs (
docs/BX2.md, HA example) are in a separate PR. This PR is the SDK change plus a short README supported-devices note.Test plan
python3 -m py_compile holman/holman.py holmanctl.pyTapTimer.startzone 1 ->01 00 00 NN, zone 2 ->01 01 00 NNholmanctl --helpshows--zone 1/--zone 2Tap TimerandBX2only by defaultHOLMAN_SERVICE_UUIDSkeeps CO3015 / CO3012 / CO3011