aioccl 2024.7.6__py3-none-any.whl → 2024.7.7__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.
aioccl/device.py CHANGED
@@ -28,6 +28,7 @@ class CCLDevice:
28
28
  self._new_sensors: list[CCLSensor] | None = []
29
29
 
30
30
  self._update_callbacks = set()
31
+ self._new_binary_sensor_callbacks = set()
31
32
  self._new_sensor_callbacks = set()
32
33
 
33
34
  @property
@@ -72,13 +73,13 @@ class CCLDevice:
72
73
  def update_sensors(self, sensors: dict[str, None | str | int | float]) -> None:
73
74
  """Add or update all sensor values."""
74
75
  for key, value in sensors.items():
75
- if CCL_SENSORS[key].binary:
76
- if not self._binary_sensors.get(key):
76
+ if CCL_SENSORS.get(key).binary:
77
+ if not key in self._binary_sensors:
77
78
  self._binary_sensors[key] = CCLSensor(key)
78
79
  self._new_sensors.append(self._binary_sensors[key])
79
80
  self._binary_sensors[key].value = value
80
81
  else:
81
- if not self._sensors.get(key):
82
+ if not key in self._sensors:
82
83
  self._sensors[key] = CCLSensor(key)
83
84
  self._new_sensors.append(self._sensors[key])
84
85
  self._sensors[key].value = value
@@ -103,6 +104,14 @@ class CCLDevice:
103
104
  except Exception as err:
104
105
  _LOGGER.warning("Error while publishing sensor updates: %s", err)
105
106
 
107
+ def register_new_binary_sensor_cb(self, callback: Callable[[], None]) -> None:
108
+ """Register callback, called when Sensor changes state."""
109
+ self._new_binary_sensor_callbacks.add(callback)
110
+
111
+ def remove_new_binary_sensor_cb(self, callback: Callable[[], None]) -> None:
112
+ """Remove previously registered callback."""
113
+ self._new_binary_sensor_callbacks.discard(callback)
114
+
106
115
  def register_new_sensor_cb(self, callback: Callable[[], None]) -> None:
107
116
  """Register callback, called when Sensor changes state."""
108
117
  self._new_sensor_callbacks.add(callback)
@@ -113,11 +122,15 @@ class CCLDevice:
113
122
 
114
123
  def _publish_new_sensors(self) -> None:
115
124
  """Schedule call all registered callbacks."""
116
- try:
117
- for sensor in self._new_sensors:
125
+ for sensor in self._new_sensors:
126
+ try:
118
127
  _LOGGER.debug("Publishing new sensor: %s", sensor)
119
- for callback in self._new_sensor_callbacks:
120
- callback(sensor)
121
- self._new_sensors.clear()
122
- except Exception as err:
123
- _LOGGER.warning("Error while publishing new sensors: %s", err)
128
+ if sensor.binary:
129
+ for callback in self._new_binary_sensor_callbacks:
130
+ callback(sensor)
131
+ else:
132
+ for callback in self._new_sensor_callbacks:
133
+ callback(sensor)
134
+ self._new_sensors.remove(sensor)
135
+ except Exception as err:
136
+ _LOGGER.warning("Error while publishing new sensors: %s", err)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aioccl
3
- Version: 2024.7.6
3
+ Version: 2024.7.7
4
4
  Summary: A Python library for CCL API server
5
5
  Home-page: https://github.com/fkiscd/aioccl
6
6
  Download-URL: https://github.com/fkiscd/aioccl
@@ -0,0 +1,9 @@
1
+ aioccl/__init__.py,sha256=iL1OC2F_rf3qkswi-bO8Y_uj2-lf284LCnyxwqdLUU8,137
2
+ aioccl/device.py,sha256=QKlVZ-Zu7eXOENxdUhOFMW9FojzcELf4-zCNQR8kLMw,5029
3
+ aioccl/sensor.py,sha256=wDCfGeQnk1FSH7gsM-85vU1-O1j0WDh3hScHRN1agM8,4244
4
+ aioccl/server.py,sha256=JPwhjp7pzQnm7J2RcHh3GiaqBc-jkRH2mQA4KHJzm28,3669
5
+ aioccl-2024.7.7.dist-info/LICENSE,sha256=PBRsTHchx7o0TQ2R2ktEAfFmn1iNHTxcOP_xaeuSAuo,11349
6
+ aioccl-2024.7.7.dist-info/METADATA,sha256=8S_Sn6ZZQgv_atSOHVOAzwlCXst0pbpef5BuKCFdCsw,769
7
+ aioccl-2024.7.7.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
8
+ aioccl-2024.7.7.dist-info/top_level.txt,sha256=-xIJfyfXTaW_EH7XCIHyxjSSSwjLmawa2qhsrHZH1vA,7
9
+ aioccl-2024.7.7.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- aioccl/__init__.py,sha256=iL1OC2F_rf3qkswi-bO8Y_uj2-lf284LCnyxwqdLUU8,137
2
- aioccl/device.py,sha256=cRqMlkmprkPWdBVSEGGMyHB7GG1MrLaD3-n9FzvzITs,4383
3
- aioccl/sensor.py,sha256=wDCfGeQnk1FSH7gsM-85vU1-O1j0WDh3hScHRN1agM8,4244
4
- aioccl/server.py,sha256=JPwhjp7pzQnm7J2RcHh3GiaqBc-jkRH2mQA4KHJzm28,3669
5
- aioccl-2024.7.6.dist-info/LICENSE,sha256=PBRsTHchx7o0TQ2R2ktEAfFmn1iNHTxcOP_xaeuSAuo,11349
6
- aioccl-2024.7.6.dist-info/METADATA,sha256=olbnS5Y5Xw2_X9vliqZ7yIndWSuzeKUkZAyBNDLdQHw,769
7
- aioccl-2024.7.6.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
8
- aioccl-2024.7.6.dist-info/top_level.txt,sha256=-xIJfyfXTaW_EH7XCIHyxjSSSwjLmawa2qhsrHZH1vA,7
9
- aioccl-2024.7.6.dist-info/RECORD,,