IBMIOTF/BlueMix 发布命令语法
IBMIOTF/BlueMix Publish Command Syntax
我正在尝试 assemble IBM Bluemix/Internet of Things 的小型概念验证系统。目前这包括 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)
这段代码没有抛出异常,但是设备没有接收到任何命令;并且 cloud foundry 日志没有抛出任何错误。我缺少的语法有什么微妙之处吗?
这个问题归结为在 Raspberry Pi 上实例化了错误的 class。我有一个 ibmiotf.application 的实例,它向变量 self.client.commandCallback 注册了一个函数。但是似乎没有任何东西触发回调。
一旦我使用 ibmiotf.device 导入而不是 ibmiotf.application 实例化设备,命令回调开始被称为。这需要进行一些小的更改,以支持略有不同的函数调用,但在尝试 运行 代码时,它们是相当不言自明的。
设备 Class 控制从单元发布的事件,并确定如何处理来自上游的命令。而应用程序 Class 处理事件的接收和命令的发出。
我正在尝试 assemble IBM Bluemix/Internet of Things 的小型概念验证系统。目前这包括 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)
这段代码没有抛出异常,但是设备没有接收到任何命令;并且 cloud foundry 日志没有抛出任何错误。我缺少的语法有什么微妙之处吗?
这个问题归结为在 Raspberry Pi 上实例化了错误的 class。我有一个 ibmiotf.application 的实例,它向变量 self.client.commandCallback 注册了一个函数。但是似乎没有任何东西触发回调。
一旦我使用 ibmiotf.device 导入而不是 ibmiotf.application 实例化设备,命令回调开始被称为。这需要进行一些小的更改,以支持略有不同的函数调用,但在尝试 运行 代码时,它们是相当不言自明的。
设备 Class 控制从单元发布的事件,并确定如何处理来自上游的命令。而应用程序 Class 处理事件的接收和命令的发出。