AWSIoTDataPlaneUtil.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : AWSIoTDataPlaneUtil.py
  4. @Time : 2023/4/13 16:43
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. @Document: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot-data.html#iotdataplane
  9. """
  10. import json
  11. import logging
  12. import boto3
  13. LOGGER = logging.getLogger('info')
  14. class AWSIoTDataPlaneService:
  15. def __init__(self, aws_access_key_id, secret_access_key, region_name):
  16. self.client = boto3.client(
  17. 'iot-data',
  18. aws_access_key_id=aws_access_key_id,
  19. aws_secret_access_key=secret_access_key,
  20. region_name=region_name
  21. )
  22. def update_thing_shadow(self, thing_name, data, shadow_name=None):
  23. """
  24. 更新指定事物的影子
  25. @param thing_name: 物品名称
  26. @param data: 更新数据
  27. @param shadow_name: 自定义影子名称(使用经典影子可不填)
  28. @return: 更新状态
  29. """
  30. try:
  31. params = {
  32. 'thingName': thing_name,
  33. 'payload': json.dumps(data)
  34. }
  35. if shadow_name:
  36. params['shadowName'] = shadow_name
  37. response = self.client.update_thing_shadow(**params)
  38. assert response['ResponseMetadata']['HTTPStatusCode'] == 200
  39. return True
  40. except Exception as e:
  41. LOGGER.info('更新设备影子异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  42. return False