python-mobius 0.6.0__tar.gz → 0.7.0__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.
Files changed (77) hide show
  1. {python_mobius-0.6.0 → python_mobius-0.7.0}/CHANGELOG.md +16 -0
  2. {python_mobius-0.6.0 → python_mobius-0.7.0}/PKG-INFO +1 -1
  3. {python_mobius-0.6.0 → python_mobius-0.7.0}/pyproject.toml +1 -1
  4. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/__init__.py +3 -3
  5. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/device.py +883 -217
  6. python_mobius-0.7.0/tests/test_full_poll_batch.py +229 -0
  7. python_mobius-0.7.0/tests/test_light_poll_batch.py +203 -0
  8. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_pump_schedule.py +40 -0
  9. {python_mobius-0.6.0 → python_mobius-0.7.0}/.forgejo/scripts/extract_changelog_section.py +0 -0
  10. {python_mobius-0.6.0 → python_mobius-0.7.0}/.forgejo/workflows/release.yml +0 -0
  11. {python_mobius-0.6.0 → python_mobius-0.7.0}/.gitignore +0 -0
  12. {python_mobius-0.6.0 → python_mobius-0.7.0}/LICENSE +0 -0
  13. {python_mobius-0.6.0 → python_mobius-0.7.0}/README.md +0 -0
  14. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/00-overview.md +0 -0
  15. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/01-ble-transport.md +0 -0
  16. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/02-framing-and-crc.md +0 -0
  17. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/03-attributes-and-opcodes.md +0 -0
  18. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/04-device-identity.md +0 -0
  19. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/05-scenes.md +0 -0
  20. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/06-light-schedule.md +0 -0
  21. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/07-pump-schedule.md +0 -0
  22. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/08-manufacturer-data.md +0 -0
  23. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/09-thread-coap-relay.md +0 -0
  24. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/10-known-gaps-and-open-questions.md +0 -0
  25. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/11-device-status-attributes.md +0 -0
  26. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/12-device-identity-and-address-stability.md +0 -0
  27. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/13-attribute-dump.md +0 -0
  28. {python_mobius-0.6.0 → python_mobius-0.7.0}/documentation/14-batched-attribute-reads.md +0 -0
  29. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/cli.py +0 -0
  30. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/coap.py +0 -0
  31. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/constants.py +0 -0
  32. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/crc.py +0 -0
  33. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/device_status.py +0 -0
  34. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/discovery.py +0 -0
  35. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/dump.py +0 -0
  36. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/frame.py +0 -0
  37. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/manufacturer.py +0 -0
  38. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/mesh_address.py +0 -0
  39. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/modifiers.py +0 -0
  40. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/power.py +0 -0
  41. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/pump_status.py +0 -0
  42. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/relay.py +0 -0
  43. {python_mobius-0.6.0 → python_mobius-0.7.0}/src/mobius/schedule.py +0 -0
  44. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_attributes_batch.py +0 -0
  45. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_coap.py +0 -0
  46. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_coap_indication_handling.py +0 -0
  47. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_connection_cleanup.py +0 -0
  48. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_device_control.py +0 -0
  49. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_device_status.py +0 -0
  50. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_device_summary.py +0 -0
  51. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_device_time.py +0 -0
  52. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_discovery_company_ids.py +0 -0
  53. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_dump.py +0 -0
  54. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_firmware_versions.py +0 -0
  55. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_frame.py +0 -0
  56. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_frame_sniffer.py +0 -0
  57. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_hyperdrive_device.py +0 -0
  58. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_insolation_detection.py +0 -0
  59. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_light_intensity_branching.py +0 -0
  60. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_light_schedule.py +0 -0
  61. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_manufacturer.py +0 -0
  62. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_manufacturer_lookup.py +0 -0
  63. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_mesh_address.py +0 -0
  64. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_mesh_discovery.py +0 -0
  65. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_mesh_discovery_direct_connect.py +0 -0
  66. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_metadata_batch.py +0 -0
  67. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_modifiers.py +0 -0
  68. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_networked_thread_devices.py +0 -0
  69. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_new_diagnostic_attributes.py +0 -0
  70. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_power.py +0 -0
  71. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_pump_status.py +0 -0
  72. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_pump_telemetry.py +0 -0
  73. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_relay.py +0 -0
  74. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_schedule_intensity_scalar.py +0 -0
  75. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_serial_decoding.py +0 -0
  76. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_serial_identity.py +0 -0
  77. {python_mobius-0.6.0 → python_mobius-0.7.0}/tests/test_supported_attributes.py +0 -0
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.0
4
+
5
+ - Added get_full_poll_batch() -- one round-trip for device identity +
6
+ metadata + light/pump state, confirmed 2-2.6x faster on real
7
+ hardware. Requires the caller to already know the device's own
8
+ PrimitiveType (permanent for its lifetime, so never re-fetched).
9
+ - get_current_pump_block() now accepts an optional pre-fetched
10
+ `points` param, skipping its own redundant re-fetch of the same
11
+ schedule attribute.
12
+ - Added get_light_poll_batch() -- one round-trip for a light's own
13
+ schedule, lunar/acclimation/insolation state, and Epoch/LocalTime,
14
+ falling back to the original individual reads if the batch fails.
15
+ - Extracted every light-schedule-related method's own decode/compute
16
+ logic into pure, standalone functions, laying the groundwork for
17
+ get_light_poll_batch() above. No behavior change.
18
+
3
19
  ## 0.6.0
4
20
 
5
21
  - get_metadata_batch() now falls back to individual reads if the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-mobius
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Reverse-engineered Python client for the Mobius BLE protocol (EcoTech Marine VorTech/Radion, AquaIllumination, Neptune Systems, NYOS)
5
5
  Project-URL: Homepage, https://code.r3pek.org/r3pek/python-mobius
6
6
  Project-URL: Documentation, https://code.r3pek.org/r3pek/python-mobius/src/branch/main/documentation
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "python-mobius"
7
- version = "0.6.0"
7
+ version = "0.7.0"
8
8
  description = "Reverse-engineered Python client for the Mobius BLE protocol (EcoTech Marine VorTech/Radion, AquaIllumination, Neptune Systems, NYOS)"
9
9
  readme = "README.md"
10
10
  license = { text = "GPL-2.0-only" }
@@ -56,7 +56,7 @@ from .mesh_address import (
56
56
  )
57
57
  from .relay import RelayedMobiusDevice
58
58
  from .device import (
59
- MobiusDevice, MobiusPump, LightIntensityResult,
59
+ MobiusDevice, MobiusPump, LightIntensityResult, LightPollResult, FullPollResult,
60
60
  SERVICE_GENERAL, CHAR_RX_DATA, CHAR_RX_FINAL, CHAR_TX_DATA, CHAR_TX_FINAL,
61
61
  )
62
62
  from .discovery import (
@@ -71,7 +71,7 @@ from .dump import (
71
71
  enrich_attribute_dump,
72
72
  )
73
73
 
74
- __version__ = "0.6.0"
74
+ __version__ = "0.7.0"
75
75
 
76
76
  __all__ = [
77
77
  "__version__",
@@ -117,7 +117,7 @@ __all__ = [
117
117
  "build_rloc_address", "extract_short_address", "is_short_address_derived",
118
118
  "RelayedMobiusDevice",
119
119
  # device
120
- "MobiusDevice", "MobiusPump", "LightIntensityResult",
120
+ "MobiusDevice", "MobiusPump", "LightIntensityResult", "LightPollResult", "FullPollResult",
121
121
  "SERVICE_GENERAL", "CHAR_RX_DATA", "CHAR_RX_FINAL", "CHAR_TX_DATA", "CHAR_TX_FINAL",
122
122
  # discovery
123
123
  "scan_for_mobius_devices", "scan_for_mobius_devices_with_info", "group_by_pan_id",