z4d-certified-devices 4.259__py3-none-any.whl → 5.261__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.
@@ -15,7 +15,7 @@
15
15
  "0500": "",
16
16
  "0b05": "",
17
17
  "0019": "",
18
- "Type": "Button"
18
+ "Type": "Button/Tamper"
19
19
  }
20
20
  },
21
21
  "Type": "",
@@ -1,48 +1,27 @@
1
1
  {
2
- "_comment": "Sonoff Basic ZBR3",
3
- "_version": "1.0",
4
- "Ep": {
5
- "01": {
6
- "0000": "",
7
- "0003": "",
8
- "0004": "",
9
- "0005": "",
10
- "0006": "",
11
- "1000": "",
12
- "Type": "Switch"
13
- },
14
- "f2": {
15
- "0021": "",
16
- "Type": ""
17
- }
18
- },
19
- "Type": "",
20
- "ClusterToBind": [
21
- "0006"
22
- ],
23
- "ConfigureReporting": {
24
- "0006": {
25
- "Attributes": {
26
- "0000": {
27
- "DataType": "10",
28
- "MinInterval": "0001",
29
- "MaxInterval": "012C",
30
- "TimeOut": "0000",
31
- "Change": "01"
32
- }
33
- }
34
- }
35
- },
36
- "ReadAttributes": {
37
- "0000": [
38
- "0000",
39
- "0004",
40
- "0005",
41
- "0006",
42
- "0007"
43
- ],
44
- "0006": [
45
- "0000"
46
- ]
47
- }
48
- }
2
+ "_comment": "Sonoff Basic ZBR3",
3
+ "_version": "1.0",
4
+ "Ep": {
5
+ "01": {
6
+ "0000": "",
7
+ "0003": "",
8
+ "0004": "",
9
+ "0005": "",
10
+ "0006": "",
11
+ "1000": "",
12
+ "Type": "Switch"
13
+ },
14
+ "f2": {
15
+ "0021": "",
16
+ "Type": ""
17
+ }
18
+ },
19
+ "Type": "",
20
+ "ClusterToBind": [ ],
21
+ "ConfigureReporting": {
22
+ },
23
+ "ReadAttributes": {
24
+ "0000": [ "0000", "0004", "0005", "0006", "0007" ],
25
+ "0006": [ "0000" ]
26
+ }
27
+ }
@@ -1,35 +1,23 @@
1
1
  {
2
- "_comment": "Sonoff Door sensor",
3
- "_version": "1.0",
4
- "Ep": {
5
- "01": {
6
- "0000": "",
7
- "0001": "",
8
- "0003": "",
9
- "0500": "",
10
- "Type": "Door"
11
- }
12
- },
13
- "Type": "",
14
- "ClusterToBind": [
15
- "0001"
16
- ],
17
- "ConfigureReporting": {},
18
- "ReadAttributes": {
19
- "0000": [
20
- "0000",
21
- "0001",
22
- "0002",
23
- "0003",
24
- "0004",
25
- "0005"
26
- ],
27
- "0001": [
28
- "0020",
29
- "0021"
30
- ],
31
- "0500": []
32
- },
33
- "BatteryDevice": 1,
34
- "BatteryPercentageConverter": 2
2
+ "_comment": "Sonoff Door sensor",
3
+ "_version": "1.0",
4
+ "Ep": {
5
+ "01": {
6
+ "0000": "",
7
+ "0001": "",
8
+ "0003": "",
9
+ "0500": "",
10
+ "Type": "Door"
11
+ }
12
+ },
13
+ "Type": "",
14
+ "ClusterToBind": [ "0001" ],
15
+ "ConfigureReporting": {},
16
+ "ReadAttributes": {
17
+ "0000": [ "0000", "0001", "0002", "0003", "0004", "0005" ],
18
+ "0001": [ "0020", "0021" ],
19
+ "0500": []
20
+ },
21
+ "BatteryDevice": 1,
22
+ "BatteryPercentageConverter": 2
35
23
  }
@@ -6,7 +6,7 @@
6
6
  "01": {
7
7
  "0000": "",
8
8
  "0003": "",
9
- "0406": "",
9
+ "0406": { "Attributes": { "0022": { "Enabled": true, "Name": "UltrasonicUnoccupiedToOccupiedDelay", "ActionList": [ "check_store_value"]} } },
10
10
  "fc57": "",
11
11
  "fc11": { "Attributes": { "2001": { "Enabled": true, "Name": "Illumination", "DataType": "20" , "ActionList": [ "check_store_value"]} } },
12
12
  "0500": "",
@@ -11,6 +11,7 @@
11
11
  "0004": "",
12
12
  "0005": "",
13
13
  "0019": "",
14
+ "ef00": "",
14
15
  "Type": "Temp/phMeter/ec/orp/freeChlorine/salinity"
15
16
  }
16
17
  },
@@ -27,10 +28,8 @@
27
28
  "01": { "store_tuya_attribute": "tds"},
28
29
  "02": { "sensor_type": "temperature"},
29
30
  "07": { "sensor_type": "battery"},
30
-
31
31
  "0a": { "sensor_type": "phMeter"},
32
32
  "0b": { "sensor_type": "ec"},
33
-
34
33
  "65": { "sensor_type": "orp"},
35
34
  "66": { "sensor_type": "freeChlorine"},
36
35
  "6a": { "store_tuya_attribute": "ph_max"},
@@ -32,9 +32,9 @@
32
32
  "04": { "store_tuya_attribute": "SetPoint", "sensor_type": "setpoint", "EvalExp": "int((value//10)*10)", "domo_divisor": 10, "domo_round": 2, "action_type": "setpoint", "action_Exp": "int(( ( value / 10) // 10 ) * 10)"},
33
33
  "05": { "store_tuya_attribute": "Temperature", "sensor_type": "temperature" , "EvalExp": "int((value//10)*10)", "domo_divisor": 10, "domo_round": 2},
34
34
  "07": { "store_tuya_attribute": "ChildLock"},
35
- "35": { "store_tuya_attribute": "ErrorStatus"},
36
- "39": { "store_tuya_attribute": "FrostProtection"},
37
- "47": { "store_tuya_attribute": "Calibration", "action_type": "calibration"}
35
+ "23": { "store_tuya_attribute": "ErrorStatus"},
36
+ "27": { "store_tuya_attribute": "FrostProtection"},
37
+ "2f": { "store_tuya_attribute": "Calibration", "action_type": "calibration"}
38
38
  },
39
39
  "PollingEnabled": 1,
40
40
  "Param": {
@@ -13,6 +13,7 @@
13
13
  import json
14
14
  import os.path
15
15
  from pathlib import Path
16
+ import os
16
17
 
17
18
  from .version import __version__
18
19
 
@@ -23,41 +24,43 @@ def z4d_import_device_configuration(self, path_name):
23
24
  plugin_version = self.pluginParameters.get("PluginVersion")
24
25
 
25
26
  if not os.path.isdir(model_certified):
26
- self.log.logging("z4dCertifiedDevices", "Status", f"none existing Z4D Certified Db at {model_certified} !!!")
27
+ self.log.logging("z4dCertifiedDevices", "Status", f"Z4D found an empty Certified Db {model_certified}")
27
28
  return
28
29
 
29
30
  for device_brand in os.listdir(model_certified):
30
31
  if device_brand in ("README.md", ".PRECIOUS"):
31
32
  continue
32
-
33
- model_directory = model_certified / device_brand
34
-
33
+
34
+ model_directory = Path(model_certified) / device_brand
35
+
35
36
  for model_device_file in os.listdir(model_directory):
36
37
  if model_device_file in ("README.md", ".PRECIOUS"):
37
38
  continue
38
-
39
+
39
40
  filename = model_directory / model_device_file
41
+
40
42
  try:
41
43
  with open(filename, "rt", encoding='utf-8') as file_handle:
42
44
  model_definition = json.load(file_handle)
43
-
44
- except ValueError as error:
45
- self.log.logging("z4dCertifiedDevices", "Error", f"JSON ConfFile: {filename} load failed with error: {error}, skiping this config file.")
46
- continue
47
-
48
- except Exception as error:
49
- self.log.logging("z4dCertifiedDevices", "Error", f"JSON ConfFile: {filename} load general error: {error}, skiping this config file.")
45
+
46
+ except (ValueError, Exception) as error:
47
+ error_type = type(error).__name__
48
+ error_msg = f"JSON ConfFile: {filename} load failed with error: {error_type}, skipping this config file."
49
+ self.log.logging("z4dCertifiedDevices", "Error", error_msg)
50
50
  continue
51
-
52
- device_model_name = _get_model_name(model_device_file )
51
+
52
+ device_model_name = _get_model_name(model_device_file)
53
+
53
54
  if device_model_name in self.DeviceConf:
54
55
  self.log.logging("z4dCertifiedDevices", "Debug", f"Config for {device_brand}/{device_model_name} not loaded as already defined")
55
56
  continue
56
-
57
+
57
58
  self.log.logging("z4dCertifiedDevices", "Debug", f"processing certified {device_brand}/{device_model_name}")
58
-
59
+
59
60
  if not _is_model_requirement_match_plugin_version(self, model_definition, plugin_version):
60
- self.log.logging( "z4dCertifiedDevices", "Error", f"Certified Devices load skip this Certified device %{device_brand}-{device_model_name} requires Plugin version {model_definition['MinPluginVersion']}")
61
+ min_plugin_version = model_definition.get("MinPluginVersion", "N/A")
62
+ error_msg = f"Certified Devices load skip this Certified device {device_brand}-{device_model_name} requires Plugin version {min_plugin_version}"
63
+ self.log.logging("z4dCertifiedDevices", "Error", error_msg)
61
64
  continue
62
65
 
63
66
  _process_device_config_file(self, device_model_name, model_definition)
@@ -65,13 +68,12 @@ def z4d_import_device_configuration(self, path_name):
65
68
  self.log.logging("z4dCertifiedDevices", "Debug", f"Config loaded: {self.DeviceConf.keys()}")
66
69
  self.log.logging("z4dCertifiedDevices", "Debug", f"Certified Devices ModelManufMapping loaded - {self.ModelManufMapping.keys()}")
67
70
 
68
- self.log.logging("z4dCertifiedDevices", "Status", f"{len(self.DeviceConf)} Certified devices loaded from z4d repository.")
71
+ self.log.logging("z4dCertifiedDevices", "Status", f"Z4D loads {len(self.DeviceConf)} Certified devices from repository.")
72
+
69
73
 
70
- def _get_model_name(model_device_file ):
71
- """ Purpose is to remove .json from filename to get the Device Model"""
72
- basename = os.path.basename(model_device_file)
73
- device_model_name = os.path.splitext(basename)[0]
74
- return device_model_name
74
+ def _get_model_name(model_device_file):
75
+ """Remove .json from filename to get the Device Model."""
76
+ return os.path.splitext(os.path.basename(model_device_file))[0]
75
77
 
76
78
 
77
79
  def _is_model_requirement_match_plugin_version(self, model_definition, plugin_version):
@@ -80,10 +82,8 @@ def _is_model_requirement_match_plugin_version(self, model_definition, plugin_ve
80
82
 
81
83
 
82
84
  def _process_device_config_file(self, device_model_name, model_definition):
83
- """ let's load the config into DeviceConf , and if needed (Tuya) lets also load into the model name mapping"""
84
- self.DeviceConf[device_model_name] = dict(model_definition)
85
- if "Identifier" not in model_definition:
86
- return
87
- for identifier_tuple in model_definition["Identifier"]:
88
- self.ModelManufMapping[ tuple(identifier_tuple) ] = device_model_name
89
-
85
+ """Load the config into DeviceConf and, if needed (Tuya), load into the model name mapping."""
86
+ self.DeviceConf[device_model_name] = model_definition
87
+ identifier_list = model_definition.get("Identifier", [])
88
+ for identifier_tuple in identifier_list:
89
+ self.ModelManufMapping[tuple(identifier_tuple)] = device_model_name
@@ -1,3 +1,3 @@
1
- MAJOR_VERSION = 4
2
- MINOR_VERSION = 259
1
+ MAJOR_VERSION = 5
2
+ MINOR_VERSION = 261
3
3
  __version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: z4d-certified-devices
3
- Version: 4.259
3
+ Version: 5.261
4
4
  Summary: "Certified devices for Zigbee for Domoticz plugin"
5
5
  Home-page: https://github.com/zigbeefordomoticz/z4d-certified-devices
6
6
  Author: "Patrick Pichon"
@@ -1,5 +1,5 @@
1
- z4d_certified_devices/__init__.py,sha256=i5sQ3ShnztbqZ3IeUr-smCqhcYLIaHZP5fkIoTXQZIo,3938
2
- z4d_certified_devices/version.py,sha256=yc6ssrzJLuJBj27NYIUHpWOy6YyK_CNhDTMbcwZECrs,87
1
+ z4d_certified_devices/__init__.py,sha256=GZ6zf1bgjFvi5yOBDJp9R4Hea53iA-MoqbTcESSa6ms,3860
2
+ z4d_certified_devices/version.py,sha256=2xRuBRtuz8kqls7QrY_KMjhRU1UYRGZmpfhVdU15gwM,87
3
3
  z4d_certified_devices/Certified/README.md,sha256=1WnlKFf_NJon6zCJ0zfbBIOHES0L2YoE9EjzI2zhlDA,1415
4
4
  z4d_certified_devices/Certified/Adeo/LDSENK02F.json,sha256=eYpL0-1uta51sAzIpg7wIqUdl9AC16vYkrXZgW7AtA0,2067
5
5
  z4d_certified_devices/Certified/Adeo/LDSENK10.json,sha256=G_Z1dpeZv0kuJ9te9hsFOfdjQx-1FIFTf8F9gC5PZYA,843
@@ -93,7 +93,7 @@ z4d_certified_devices/Certified/Heiman/COSensor-EM.json,sha256=z2BFoYY8XSMzEuNek
93
93
  z4d_certified_devices/Certified/Heiman/COSensor-N.json,sha256=iHGcvS21ZU3S2kS2PraLYNjufO21S4lk7fJ1Eoa_VqQ,356
94
94
  z4d_certified_devices/Certified/Heiman/CO_V15.json,sha256=QmZEhYU3hX2psONc2Npp3z9TEHg2LnIsFiEVVw0dNhk,251
95
95
  z4d_certified_devices/Certified/Heiman/CO_YDLV10.json,sha256=QmZEhYU3hX2psONc2Npp3z9TEHg2LnIsFiEVVw0dNhk,251
96
- z4d_certified_devices/Certified/Heiman/DoorBell-EF-3.0.json,sha256=XupilpLgPjZAgcKC9a_BfrmOdR-D4RpyaHiyYIZOehE,1067
96
+ z4d_certified_devices/Certified/Heiman/DoorBell-EF-3.0.json,sha256=lHa-Bo2xpbatJkX3Sf8z94zUJFx9oFNRFWczzl3y6g4,1074
97
97
  z4d_certified_devices/Certified/Heiman/GASSensor-EF-3.0.json,sha256=vR2NlXaIBVSPwc96eXfnNEipy02PkFvEGG09SfTy2z4,591
98
98
  z4d_certified_devices/Certified/Heiman/GAS_V15.json,sha256=2Mtsk9692iUoP5RXaHekKXb4Rmx-rUalOj4m3QSBmSM,166
99
99
  z4d_certified_devices/Certified/Heiman/HS3AQ-EFA-3.0.json,sha256=8_iqfNw4FokW_EktTaQeQG5-kv0eGCv2fswVeV4U-A0,1963
@@ -397,7 +397,7 @@ z4d_certified_devices/Certified/Schneider/SOCKETOUTLET2.json,sha256=8uNLqJ7EjJRQ
397
397
  z4d_certified_devices/Certified/Schneider/Wiser2-Thermostat.json,sha256=TGQvJO6Zcovb-4jnxTkoAw2tRqHMj4TYXLvxMlQuxqk,1999
398
398
  z4d_certified_devices/Certified/Schneider/iTRV.json,sha256=Pe6vPpWTm3KgPlPZ0uKab2Ft9t6TK9L63cHCDwHHSZg,2551
399
399
  z4d_certified_devices/Certified/SmartThings/outletv4.json,sha256=VuEFunRkK5jK7C0uJNL9cs_BlQXyTJvijgHOKWLRDos,1084
400
- z4d_certified_devices/Certified/Sonoff/01MINIZB.json,sha256=q1bUVrJTtOKDg9CwiJRdYb0fGQVghsbg_Q9lRiJLTRg,617
400
+ z4d_certified_devices/Certified/Sonoff/01MINIZB.json,sha256=IUpMlaVTSDJzFa6mcS7Tv64_JURYQT8sFmpgG5LLfyA,550
401
401
  z4d_certified_devices/Certified/Sonoff/66666-motion.json,sha256=loNh4aHKInQ0v2ZPeit7bt7ViCojcJ66kEAQyGYtP7o,509
402
402
  z4d_certified_devices/Certified/Sonoff/66666-temphumi.json,sha256=K-5CmpCihD_k5w7xzcL4M4aG1ew9xjOJ_K97_1kXXdA,923
403
403
  z4d_certified_devices/Certified/Sonoff/66666.json,sha256=iN5xb24Ft3rhiwxwElRjuuQODU1os1vix7NuYQlMWz0,923
@@ -405,7 +405,7 @@ z4d_certified_devices/Certified/Sonoff/BASICZBR3.json,sha256=eZVASZGdOq3LW4KaacN
405
405
  z4d_certified_devices/Certified/Sonoff/CK-BL702-SWP-01(7020).json,sha256=MX_B1CUs3m9efNMrNk7r98X_KgzEPTda8OHi0OwRN3A,1703
406
406
  z4d_certified_devices/Certified/Sonoff/DONGLE-E_R.json,sha256=9ssR-t2alKFbXpw7Dljqe8goBPefSHvBkK3pmTiAZJ8,418
407
407
  z4d_certified_devices/Certified/Sonoff/DS-01.json,sha256=BmOus71o8bEuJFe3JduxW4h4qWYx3kgPgXKciAnUCus,393
408
- z4d_certified_devices/Certified/Sonoff/DS01.json,sha256=MF4p_1O-uDqXTGucJFH2a6G7jSeFBkQQc3SdE5nZXq4,458
408
+ z4d_certified_devices/Certified/Sonoff/DS01.json,sha256=IVAvAhW-OsScx0P_AvopibHsxm0fxIOOfHyFzPpXflk,526
409
409
  z4d_certified_devices/Certified/Sonoff/MS01.json,sha256=YKY_BtEat3KT8FjKwOPCbY_z3vqNfEb2BBNg5Ofs8DM,480
410
410
  z4d_certified_devices/Certified/Sonoff/MSO1.json,sha256=4FduUZlrDNJ5JG3YXUN1a42vspVZ11-OwTwTWV651OA,420
411
411
  z4d_certified_devices/Certified/Sonoff/S26R2ZB.json,sha256=fIY9h30CqxSfag1po6R-Ngk3DZmVEORFc0b5GVdhD0o,631
@@ -415,7 +415,7 @@ z4d_certified_devices/Certified/Sonoff/SNZB-02.json,sha256=H43nPu3S5WnyCbFhL7-1t
415
415
  z4d_certified_devices/Certified/Sonoff/SNZB-02D.json,sha256=90uctooHEps9SqSlmGf-4x05lRNUdx-o5tjAD8cF-_U,1203
416
416
  z4d_certified_devices/Certified/Sonoff/SNZB-02P.json,sha256=33gyZQw7kdglDvIfq1IK9F7wSJSKtrU137gNzermupk,1357
417
417
  z4d_certified_devices/Certified/Sonoff/SNZB-03P.json,sha256=na3XIcLQIKxsTTaEeWgbJwnuPjOSYLm_fgH5fYJIJZY,1325
418
- z4d_certified_devices/Certified/Sonoff/SNZB-06P.json,sha256=WhB7Hzo8qzw0E1j0nMM74s04-U1n5Kk_Ni6aAx_lhBk,1023
418
+ z4d_certified_devices/Certified/Sonoff/SNZB-06P.json,sha256=FhkdnA7KR_AcZ0OwD5wDQ9FEIdPYwtUjUKeQA5G2MOg,1154
419
419
  z4d_certified_devices/Certified/Sonoff/TH01.json,sha256=5YVaiXuYsQ0JHsXTdYBL8qi2tDZjfAPM6fY1QRZznWU,1239
420
420
  z4d_certified_devices/Certified/Sonoff/TRVZB.json,sha256=tFhpRJogiAhITYthEUN-H_RyMZZ2GIOz0_X-N3IMWHY,3726
421
421
  z4d_certified_devices/Certified/Sonoff/WB-01.json,sha256=VwNi4R-Jh94qKywFLJqdliN8zpasRy5XOE6uUweYUC8,480
@@ -494,7 +494,7 @@ z4d_certified_devices/Certified/Tuya/TS0505A.json,sha256=QsWjNCg_qpVpkZX7Ldi67Vz
494
494
  z4d_certified_devices/Certified/Tuya/TS0505B.json,sha256=cDsEg50lQkeHNA4LTpYVNj0I-c35eyM4DvKH8Vlao3o,2253
495
495
  z4d_certified_devices/Certified/Tuya/TS0601-2Gangs-dimmer.json,sha256=K8z_gGu1D7xgfCKJ4WhjF7wvBxwAYWzZ_g_zpUNviFU,554
496
496
  z4d_certified_devices/Certified/Tuya/TS0601-2Gangs-switch.json,sha256=pkW5X0vpZF0fAeAJOWtiT8d5PrBdqSvzPvDM2dTiqr0,451
497
- z4d_certified_devices/Certified/Tuya/TS0601-BLE-YL01.json,sha256=voaWIXthJs1Dty5FgGdC5-gMEjRMhI-Vlh8aQ8QQrLw,1583
497
+ z4d_certified_devices/Certified/Tuya/TS0601-BLE-YL01.json,sha256=eT_5oKu0X60SDmGpyvaEsVWnPB4K65vFBzStq56-ZZ8,1605
498
498
  z4d_certified_devices/Certified/Tuya/TS0601-Clamp-Meter.json,sha256=rPIFDgKy_Ar7kvgyQscqSZLnzWuUl1T1kJ3OpsIvTTQ,1173
499
499
  z4d_certified_devices/Certified/Tuya/TS0601-Energy.json,sha256=WRaAlE7-RCPErsDAtkZs083IPpQPshN6PthhNSmgd5s,553
500
500
  z4d_certified_devices/Certified/Tuya/TS0601-Human-Presence.json,sha256=CfEexIfqC2Ec7klmtZ2f_21DeG8yoAgslV-HrTtZ640,1722
@@ -525,7 +525,7 @@ z4d_certified_devices/Certified/Tuya/TS0601-eTRV1.json,sha256=KbifbLZsYTwq--ckY_
525
525
  z4d_certified_devices/Certified/Tuya/TS0601-eTRV2.json,sha256=zxcTR7Y-9-sSolIaRPZRsp3hqLV6uhX1gk7fQAX08g8,1292
526
526
  z4d_certified_devices/Certified/Tuya/TS0601-eTRV3.json,sha256=fyhuS9rB4Muw_FVAIP6baanLpe30AsU2mph9htw3KT8,888
527
527
  z4d_certified_devices/Certified/Tuya/TS0601-eTRV5.json,sha256=KxNQXn-jJh5Qs68ZmAsykJgy7i2wLkPA0_7WVi-MTQE,787
528
- z4d_certified_devices/Certified/Tuya/TS0601-eTRV6.json,sha256=5qwE6veOZqeLrwZN6Lx4S59nyIwff5GDI6thTvYEu3U,1705
528
+ z4d_certified_devices/Certified/Tuya/TS0601-eTRV6.json,sha256=TM0c4v-JXcGJ5G7QkSLCV6np-D8LyxIPcUXzaZ4qNz8,1705
529
529
  z4d_certified_devices/Certified/Tuya/TS0601-eTRV7.json,sha256=bB7unGVr8KoedARo7lt6YMWViIbrWH3JrqB8Z3PhxRw,2957
530
530
  z4d_certified_devices/Certified/Tuya/TS0601-motion.json,sha256=Fano1VCGzLNvxENLcEebl0tiJPhRIXrqhCGwm0VMfbk,1229
531
531
  z4d_certified_devices/Certified/Tuya/TS0601-photoelectric-smoke.json,sha256=-Ux-YUEmm7rZYs9lbt2np37e__y6tiQMHV47MhBbxaw,1123
@@ -574,9 +574,9 @@ z4d_certified_devices/Certified/eWeLink/SA-003-Zigbee.json,sha256=PHqliTZ0_8a7F_
574
574
  z4d_certified_devices/Certified/eWeLink/SA-030-1.json,sha256=PHqliTZ0_8a7F_hbRVIVQ9A-sJipGrBD1jzhgkKJRvw,833
575
575
  z4d_certified_devices/Certified/eWeLink/SWITCH-ZR02.json,sha256=poSWAakR1iWJyvCXx5vgjYga38l6QYZM5C0MSk5vqas,835
576
576
  z4d_certified_devices/Certified/eWeLink/SWITCH-ZR03-1.json,sha256=poSWAakR1iWJyvCXx5vgjYga38l6QYZM5C0MSk5vqas,835
577
- z4d_certified_devices-4.259.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
578
- z4d_certified_devices-4.259.dist-info/METADATA,sha256=VFXZz2b3PXwySYr7_poxv5YiRLADxXrzKlQC1JuvWHg,36878
579
- z4d_certified_devices-4.259.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
580
- z4d_certified_devices-4.259.dist-info/top_level.txt,sha256=dZpL9ibb5CtTAY-pS-wGk-1jh9d-q04ogJ-Dfskashk,22
581
- z4d_certified_devices-4.259.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
582
- z4d_certified_devices-4.259.dist-info/RECORD,,
577
+ z4d_certified_devices-5.261.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
578
+ z4d_certified_devices-5.261.dist-info/METADATA,sha256=kZGLg0QOfiqA8GkAN2XxY4qy6584ETv8NmQoHKyHZC8,36878
579
+ z4d_certified_devices-5.261.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
580
+ z4d_certified_devices-5.261.dist-info/top_level.txt,sha256=dZpL9ibb5CtTAY-pS-wGk-1jh9d-q04ogJ-Dfskashk,22
581
+ z4d_certified_devices-5.261.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
582
+ z4d_certified_devices-5.261.dist-info/RECORD,,