tencentcloud-sdk-python-iotexplorer 3.1.134__tar.gz → 3.1.135__tar.gz

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.
Files changed (17) hide show
  1. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/PKG-INFO +2 -2
  2. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/setup.py +1 -1
  3. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/__init__.py +1 -1
  4. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/v20190423/errorcodes.py +12 -0
  5. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/v20190423/iotexplorer_client.py +107 -0
  6. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/v20190423/iotexplorer_client_async.py +92 -0
  7. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/v20190423/models.py +522 -0
  8. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud_sdk_python_iotexplorer.egg-info/PKG-INFO +2 -2
  9. tencentcloud_sdk_python_iotexplorer-3.1.135/tencentcloud_sdk_python_iotexplorer.egg-info/requires.txt +1 -0
  10. tencentcloud_sdk_python_iotexplorer-3.1.134/tencentcloud_sdk_python_iotexplorer.egg-info/requires.txt +0 -1
  11. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/README.rst +0 -0
  12. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/setup.cfg +0 -0
  13. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/__init__.py +0 -0
  14. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud/iotexplorer/v20190423/__init__.py +0 -0
  15. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud_sdk_python_iotexplorer.egg-info/SOURCES.txt +0 -0
  16. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud_sdk_python_iotexplorer.egg-info/dependency_links.txt +0 -0
  17. {tencentcloud_sdk_python_iotexplorer-3.1.134 → tencentcloud_sdk_python_iotexplorer-3.1.135}/tencentcloud_sdk_python_iotexplorer.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-iotexplorer
3
- Version: 3.1.134
3
+ Version: 3.1.135
4
4
  Summary: Tencent Cloud Iotexplorer SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.134
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.135
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -8,7 +8,7 @@ ROOT = os.path.dirname(__file__)
8
8
 
9
9
  setup(
10
10
  name='tencentcloud-sdk-python-iotexplorer',
11
- install_requires=["tencentcloud-sdk-python-common>=3.1.134,<4.0.0"],
11
+ install_requires=["tencentcloud-sdk-python-common>=3.1.135,<4.0.0"],
12
12
 
13
13
  version=tencentcloud.__version__,
14
14
  description='Tencent Cloud Iotexplorer SDK for Python',
@@ -14,4 +14,4 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- __version__ = '3.1.134'
17
+ __version__ = '3.1.135'
@@ -239,6 +239,9 @@ INVALIDPARAMETERVALUE_FORWARDREDIRECTDENIED = 'InvalidParameterValue.ForwardRedi
239
239
  # 拉取产品列表失败。
240
240
  INVALIDPARAMETERVALUE_GETPRODUCTSLISTERROR = 'InvalidParameterValue.GetProductsListError'
241
241
 
242
+ # AppKey 无效
243
+ INVALIDPARAMETERVALUE_INVALIDAPPKEY = 'InvalidParameterValue.InvalidAppKey'
244
+
242
245
  # 回调 Token 格式有误
243
246
  INVALIDPARAMETERVALUE_INVALIDCALLBACKTOKEN = 'InvalidParameterValue.InvalidCallbackToken'
244
247
 
@@ -359,6 +362,9 @@ INVALIDPARAMETERVALUE_TPNSANDROIDVALIDATIONFAILED = 'InvalidParameterValue.TPNSA
359
362
  # TPNSiOSAccessID, TPNSiOSSecretKey, TPNSiOSRegion validation failed。
360
363
  INVALIDPARAMETERVALUE_TPNSIOSVALIDATIONFAILED = 'InvalidParameterValue.TPNSiOSValidationFailed'
361
364
 
365
+ # Topic与replyTopic必须同时设置或同时为空
366
+ INVALIDPARAMETERVALUE_TOPICMISMATCH = 'InvalidParameterValue.TopicMismatch'
367
+
362
368
  # Topic已存在。
363
369
  INVALIDPARAMETERVALUE_TOPICPOLICYALREADYEXIST = 'InvalidParameterValue.TopicPolicyAlreadyExist'
364
370
 
@@ -695,6 +701,9 @@ UNSUPPORTEDOPERATION_PRODUCTHASBINDEDGATEWAYPRODUCT = 'UnsupportedOperation.Prod
695
701
  # 产品已被共享,请先解除共享。
696
702
  UNSUPPORTEDOPERATION_PRODUCTHASSHARED = 'UnsupportedOperation.ProductHasShared'
697
703
 
704
+ # 子产品禁止直接绑定家庭,请走网关绑定
705
+ UNSUPPORTEDOPERATION_PRODUCTISSUBPRODUCT = 'UnsupportedOperation.ProductIsSubProduct'
706
+
698
707
  # 存在重复项目。
699
708
  UNSUPPORTEDOPERATION_PROJECTDUPKEYEXIST = 'UnsupportedOperation.ProjectDupKeyExist'
700
709
 
@@ -724,3 +733,6 @@ UNSUPPORTEDOPERATION_VIDEOINSUFFICIENTLICENSES = 'UnsupportedOperation.VideoInsu
724
733
 
725
734
  # Video平台产品不存在。
726
735
  UNSUPPORTEDOPERATION_VIDEOPRODUCTNOTEXIST = 'UnsupportedOperation.VideoProductNotExist'
736
+
737
+ # 虚拟设备禁止绑定 / 解绑
738
+ UNSUPPORTEDOPERATION_VIRTUALDEVICECANNOTBIND = 'UnsupportedOperation.VirtualDeviceCannotBind'
@@ -258,6 +258,31 @@ class IotexplorerClient(AbstractClient):
258
258
  raise TencentCloudSDKException(type(e).__name__, str(e))
259
259
 
260
260
 
261
+ def BindUserDevice(self, request):
262
+ r"""1. 按 `(IotAppID, OpenID)` 兜底创建 / 复用 app 端用户;
263
+ 2. 按 `(用户, FamilyName)` 兜底创建 / 复用默认家庭;
264
+ 3. 将设备直接绑定到该家庭(已绑同家庭视为成功,并继续异步下发 `bind_device` 消息)。
265
+
266
+ :param request: Request instance for BindUserDevice.
267
+ :type request: :class:`tencentcloud.iotexplorer.v20190423.models.BindUserDeviceRequest`
268
+ :rtype: :class:`tencentcloud.iotexplorer.v20190423.models.BindUserDeviceResponse`
269
+
270
+ """
271
+ try:
272
+ params = request._serialize()
273
+ headers = request.headers
274
+ body = self.call("BindUserDevice", params, headers=headers)
275
+ response = json.loads(body)
276
+ model = models.BindUserDeviceResponse()
277
+ model._deserialize(response["Response"])
278
+ return model
279
+ except Exception as e:
280
+ if isinstance(e, TencentCloudSDKException):
281
+ raise
282
+ else:
283
+ raise TencentCloudSDKException(type(e).__name__, str(e))
284
+
285
+
261
286
  def CallDeviceActionAsync(self, request):
262
287
  r"""提供给用户异步调用设备行为的能力
263
288
 
@@ -304,6 +329,63 @@ class IotexplorerClient(AbstractClient):
304
329
  raise TencentCloudSDKException(type(e).__name__, str(e))
305
330
 
306
331
 
332
+ def CallDeviceRRPCSync(self, request):
333
+ r"""平台向设备发起一次同步 RRPC(Reverse RPC)调用——下行下发请求,同步阻塞等待设备回包,超时未回则返回 Timeout。
334
+
335
+ 适用场景:
336
+
337
+ 默认模式:使用平台保留 topic $iotrrpc/down 和 $iotrrpc/up。
338
+ 自定义模式:业务自带下行 topic;Reply topic 可选 —— 不传时平台仅依赖 clientToken 关联上行 ack。
339
+
340
+
341
+
342
+ ## 设备侧实现指引
343
+
344
+ ### 默认模式
345
+
346
+ 1. 订阅 `$iotrrpc/down/{ProductId}/{DeviceName}/+`;
347
+ 2. 收到下行后,从 topic 末段解析 `{mid}`;
348
+ 3. 向 `$iotrrpc/up/{ProductId}/{DeviceName}/{mid}` 发送回包,**payload 任意字节**(推荐 JSON)。
349
+
350
+ ### 自定义模式
351
+
352
+ 1. 订阅业务 `Topic`;
353
+ 2. 解析 payload JSON,**保留 `clientToken` 字段**;
354
+ 3. 处理业务后,构造 envelope JSON:
355
+
356
+ ```json
357
+ {
358
+ "method": "rrpc_sync_reply",
359
+ "clientToken": "<原样回填>",
360
+ "payload": "<base64 of 业务字节>"
361
+ }
362
+ ```
363
+
364
+ 4. publish 到与平台 `ReplyTopic` 通配符匹配的具体 topic(推荐使用与下行同 topic)。
365
+
366
+ > ⚠️ `clientToken` **必填且必须原样回填**,否则平台无法关联,调用方将收到 `Status=Timeout`。
367
+ > ⚠️ `method` 必须为 `rrpc_sync_reply`,否则会直接 skip。
368
+
369
+ :param request: Request instance for CallDeviceRRPCSync.
370
+ :type request: :class:`tencentcloud.iotexplorer.v20190423.models.CallDeviceRRPCSyncRequest`
371
+ :rtype: :class:`tencentcloud.iotexplorer.v20190423.models.CallDeviceRRPCSyncResponse`
372
+
373
+ """
374
+ try:
375
+ params = request._serialize()
376
+ headers = request.headers
377
+ body = self.call("CallDeviceRRPCSync", params, headers=headers)
378
+ response = json.loads(body)
379
+ model = models.CallDeviceRRPCSyncResponse()
380
+ model._deserialize(response["Response"])
381
+ return model
382
+ except Exception as e:
383
+ if isinstance(e, TencentCloudSDKException):
384
+ raise
385
+ else:
386
+ raise TencentCloudSDKException(type(e).__name__, str(e))
387
+
388
+
307
389
  def ChangeP2PRoute(self, request):
308
390
  r"""p2p路线切换(此接口目前处于内测接口,可以联系申请加白 )
309
391
 
@@ -5117,6 +5199,31 @@ class IotexplorerClient(AbstractClient):
5117
5199
  raise TencentCloudSDKException(type(e).__name__, str(e))
5118
5200
 
5119
5201
 
5202
+ def RevokeBindUserDevice(self, request):
5203
+ r"""1. 按 `(IotAppID, OpenID)` 只读定位用户(不存在视为已解绑,幂等成功);
5204
+ 2. 按 `(用户, FamilyName)` 只读定位家庭(不存在视为已解绑,幂等成功);
5205
+ 3. 解除设备与该家庭的绑定关系,异步下发 `delete_device` 消息;解绑路径不校验设备存在性,允许设备已删除时清理残留绑定关系。
5206
+
5207
+ :param request: Request instance for RevokeBindUserDevice.
5208
+ :type request: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeBindUserDeviceRequest`
5209
+ :rtype: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeBindUserDeviceResponse`
5210
+
5211
+ """
5212
+ try:
5213
+ params = request._serialize()
5214
+ headers = request.headers
5215
+ body = self.call("RevokeBindUserDevice", params, headers=headers)
5216
+ response = json.loads(body)
5217
+ model = models.RevokeBindUserDeviceResponse()
5218
+ model._deserialize(response["Response"])
5219
+ return model
5220
+ except Exception as e:
5221
+ if isinstance(e, TencentCloudSDKException):
5222
+ raise
5223
+ else:
5224
+ raise TencentCloudSDKException(type(e).__name__, str(e))
5225
+
5226
+
5120
5227
  def SearchPositionSpace(self, request):
5121
5228
  r"""搜索位置空间
5122
5229
 
@@ -207,6 +207,26 @@ class IotexplorerClient(AbstractClient):
207
207
 
208
208
  return await self.call_and_deserialize(**kwargs)
209
209
 
210
+ async def BindUserDevice(
211
+ self,
212
+ request: models.BindUserDeviceRequest,
213
+ opts: Dict = None,
214
+ ) -> models.BindUserDeviceResponse:
215
+ """
216
+ 1. 按 `(IotAppID, OpenID)` 兜底创建 / 复用 app 端用户;
217
+ 2. 按 `(用户, FamilyName)` 兜底创建 / 复用默认家庭;
218
+ 3. 将设备直接绑定到该家庭(已绑同家庭视为成功,并继续异步下发 `bind_device` 消息)。
219
+ """
220
+
221
+ kwargs = {}
222
+ kwargs["action"] = "BindUserDevice"
223
+ kwargs["params"] = request._serialize()
224
+ kwargs["resp_cls"] = models.BindUserDeviceResponse
225
+ kwargs["headers"] = request.headers
226
+ kwargs["opts"] = opts or {}
227
+
228
+ return await self.call_and_deserialize(**kwargs)
229
+
210
230
  async def CallDeviceActionAsync(
211
231
  self,
212
232
  request: models.CallDeviceActionAsyncRequest,
@@ -243,6 +263,58 @@ class IotexplorerClient(AbstractClient):
243
263
 
244
264
  return await self.call_and_deserialize(**kwargs)
245
265
 
266
+ async def CallDeviceRRPCSync(
267
+ self,
268
+ request: models.CallDeviceRRPCSyncRequest,
269
+ opts: Dict = None,
270
+ ) -> models.CallDeviceRRPCSyncResponse:
271
+ """
272
+ 平台向设备发起一次同步 RRPC(Reverse RPC)调用——下行下发请求,同步阻塞等待设备回包,超时未回则返回 Timeout。
273
+
274
+ 适用场景:
275
+
276
+ 默认模式:使用平台保留 topic $iotrrpc/down 和 $iotrrpc/up。
277
+ 自定义模式:业务自带下行 topic;Reply topic 可选 —— 不传时平台仅依赖 clientToken 关联上行 ack。
278
+
279
+
280
+
281
+ ## 设备侧实现指引
282
+
283
+ ### 默认模式
284
+
285
+ 1. 订阅 `$iotrrpc/down/{ProductId}/{DeviceName}/+`;
286
+ 2. 收到下行后,从 topic 末段解析 `{mid}`;
287
+ 3. 向 `$iotrrpc/up/{ProductId}/{DeviceName}/{mid}` 发送回包,**payload 任意字节**(推荐 JSON)。
288
+
289
+ ### 自定义模式
290
+
291
+ 1. 订阅业务 `Topic`;
292
+ 2. 解析 payload JSON,**保留 `clientToken` 字段**;
293
+ 3. 处理业务后,构造 envelope JSON:
294
+
295
+ ```json
296
+ {
297
+ "method": "rrpc_sync_reply",
298
+ "clientToken": "<原样回填>",
299
+ "payload": "<base64 of 业务字节>"
300
+ }
301
+ ```
302
+
303
+ 4. publish 到与平台 `ReplyTopic` 通配符匹配的具体 topic(推荐使用与下行同 topic)。
304
+
305
+ > ⚠️ `clientToken` **必填且必须原样回填**,否则平台无法关联,调用方将收到 `Status=Timeout`。
306
+ > ⚠️ `method` 必须为 `rrpc_sync_reply`,否则会直接 skip。
307
+ """
308
+
309
+ kwargs = {}
310
+ kwargs["action"] = "CallDeviceRRPCSync"
311
+ kwargs["params"] = request._serialize()
312
+ kwargs["resp_cls"] = models.CallDeviceRRPCSyncResponse
313
+ kwargs["headers"] = request.headers
314
+ kwargs["opts"] = opts or {}
315
+
316
+ return await self.call_and_deserialize(**kwargs)
317
+
246
318
  async def ChangeP2PRoute(
247
319
  self,
248
320
  request: models.ChangeP2PRouteRequest,
@@ -4011,6 +4083,26 @@ class IotexplorerClient(AbstractClient):
4011
4083
 
4012
4084
  return await self.call_and_deserialize(**kwargs)
4013
4085
 
4086
+ async def RevokeBindUserDevice(
4087
+ self,
4088
+ request: models.RevokeBindUserDeviceRequest,
4089
+ opts: Dict = None,
4090
+ ) -> models.RevokeBindUserDeviceResponse:
4091
+ """
4092
+ 1. 按 `(IotAppID, OpenID)` 只读定位用户(不存在视为已解绑,幂等成功);
4093
+ 2. 按 `(用户, FamilyName)` 只读定位家庭(不存在视为已解绑,幂等成功);
4094
+ 3. 解除设备与该家庭的绑定关系,异步下发 `delete_device` 消息;解绑路径不校验设备存在性,允许设备已删除时清理残留绑定关系。
4095
+ """
4096
+
4097
+ kwargs = {}
4098
+ kwargs["action"] = "RevokeBindUserDevice"
4099
+ kwargs["params"] = request._serialize()
4100
+ kwargs["resp_cls"] = models.RevokeBindUserDeviceResponse
4101
+ kwargs["headers"] = request.headers
4102
+ kwargs["opts"] = opts or {}
4103
+
4104
+ return await self.call_and_deserialize(**kwargs)
4105
+
4014
4106
  async def SearchPositionSpace(
4015
4107
  self,
4016
4108
  request: models.SearchPositionSpaceRequest,
@@ -2044,6 +2044,190 @@ class BindTWeTalkAgentResponse(AbstractModel):
2044
2044
  self._RequestId = params.get("RequestId")
2045
2045
 
2046
2046
 
2047
+ class BindUserDeviceRequest(AbstractModel):
2048
+ r"""BindUserDevice请求参数结构体
2049
+
2050
+ """
2051
+
2052
+ def __init__(self):
2053
+ r"""
2054
+ :param _AppKey: <p>应用 AppKey,用于解析 IotAppID 并完成签名校验</p>
2055
+ :type AppKey: str
2056
+ :param _ProductId: <p>产品 ID</p>
2057
+ :type ProductId: str
2058
+ :param _DeviceName: <p>设备名(禁止使用虚拟设备名 ~virtualDev)</p>
2059
+ :type DeviceName: str
2060
+ :param _OpenID: <p>用户 OpenID,用于定位 / 兜底创建 App 用户</p>
2061
+ :type OpenID: str
2062
+ :param _FamilyName: <p>家庭名,默认 default</p>
2063
+ :type FamilyName: str
2064
+ :param _RoomId: <p>房间 ID,默认 &quot;0&quot;</p>
2065
+ :type RoomId: str
2066
+ :param _NickName: <p>用户昵称(仅首次创建用户时使用)</p>
2067
+ :type NickName: str
2068
+ """
2069
+ self._AppKey = None
2070
+ self._ProductId = None
2071
+ self._DeviceName = None
2072
+ self._OpenID = None
2073
+ self._FamilyName = None
2074
+ self._RoomId = None
2075
+ self._NickName = None
2076
+
2077
+ @property
2078
+ def AppKey(self):
2079
+ r"""<p>应用 AppKey,用于解析 IotAppID 并完成签名校验</p>
2080
+ :rtype: str
2081
+ """
2082
+ return self._AppKey
2083
+
2084
+ @AppKey.setter
2085
+ def AppKey(self, AppKey):
2086
+ self._AppKey = AppKey
2087
+
2088
+ @property
2089
+ def ProductId(self):
2090
+ r"""<p>产品 ID</p>
2091
+ :rtype: str
2092
+ """
2093
+ return self._ProductId
2094
+
2095
+ @ProductId.setter
2096
+ def ProductId(self, ProductId):
2097
+ self._ProductId = ProductId
2098
+
2099
+ @property
2100
+ def DeviceName(self):
2101
+ r"""<p>设备名(禁止使用虚拟设备名 ~virtualDev)</p>
2102
+ :rtype: str
2103
+ """
2104
+ return self._DeviceName
2105
+
2106
+ @DeviceName.setter
2107
+ def DeviceName(self, DeviceName):
2108
+ self._DeviceName = DeviceName
2109
+
2110
+ @property
2111
+ def OpenID(self):
2112
+ r"""<p>用户 OpenID,用于定位 / 兜底创建 App 用户</p>
2113
+ :rtype: str
2114
+ """
2115
+ return self._OpenID
2116
+
2117
+ @OpenID.setter
2118
+ def OpenID(self, OpenID):
2119
+ self._OpenID = OpenID
2120
+
2121
+ @property
2122
+ def FamilyName(self):
2123
+ r"""<p>家庭名,默认 default</p>
2124
+ :rtype: str
2125
+ """
2126
+ return self._FamilyName
2127
+
2128
+ @FamilyName.setter
2129
+ def FamilyName(self, FamilyName):
2130
+ self._FamilyName = FamilyName
2131
+
2132
+ @property
2133
+ def RoomId(self):
2134
+ r"""<p>房间 ID,默认 &quot;0&quot;</p>
2135
+ :rtype: str
2136
+ """
2137
+ return self._RoomId
2138
+
2139
+ @RoomId.setter
2140
+ def RoomId(self, RoomId):
2141
+ self._RoomId = RoomId
2142
+
2143
+ @property
2144
+ def NickName(self):
2145
+ r"""<p>用户昵称(仅首次创建用户时使用)</p>
2146
+ :rtype: str
2147
+ """
2148
+ return self._NickName
2149
+
2150
+ @NickName.setter
2151
+ def NickName(self, NickName):
2152
+ self._NickName = NickName
2153
+
2154
+
2155
+ def _deserialize(self, params):
2156
+ self._AppKey = params.get("AppKey")
2157
+ self._ProductId = params.get("ProductId")
2158
+ self._DeviceName = params.get("DeviceName")
2159
+ self._OpenID = params.get("OpenID")
2160
+ self._FamilyName = params.get("FamilyName")
2161
+ self._RoomId = params.get("RoomId")
2162
+ self._NickName = params.get("NickName")
2163
+ memeber_set = set(params.keys())
2164
+ for name, value in vars(self).items():
2165
+ property_name = name[1:]
2166
+ if property_name in memeber_set:
2167
+ memeber_set.remove(property_name)
2168
+ if len(memeber_set) > 0:
2169
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
2170
+
2171
+
2172
+
2173
+ class BindUserDeviceResponse(AbstractModel):
2174
+ r"""BindUserDevice返回参数结构体
2175
+
2176
+ """
2177
+
2178
+ def __init__(self):
2179
+ r"""
2180
+ :param _UserID: <p>用户 UserID(已存在则复用)</p>
2181
+ :type UserID: str
2182
+ :param _FamilyId: <p>家庭 ID(已存在则复用)</p>
2183
+ :type FamilyId: str
2184
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
2185
+ :type RequestId: str
2186
+ """
2187
+ self._UserID = None
2188
+ self._FamilyId = None
2189
+ self._RequestId = None
2190
+
2191
+ @property
2192
+ def UserID(self):
2193
+ r"""<p>用户 UserID(已存在则复用)</p>
2194
+ :rtype: str
2195
+ """
2196
+ return self._UserID
2197
+
2198
+ @UserID.setter
2199
+ def UserID(self, UserID):
2200
+ self._UserID = UserID
2201
+
2202
+ @property
2203
+ def FamilyId(self):
2204
+ r"""<p>家庭 ID(已存在则复用)</p>
2205
+ :rtype: str
2206
+ """
2207
+ return self._FamilyId
2208
+
2209
+ @FamilyId.setter
2210
+ def FamilyId(self, FamilyId):
2211
+ self._FamilyId = FamilyId
2212
+
2213
+ @property
2214
+ def RequestId(self):
2215
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
2216
+ :rtype: str
2217
+ """
2218
+ return self._RequestId
2219
+
2220
+ @RequestId.setter
2221
+ def RequestId(self, RequestId):
2222
+ self._RequestId = RequestId
2223
+
2224
+
2225
+ def _deserialize(self, params):
2226
+ self._UserID = params.get("UserID")
2227
+ self._FamilyId = params.get("FamilyId")
2228
+ self._RequestId = params.get("RequestId")
2229
+
2230
+
2047
2231
  class CallDeviceActionAsyncRequest(AbstractModel):
2048
2232
  r"""CallDeviceActionAsync请求参数结构体
2049
2233
 
@@ -2337,6 +2521,220 @@ class CallDeviceActionSyncResponse(AbstractModel):
2337
2521
  self._RequestId = params.get("RequestId")
2338
2522
 
2339
2523
 
2524
+ class CallDeviceRRPCSyncRequest(AbstractModel):
2525
+ r"""CallDeviceRRPCSync请求参数结构体
2526
+
2527
+ """
2528
+
2529
+ def __init__(self):
2530
+ r"""
2531
+ :param _ProductId: <p>产品 ID</p>
2532
+ :type ProductId: str
2533
+ :param _DeviceName: <p>设备名</p>
2534
+ :type DeviceName: str
2535
+ :param _Payload: <p>业务原始 payload,透传给设备</p>
2536
+ :type Payload: str
2537
+ :param _Encoding: <p>下行传输层编码标识;base64 时下发到 broker 的 payload 会做一次 base64 编码</p>
2538
+ :type Encoding: str
2539
+ :param _Topic: <p>自定义下行 topic;为空则用 <code>$iotrrpc/down/{ProductId}/{DeviceName}/{mid}</code></p>
2540
+ :type Topic: str
2541
+ :param _ReplyTopic: <p>自定义上行 topic 模板(支持通配符);可留空,留空时仅依赖 clientToken 关联 ack</p>
2542
+ :type ReplyTopic: str
2543
+ """
2544
+ self._ProductId = None
2545
+ self._DeviceName = None
2546
+ self._Payload = None
2547
+ self._Encoding = None
2548
+ self._Topic = None
2549
+ self._ReplyTopic = None
2550
+
2551
+ @property
2552
+ def ProductId(self):
2553
+ r"""<p>产品 ID</p>
2554
+ :rtype: str
2555
+ """
2556
+ return self._ProductId
2557
+
2558
+ @ProductId.setter
2559
+ def ProductId(self, ProductId):
2560
+ self._ProductId = ProductId
2561
+
2562
+ @property
2563
+ def DeviceName(self):
2564
+ r"""<p>设备名</p>
2565
+ :rtype: str
2566
+ """
2567
+ return self._DeviceName
2568
+
2569
+ @DeviceName.setter
2570
+ def DeviceName(self, DeviceName):
2571
+ self._DeviceName = DeviceName
2572
+
2573
+ @property
2574
+ def Payload(self):
2575
+ r"""<p>业务原始 payload,透传给设备</p>
2576
+ :rtype: str
2577
+ """
2578
+ return self._Payload
2579
+
2580
+ @Payload.setter
2581
+ def Payload(self, Payload):
2582
+ self._Payload = Payload
2583
+
2584
+ @property
2585
+ def Encoding(self):
2586
+ r"""<p>下行传输层编码标识;base64 时下发到 broker 的 payload 会做一次 base64 编码</p>
2587
+ :rtype: str
2588
+ """
2589
+ return self._Encoding
2590
+
2591
+ @Encoding.setter
2592
+ def Encoding(self, Encoding):
2593
+ self._Encoding = Encoding
2594
+
2595
+ @property
2596
+ def Topic(self):
2597
+ r"""<p>自定义下行 topic;为空则用 <code>$iotrrpc/down/{ProductId}/{DeviceName}/{mid}</code></p>
2598
+ :rtype: str
2599
+ """
2600
+ return self._Topic
2601
+
2602
+ @Topic.setter
2603
+ def Topic(self, Topic):
2604
+ self._Topic = Topic
2605
+
2606
+ @property
2607
+ def ReplyTopic(self):
2608
+ r"""<p>自定义上行 topic 模板(支持通配符);可留空,留空时仅依赖 clientToken 关联 ack</p>
2609
+ :rtype: str
2610
+ """
2611
+ return self._ReplyTopic
2612
+
2613
+ @ReplyTopic.setter
2614
+ def ReplyTopic(self, ReplyTopic):
2615
+ self._ReplyTopic = ReplyTopic
2616
+
2617
+
2618
+ def _deserialize(self, params):
2619
+ self._ProductId = params.get("ProductId")
2620
+ self._DeviceName = params.get("DeviceName")
2621
+ self._Payload = params.get("Payload")
2622
+ self._Encoding = params.get("Encoding")
2623
+ self._Topic = params.get("Topic")
2624
+ self._ReplyTopic = params.get("ReplyTopic")
2625
+ memeber_set = set(params.keys())
2626
+ for name, value in vars(self).items():
2627
+ property_name = name[1:]
2628
+ if property_name in memeber_set:
2629
+ memeber_set.remove(property_name)
2630
+ if len(memeber_set) > 0:
2631
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
2632
+
2633
+
2634
+
2635
+ class CallDeviceRRPCSyncResponse(AbstractModel):
2636
+ r"""CallDeviceRRPCSync返回参数结构体
2637
+
2638
+ """
2639
+
2640
+ def __init__(self):
2641
+ r"""
2642
+ :param _ClientToken: <p>平台为本次调用分配的关联 token(v2{instanceId}::{reqId} 形式)</p>
2643
+ :type ClientToken: str
2644
+ :param _Status: <p>调用状态</p>
2645
+ :type Status: str
2646
+ :param _MessageId: <p>平台分配的 messageID</p>
2647
+ :type MessageId: int
2648
+ :param _PayloadBase64: <p>设备回包原始字节的 base64 编码(仅 Status=Replied 有值)</p>
2649
+ :type PayloadBase64: str
2650
+ :param _ReplyTopic: <p>实际生效的 reply topic 模板(默认模式由平台生成,自定义模式为入参原值)</p>
2651
+ :type ReplyTopic: str
2652
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
2653
+ :type RequestId: str
2654
+ """
2655
+ self._ClientToken = None
2656
+ self._Status = None
2657
+ self._MessageId = None
2658
+ self._PayloadBase64 = None
2659
+ self._ReplyTopic = None
2660
+ self._RequestId = None
2661
+
2662
+ @property
2663
+ def ClientToken(self):
2664
+ r"""<p>平台为本次调用分配的关联 token(v2{instanceId}::{reqId} 形式)</p>
2665
+ :rtype: str
2666
+ """
2667
+ return self._ClientToken
2668
+
2669
+ @ClientToken.setter
2670
+ def ClientToken(self, ClientToken):
2671
+ self._ClientToken = ClientToken
2672
+
2673
+ @property
2674
+ def Status(self):
2675
+ r"""<p>调用状态</p>
2676
+ :rtype: str
2677
+ """
2678
+ return self._Status
2679
+
2680
+ @Status.setter
2681
+ def Status(self, Status):
2682
+ self._Status = Status
2683
+
2684
+ @property
2685
+ def MessageId(self):
2686
+ r"""<p>平台分配的 messageID</p>
2687
+ :rtype: int
2688
+ """
2689
+ return self._MessageId
2690
+
2691
+ @MessageId.setter
2692
+ def MessageId(self, MessageId):
2693
+ self._MessageId = MessageId
2694
+
2695
+ @property
2696
+ def PayloadBase64(self):
2697
+ r"""<p>设备回包原始字节的 base64 编码(仅 Status=Replied 有值)</p>
2698
+ :rtype: str
2699
+ """
2700
+ return self._PayloadBase64
2701
+
2702
+ @PayloadBase64.setter
2703
+ def PayloadBase64(self, PayloadBase64):
2704
+ self._PayloadBase64 = PayloadBase64
2705
+
2706
+ @property
2707
+ def ReplyTopic(self):
2708
+ r"""<p>实际生效的 reply topic 模板(默认模式由平台生成,自定义模式为入参原值)</p>
2709
+ :rtype: str
2710
+ """
2711
+ return self._ReplyTopic
2712
+
2713
+ @ReplyTopic.setter
2714
+ def ReplyTopic(self, ReplyTopic):
2715
+ self._ReplyTopic = ReplyTopic
2716
+
2717
+ @property
2718
+ def RequestId(self):
2719
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
2720
+ :rtype: str
2721
+ """
2722
+ return self._RequestId
2723
+
2724
+ @RequestId.setter
2725
+ def RequestId(self, RequestId):
2726
+ self._RequestId = RequestId
2727
+
2728
+
2729
+ def _deserialize(self, params):
2730
+ self._ClientToken = params.get("ClientToken")
2731
+ self._Status = params.get("Status")
2732
+ self._MessageId = params.get("MessageId")
2733
+ self._PayloadBase64 = params.get("PayloadBase64")
2734
+ self._ReplyTopic = params.get("ReplyTopic")
2735
+ self._RequestId = params.get("RequestId")
2736
+
2737
+
2340
2738
  class CamTag(AbstractModel):
2341
2739
  r"""标签数据结构
2342
2740
 
@@ -39115,6 +39513,130 @@ class ResumeWeCallDeviceResponse(AbstractModel):
39115
39513
  self._RequestId = params.get("RequestId")
39116
39514
 
39117
39515
 
39516
+ class RevokeBindUserDeviceRequest(AbstractModel):
39517
+ r"""RevokeBindUserDevice请求参数结构体
39518
+
39519
+ """
39520
+
39521
+ def __init__(self):
39522
+ r"""
39523
+ :param _AppKey: <p>应用 AppKey,用于解析 IotAppID 并完成签名校验</p>
39524
+ :type AppKey: str
39525
+ :param _ProductId: <p>产品 ID</p>
39526
+ :type ProductId: str
39527
+ :param _DeviceName: <p>设备名</p>
39528
+ :type DeviceName: str
39529
+ :param _OpenID: <p>用户 OpenID(仅只读定位,不会创建)</p>
39530
+ :type OpenID: str
39531
+ :param _FamilyName: <p>家庭名,默认 default</p>
39532
+ :type FamilyName: str
39533
+ """
39534
+ self._AppKey = None
39535
+ self._ProductId = None
39536
+ self._DeviceName = None
39537
+ self._OpenID = None
39538
+ self._FamilyName = None
39539
+
39540
+ @property
39541
+ def AppKey(self):
39542
+ r"""<p>应用 AppKey,用于解析 IotAppID 并完成签名校验</p>
39543
+ :rtype: str
39544
+ """
39545
+ return self._AppKey
39546
+
39547
+ @AppKey.setter
39548
+ def AppKey(self, AppKey):
39549
+ self._AppKey = AppKey
39550
+
39551
+ @property
39552
+ def ProductId(self):
39553
+ r"""<p>产品 ID</p>
39554
+ :rtype: str
39555
+ """
39556
+ return self._ProductId
39557
+
39558
+ @ProductId.setter
39559
+ def ProductId(self, ProductId):
39560
+ self._ProductId = ProductId
39561
+
39562
+ @property
39563
+ def DeviceName(self):
39564
+ r"""<p>设备名</p>
39565
+ :rtype: str
39566
+ """
39567
+ return self._DeviceName
39568
+
39569
+ @DeviceName.setter
39570
+ def DeviceName(self, DeviceName):
39571
+ self._DeviceName = DeviceName
39572
+
39573
+ @property
39574
+ def OpenID(self):
39575
+ r"""<p>用户 OpenID(仅只读定位,不会创建)</p>
39576
+ :rtype: str
39577
+ """
39578
+ return self._OpenID
39579
+
39580
+ @OpenID.setter
39581
+ def OpenID(self, OpenID):
39582
+ self._OpenID = OpenID
39583
+
39584
+ @property
39585
+ def FamilyName(self):
39586
+ r"""<p>家庭名,默认 default</p>
39587
+ :rtype: str
39588
+ """
39589
+ return self._FamilyName
39590
+
39591
+ @FamilyName.setter
39592
+ def FamilyName(self, FamilyName):
39593
+ self._FamilyName = FamilyName
39594
+
39595
+
39596
+ def _deserialize(self, params):
39597
+ self._AppKey = params.get("AppKey")
39598
+ self._ProductId = params.get("ProductId")
39599
+ self._DeviceName = params.get("DeviceName")
39600
+ self._OpenID = params.get("OpenID")
39601
+ self._FamilyName = params.get("FamilyName")
39602
+ memeber_set = set(params.keys())
39603
+ for name, value in vars(self).items():
39604
+ property_name = name[1:]
39605
+ if property_name in memeber_set:
39606
+ memeber_set.remove(property_name)
39607
+ if len(memeber_set) > 0:
39608
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
39609
+
39610
+
39611
+
39612
+ class RevokeBindUserDeviceResponse(AbstractModel):
39613
+ r"""RevokeBindUserDevice返回参数结构体
39614
+
39615
+ """
39616
+
39617
+ def __init__(self):
39618
+ r"""
39619
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
39620
+ :type RequestId: str
39621
+ """
39622
+ self._RequestId = None
39623
+
39624
+ @property
39625
+ def RequestId(self):
39626
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
39627
+ :rtype: str
39628
+ """
39629
+ return self._RequestId
39630
+
39631
+ @RequestId.setter
39632
+ def RequestId(self, RequestId):
39633
+ self._RequestId = RequestId
39634
+
39635
+
39636
+ def _deserialize(self, params):
39637
+ self._RequestId = params.get("RequestId")
39638
+
39639
+
39118
39640
  class SearchKeyword(AbstractModel):
39119
39641
  r"""搜索关键词
39120
39642
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-iotexplorer
3
- Version: 3.1.134
3
+ Version: 3.1.135
4
4
  Summary: Tencent Cloud Iotexplorer SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.134
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.135
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -0,0 +1 @@
1
+ tencentcloud-sdk-python-common<4.0.0,>=3.1.135
@@ -1 +0,0 @@
1
- tencentcloud-sdk-python-common<4.0.0,>=3.1.134