2024-06-16 09:32:34 发布
网友
我使用IoT基金会将我的Raspberry Pi与Bluemix上的应用程序连接起来:
https://developer.ibm.com/bluemix/2015/04/02/tutorial-using-a-raspberry-pi-python-iot-twilio-bluemix/
我有以下问题:
如果我按下Pi上的按钮,它只会在Pi终端打印出“按钮按下”。在
我没有收到任何短信发送我的手机,现在有一个条目从Twilio。在
结果发现IBM IoT Foundation库在解析JSON时发生了改变。。。另外,我把代码硬编码为美国电话号码。我还加了一张美国电话号码的支票。在
更改line 25
buttonPushed = cmd.payload["d"]["buttonPushed"]
到
不要使用命令有效载荷... 使用命令数据在
这个示例是旧的,是使用旧版本的库构建的,不幸的是它没有引用它使用的python库的哪个版本,因为最简单的“修复”是安装开发应用程序的库的版本。在
python库仍处于预发布状态,我建议在构建应用程序时将需求设置为库的特定版本,因为在这个阶段不能保证向后兼容性,并且任何新版本都可能由于行为的改变而破坏应用程序,尽管我尽量避免这些更改。在
库传递给回调的命令和事件对象具有以下属性:
如果您发送的命令格式为“json”,其中包含以下内容:{“d”:{“buttonPushed”:true}},那么命令数据看起来像这样:
在命令数据== { “d”:{ “纽扣式”:正确 } }在
普通的json parser对json的形状没有任何假设,只要有效负载是有效的json就可以工作。在
如果以“json iotf”格式发送相同的内容,则json-iotf解析器将启动,这仅在使用内置historian服务所需的json形状时有效。在本例中,它将直接从d元素获取数据,并从ts元素获取时间戳,因此您将拥有:
在命令数据== { “纽扣式”:正确 }在
在最新版本的库中命令有效载荷将是来自底层MQTT消息的原始字节数组
如果您需要您的应用程序/设备来理解不是json的有效负载,writing a custom codec and registering it with the clients就是一个简单的例子。在
关于如何同时使用数据和有效载荷的一个很好的例子可以在connector-cloudant application中找到:
def myEventCallback(self, evt): #self.logger.info("%-33s%-30s%s" % (evt.timestamp.isoformat(), evt.device, evt.event + ": " + json.dumps(evt.data))) #self.logger.info(evt.data) # Create with a generated ID future = self._cloudantDb.post(params={ 'typeId': evt.deviceType, 'deviceId': evt.deviceId, 'eventId': evt.event, 'timestamp': evt.timestamp.isoformat(), 'data': evt.data, 'format': evt.format, 'payload': base64.encodestring(evt.payload).decode('ascii') }) future.add_done_callback(self._eventRecordedCallback)
对于当前版本(0.1.7)
编辑:0.1.8发布,修复了此处提到的影响应用程序命令支持的几个错误。在
结果发现IBM IoT Foundation库在解析JSON时发生了改变。。。另外,我把代码硬编码为美国电话号码。我还加了一张美国电话号码的支票。在
更改line 25
到
^{pr2}$不要使用命令有效载荷... 使用命令数据在
这个示例是旧的,是使用旧版本的库构建的,不幸的是它没有引用它使用的python库的哪个版本,因为最简单的“修复”是安装开发应用程序的库的版本。在
python库仍处于预发布状态,我建议在构建应用程序时将需求设置为库的特定版本,因为在这个阶段不能保证向后兼容性,并且任何新版本都可能由于行为的改变而破坏应用程序,尽管我尽量避免这些更改。在
库传递给回调的命令和事件对象具有以下属性:
如果您发送的命令格式为“json”,其中包含以下内容:{“d”:{“buttonPushed”:true}},那么命令数据看起来像这样:
在命令数据== { “d”:{ “纽扣式”:正确 } }在
普通的json parser对json的形状没有任何假设,只要有效负载是有效的json就可以工作。在
如果以“json iotf”格式发送相同的内容,则json-iotf解析器将启动,这仅在使用内置historian服务所需的json形状时有效。在本例中,它将直接从d元素获取数据,并从ts元素获取时间戳,因此您将拥有:
在命令数据== { “纽扣式”:正确 }在
在最新版本的库中命令有效载荷将是来自底层MQTT消息的原始字节数组
如果您需要您的应用程序/设备来理解不是json的有效负载,writing a custom codec and registering it with the clients就是一个简单的例子。在
关于如何同时使用数据和有效载荷的一个很好的例子可以在connector-cloudant application中找到:
对于当前版本(0.1.7)
编辑:0.1.8发布,修复了此处提到的影响应用程序命令支持的几个错误。在
相关问题 更多 >
编程相关推荐