Ich arbeite an AWS Iot und in der Lage, den Schattenstatus durch das Terminal über Shell-Skript aktualisiert. Aber ich bin in der Lage zu bekommen root @ raspberrypi: ~ #. /aws_subscribe.py Verbunden mit Ergebniscode 0 und auch in aws iot home bekomme ich aus der Synchronisation Fehler Das ist unten angehängt. I followed the following linkShadow-Status ist in aws iot nicht zu synchronisieren wie zu lösen
0
A
Antwort
0
Dies ist so weit wie ich kann. Ich laufe auf einem Raspberry Pi, also brauche ich die Zertifikate. Ich bin nicht sicher, ob Sie die Zertifikate auf Lambda brauchen. Der Schattenstatus wird im benutzerdefinierten Rückruf zurückgegeben. So haben sie sich entschieden. Ich kann immer noch nicht herausfinden, wie man den Schattenstatus außerhalb des Rückrufs erhält, so dass man tatsächlich etwas Nützliches damit machen kann, außer Drucken.
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTShadowClient
import logging
import json
def get(payload, responseStatus, token):
dict = json.loads(payload)
print(str(dict["state"]["desired"]["State"])) #make sure this matches your shadow names
# Read in command-line parameters
useWebsocket = False
host = "XXXXXYourINFO HEREXXXXXX.iot.us-east-1.amazonaws.com"
rootCAPath = "XXXXXYourINFO HEREXXXXXX"
certificatePath = "XXXXXYourINFO HEREXXXXXX"
privateKeyPath = "XXXXXYourINFO HEREXXXXXX"
# Configure logging
logger = logging.getLogger("AWSIoTPythonSDK.core")
logger.setLevel(logging.DEBUG)
streamHandler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient("basicShadowUpdater")
myAWSIoTMQTTShadowClient.configureEndpoint(host, 8883)
myAWSIoTMQTTShadowClient.configureCredentials(rootCAPath, privateKeyPath, certificatePath)
# AWSIoTMQTTShadowClient configuration
myAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime(1, 32, 20)
myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout(10) # 10 sec
myAWSIoTMQTTShadowClient.configureMQTTOperationTimeout(5) # 5 sec
# Connect to AWS IoT
myAWSIoTMQTTShadowClient.connect()
# Create a deviceShadow with persistent subscription
Bot = myAWSIoTMQTTShadowClient.createShadowHandlerWithName("GarageRBP", True)
#get the shadow here and the state is included in the custom callback
Bot.shadowGet(get, 5)
Mögliche Duplikat [auf \ _message ist in Python nicht funktioniert] (http://stackoverflow.com/questions/37984677/on-message-is-not-working-in-python) –