casambi-bt-revamped 0.3.7.dev12__tar.gz → 0.3.7.dev13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {casambi_bt_revamped-0.3.7.dev12/src/casambi_bt_revamped.egg-info → casambi_bt_revamped-0.3.7.dev13}/PKG-INFO +1 -1
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/setup.cfg +1 -1
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_casambi.py +13 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_client.py +27 -17
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13/src/casambi_bt_revamped.egg-info}/PKG-INFO +1 -1
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/LICENSE +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/README.md +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/pyproject.toml +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/__init__.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_cache.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_constants.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_discover.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_encryption.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_keystore.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_network.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_operation.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_unit.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/errors.py +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/py.typed +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/casambi_bt_revamped.egg-info/SOURCES.txt +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/casambi_bt_revamped.egg-info/dependency_links.txt +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/casambi_bt_revamped.egg-info/requires.txt +0 -0
- {casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/casambi_bt_revamped.egg-info/top_level.txt +0 -0
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_casambi.py
RENAMED
|
@@ -683,6 +683,19 @@ class Casambi:
|
|
|
683
683
|
import json
|
|
684
684
|
data = json.dumps(switch_config, separators=(",", ":")).encode("utf-8")
|
|
685
685
|
|
|
686
|
+
# Attempt to start a switch session before sending chunks. Some devices
|
|
687
|
+
# expect an AcquireSwitchSession (opcode 42) handshake prior to ExtPacketSend.
|
|
688
|
+
try:
|
|
689
|
+
await self.start_switch_session(unit_id)
|
|
690
|
+
self._logger.info("Started switch session (AcquireSwitchSession) for unit %s", unit_id)
|
|
691
|
+
except Exception as e:
|
|
692
|
+
# Non-fatal: proceed without session if device doesn't require it.
|
|
693
|
+
self._logger.info(
|
|
694
|
+
"AcquireSwitchSession not acknowledged or unsupported for unit %s (%s); proceeding with ExtPacketSend only.",
|
|
695
|
+
unit_id,
|
|
696
|
+
e,
|
|
697
|
+
)
|
|
698
|
+
|
|
686
699
|
# Chunk into 61-byte pieces (ExtPacket payload allows 63 total minus 2-byte header)
|
|
687
700
|
max_chunk = 61
|
|
688
701
|
seq = 0
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_client.py
RENAMED
|
@@ -552,21 +552,32 @@ class CasambiClient:
|
|
|
552
552
|
# Process based on message type
|
|
553
553
|
if message_type == 0x08 or message_type == 0x10: # Switch/button events
|
|
554
554
|
switch_events_found += 1
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
button =
|
|
555
|
+
|
|
556
|
+
# Button extraction differs between type 0x08 and type 0x10
|
|
557
|
+
if message_type == 0x08:
|
|
558
|
+
# For type 0x08, the lower nibble is a code that maps to physical button id
|
|
559
|
+
# Using formula: ((code + 2) % 4) + 1 based on reverse engineering findings
|
|
560
|
+
code_nibble = parameter & 0x0F
|
|
561
|
+
button = ((code_nibble + 2) % 4) + 1
|
|
562
562
|
self._logger.debug(
|
|
563
|
-
f"
|
|
563
|
+
f"Type 0x08 button extraction: parameter=0x{parameter:02x}, code={code_nibble}, button={button}"
|
|
564
564
|
)
|
|
565
565
|
else:
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
566
|
+
# For type 0x10, use existing logic
|
|
567
|
+
button_lower = parameter & 0x0F
|
|
568
|
+
button_upper = (parameter >> 4) & 0x0F
|
|
569
|
+
|
|
570
|
+
# Use upper 4 bits if lower 4 bits are 0, otherwise use lower 4 bits
|
|
571
|
+
if button_lower == 0 and button_upper != 0:
|
|
572
|
+
button = button_upper
|
|
573
|
+
self._logger.debug(
|
|
574
|
+
f"Type 0x10 button extraction: parameter=0x{parameter:02x}, using upper nibble, button={button}"
|
|
575
|
+
)
|
|
576
|
+
else:
|
|
577
|
+
button = button_lower
|
|
578
|
+
self._logger.debug(
|
|
579
|
+
f"Type 0x10 button extraction: parameter=0x{parameter:02x}, using lower nibble, button={button}"
|
|
580
|
+
)
|
|
570
581
|
|
|
571
582
|
# For type 0x10 messages, we need to pass additional data beyond the declared payload
|
|
572
583
|
if message_type == 0x10:
|
|
@@ -705,13 +716,12 @@ class CasambiClient:
|
|
|
705
716
|
f"action={action_display} ({event_string}), flags=0x{flags:02x}"
|
|
706
717
|
)
|
|
707
718
|
|
|
708
|
-
#
|
|
719
|
+
# Log detailed info about type 0x08 messages (now processed, not filtered)
|
|
709
720
|
if message_type == 0x08:
|
|
710
|
-
self._logger.
|
|
711
|
-
f"
|
|
712
|
-
f"action={action_display}, flags=0x{flags:02x}"
|
|
721
|
+
self._logger.info(
|
|
722
|
+
f"Type 0x08 event processed: button={button}, unit_id={unit_id}, "
|
|
723
|
+
f"action={action_display}, event={event_string}, flags=0x{flags:02x}"
|
|
713
724
|
)
|
|
714
|
-
return
|
|
715
725
|
|
|
716
726
|
self._dataCallback(
|
|
717
727
|
IncommingPacketType.SwitchEvent,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_constants.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_discover.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_encryption.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_keystore.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_network.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.7.dev12 → casambi_bt_revamped-0.3.7.dev13}/src/CasambiBt/_operation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|