aiohomematic 2025.10.1__py3-none-any.whl → 2025.10.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.
Potentially problematic release.
This version of aiohomematic might be problematic. Click here for more details.
- aiohomematic/async_support.py +8 -8
- aiohomematic/caches/dynamic.py +31 -26
- aiohomematic/caches/persistent.py +34 -32
- aiohomematic/caches/visibility.py +19 -7
- aiohomematic/central/__init__.py +88 -75
- aiohomematic/central/decorators.py +2 -2
- aiohomematic/central/xml_rpc_server.py +33 -25
- aiohomematic/client/__init__.py +72 -56
- aiohomematic/client/_rpc_errors.py +3 -3
- aiohomematic/client/json_rpc.py +33 -25
- aiohomematic/client/xml_rpc.py +14 -9
- aiohomematic/const.py +2 -1
- aiohomematic/converter.py +19 -19
- aiohomematic/exceptions.py +2 -1
- aiohomematic/model/__init__.py +4 -3
- aiohomematic/model/calculated/__init__.py +1 -1
- aiohomematic/model/calculated/climate.py +9 -9
- aiohomematic/model/calculated/data_point.py +13 -7
- aiohomematic/model/calculated/operating_voltage_level.py +2 -2
- aiohomematic/model/calculated/support.py +7 -7
- aiohomematic/model/custom/__init__.py +3 -3
- aiohomematic/model/custom/climate.py +57 -34
- aiohomematic/model/custom/cover.py +32 -18
- aiohomematic/model/custom/data_point.py +9 -7
- aiohomematic/model/custom/definition.py +23 -17
- aiohomematic/model/custom/light.py +52 -23
- aiohomematic/model/custom/lock.py +16 -12
- aiohomematic/model/custom/siren.py +8 -3
- aiohomematic/model/custom/switch.py +3 -2
- aiohomematic/model/custom/valve.py +3 -2
- aiohomematic/model/data_point.py +63 -49
- aiohomematic/model/device.py +48 -42
- aiohomematic/model/event.py +6 -5
- aiohomematic/model/generic/__init__.py +6 -4
- aiohomematic/model/generic/action.py +1 -1
- aiohomematic/model/generic/data_point.py +8 -6
- aiohomematic/model/generic/number.py +3 -3
- aiohomematic/model/generic/select.py +1 -1
- aiohomematic/model/generic/sensor.py +2 -2
- aiohomematic/model/generic/switch.py +3 -3
- aiohomematic/model/hub/__init__.py +17 -16
- aiohomematic/model/hub/data_point.py +12 -7
- aiohomematic/model/hub/number.py +3 -3
- aiohomematic/model/hub/select.py +3 -3
- aiohomematic/model/hub/text.py +2 -2
- aiohomematic/model/support.py +10 -9
- aiohomematic/model/update.py +6 -6
- aiohomematic/property_decorators.py +2 -0
- aiohomematic/support.py +44 -38
- aiohomematic/validator.py +6 -6
- {aiohomematic-2025.10.1.dist-info → aiohomematic-2025.10.3.dist-info}/METADATA +1 -1
- aiohomematic-2025.10.3.dist-info/RECORD +78 -0
- aiohomematic_support/client_local.py +26 -14
- aiohomematic-2025.10.1.dist-info/RECORD +0 -78
- {aiohomematic-2025.10.1.dist-info → aiohomematic-2025.10.3.dist-info}/WHEEL +0 -0
- {aiohomematic-2025.10.1.dist-info → aiohomematic-2025.10.3.dist-info}/licenses/LICENSE +0 -0
- {aiohomematic-2025.10.1.dist-info → aiohomematic-2025.10.3.dist-info}/top_level.txt +0 -0
|
@@ -232,7 +232,7 @@ class CustomDpDimmer(CustomDataPoint):
|
|
|
232
232
|
return None
|
|
233
233
|
|
|
234
234
|
@bind_collector()
|
|
235
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
235
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
236
236
|
"""Turn the light on."""
|
|
237
237
|
if (on_time := kwargs.get("on_time")) is not None:
|
|
238
238
|
self.set_timer_on_time(on_time=on_time)
|
|
@@ -249,7 +249,9 @@ class CustomDpDimmer(CustomDataPoint):
|
|
|
249
249
|
await self._dp_level.send_value(value=level, collector=collector)
|
|
250
250
|
|
|
251
251
|
@bind_collector()
|
|
252
|
-
async def turn_off(
|
|
252
|
+
async def turn_off(
|
|
253
|
+
self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOffArgs]
|
|
254
|
+
) -> None:
|
|
253
255
|
"""Turn the light off."""
|
|
254
256
|
self.reset_timer_on_time()
|
|
255
257
|
if not self.is_state_change(off=True, **kwargs):
|
|
@@ -259,15 +261,19 @@ class CustomDpDimmer(CustomDataPoint):
|
|
|
259
261
|
await self._dp_level.send_value(value=_DIMMER_OFF, collector=collector)
|
|
260
262
|
|
|
261
263
|
@bind_collector()
|
|
262
|
-
async def _set_on_time_value(self, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
264
|
+
async def _set_on_time_value(self, *, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
263
265
|
"""Set the on time value in seconds."""
|
|
264
266
|
await self._dp_on_time_value.send_value(value=on_time, collector=collector, do_validate=False)
|
|
265
267
|
|
|
266
|
-
async def _set_ramp_time_on_value(
|
|
268
|
+
async def _set_ramp_time_on_value(
|
|
269
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
270
|
+
) -> None:
|
|
267
271
|
"""Set the ramp time value in seconds."""
|
|
268
272
|
await self._dp_ramp_time_value.send_value(value=ramp_time, collector=collector)
|
|
269
273
|
|
|
270
|
-
async def _set_ramp_time_off_value(
|
|
274
|
+
async def _set_ramp_time_off_value(
|
|
275
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
276
|
+
) -> None:
|
|
271
277
|
"""Set the ramp time value in seconds."""
|
|
272
278
|
await self._set_ramp_time_on_value(ramp_time=ramp_time, collector=collector)
|
|
273
279
|
|
|
@@ -323,7 +329,7 @@ class CustomDpColorDimmer(CustomDpDimmer):
|
|
|
323
329
|
return _MIN_HUE, _MIN_SATURATION
|
|
324
330
|
|
|
325
331
|
@bind_collector()
|
|
326
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
332
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
327
333
|
"""Turn the light on."""
|
|
328
334
|
if not self.is_state_change(on=True, **kwargs):
|
|
329
335
|
return
|
|
@@ -369,7 +375,7 @@ class CustomDpColorDimmerEffect(CustomDpColorDimmer):
|
|
|
369
375
|
return self._effects
|
|
370
376
|
|
|
371
377
|
@bind_collector()
|
|
372
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
378
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
373
379
|
"""Turn the light on."""
|
|
374
380
|
if not self.is_state_change(on=True, **kwargs):
|
|
375
381
|
return
|
|
@@ -405,7 +411,7 @@ class CustomDpColorTempDimmer(CustomDpDimmer):
|
|
|
405
411
|
)
|
|
406
412
|
|
|
407
413
|
@bind_collector()
|
|
408
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
414
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
409
415
|
"""Turn the light on."""
|
|
410
416
|
if not self.is_state_change(on=True, **kwargs):
|
|
411
417
|
return
|
|
@@ -528,7 +534,7 @@ class CustomDpIpRGBWLight(CustomDpDimmer):
|
|
|
528
534
|
return self._dp_effect.values or ()
|
|
529
535
|
|
|
530
536
|
@bind_collector()
|
|
531
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
537
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
532
538
|
"""Turn the light on."""
|
|
533
539
|
if on_time := (kwargs.get("on_time") or self.get_and_start_timer()):
|
|
534
540
|
kwargs["on_time"] = on_time
|
|
@@ -549,7 +555,9 @@ class CustomDpIpRGBWLight(CustomDpDimmer):
|
|
|
549
555
|
await super().turn_on(collector=collector, **kwargs)
|
|
550
556
|
|
|
551
557
|
@bind_collector()
|
|
552
|
-
async def turn_off(
|
|
558
|
+
async def turn_off(
|
|
559
|
+
self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOffArgs]
|
|
560
|
+
) -> None:
|
|
553
561
|
"""Turn the light off."""
|
|
554
562
|
if kwargs.get("on_time") is None and kwargs.get("ramp_time"):
|
|
555
563
|
await self._set_on_time_value(on_time=_NOT_USED, collector=collector)
|
|
@@ -563,21 +571,25 @@ class CustomDpIpRGBWLight(CustomDpDimmer):
|
|
|
563
571
|
return _DeviceOperationMode(mode)
|
|
564
572
|
|
|
565
573
|
@bind_collector()
|
|
566
|
-
async def _set_on_time_value(self, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
574
|
+
async def _set_on_time_value(self, *, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
567
575
|
"""Set the on time value in seconds."""
|
|
568
576
|
on_time, on_time_unit = _recalc_unit_timer(time=on_time)
|
|
569
577
|
if on_time_unit is not None:
|
|
570
578
|
await self._dp_on_time_unit.send_value(value=on_time_unit, collector=collector)
|
|
571
579
|
await self._dp_on_time_value.send_value(value=float(on_time), collector=collector)
|
|
572
580
|
|
|
573
|
-
async def _set_ramp_time_on_value(
|
|
581
|
+
async def _set_ramp_time_on_value(
|
|
582
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
583
|
+
) -> None:
|
|
574
584
|
"""Set the ramp time value in seconds."""
|
|
575
585
|
ramp_time, ramp_time_unit = _recalc_unit_timer(time=ramp_time)
|
|
576
586
|
if ramp_time_unit is not None:
|
|
577
587
|
await self._dp_ramp_time_unit.send_value(value=ramp_time_unit, collector=collector)
|
|
578
588
|
await self._dp_ramp_time_value.send_value(value=float(ramp_time), collector=collector)
|
|
579
589
|
|
|
580
|
-
async def _set_ramp_time_off_value(
|
|
590
|
+
async def _set_ramp_time_off_value(
|
|
591
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
592
|
+
) -> None:
|
|
581
593
|
"""Set the ramp time value in seconds."""
|
|
582
594
|
ramp_time, ramp_time_unit = _recalc_unit_timer(time=ramp_time)
|
|
583
595
|
if ramp_time_unit is not None:
|
|
@@ -642,7 +654,7 @@ class CustomDpIpDrgDaliLight(CustomDpDimmer):
|
|
|
642
654
|
return self._dp_effect.values or ()
|
|
643
655
|
|
|
644
656
|
@bind_collector()
|
|
645
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
657
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
646
658
|
"""Turn the light on."""
|
|
647
659
|
if not self.is_state_change(on=True, **kwargs):
|
|
648
660
|
return
|
|
@@ -661,21 +673,25 @@ class CustomDpIpDrgDaliLight(CustomDpDimmer):
|
|
|
661
673
|
await super().turn_on(collector=collector, **kwargs)
|
|
662
674
|
|
|
663
675
|
@bind_collector()
|
|
664
|
-
async def _set_on_time_value(self, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
676
|
+
async def _set_on_time_value(self, *, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
665
677
|
"""Set the on time value in seconds."""
|
|
666
678
|
on_time, on_time_unit = _recalc_unit_timer(time=on_time)
|
|
667
679
|
if on_time_unit:
|
|
668
680
|
await self._dp_on_time_unit.send_value(value=on_time_unit, collector=collector)
|
|
669
681
|
await self._dp_on_time_value.send_value(value=float(on_time), collector=collector)
|
|
670
682
|
|
|
671
|
-
async def _set_ramp_time_on_value(
|
|
683
|
+
async def _set_ramp_time_on_value(
|
|
684
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
685
|
+
) -> None:
|
|
672
686
|
"""Set the ramp time value in seconds."""
|
|
673
687
|
ramp_time, ramp_time_unit = _recalc_unit_timer(time=ramp_time)
|
|
674
688
|
if ramp_time_unit:
|
|
675
689
|
await self._dp_ramp_time_unit.send_value(value=ramp_time_unit, collector=collector)
|
|
676
690
|
await self._dp_ramp_time_value.send_value(value=float(ramp_time), collector=collector)
|
|
677
691
|
|
|
678
|
-
async def _set_ramp_time_off_value(
|
|
692
|
+
async def _set_ramp_time_off_value(
|
|
693
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
694
|
+
) -> None:
|
|
679
695
|
"""Set the ramp time value in seconds."""
|
|
680
696
|
ramp_time, ramp_time_unit = _recalc_unit_timer(time=ramp_time)
|
|
681
697
|
if ramp_time_unit:
|
|
@@ -751,12 +767,12 @@ class CustomDpIpFixedColorLight(CustomDpDimmer):
|
|
|
751
767
|
return None
|
|
752
768
|
|
|
753
769
|
@bind_collector()
|
|
754
|
-
async def turn_on(self, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
770
|
+
async def turn_on(self, *, collector: CallParameterCollector | None = None, **kwargs: Unpack[LightOnArgs]) -> None:
|
|
755
771
|
"""Turn the light on."""
|
|
756
772
|
if not self.is_state_change(on=True, **kwargs):
|
|
757
773
|
return
|
|
758
774
|
if (hs_color := kwargs.get("hs_color")) is not None:
|
|
759
|
-
simple_rgb_color = _convert_color(hs_color)
|
|
775
|
+
simple_rgb_color = _convert_color(color=hs_color)
|
|
760
776
|
await self._dp_color.send_value(value=simple_rgb_color, collector=collector)
|
|
761
777
|
elif self.color_name in _NO_COLOR:
|
|
762
778
|
await self._dp_color.send_value(value=_FixedColor.WHITE, collector=collector)
|
|
@@ -770,14 +786,16 @@ class CustomDpIpFixedColorLight(CustomDpDimmer):
|
|
|
770
786
|
await super().turn_on(collector=collector, **kwargs)
|
|
771
787
|
|
|
772
788
|
@bind_collector()
|
|
773
|
-
async def _set_on_time_value(self, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
789
|
+
async def _set_on_time_value(self, *, on_time: float, collector: CallParameterCollector | None = None) -> None:
|
|
774
790
|
"""Set the on time value in seconds."""
|
|
775
791
|
on_time, on_time_unit = _recalc_unit_timer(time=on_time)
|
|
776
792
|
if on_time_unit:
|
|
777
793
|
await self._dp_on_time_unit.send_value(value=on_time_unit, collector=collector)
|
|
778
794
|
await self._dp_on_time_value.send_value(value=float(on_time), collector=collector)
|
|
779
795
|
|
|
780
|
-
async def _set_ramp_time_on_value(
|
|
796
|
+
async def _set_ramp_time_on_value(
|
|
797
|
+
self, *, ramp_time: float, collector: CallParameterCollector | None = None
|
|
798
|
+
) -> None:
|
|
781
799
|
"""Set the ramp time value in seconds."""
|
|
782
800
|
ramp_time, ramp_time_unit = _recalc_unit_timer(time=ramp_time)
|
|
783
801
|
if ramp_time_unit:
|
|
@@ -785,7 +803,7 @@ class CustomDpIpFixedColorLight(CustomDpDimmer):
|
|
|
785
803
|
await self._dp_ramp_time_value.send_value(value=float(ramp_time), collector=collector)
|
|
786
804
|
|
|
787
805
|
|
|
788
|
-
def _recalc_unit_timer(time: float) -> tuple[float, int | None]:
|
|
806
|
+
def _recalc_unit_timer(*, time: float) -> tuple[float, int | None]:
|
|
789
807
|
"""Recalculate unit and value of timer."""
|
|
790
808
|
ramp_time_unit = _TimeUnit.SECONDS
|
|
791
809
|
if time == _NOT_USED:
|
|
@@ -799,7 +817,7 @@ def _recalc_unit_timer(time: float) -> tuple[float, int | None]:
|
|
|
799
817
|
return time, ramp_time_unit
|
|
800
818
|
|
|
801
819
|
|
|
802
|
-
def _convert_color(color: tuple[float, float]) -> str:
|
|
820
|
+
def _convert_color(*, color: tuple[float, float]) -> str:
|
|
803
821
|
"""
|
|
804
822
|
Convert the given color to the reduced color of the device.
|
|
805
823
|
|
|
@@ -823,6 +841,7 @@ def _convert_color(color: tuple[float, float]) -> str:
|
|
|
823
841
|
|
|
824
842
|
|
|
825
843
|
def make_ip_dimmer(
|
|
844
|
+
*,
|
|
826
845
|
channel: hmd.Channel,
|
|
827
846
|
custom_config: CustomConfig,
|
|
828
847
|
) -> None:
|
|
@@ -836,6 +855,7 @@ def make_ip_dimmer(
|
|
|
836
855
|
|
|
837
856
|
|
|
838
857
|
def make_rf_dimmer(
|
|
858
|
+
*,
|
|
839
859
|
channel: hmd.Channel,
|
|
840
860
|
custom_config: CustomConfig,
|
|
841
861
|
) -> None:
|
|
@@ -849,6 +869,7 @@ def make_rf_dimmer(
|
|
|
849
869
|
|
|
850
870
|
|
|
851
871
|
def make_rf_dimmer_color(
|
|
872
|
+
*,
|
|
852
873
|
channel: hmd.Channel,
|
|
853
874
|
custom_config: CustomConfig,
|
|
854
875
|
) -> None:
|
|
@@ -862,6 +883,7 @@ def make_rf_dimmer_color(
|
|
|
862
883
|
|
|
863
884
|
|
|
864
885
|
def make_rf_dimmer_color_fixed(
|
|
886
|
+
*,
|
|
865
887
|
channel: hmd.Channel,
|
|
866
888
|
custom_config: CustomConfig,
|
|
867
889
|
) -> None:
|
|
@@ -875,6 +897,7 @@ def make_rf_dimmer_color_fixed(
|
|
|
875
897
|
|
|
876
898
|
|
|
877
899
|
def make_rf_dimmer_color_effect(
|
|
900
|
+
*,
|
|
878
901
|
channel: hmd.Channel,
|
|
879
902
|
custom_config: CustomConfig,
|
|
880
903
|
) -> None:
|
|
@@ -888,6 +911,7 @@ def make_rf_dimmer_color_effect(
|
|
|
888
911
|
|
|
889
912
|
|
|
890
913
|
def make_rf_dimmer_color_temp(
|
|
914
|
+
*,
|
|
891
915
|
channel: hmd.Channel,
|
|
892
916
|
custom_config: CustomConfig,
|
|
893
917
|
) -> None:
|
|
@@ -901,6 +925,7 @@ def make_rf_dimmer_color_temp(
|
|
|
901
925
|
|
|
902
926
|
|
|
903
927
|
def make_rf_dimmer_with_virt_channel(
|
|
928
|
+
*,
|
|
904
929
|
channel: hmd.Channel,
|
|
905
930
|
custom_config: CustomConfig,
|
|
906
931
|
) -> None:
|
|
@@ -914,6 +939,7 @@ def make_rf_dimmer_with_virt_channel(
|
|
|
914
939
|
|
|
915
940
|
|
|
916
941
|
def make_ip_fixed_color_light(
|
|
942
|
+
*,
|
|
917
943
|
channel: hmd.Channel,
|
|
918
944
|
custom_config: CustomConfig,
|
|
919
945
|
) -> None:
|
|
@@ -927,6 +953,7 @@ def make_ip_fixed_color_light(
|
|
|
927
953
|
|
|
928
954
|
|
|
929
955
|
def make_ip_simple_fixed_color_light_wired(
|
|
956
|
+
*,
|
|
930
957
|
channel: hmd.Channel,
|
|
931
958
|
custom_config: CustomConfig,
|
|
932
959
|
) -> None:
|
|
@@ -940,6 +967,7 @@ def make_ip_simple_fixed_color_light_wired(
|
|
|
940
967
|
|
|
941
968
|
|
|
942
969
|
def make_ip_rgbw_light(
|
|
970
|
+
*,
|
|
943
971
|
channel: hmd.Channel,
|
|
944
972
|
custom_config: CustomConfig,
|
|
945
973
|
) -> None:
|
|
@@ -953,6 +981,7 @@ def make_ip_rgbw_light(
|
|
|
953
981
|
|
|
954
982
|
|
|
955
983
|
def make_ip_drg_dali_light(
|
|
984
|
+
*,
|
|
956
985
|
channel: hmd.Channel,
|
|
957
986
|
custom_config: CustomConfig,
|
|
958
987
|
) -> None:
|
|
@@ -85,17 +85,17 @@ class BaseCustomDpLock(CustomDataPoint):
|
|
|
85
85
|
|
|
86
86
|
@abstractmethod
|
|
87
87
|
@bind_collector()
|
|
88
|
-
async def lock(self, collector: CallParameterCollector | None = None) -> None:
|
|
88
|
+
async def lock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
89
89
|
"""Lock the lock."""
|
|
90
90
|
|
|
91
91
|
@abstractmethod
|
|
92
92
|
@bind_collector()
|
|
93
|
-
async def unlock(self, collector: CallParameterCollector | None = None) -> None:
|
|
93
|
+
async def unlock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
94
94
|
"""Unlock the lock."""
|
|
95
95
|
|
|
96
96
|
@abstractmethod
|
|
97
97
|
@bind_collector()
|
|
98
|
-
async def open(self, collector: CallParameterCollector | None = None) -> None:
|
|
98
|
+
async def open(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
99
99
|
"""Open the lock."""
|
|
100
100
|
|
|
101
101
|
|
|
@@ -146,17 +146,17 @@ class CustomDpIpLock(BaseCustomDpLock):
|
|
|
146
146
|
return True
|
|
147
147
|
|
|
148
148
|
@bind_collector()
|
|
149
|
-
async def lock(self, collector: CallParameterCollector | None = None) -> None:
|
|
149
|
+
async def lock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
150
150
|
"""Lock the lock."""
|
|
151
151
|
await self._dp_lock_target_level.send_value(value=_LockTargetLevel.LOCKED, collector=collector)
|
|
152
152
|
|
|
153
153
|
@bind_collector()
|
|
154
|
-
async def unlock(self, collector: CallParameterCollector | None = None) -> None:
|
|
154
|
+
async def unlock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
155
155
|
"""Unlock the lock."""
|
|
156
156
|
await self._dp_lock_target_level.send_value(value=_LockTargetLevel.UNLOCKED, collector=collector)
|
|
157
157
|
|
|
158
158
|
@bind_collector()
|
|
159
|
-
async def open(self, collector: CallParameterCollector | None = None) -> None:
|
|
159
|
+
async def open(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
160
160
|
"""Open the lock."""
|
|
161
161
|
await self._dp_lock_target_level.send_value(value=_LockTargetLevel.OPEN, collector=collector)
|
|
162
162
|
|
|
@@ -187,17 +187,17 @@ class CustomDpButtonLock(BaseCustomDpLock):
|
|
|
187
187
|
return False
|
|
188
188
|
|
|
189
189
|
@bind_collector()
|
|
190
|
-
async def lock(self, collector: CallParameterCollector | None = None) -> None:
|
|
190
|
+
async def lock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
191
191
|
"""Lock the lock."""
|
|
192
192
|
await self._dp_button_lock.turn_on(collector=collector)
|
|
193
193
|
|
|
194
194
|
@bind_collector()
|
|
195
|
-
async def unlock(self, collector: CallParameterCollector | None = None) -> None:
|
|
195
|
+
async def unlock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
196
196
|
"""Unlock the lock."""
|
|
197
197
|
await self._dp_button_lock.turn_off(collector=collector)
|
|
198
198
|
|
|
199
199
|
@bind_collector()
|
|
200
|
-
async def open(self, collector: CallParameterCollector | None = None) -> None:
|
|
200
|
+
async def open(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
201
201
|
"""Open the lock."""
|
|
202
202
|
return
|
|
203
203
|
|
|
@@ -254,22 +254,23 @@ class CustomDpRfLock(BaseCustomDpLock):
|
|
|
254
254
|
return True
|
|
255
255
|
|
|
256
256
|
@bind_collector()
|
|
257
|
-
async def lock(self, collector: CallParameterCollector | None = None) -> None:
|
|
257
|
+
async def lock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
258
258
|
"""Lock the lock."""
|
|
259
259
|
await self._dp_state.send_value(value=False, collector=collector)
|
|
260
260
|
|
|
261
261
|
@bind_collector()
|
|
262
|
-
async def unlock(self, collector: CallParameterCollector | None = None) -> None:
|
|
262
|
+
async def unlock(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
263
263
|
"""Unlock the lock."""
|
|
264
264
|
await self._dp_state.send_value(value=True, collector=collector)
|
|
265
265
|
|
|
266
266
|
@bind_collector()
|
|
267
|
-
async def open(self, collector: CallParameterCollector | None = None) -> None:
|
|
267
|
+
async def open(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
268
268
|
"""Open the lock."""
|
|
269
269
|
await self._dp_open.send_value(value=True, collector=collector)
|
|
270
270
|
|
|
271
271
|
|
|
272
272
|
def make_ip_lock(
|
|
273
|
+
*,
|
|
273
274
|
channel: hmd.Channel,
|
|
274
275
|
custom_config: CustomConfig,
|
|
275
276
|
) -> None:
|
|
@@ -283,6 +284,7 @@ def make_ip_lock(
|
|
|
283
284
|
|
|
284
285
|
|
|
285
286
|
def make_ip_button_lock(
|
|
287
|
+
*,
|
|
286
288
|
channel: hmd.Channel,
|
|
287
289
|
custom_config: CustomConfig,
|
|
288
290
|
) -> None:
|
|
@@ -296,6 +298,7 @@ def make_ip_button_lock(
|
|
|
296
298
|
|
|
297
299
|
|
|
298
300
|
def make_rf_button_lock(
|
|
301
|
+
*,
|
|
299
302
|
channel: hmd.Channel,
|
|
300
303
|
custom_config: CustomConfig,
|
|
301
304
|
) -> None:
|
|
@@ -309,6 +312,7 @@ def make_rf_button_lock(
|
|
|
309
312
|
|
|
310
313
|
|
|
311
314
|
def make_rf_lock(
|
|
315
|
+
*,
|
|
312
316
|
channel: hmd.Channel,
|
|
313
317
|
custom_config: CustomConfig,
|
|
314
318
|
) -> None:
|
|
@@ -79,6 +79,7 @@ class BaseCustomDpSiren(CustomDataPoint):
|
|
|
79
79
|
@bind_collector()
|
|
80
80
|
async def turn_on(
|
|
81
81
|
self,
|
|
82
|
+
*,
|
|
82
83
|
collector: CallParameterCollector | None = None,
|
|
83
84
|
**kwargs: Unpack[SirenOnArgs],
|
|
84
85
|
) -> None:
|
|
@@ -86,7 +87,7 @@ class BaseCustomDpSiren(CustomDataPoint):
|
|
|
86
87
|
|
|
87
88
|
@abstractmethod
|
|
88
89
|
@bind_collector()
|
|
89
|
-
async def turn_off(self, collector: CallParameterCollector | None = None) -> None:
|
|
90
|
+
async def turn_off(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
90
91
|
"""Turn the device off."""
|
|
91
92
|
|
|
92
93
|
|
|
@@ -143,6 +144,7 @@ class CustomDpIpSiren(BaseCustomDpSiren):
|
|
|
143
144
|
@bind_collector()
|
|
144
145
|
async def turn_on(
|
|
145
146
|
self,
|
|
147
|
+
*,
|
|
146
148
|
collector: CallParameterCollector | None = None,
|
|
147
149
|
**kwargs: Unpack[SirenOnArgs],
|
|
148
150
|
) -> None:
|
|
@@ -169,7 +171,7 @@ class CustomDpIpSiren(BaseCustomDpSiren):
|
|
|
169
171
|
await self._dp_duration.send_value(value=duration, collector=collector)
|
|
170
172
|
|
|
171
173
|
@bind_collector()
|
|
172
|
-
async def turn_off(self, collector: CallParameterCollector | None = None) -> None:
|
|
174
|
+
async def turn_off(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
173
175
|
"""Turn the device off."""
|
|
174
176
|
await self._dp_acoustic_alarm_selection.send_value(
|
|
175
177
|
value=self._dp_acoustic_alarm_selection.default, collector=collector
|
|
@@ -224,6 +226,7 @@ class CustomDpIpSirenSmoke(BaseCustomDpSiren):
|
|
|
224
226
|
@bind_collector()
|
|
225
227
|
async def turn_on(
|
|
226
228
|
self,
|
|
229
|
+
*,
|
|
227
230
|
collector: CallParameterCollector | None = None,
|
|
228
231
|
**kwargs: Unpack[SirenOnArgs],
|
|
229
232
|
) -> None:
|
|
@@ -231,12 +234,13 @@ class CustomDpIpSirenSmoke(BaseCustomDpSiren):
|
|
|
231
234
|
await self._dp_smoke_detector_command.send_value(value=_SirenCommand.ON, collector=collector)
|
|
232
235
|
|
|
233
236
|
@bind_collector()
|
|
234
|
-
async def turn_off(self, collector: CallParameterCollector | None = None) -> None:
|
|
237
|
+
async def turn_off(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
235
238
|
"""Turn the device off."""
|
|
236
239
|
await self._dp_smoke_detector_command.send_value(value=_SirenCommand.OFF, collector=collector)
|
|
237
240
|
|
|
238
241
|
|
|
239
242
|
def make_ip_siren(
|
|
243
|
+
*,
|
|
240
244
|
channel: hmd.Channel,
|
|
241
245
|
custom_config: CustomConfig,
|
|
242
246
|
) -> None:
|
|
@@ -250,6 +254,7 @@ def make_ip_siren(
|
|
|
250
254
|
|
|
251
255
|
|
|
252
256
|
def make_ip_siren_smoke(
|
|
257
|
+
*,
|
|
253
258
|
channel: hmd.Channel,
|
|
254
259
|
custom_config: CustomConfig,
|
|
255
260
|
) -> None:
|
|
@@ -60,7 +60,7 @@ class CustomDpSwitch(CustomDataPoint):
|
|
|
60
60
|
return self._dp_state.value
|
|
61
61
|
|
|
62
62
|
@bind_collector()
|
|
63
|
-
async def turn_on(self,
|
|
63
|
+
async def turn_on(self, *, on_time: float | None = None, collector: CallParameterCollector | None = None) -> None:
|
|
64
64
|
"""Turn the switch on."""
|
|
65
65
|
if on_time is not None:
|
|
66
66
|
self.set_timer_on_time(on_time=on_time)
|
|
@@ -72,7 +72,7 @@ class CustomDpSwitch(CustomDataPoint):
|
|
|
72
72
|
await self._dp_state.turn_on(collector=collector)
|
|
73
73
|
|
|
74
74
|
@bind_collector()
|
|
75
|
-
async def turn_off(self, collector: CallParameterCollector | None = None) -> None:
|
|
75
|
+
async def turn_off(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
76
76
|
"""Turn the switch off."""
|
|
77
77
|
self.reset_timer_on_time()
|
|
78
78
|
if not self.is_state_change(off=True):
|
|
@@ -93,6 +93,7 @@ class CustomDpSwitch(CustomDataPoint):
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
def make_ip_switch(
|
|
96
|
+
*,
|
|
96
97
|
channel: hmd.Channel,
|
|
97
98
|
custom_config: CustomConfig,
|
|
98
99
|
) -> None:
|
|
@@ -60,7 +60,7 @@ class CustomDpIpIrrigationValve(CustomDataPoint):
|
|
|
60
60
|
return self._dp_state.value
|
|
61
61
|
|
|
62
62
|
@bind_collector()
|
|
63
|
-
async def open(self,
|
|
63
|
+
async def open(self, *, on_time: float | None = None, collector: CallParameterCollector | None = None) -> None:
|
|
64
64
|
"""Turn the valve on."""
|
|
65
65
|
if on_time is not None:
|
|
66
66
|
self.set_timer_on_time(on_time=on_time)
|
|
@@ -72,7 +72,7 @@ class CustomDpIpIrrigationValve(CustomDataPoint):
|
|
|
72
72
|
await self._dp_state.turn_on(collector=collector)
|
|
73
73
|
|
|
74
74
|
@bind_collector()
|
|
75
|
-
async def close(self, collector: CallParameterCollector | None = None) -> None:
|
|
75
|
+
async def close(self, *, collector: CallParameterCollector | None = None) -> None:
|
|
76
76
|
"""Turn the valve off."""
|
|
77
77
|
self.reset_timer_on_time()
|
|
78
78
|
if not self.is_state_change(off=True):
|
|
@@ -93,6 +93,7 @@ class CustomDpIpIrrigationValve(CustomDataPoint):
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
def make_ip_irrigation_valve(
|
|
96
|
+
*,
|
|
96
97
|
channel: hmd.Channel,
|
|
97
98
|
custom_config: CustomConfig,
|
|
98
99
|
) -> None:
|