操作超时连接到IBM iot服务

时间:2016-12-01 00:52:10

标签: python raspberry-pi ibm-cloud raspbian iot

我试图在我的覆盆子pi上运行python脚本。我的设备也已连接到bluemix上。起初,我能够运行脚本,但现在我收到了以下错误。

2016-11-14 06:46:30,490 ibmiotf.application.Client警告无法加密消息,因为TLSv1.2不可用(基于SSL的MQTT至少需要Python v2.7.9或3.4和openssl v1.0.1) 2016-11-14 06:46:40,571 ibmiotf.application.Client CRITICAL操作时间连接到IBM物联网服务:1tlj3z.messaging.internetof things.ibmcloud.com 操作超时连接到IBM物联网服务:1tlj3z.mes saging.internetofthings.ibmcloud.com

PIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.OUT)
client = None
def myCommandCallback(cmd):
if cmd.event == "light":

payload = json.loads(cmd.payload)

 command = payload["command"]
print command
if command == "on":
GPIO.output(17, True)

elif command ==" off":

GPIO.output(17,False)

try:
options = ibmiotf.application.ParseConfigFile("/home/pi/device.cfg")
options["deviceId"] = options["id"]
options["id"] = "aaa" + options["id"]
client = ibmiotf.application.Client(options)
client.connect()
client.deviceEventCallback = myCommandCallback
client.subscribeToDeviceEvents(event="light")        

while True:
    GPIO.wait_for_edge(18, GPIO.FALLING)
    print "Button Pushed"
    myData = {'buttonPushed' : True}
    client.publishEvent("raspberrypi", options["deviceId"], "input", "json", myData)
    time.sleep(0.2)

除了ibmiotf.ConnectionException为e:     打印e

1 个答案:

答案 0 :(得分:0)

您的错误似乎是因为您没有使用Python和OpenSSL版本来支持IoT平台加密连接所需的TLS v1.2。

在端口8883或443上使用安全MQTT消息传递时,较新的客户端库会自动信任Watson IoT Platform提供的证书。如果您的客户端环境不是这种情况,您可以从messaging.pem下载并使用完整的证书链

请参阅物联网TLS security requirements documentation

您最初是否将脚本运行到非SSL端口?你在域中有通配符吗?