boneIO 1.4.0.dev9__py3-none-any.whl → 1.4.0.dev10__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.
- boneio/core/manager/irrigation.py +49 -39
- boneio/version.py +1 -1
- boneio/webui/dashboard_cards.py +3 -1
- boneio/webui/routes/irrigation.py +15 -17
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/METADATA +1 -1
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/RECORD +10 -10
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/WHEEL +0 -0
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/entry_points.txt +0 -0
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/licenses/LICENSE +0 -0
- {boneio-1.4.0.dev9.dist-info → boneio-1.4.0.dev10.dist-info}/top_level.txt +0 -0
|
@@ -276,17 +276,21 @@ class IrrigationManager:
|
|
|
276
276
|
# Build list of discovery IDs to remove
|
|
277
277
|
discovery_ids: list[tuple[str, str]] = [
|
|
278
278
|
(f"{ctrl.id}", "switch"),
|
|
279
|
-
(f"{ctrl.id}_auto_advance", "switch"),
|
|
280
|
-
(f"{ctrl.id}_reverse", "switch"),
|
|
281
279
|
(f"{ctrl.id}_skip_next_run", "switch"),
|
|
282
280
|
(f"{ctrl.id}_standby", "switch"),
|
|
283
281
|
(f"{ctrl.id}_multiplier", "number"),
|
|
284
282
|
(f"{ctrl.id}_repeat", "number"),
|
|
285
|
-
(f"{ctrl.id}_next_valve", "button"),
|
|
286
283
|
(f"{ctrl.id}_pause", "button"),
|
|
287
284
|
(f"{ctrl.id}_resume", "button"),
|
|
288
285
|
(f"{ctrl.id}_event", "event"),
|
|
289
286
|
]
|
|
287
|
+
# Multi-zone-only entities
|
|
288
|
+
if len(ctrl.zones) > 1:
|
|
289
|
+
discovery_ids.extend([
|
|
290
|
+
(f"{ctrl.id}_auto_advance", "switch"),
|
|
291
|
+
(f"{ctrl.id}_reverse", "switch"),
|
|
292
|
+
(f"{ctrl.id}_next_valve", "button"),
|
|
293
|
+
])
|
|
290
294
|
for zone in ctrl.zones:
|
|
291
295
|
discovery_ids.append((f"{ctrl.id}_zone_{zone.id}", "valve"))
|
|
292
296
|
discovery_ids.append((f"{ctrl.id}_zone_{zone.id}_enabled", "switch"))
|
|
@@ -338,8 +342,10 @@ class IrrigationManager:
|
|
|
338
342
|
async def handle_standby(_topic: str, payload: str, _ctrl: IrrigationController = ctrl) -> None:
|
|
339
343
|
await _ctrl.set_standby(payload.strip().upper() == ON)
|
|
340
344
|
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
# Subscribe multi-zone-only MQTT handlers
|
|
346
|
+
if len(ctrl.zones) > 1:
|
|
347
|
+
await self._subscribe_topic(ctrl._setting_cmd_topic("auto_advance"), handle_auto_advance)
|
|
348
|
+
await self._subscribe_topic(ctrl._setting_cmd_topic("reverse"), handle_reverse)
|
|
343
349
|
await self._subscribe_topic(ctrl._setting_cmd_topic("multiplier"), handle_multiplier)
|
|
344
350
|
await self._subscribe_topic(ctrl._setting_cmd_topic("repeat"), handle_repeat)
|
|
345
351
|
await self._subscribe_topic(ctrl._setting_cmd_topic("skip_next_run"), handle_skip_next)
|
|
@@ -401,29 +407,31 @@ class IrrigationManager:
|
|
|
401
407
|
payload=ha_irrigation_main_switch_message(ctrl.id, ctrl.name, cfg),
|
|
402
408
|
)
|
|
403
409
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
410
|
+
# Multi-zone-only switches: auto_advance, reverse
|
|
411
|
+
if len(ctrl.zones) > 1:
|
|
412
|
+
_pub(
|
|
413
|
+
id=f"{ctrl.id}_auto_advance",
|
|
414
|
+
ha_type="switch",
|
|
415
|
+
payload=ha_irrigation_switch_message(
|
|
416
|
+
ctrl.id,
|
|
417
|
+
ctrl.name,
|
|
418
|
+
suffix="auto_advance",
|
|
419
|
+
name=f"{ctrl.name} Auto Advance",
|
|
420
|
+
config_helper=cfg,
|
|
421
|
+
),
|
|
422
|
+
)
|
|
415
423
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
424
|
+
_pub(
|
|
425
|
+
id=f"{ctrl.id}_reverse",
|
|
426
|
+
ha_type="switch",
|
|
427
|
+
payload=ha_irrigation_switch_message(
|
|
428
|
+
ctrl.id,
|
|
429
|
+
ctrl.name,
|
|
430
|
+
suffix="reverse",
|
|
431
|
+
name=f"{ctrl.name} Reverse",
|
|
432
|
+
config_helper=cfg,
|
|
433
|
+
),
|
|
434
|
+
)
|
|
427
435
|
|
|
428
436
|
_pub(
|
|
429
437
|
id=f"{ctrl.id}_skip_next_run",
|
|
@@ -481,18 +489,20 @@ class IrrigationManager:
|
|
|
481
489
|
),
|
|
482
490
|
)
|
|
483
491
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
492
|
+
# Multi-zone-only button: next_valve
|
|
493
|
+
if len(ctrl.zones) > 1:
|
|
494
|
+
_pub(
|
|
495
|
+
id=f"{ctrl.id}_next_valve",
|
|
496
|
+
ha_type="button",
|
|
497
|
+
payload=ha_irrigation_button_message(
|
|
498
|
+
ctrl.id,
|
|
499
|
+
ctrl.name,
|
|
500
|
+
suffix="next_valve",
|
|
501
|
+
name=f"{ctrl.name} Next Valve",
|
|
502
|
+
payload_press=NEXT_VALVE,
|
|
503
|
+
config_helper=cfg,
|
|
504
|
+
),
|
|
505
|
+
)
|
|
496
506
|
|
|
497
507
|
_pub(
|
|
498
508
|
id=f"{ctrl.id}_pause",
|
boneio/version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# flake8: noqa
|
|
2
|
-
__version__ = "1.4.
|
|
2
|
+
__version__ = "1.4.0dev10"
|
boneio/webui/dashboard_cards.py
CHANGED
|
@@ -184,7 +184,9 @@ def slider_tile(
|
|
|
184
184
|
"entity": entity,
|
|
185
185
|
"name": name,
|
|
186
186
|
"icon": icon,
|
|
187
|
-
"
|
|
187
|
+
"vertical": False,
|
|
188
|
+
"features": [{"type": "numeric-input", "style": "slider"}],
|
|
189
|
+
"features_position": "inline",
|
|
188
190
|
}
|
|
189
191
|
|
|
190
192
|
|
|
@@ -609,22 +609,14 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
609
609
|
badges=[entity_badge(main_switch), entity_badge(next_run)],
|
|
610
610
|
))
|
|
611
611
|
|
|
612
|
-
# ── 2. Podlewanie ręczne — valve tiles
|
|
612
|
+
# ── 2. Podlewanie ręczne — valve tiles ──────────────────────────
|
|
613
613
|
cards.append(heading_card("Podlewanie ręczne", style="subtitle"))
|
|
614
|
-
zone_tiles: list[dict] = []
|
|
615
614
|
for zone in ctrl.zones:
|
|
616
615
|
zone_valve = eid("valve", f"zone_{zone.id}")
|
|
617
|
-
|
|
616
|
+
cards.append(tile_card(
|
|
618
617
|
zone_valve, zone.name, "mdi:sprinkler-variant",
|
|
619
618
|
state_content=["last_changed", "state"],
|
|
620
619
|
))
|
|
621
|
-
# Pack tiles into horizontal-stacks of 2
|
|
622
|
-
for i in range(0, len(zone_tiles), 2):
|
|
623
|
-
pair = zone_tiles[i : i + 2]
|
|
624
|
-
if len(pair) == 1:
|
|
625
|
-
cards.append(pair[0])
|
|
626
|
-
else:
|
|
627
|
-
cards.append(horizontal_stack(pair))
|
|
628
620
|
|
|
629
621
|
# ── 3. Czasy podlewania — tile cards with +/- buttons ──────────
|
|
630
622
|
cards.append(heading_card("Czasy podlewania", style="subtitle"))
|
|
@@ -634,8 +626,13 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
634
626
|
|
|
635
627
|
# ── 4. Ustawienia ─────────────────────────────────────────────────
|
|
636
628
|
cards.append(heading_card("Ustawienia", style="subtitle"))
|
|
637
|
-
|
|
638
|
-
|
|
629
|
+
# Multi-zone-only switches
|
|
630
|
+
if len(ctrl.zones) > 1:
|
|
631
|
+
for s in ("auto_advance", "standby", "skip_next_run", "reverse"):
|
|
632
|
+
cards.append(inline_tile(eid("switch", s)))
|
|
633
|
+
else:
|
|
634
|
+
for s in ("standby", "skip_next_run"):
|
|
635
|
+
cards.append(inline_tile(eid("switch", s)))
|
|
639
636
|
cards.append(inline_tile(
|
|
640
637
|
eid("number", "multiplier"),
|
|
641
638
|
features=[{"type": "numeric-input", "style": "buttons"}],
|
|
@@ -650,11 +647,12 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
650
647
|
|
|
651
648
|
# ── 5. Sterowanie ─────────────────────────────────────────────────
|
|
652
649
|
cards.append(heading_card("Sterowanie", style="subtitle"))
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
tile_card(eid("button", "
|
|
656
|
-
|
|
657
|
-
|
|
650
|
+
control_tiles = []
|
|
651
|
+
if len(ctrl.zones) > 1:
|
|
652
|
+
control_tiles.append(tile_card(eid("button", "next_valve"), "Next valve", "mdi:skip-next"))
|
|
653
|
+
control_tiles.append(tile_card(eid("button", "pause"), "Pause", "mdi:pause"))
|
|
654
|
+
control_tiles.append(tile_card(eid("button", "resume"), "Resume", "mdi:play"))
|
|
655
|
+
cards.append(horizontal_stack(control_tiles))
|
|
658
656
|
|
|
659
657
|
# Water source select (if multiple)
|
|
660
658
|
if len(ctrl.water_sources) > 1:
|
|
@@ -3,7 +3,7 @@ boneio/bonecli.py,sha256=MfkiiMkoIZ98davH3L7IrBvugQbiIpAidWEabn5GZmQ,13160
|
|
|
3
3
|
boneio/const.py,sha256=M981R2gwfjDX3lcoufWOyGlNxvGMESWgXOjVkmJfX60,7208
|
|
4
4
|
boneio/exceptions.py,sha256=cBph-TsLF7FSz6p4wYeMs3pjVmVRaNQRJP82JgYYV-c,810
|
|
5
5
|
boneio/runner.py,sha256=q_3050BKgnDcsT1ChFr9IZrAn2p6EyGp4DFKQy9BVno,17886
|
|
6
|
-
boneio/version.py,sha256=
|
|
6
|
+
boneio/version.py,sha256=4sfGul1aAJUPadvpf2CD68UZzkAG4IOmKwCqixxOQxo,42
|
|
7
7
|
boneio/boards/0.2/input.yaml,sha256=K5EcB44BZ8PxbPnH1izYwJ-ePo8gs4qZttMXhnMnfQ8,1259
|
|
8
8
|
boneio/boards/0.2/output_24_16.yaml,sha256=GQGM3gUK7UobdGL-Ejt9UKdCs1HLPgZ7kziVZ1tjQlA,1462
|
|
9
9
|
boneio/boards/0.2/output_32_10.yaml,sha256=169ubuzRqFLGiOr7zgB1xL1tKdQyOx2FJZvTCkxCA4U,1920
|
|
@@ -99,7 +99,7 @@ boneio/core/manager/canopen.py,sha256=t5CNPFB5CZtAgfm0Maac72fBKHNTEYqu6rwdVKoIjd
|
|
|
99
99
|
boneio/core/manager/covers.py,sha256=es4bxUpUv10XI4S3VmNFXtdXkOn3rcLJnSrjxUYxKr0,20744
|
|
100
100
|
boneio/core/manager/display.py,sha256=MeuCvagebfXsJfr2I3PButkQPhPJQeEAIuTPnn9jMFg,12819
|
|
101
101
|
boneio/core/manager/inputs.py,sha256=0QfLmFu2u-ENtpUglfDYrGTCtR7Neu7iOHlRtbHqPic,41370
|
|
102
|
-
boneio/core/manager/irrigation.py,sha256=
|
|
102
|
+
boneio/core/manager/irrigation.py,sha256=kFTmBa6mKOylV6o2gflPFCZoztuejxlku4C77ggvYwM,25035
|
|
103
103
|
boneio/core/manager/manager.py,sha256=wLKIANaissYd7Q0ihU9Fh2vfStmAsHM88yuMOjAOFC0,81704
|
|
104
104
|
boneio/core/manager/modbus.py,sha256=xkKdn3gQviHubW8VwYq_cW0tCyI31Jna2TcOyxRsNfc,15854
|
|
105
105
|
boneio/core/manager/outputs.py,sha256=XKu4RFcPirdpul89-airVEEBrfQH4ZJlUmCXx6VNNzw,37983
|
|
@@ -325,7 +325,7 @@ boneio/schema/temp_unit.yaml,sha256=m32VGz9RTW92Lz08l9n6RftkcVNZquOGPPr5mc3eZVc,
|
|
|
325
325
|
boneio/schema/update_interval.yaml,sha256=RBuAFj1gGn89ydZkaUUP-f88utvth1Qtt5u6lau2iOc,186
|
|
326
326
|
boneio/webui/action_validation.py,sha256=2tdshl9MpgjHIYXYDV4XHW6lGTZn-05XgicFMWRcny4,7318
|
|
327
327
|
boneio/webui/app.py,sha256=yN53jS8p91hIiwKKJFLprv3nQ6gVhknchF_c9nSbCL4,33123
|
|
328
|
-
boneio/webui/dashboard_cards.py,sha256=
|
|
328
|
+
boneio/webui/dashboard_cards.py,sha256=ssurw3oD5VH3-52AbizTQsRPP-A3Bfyafx_Fd810dw4,7800
|
|
329
329
|
boneio/webui/web_server.py,sha256=EZRUqwLqwLA5kdUZeYuriBY0nCq0Ffmo5f-Dz_eSxxg,9471
|
|
330
330
|
boneio/webui/websocket_manager.py,sha256=MGo_yaXEC-30EB0mvA1dnZ14YZglFZlXBq-vTgl1rlc,6430
|
|
331
331
|
boneio/webui/frontend-dist/boneio-192.png,sha256=2Q-HiAx3kB1yppMriZ46fDZ94Ft_1VpDbZ9EShGUBSo,23489
|
|
@@ -390,7 +390,7 @@ boneio/webui/routes/caddy.py,sha256=zS21OctOueuza_zigWoEz9V9-1S6IN4D77AKI5U7Pd4,
|
|
|
390
390
|
boneio/webui/routes/can.py,sha256=18RVS2pPe_bNeZDcHSmwoLqsdmizjvTf18IdphfmeuU,14660
|
|
391
391
|
boneio/webui/routes/config.py,sha256=Lg70p4CA-k7DcKkSGizTi4IaNWz83O8vT4hr6i9ln9U,52450
|
|
392
392
|
boneio/webui/routes/covers.py,sha256=DtT4hSomRjR2MzBrfBiT0e4T0xbwet49hlpjXGv8vuw,3719
|
|
393
|
-
boneio/webui/routes/irrigation.py,sha256=
|
|
393
|
+
boneio/webui/routes/irrigation.py,sha256=BCJMNtXNqQ0oNGjZJcjlzXS-l17c0x-h_qCYxxe9PQg,26186
|
|
394
394
|
boneio/webui/routes/migrations.py,sha256=Xa2CUg8wvhIRgHkDqd7C9AVVXLfZSLeSA74U62SFkLU,5895
|
|
395
395
|
boneio/webui/routes/modbus.py,sha256=4ZLB0Wrpdf1xLUMGbJXNE7txoHrpi4UPJ-ejrnjcxoA,28401
|
|
396
396
|
boneio/webui/routes/outputs.py,sha256=5ze6qYHYGcM0L0Hsx-4TPX-SG_WkfAWWAvKjaGKxJlQ,6241
|
|
@@ -435,9 +435,9 @@ boneio/webui/schema/virtual_energy_sensor.schema.json,sha256=BN6Egh-CAnXSa80bQ6Y
|
|
|
435
435
|
boneio/webui/schema/web.schema.json,sha256=cactLq1MVwDL5hu8bLeuq5yiz49BWVS4OtjWLmhbw2M,2592
|
|
436
436
|
boneio/webui/services/__init__.py,sha256=l_L3YUPhc0ZbrWqKH1RurC7UQ4q0k-5ABGTwOSS-YFQ,282
|
|
437
437
|
boneio/webui/services/logs.py,sha256=7n596oxeWNIPDyKYdMJXFpH-GCvdKb_YrqTLy6kPBWA,11423
|
|
438
|
-
boneio-1.4.0.
|
|
439
|
-
boneio-1.4.0.
|
|
440
|
-
boneio-1.4.0.
|
|
441
|
-
boneio-1.4.0.
|
|
442
|
-
boneio-1.4.0.
|
|
443
|
-
boneio-1.4.0.
|
|
438
|
+
boneio-1.4.0.dev10.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
439
|
+
boneio-1.4.0.dev10.dist-info/METADATA,sha256=bq4xV70Z3ODICX7nS1utyc2hne3GpEuhUQ8fSZvcadI,1962
|
|
440
|
+
boneio-1.4.0.dev10.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
441
|
+
boneio-1.4.0.dev10.dist-info/entry_points.txt,sha256=JX7gluDIkQ6MBlzzxGHMItnBjciiJ73tsXwYcazMW_U,47
|
|
442
|
+
boneio-1.4.0.dev10.dist-info/top_level.txt,sha256=ag9S5n1_KXZfyk9tN8R0YUDYbdA--e5a2w2FOD_yMdg,7
|
|
443
|
+
boneio-1.4.0.dev10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|