2016-06-22 16 views
0

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

Mögliche Duplikat [auf \ _message ist in Python nicht funktioniert] (http://stackoverflow.com/questions/37984677/on-message-is-not-working-in-python) –

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)