-
released this
2026-10-11 16:25:59 +01:00 | 0 commits to main since this release- Frames that fail to parse or fail their CRC are logged at debug level.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-10-06 09:51:26 +01:00 | 2 commits to main since this release- Mesh peer discovery can raise its error (
raise_errors=True) instead
of returning an empty list on failure.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Mesh peer discovery can raise its error (
-
released this
2026-09-30 18:03:15 +01:00 | 4 commits to main since this release- Fixed lights not being read through a gateway: the poll's reply was too
large to be relayed. The schedule and scenes are now read in requests
of their own, as the app does.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Fixed lights not being read through a gateway: the poll's reply was too
-
released this
2026-09-30 16:39:03 +01:00 | 6 commits to main since this release- Added
set_time_zone(); the batched polls now include the device's time
zone strings. - Relayed requests now accept a late response to the first attempt, as
the app does. - Fixed an unreachable light returning an empty poll as a success.
- Added configuration checksums (
get_configuration_checksums(), CLI
--check-checksums). get_full_poll_batch(cache=...)reads scenes and schedules only when
their checksum changed.start_scene()now runs a scene for its configured length by default
(a duration of 0 makes the device reuse its last scene length).- Fixed a scene briefly reporting about 18 hours remaining as it ends.
- Added Bluetooth-only device support (Blades, MXM):
is_bluetooth_only()
andfind_bluetooth_only_tank_members(). The CLI connects to them
directly and includes them in schedule group writes. - Writes use the negotiated MTU instead of 20-byte fragments, as the app
does (fewer writes per request). - The pump's operation state is now part of the batched poll.
ConfigurationCache(static_refresh_interval=...)reads rarely-changing
attributes (identity, firmware, settings) only at that interval.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Added
-
released this
2026-09-24 12:26:04 +01:00 | 20 commits to main since this release- Breaking:
RelayedMobiusDevicewrites now raise an error when the
device rejects them, like direct writes already did. - Added helpers shared with ha-mobius:
enum_or_none(),
primitive_type_from_name(),support_tier(),parse_advertisement(),
schedule_capacity()/min_schedule_capacity(),format_mesh_address(),
pump_params_to_dict(),Scene.is_emptyandPUMP_PRIMITIVES. - Added pump battery settings:
set_battery_backup_speed()(limited to the
pump's battery backup max speed) andset_boosted_battery()(only while
running on battery), with the--set-battery-backup-speedand
--set-boosted-battery-*options. - Added
get_operation_mode()and theOperationModeenum; pump telemetry
now includesoperation_mode("BatteryBackup"while running on
battery). get_full_poll_batch()now includes the battery settings
(battery_backup,boosted_battery) and the operation mode.- The boosted battery power is permille (0-100 %) and its on/off times are
seconds. mobius-scan: the debug mesh listing now shows peer age as unsigned, like
the library.- Breaking: fixed the running scene's remaining time: it's now read from
SceneTimer, so it counts down, andActiveScene.timeout_secondsholds
the scene's total time.get_current_scene()returns None when no scene
is running. - Starting a scene, returning to the schedule and restarting all devices now
use the tank's group, like the app (get_tank_group(),tank_group()).
Breaking:resume_schedule()now ends the scene on every device of
the tank with one write (broadcast=Falsefor one device only). - Breaking:
set_pump_schedule()now rejects parameters outside the
ranges the app allows (for example a Short Pulse time of 0), before
writing. Addedpump_param_range()andpump_param_errors(). - Internal cleanup: removed duplicated code and simplified comments.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
2 downloads
- Breaking:
-
released this
2026-09-17 13:42:32 +01:00 | 29 commits to main since this release- Added
LightPollResult.lunar_enabled/lunar_phase_day: the device's
own actual LunarPhasesEnabled setting and current lunar-cycle phase,
correct at any time of day. Not the same as
intensities.diagnostics's ownlunar_enabled/lunar_datekeys,
which are only meaningful at night.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Added
-
released this
2026-09-17 08:41:05 +01:00 | 32 commits to main since this release- Added
set_lunar_enabled(enabled). Confirmed byte-for-byte against
the app's own compiled bytecode: exactly what its "Lunar" chip (top
of the light schedule editor) writes when toggled.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Added
-
released this
2026-09-16 09:04:58 +01:00 | 34 commits to main since this release- Added
LightPollResult.schedule_intensity: the device's own raw
schedule-level master dimmer, matchingget_schedule_intensity()'s
own return value. Not the same asintensities.diagnostics["scalar"],
which reflects whichever value is currently in effect (the lunar
reduction factor during a night segment, not the schedule intensity
setting itself).
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Added
-
released this
2026-09-12 15:32:21 +01:00 | 36 commits to main since this release- Added
get_pump_reverse(primitive_type, params): whether a pump
schedule point's MaxSpeed/MinSpeed value currently encodes reverse
rotation. Only AlpacaV1 pumps support this -- every other primitive
type always returns None. - Added
reboot_all(): soft-reboots every device on the mesh at
once, matching the app's own "Restart all Devices" tank setting.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
- Added
-
released this
2026-09-11 09:23:20 +01:00 | 40 commits to main since this release- Added
supported_pump_modes(primitive_type, closed_loop=None): the
PumpModevalues a given pump actually supports. See
documentation/07-pump-schedule.md's own "Which modes a given pump
actually supports" section. - Added schedule write support: set_light_schedule()/set_pump_schedule(),
GroupBitmap (group_mask), and --dump-schedule-file/--load-schedule-file
CLI flags. - Added support for .mob (Template) files -- export/import for both
light and pump schedules, plus --dump-mob-file/--load-mob-file CLI
flags. - --load-schedule-file/--load-mob-file now write to every device in a
light's schedule group, not just the one named, and check the whole
group's smallest schedule capacity up front so a too-large schedule
aborts cleanly instead of partially applying. - get_pump_telemetry() now also includes every other sensor value a
pump reports supporting (motor RPM, temperatures, battery/input
voltage, etc.) under a new extra_physical_values key, alongside the
existing gph/motor_power_watts. - Added get_extra_physical_values() -- the same extra sensor values as
above, for callers with no get_pump_telemetry()-equivalent method of
their own. get_device_summary() uses this for lights specifically
(ClusterTemperature/DriverTemperature/etc.), which previously had no
way to surface this data at all. - Added get_fan_thresholds() -- FanOnTemperature/FanOffTemperature,
shown unconditionally in get_device_summary().
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
- Added