[英]Connecting senesor to aws iot
我們曾嘗試將傳感器連接到 aws iot。 傳感器已連接到 aws iot,但我們無法查看 shadow 上的消息。 我們的影子沒有得到更新。 請提出一些方法,以便我們可以更新我們的影子。
下面是我創建的一個類,用於與 AWS IoT 陰影交互,該類具有讀取、更新和刪除陰影的方法。 這里的主要內容是我使用boto3 客戶端連接到 AWS IoT,這使我能夠推送和拉取 JSON 以存儲在雲中(事物的影子)。
import boto3
import logging
import json
# Initialize logger for CloudWatch logs
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
class IoTOps:
"""
Params: iotClient boto3 client used to update thing's shadow and also send
messages to the thing
topic STRING - the MQTT Topic to send a message to
QoS - INT - Essentially the channel of a specific topic to communicate
over
"""
def __init__(self, iotConfig):
self.iotClient = boto3.client('iot-data', region_name='us-east-1')
self.topic = iotConfig['topic']
self.QoS = iotConfig['QoS']
self.thingName = iotConfig['thingName']
def publish_mqtt_message(self, payload):
"""
Description: Send MQTT message to MQTT Topic
Return: None
"""
# Publish a MQTT message to a topic for our thing to ingest
logger.info('publishing MQTT message to topic: {}'.format(self.topic))
self.iotClient.publish(
topic=self.topic,
qos=self.QoS,
payload=json.dumps(payload)
)
return
def update_shadow(self, payload):
"""
Summary: Updates a things shadow for a specified thing
Return The state information in a JSON format
"""
updatedPayload = {'state': {'desired': payload}}
response = self.iotClient.update_thing_shadow(
thingName=self.thingName,
payload=json.dumps(updatedPayload)
)
return response
def get_shadow(self):
"""
Summary: gets thing shadow for a specified thing
Return: The state information in JSON format
"""
response = self.iotClient.get_thing_shadow(
thingName=self.thingName
)
response = json.loads(response['payload'].read().decode('utf-8'))['state']['desired']
return response
def delete_shadow(self):
"""
Summary: deletes thing shadow for a specified thing
Return: The state information in a JSON format
"""
response = self.iotClient.delete_thing_shadow(
thingName=self.thingName
)
return response
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.