python-mobius 0.8.2__py3-none-any.whl → 0.8.3__py3-none-any.whl

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.
mobius/__init__.py CHANGED
@@ -82,7 +82,7 @@ from .mob import (
82
82
  MAX_PUMP_PRIMITIVE_SIZE,
83
83
  )
84
84
 
85
- __version__ = "0.8.2"
85
+ __version__ = "0.8.3"
86
86
 
87
87
  __all__ = [
88
88
  "__version__",
mobius/device.py CHANGED
@@ -3463,6 +3463,35 @@ class MobiusDevice:
3463
3463
  return False
3464
3464
  return decode_lunar_enabled(raw)
3465
3465
 
3466
+ async def set_lunar_enabled(self, enabled: bool) -> None:
3467
+ """Writes LunarPhasesEnabled (907) -- confirmed byte-for-byte
3468
+ against the app's own compiled bytecode (LunarInfo.smali's own
3469
+ save() method): a single byte, the boolean enabled field stored
3470
+ directly as 0 or 1, via the exact same SetC2AttrFsciRequest.
3471
+ addAttribute() mechanism this library's own set_attribute()
3472
+ uses. This is exactly what the app's own "Lunar" chip (top of
3473
+ the light schedule editor) toggles: clicking it turns
3474
+ lunar-phase night-time dimming on/off, and while enabled that
3475
+ same chip also displays the current moon phase.
3476
+
3477
+ No group/broadcast involved -- confirmed by tracing
3478
+ LightingFragment's own saveLunar(), which loops over every
3479
+ light device in the tank and calls this same per-device,
3480
+ ungrouped write on EACH one individually (not a single
3481
+ mesh-wide broadcast the way set_time_to_now() works). The
3482
+ app's own UI applies the same new value to every light in the
3483
+ tank with that one tap, but the underlying wire mechanism is
3484
+ still one ordinary, targeted write per device -- this method
3485
+ only ever writes to the single device it's called on, matching
3486
+ every other attribute write in this library.
3487
+
3488
+ No which/schedule parameter -- unlike Schedule1Intensity/
3489
+ Schedule2Intensity, there's only ever a single
3490
+ LunarPhasesEnabled attribute (confirmed: no LunarPhasesEnabled2
3491
+ exists), so this applies to the light as a whole rather than to
3492
+ either schedule individually."""
3493
+ await self.set_attribute(C2Attribute.LunarPhasesEnabled, bytes([1 if enabled else 0]))
3494
+
3466
3495
  async def get_acclimation_info(self) -> Optional[AcclimationInfo]:
3467
3496
  """
3468
3497
  Fetches all 4 acclimation attributes (AcclimationEnabled/Period/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-mobius
3
- Version: 0.8.2
3
+ Version: 0.8.3
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
@@ -1,9 +1,9 @@
1
- mobius/__init__.py,sha256=yON2rPOxmGrhuAQ753NNSXkaUWFuUCc3R5JZTbRkvlY,7620
1
+ mobius/__init__.py,sha256=iTc-wZIgqWdeg6BhIqWBvC-bBmgbkyWZ6nZeCoMsePI,7620
2
2
  mobius/cli.py,sha256=DJNKcBB7VCROZ90QmFWeCkRzPCRfoTaeTZaCLJ41s-Y,79735
3
3
  mobius/coap.py,sha256=ZRBy8ivgl1o2cVLjIp-df8Jg34c58K0_1Oec1P-gQI4,10464
4
4
  mobius/constants.py,sha256=OlbC0GSPT3Lp7rGfIqSMkAqY535oNNRRoOd15TTVt7k,46286
5
5
  mobius/crc.py,sha256=T6PWTp3gAHu-C05ua2LH8z8leD8mSjizM7nuC9G8KhU,2643
6
- mobius/device.py,sha256=Ti6jBr_gXDXXM2SlqLYV471p1tIhdDk4NTiBTWNXxPY,201501
6
+ mobius/device.py,sha256=L1ReDPyrdYcKddF1FR02-0b1S1nsfYjLWmA_ElLob-s,203228
7
7
  mobius/device_status.py,sha256=tKZwi12fS3PVl7F-Pr5tvTNOTAttaOtAWom7ahl0LZM,33080
8
8
  mobius/discovery.py,sha256=-N_RK8ZK91Ep-XePm9cHJa44yKiBL_Ind9wFHi_TZ-8,11742
9
9
  mobius/dump.py,sha256=2uy-bq8Ja2W3D4dz9VboSO_KqYQ4bE8xmVxYTxWOjXg,16525
@@ -17,8 +17,8 @@ mobius/pump_status.py,sha256=qLprWM0gAoltZj7w8ykdXHPfBDMl-QnBOwrmBlvknIA,1536
17
17
  mobius/relay.py,sha256=BmUc1l0mDOt9isTGs7wCh0NxehbMxfaTzm3cYs7VucA,26445
18
18
  mobius/scenes.py,sha256=Wt0Ys2x1YjF8MNDEd6kxWqYBIYPdBSbfzXD-L5ZKzag,3592
19
19
  mobius/schedule.py,sha256=BDm8Uh8O85AlAZuR7i7pgqKC2GNXcV_HikFoG6_3Xgo,17590
20
- python_mobius-0.8.2.dist-info/METADATA,sha256=w2YtMRx_vpnctt1CYM-VEw-uDomBvXawtGpgl_BFC6Q,9899
21
- python_mobius-0.8.2.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
22
- python_mobius-0.8.2.dist-info/entry_points.txt,sha256=Q2hlcek-bWm70zvd12v32essflPgC2su-dKDHAqbPoE,48
23
- python_mobius-0.8.2.dist-info/licenses/LICENSE,sha256=7a72Msu2Q-TnoiFxemxEGkwafJGObk1W3rw9hzmyM_Y,17984
24
- python_mobius-0.8.2.dist-info/RECORD,,
20
+ python_mobius-0.8.3.dist-info/METADATA,sha256=5xtsO-Z5dG_yLyPJ3nb5sTtCumcEBuFA5oGnJLST2xk,9899
21
+ python_mobius-0.8.3.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
22
+ python_mobius-0.8.3.dist-info/entry_points.txt,sha256=Q2hlcek-bWm70zvd12v32essflPgC2su-dKDHAqbPoE,48
23
+ python_mobius-0.8.3.dist-info/licenses/LICENSE,sha256=7a72Msu2Q-TnoiFxemxEGkwafJGObk1W3rw9hzmyM_Y,17984
24
+ python_mobius-0.8.3.dist-info/RECORD,,