IBMIOTF / BlueMix发布命令语法

时间:2015-08-11 18:09:42

标签: python-2.7 ibm-cloud iot

我正在尝试在IBM的Bluemix /物联网上组装一个小概念验证系统。目前,这包括一个Raspberry Pi馈送事件,直到基于云的应用程序,当前存储这些事件,并使用以下代码块定期尝试发送命令:

def sendCmd(command, payload, device="raspberrypi" ):
    deviceId = #Fixed value
    global cmdCount
    client.publishCommand("raspberrypi", deviceId, str(command), "json", payload)
    print "Sending '%s' cmd, payload '%s' to device %s" % (command, payload, deviceId)
    cmdCount = cmdCount + 1

就文档而言,这似乎是正确的语法,如documentation所述:

   client.connect()
   commandData={'rebootDelay' : 50}
   client.publishCommand(myDeviceType, myDeviceId, "reboot", "json", myData)

此代码块中不会引发异常,但设备未接收任何命令;并且云代工日志没有抛出任何错误。关于我缺少的语法是否有一个微妙的观点?

1 个答案:

答案 0 :(得分:1)

这个问题归结为在Raspberry Pi上实例化了错误的类。我有一个 ibmiotf.application 的实例,它向变量self.client.commandCallback注册了一个函数。然而,似乎没有任何东西触发回调。

使用 ibmiotf.device 导入而不是 ibmiotf.application 实例化设备后,开始调用命令回调。这需要一些小的改动,以支持稍微不同的函数调用,但在尝试运行代码时它们是相当自我解释的。

Device Class控制从单元发布的事件,并确定如何处理来自上游的命令。而Application Class处理事件的接收和命令的发送。