boneIO 1.4.0.dev7__py3-none-any.whl → 1.4.0.dev9__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.
@@ -551,6 +551,10 @@ class IrrigationManager:
551
551
  ),
552
552
  )
553
553
 
554
+ # Duration max: configured time + 20min, clamped to [30, 120]
555
+ zone_duration_min = max(1, round(zone.run_duration / 60))
556
+ duration_max = min(120, max(30, zone_duration_min + 20))
557
+
554
558
  _pub(
555
559
  id=f"{ctrl.id}_zone_{zone.id}_duration",
556
560
  ha_type="number",
@@ -560,7 +564,7 @@ class IrrigationManager:
560
564
  suffix=f"zone/{zone.id}/duration",
561
565
  name=f"{ctrl.name} {zone.name} Duration",
562
566
  min_val=1,
563
- max_val=1440,
567
+ max_val=duration_max,
564
568
  step=1,
565
569
  unit="min",
566
570
  config_helper=cfg,
boneio/schema/schema.yaml CHANGED
@@ -473,12 +473,13 @@ modbus_devices:
473
473
  - lower
474
474
  allowed:
475
475
  [
476
+ 'boneio-edge-temp',
476
477
  'cwt',
477
478
  'dts1964_3f',
478
479
  'dyp-a12-ultrasonic',
480
+ 'eht-topventil-plus',
479
481
  'gdfs',
480
482
  'gdfx',
481
- 'boneio-edge-temp',
482
483
  'liquid-sensor',
483
484
  'orno-or-we-517',
484
485
  'pt100',
@@ -496,7 +497,6 @@ modbus_devices:
496
497
  'sofar',
497
498
  'ventclear',
498
499
  'esp32_relay_x4_modbus',
499
- 'eht-topventil-plus'
500
500
  ]
501
501
  meta:
502
502
  label: Model to load from database.
boneio/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # flake8: noqa
2
- __version__ = "1.4.0dev7"
2
+ __version__ = "1.4.0dev9"
@@ -184,10 +184,38 @@ def slider_tile(
184
184
  "entity": entity,
185
185
  "name": name,
186
186
  "icon": icon,
187
- "features": [{"type": "numeric-input", "style": "slider"}],
187
+ "features": [{"type": "numeric-input", "style": "buttons"}],
188
188
  }
189
189
 
190
190
 
191
+ def inline_tile(
192
+ entity: str,
193
+ features: list[dict[str, Any]] | None = None,
194
+ ) -> dict[str, Any]:
195
+ """Create a compact inline tile card using the entity's HA name.
196
+
197
+ Uses ``name: {type: entity}`` so HA displays the entity's friendly
198
+ name automatically. ``features_position`` is always ``inline``.
199
+
200
+ Args:
201
+ entity: Full HA entity ID.
202
+ features: Optional features list (e.g. ``[{type: numeric-input}]``).
203
+
204
+ Returns:
205
+ Inline tile card dict.
206
+ """
207
+ card: dict[str, Any] = {
208
+ "type": "tile",
209
+ "entity": entity,
210
+ "name": {"type": "entity"},
211
+ "vertical": False,
212
+ "features_position": "inline",
213
+ }
214
+ if features:
215
+ card["features"] = features
216
+ return card
217
+
218
+
191
219
  def entities_card(
192
220
  entities: list[str | dict[str, Any]],
193
221
  title: str = "",
@@ -1847,7 +1847,7 @@
1847
1847
  "ventclear"
1848
1848
  ],
1849
1849
  "examples": [
1850
- "cwt"
1850
+ "boneio-edge-temp"
1851
1851
  ],
1852
1852
  "description": "Model to load from database.",
1853
1853
  "title": "Model"
@@ -113,7 +113,7 @@
113
113
  "ventclear"
114
114
  ],
115
115
  "examples": [
116
- "cwt"
116
+ "boneio-edge-temp"
117
117
  ],
118
118
  "description": "Model to load from database.",
119
119
  "title": "Model"
@@ -551,6 +551,7 @@ from boneio.webui.dashboard_cards import (
551
551
  entity_badge,
552
552
  heading_card,
553
553
  horizontal_stack,
554
+ inline_tile,
554
555
  sensor_tile,
555
556
  slider_tile,
556
557
  tile_card,
@@ -577,6 +578,16 @@ def _irr_id(serial: str, entity_type: str, ctrl_id: str, suffix: str = "") -> st
577
578
  def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
578
579
  """Generate HA dashboard cards for a single irrigation controller.
579
580
 
581
+ Layout:
582
+ 1. Header — controller name + main switch badge + next run badge
583
+ 2. Podlewanie ręczne — valve tiles for manual control
584
+ 3. Czasy podlewania — zone durations (inline entities card)
585
+ 4. Ustawienia — auto-advance, standby, multiplier, etc.
586
+ 5. Sterowanie — pause / resume / next valve buttons
587
+ 6. Harmonogramy — schedule skip switches
588
+ 7. Sensory — zone end time, next run time
589
+ 8. Zdarzenia — event entity
590
+
580
591
  Args:
581
592
  ctrl: IrrigationController instance.
582
593
  serial: Device serial number.
@@ -591,64 +602,76 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
591
602
  next_run = eid("sensor", "next_run_time")
592
603
  zone_end = eid("sensor", "zone_end_time")
593
604
 
594
- # Controller header
605
+ # ── 1. Controller header ──────────────────────────────────────────
595
606
  cards.append(heading_card(
596
607
  f"🌿 {ctrl.name}",
597
608
  style="title",
598
609
  badges=[entity_badge(main_switch), entity_badge(next_run)],
599
610
  ))
600
611
 
601
- # Settings entities
602
- controls: list[str | dict] = [
603
- eid("switch", s) for s in ("auto_advance", "standby", "skip_next_run", "reverse")
604
- ]
605
- controls.append(eid("number", "multiplier"))
606
- controls.append(eid("number", "repeat"))
607
- cards.append(entities_card(controls, title="Ustawienia"))
612
+ # ── 2. Podlewanie ręczne — valve tiles in rows of 2 ──────────────
613
+ cards.append(heading_card("Podlewanie ręczne", style="subtitle"))
614
+ zone_tiles: list[dict] = []
615
+ for zone in ctrl.zones:
616
+ zone_valve = eid("valve", f"zone_{zone.id}")
617
+ zone_tiles.append(tile_card(
618
+ zone_valve, zone.name, "mdi:sprinkler-variant",
619
+ state_content=["last_changed", "state"],
620
+ ))
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))
608
628
 
609
- # Action buttons
629
+ # ── 3. Czasy podlewania — tile cards with +/- buttons ──────────
630
+ cards.append(heading_card("Czasy podlewania", style="subtitle"))
631
+ for zone in ctrl.zones:
632
+ zone_duration = eid("number", f"zone_{zone.id}_duration")
633
+ cards.append(slider_tile(zone_duration, f"{zone.name} czas"))
634
+
635
+ # ── 4. Ustawienia ─────────────────────────────────────────────────
636
+ cards.append(heading_card("Ustawienia", style="subtitle"))
637
+ for s in ("auto_advance", "standby", "skip_next_run", "reverse"):
638
+ cards.append(inline_tile(eid("switch", s)))
639
+ cards.append(inline_tile(
640
+ eid("number", "multiplier"),
641
+ features=[{"type": "numeric-input", "style": "buttons"}],
642
+ ))
643
+ cards.append(inline_tile(
644
+ eid("number", "repeat"),
645
+ features=[{"type": "numeric-input", "style": "buttons"}],
646
+ ))
647
+ # Schedule skip switches (inline, folded into Ustawienia)
648
+ for idx, _sched in enumerate(ctrl._schedule):
649
+ cards.append(inline_tile(eid("switch", f"schedule_{idx}_skip")))
650
+
651
+ # ── 5. Sterowanie ─────────────────────────────────────────────────
652
+ cards.append(heading_card("Sterowanie", style="subtitle"))
610
653
  cards.append(horizontal_stack([
611
- button_card(eid("button", "pause"), "Pauza", "mdi:pause"),
612
- button_card(eid("button", "resume"), "Wznów", "mdi:play"),
613
- button_card(eid("button", "next_valve"), "Następna", "mdi:skip-next"),
654
+ tile_card(eid("button", "next_valve"), "Next valve", "mdi:skip-next"),
655
+ tile_card(eid("button", "pause"), "Pause", "mdi:pause"),
656
+ tile_card(eid("button", "resume"), "Resume", "mdi:play"),
614
657
  ]))
615
658
 
616
659
  # Water source select (if multiple)
617
660
  if len(ctrl.water_sources) > 1:
618
- cards.append(entities_card([eid("select", "water_source")], title="Źródło wody"))
661
+ cards.append(heading_card("Źródło wody", style="subtitle"))
662
+ cards.append(tile_card(
663
+ eid("select", "water_source"), "Źródło wody", "mdi:water-pump",
664
+ features=[{"type": "select-options"}],
665
+ features_position="inline",
666
+ ))
619
667
 
620
- # Sensors row
668
+ # ── 7. Sensory ────────────────────────────────────────────────────
621
669
  cards.append(horizontal_stack([
622
670
  sensor_tile(zone_end, "Koniec strefy", "mdi:timer-sand", state_content=["state", "last_changed"]),
623
671
  sensor_tile(next_run, "Następne uruchomienie", "mdi:calendar-clock", state_content=["state", "last_changed"]),
624
672
  ]))
625
673
 
626
- # Zone cards
627
- for zone in ctrl.zones:
628
- zone_valve = eid("valve", f"zone_{zone.id}")
629
- zone_enabled = eid("switch", f"zone_{zone.id}_enabled")
630
- zone_duration = eid("number", f"zone_{zone.id}_duration")
631
-
632
- cards.append(heading_card(
633
- zone.name, style="subtitle",
634
- badges=[entity_badge(zone_valve), entity_badge(zone_enabled)],
635
- ))
636
- cards.append(tile_card(
637
- zone_valve, zone.name, "mdi:sprinkler-variant",
638
- state_content=["last_changed", "state"],
639
- ))
640
- cards.append(slider_tile(zone_duration, f"{zone.name} czas"))
641
-
642
- # Schedule skip switches
643
- for idx, sched in enumerate(ctrl._schedule):
644
- sched_skip = eid("switch", f"schedule_{idx}_skip")
645
- time_str = sched.get("time", "")
646
- days_str = sched.get("days", "daily")
647
- cards.append(entities_card(
648
- [sched_skip], title=f"Harmonogram {idx + 1}: {time_str} ({days_str})",
649
- ))
650
-
651
- # Event entity
674
+ # ── 8. Zdarzenia ──────────────────────────────────────────────────
652
675
  cards.append(entities_card([eid("event", "event")], title="Zdarzenia"))
653
676
 
654
677
  return cards
@@ -1847,7 +1847,7 @@
1847
1847
  "ventclear"
1848
1848
  ],
1849
1849
  "examples": [
1850
- "cwt"
1850
+ "boneio-edge-temp"
1851
1851
  ],
1852
1852
  "description": "Model to load from database.",
1853
1853
  "title": "Model"
@@ -113,7 +113,7 @@
113
113
  "ventclear"
114
114
  ],
115
115
  "examples": [
116
- "cwt"
116
+ "boneio-edge-temp"
117
117
  ],
118
118
  "description": "Model to load from database.",
119
119
  "title": "Model"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.4.0.dev7
3
+ Version: 1.4.0.dev9
4
4
  Summary: Python App for BoneIO
5
5
  Author-email: Paweł Szafer <pszafer@gmail.com>
6
6
  License: GNU General Public License v3.0
@@ -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=VMNunywc-H9Wsw2ImaSB9XmHaEoMmti_sB9I2Vi0oHw,41
6
+ boneio/version.py,sha256=vKazO0zF1I5OzjFuSDHgk3Lqa2HWK_JR8DIUaKd9Z-I,41
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=ZU0w9p5UOduPh04aDK4baz6B09rc3FCmdBO9tWMmYak,24291
102
+ boneio/core/manager/irrigation.py,sha256=UjDPtJq-naNRZGS47qgHMQ0ixkfz6O-Rj8dZPk7UPXk,24513
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
@@ -320,12 +320,12 @@ boneio/schema/id.yaml,sha256=vHI_6dxkJwoiGp5ien_pPpyaWA1F06eirTgfWMyWa1E,75
320
320
  boneio/schema/remote_devices.yaml,sha256=VzuyTGfe5DMs2kBncXZIf48dvnB7UrbtXPsne_N9UDk,13163
321
321
  boneio/schema/remote_inputs.yaml,sha256=k-e_CekwUNXvLeScjQk7zgnInfkIttPluxNBC-9g308,3633
322
322
  boneio/schema/remote_outputs.yaml,sha256=6-G6JqvohtC8Jdgd4lZRzcIm8NJS-sSump2bQFx28NY,5553
323
- boneio/schema/schema.yaml,sha256=xTJErSNV_eph2KcZE1F64GvBjyptfd3A_2KUJndcopQ,68601
323
+ boneio/schema/schema.yaml,sha256=I8Z9DgTPynbgRJXwv3H9XgRUN-sz2z8J7HEH2fPo4tA,68602
324
324
  boneio/schema/temp_unit.yaml,sha256=m32VGz9RTW92Lz08l9n6RftkcVNZquOGPPr5mc3eZVc,65
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=z69wNAsClA94fLHVcRpsaqAVHjLRwE2uYKpPhuoc-8Y,6985
328
+ boneio/webui/dashboard_cards.py,sha256=FTqPD6Dfwn9NZsBBmvEiTNbq_R6Ha-G5MOBtMbrxpWM,7735
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
@@ -355,7 +355,7 @@ boneio/webui/frontend-dist/schema/areas.schema.json,sha256=j_hStMbVMyz1EQEyRuiJg
355
355
  boneio/webui/frontend-dist/schema/binary_sensor.schema.json,sha256=LReSwoNFGhIrM2k3BgluFFzC7vWTG9onA6M4Jx0lr6w,45222
356
356
  boneio/webui/frontend-dist/schema/boneio.schema.json,sha256=kfyxncMiR6MWrTBzq6fJhW_ttfN5lc0fell2lkbByc0,3470
357
357
  boneio/webui/frontend-dist/schema/can.schema.json,sha256=TLYvw9OvRX1z6URVwAjswzx8GOh1pYyW0dezC7JNNUY,3060
358
- boneio/webui/frontend-dist/schema/config.schema.json,sha256=NZl2ZMOu3uIxEs1hx3J3kqbaYST87ihVJ7FonnsA8H4,305906
358
+ boneio/webui/frontend-dist/schema/config.schema.json,sha256=mFH_2hT-LCsjCS_gj7UD-4CnZbjXJNXCAzEJZgZpAC4,305919
359
359
  boneio/webui/frontend-dist/schema/cover.schema.json,sha256=SqBoTiGFf89SD8MSJumG6jRq2CofuHfpXSVyUuK46fo,5133
360
360
  boneio/webui/frontend-dist/schema/dallas.schema.json,sha256=ACVJTdRC_GscIlISbE5QHl9pOMVo3Dk3qz7YW7wHGzQ,581
361
361
  boneio/webui/frontend-dist/schema/ds2482.schema.json,sha256=cZSfFH4r-Uwk5WHnla4dq_xHu_5hmAmwm7bpjcfLGrc,838
@@ -368,7 +368,7 @@ boneio/webui/frontend-dist/schema/lox_udp.schema.json,sha256=QT-ZU5S4wEZ-DRp0-XF
368
368
  boneio/webui/frontend-dist/schema/mcp23017.schema.json,sha256=yyOjUljFQ3Hm8mdS7kqH7SxJBKfDlHmvf3btz4UmrxI,1272
369
369
  boneio/webui/frontend-dist/schema/mcp9808.schema.json,sha256=_V7oxg0sYsUBnbz_5UKFqKX8MsgPHVmZ_kXn3Nl3QGs,1977
370
370
  boneio/webui/frontend-dist/schema/modbus.schema.json,sha256=MVSUEuytrWacP75t5NPJlW3tA0c6_TbyLm-ctGzgZdI,2273
371
- boneio/webui/frontend-dist/schema/modbus_devices.schema.json,sha256=bDvPymfqdnGgNtGfyuuTj9o63JrrSghWZGXMim4gd1Q,6554
371
+ boneio/webui/frontend-dist/schema/modbus_devices.schema.json,sha256=rgz4JZkW1grlEdbWjN4Mp7TQxR4gs5j1bEwd7d6-7iM,6567
372
372
  boneio/webui/frontend-dist/schema/mqtt.schema.json,sha256=9KGhw8IUBUsshXkLUd4Bnf0CDbIScd2h19HU6JgG3lc,4206
373
373
  boneio/webui/frontend-dist/schema/oled.schema.json,sha256=drsymbGPwbsRVbI_GNkjSEMJhIfW-JGxlf4U0L5qWcY,2960
374
374
  boneio/webui/frontend-dist/schema/output.schema.json,sha256=5VfNqtqwFg9XEOUZ1Ekov5ImF9xhJaCUi1DqXgNDvQM,6307
@@ -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=szMILjArRhwSpX922hd-Wb-4coQW97ejaLm1N52ePsg,24234
393
+ boneio/webui/routes/irrigation.py,sha256=5mG3rOdQApm33eUmuV7I1uo9D7lwtY7b8gi2wk91sfM,26157
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
@@ -406,7 +406,7 @@ boneio/webui/schema/areas.schema.json,sha256=j_hStMbVMyz1EQEyRuiJganfyLcSqsZsVzd
406
406
  boneio/webui/schema/binary_sensor.schema.json,sha256=LReSwoNFGhIrM2k3BgluFFzC7vWTG9onA6M4Jx0lr6w,45222
407
407
  boneio/webui/schema/boneio.schema.json,sha256=kfyxncMiR6MWrTBzq6fJhW_ttfN5lc0fell2lkbByc0,3470
408
408
  boneio/webui/schema/can.schema.json,sha256=TLYvw9OvRX1z6URVwAjswzx8GOh1pYyW0dezC7JNNUY,3060
409
- boneio/webui/schema/config.schema.json,sha256=NZl2ZMOu3uIxEs1hx3J3kqbaYST87ihVJ7FonnsA8H4,305906
409
+ boneio/webui/schema/config.schema.json,sha256=mFH_2hT-LCsjCS_gj7UD-4CnZbjXJNXCAzEJZgZpAC4,305919
410
410
  boneio/webui/schema/cover.schema.json,sha256=SqBoTiGFf89SD8MSJumG6jRq2CofuHfpXSVyUuK46fo,5133
411
411
  boneio/webui/schema/dallas.schema.json,sha256=ACVJTdRC_GscIlISbE5QHl9pOMVo3Dk3qz7YW7wHGzQ,581
412
412
  boneio/webui/schema/ds2482.schema.json,sha256=cZSfFH4r-Uwk5WHnla4dq_xHu_5hmAmwm7bpjcfLGrc,838
@@ -419,7 +419,7 @@ boneio/webui/schema/lox_udp.schema.json,sha256=QT-ZU5S4wEZ-DRp0-XFR3TdSRtHY3ev4L
419
419
  boneio/webui/schema/mcp23017.schema.json,sha256=yyOjUljFQ3Hm8mdS7kqH7SxJBKfDlHmvf3btz4UmrxI,1272
420
420
  boneio/webui/schema/mcp9808.schema.json,sha256=_V7oxg0sYsUBnbz_5UKFqKX8MsgPHVmZ_kXn3Nl3QGs,1977
421
421
  boneio/webui/schema/modbus.schema.json,sha256=MVSUEuytrWacP75t5NPJlW3tA0c6_TbyLm-ctGzgZdI,2273
422
- boneio/webui/schema/modbus_devices.schema.json,sha256=bDvPymfqdnGgNtGfyuuTj9o63JrrSghWZGXMim4gd1Q,6554
422
+ boneio/webui/schema/modbus_devices.schema.json,sha256=rgz4JZkW1grlEdbWjN4Mp7TQxR4gs5j1bEwd7d6-7iM,6567
423
423
  boneio/webui/schema/mqtt.schema.json,sha256=9KGhw8IUBUsshXkLUd4Bnf0CDbIScd2h19HU6JgG3lc,4206
424
424
  boneio/webui/schema/oled.schema.json,sha256=drsymbGPwbsRVbI_GNkjSEMJhIfW-JGxlf4U0L5qWcY,2960
425
425
  boneio/webui/schema/output.schema.json,sha256=5VfNqtqwFg9XEOUZ1Ekov5ImF9xhJaCUi1DqXgNDvQM,6307
@@ -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.dev7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
439
- boneio-1.4.0.dev7.dist-info/METADATA,sha256=5lSEIw5EYyAmt-v0kQ2v76U0oKYZ6CE63lXFP8XXPxc,1961
440
- boneio-1.4.0.dev7.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
441
- boneio-1.4.0.dev7.dist-info/entry_points.txt,sha256=JX7gluDIkQ6MBlzzxGHMItnBjciiJ73tsXwYcazMW_U,47
442
- boneio-1.4.0.dev7.dist-info/top_level.txt,sha256=ag9S5n1_KXZfyk9tN8R0YUDYbdA--e5a2w2FOD_yMdg,7
443
- boneio-1.4.0.dev7.dist-info/RECORD,,
438
+ boneio-1.4.0.dev9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
439
+ boneio-1.4.0.dev9.dist-info/METADATA,sha256=YE_ZFJ1zHObOVSzymBkV36OOzmhBoNI-KBIXC-lArkw,1961
440
+ boneio-1.4.0.dev9.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
441
+ boneio-1.4.0.dev9.dist-info/entry_points.txt,sha256=JX7gluDIkQ6MBlzzxGHMItnBjciiJ73tsXwYcazMW_U,47
442
+ boneio-1.4.0.dev9.dist-info/top_level.txt,sha256=ag9S5n1_KXZfyk9tN8R0YUDYbdA--e5a2w2FOD_yMdg,7
443
+ boneio-1.4.0.dev9.dist-info/RECORD,,