Mqtt 节点红色,IOT基础节点不发送命令 我有一个绑定到IOT基金会(IOTF)服务的节点红色应用程序。我可以从设备接收事件并适当地处理它们

Mqtt 节点红色,IOT基础节点不发送命令 我有一个绑定到IOT基金会(IOTF)服务的节点红色应用程序。我可以从设备接收事件并适当地处理它们,mqtt,ibm-cloud,iot,node-red,Mqtt,Ibm Cloud,Iot,Node Red,但是,我现在对将命令发送回我的设备感兴趣,并且遇到了一些问题。设备上没有显示任何内容,但通过在节点中创建IOTF,我可以确认命令正在通过IOTF 我完全可以使用纯python获得通过iotf的命令,因为以下代码运行良好: 客户端代码: #!/usr/bin/python import ibmiotf.device from time import sleep options = { "org": "cgmncc", "type": "table", "id": "b827eb76

但是,我现在对将命令发送回我的设备感兴趣,并且遇到了一些问题。设备上没有显示任何内容,但通过在节点中创建IOTF,我可以确认命令正在通过IOTF

我完全可以使用纯python获得通过iotf的命令,因为以下代码运行良好:

客户端代码:

#!/usr/bin/python

import ibmiotf.device
from time import sleep

options = {
  "org": "cgmncc",
  "type": "table",
  "id": "b827eb764b7a",
  "auth-method": "token",
  "auth-token": "redacted"
}

def myCommandCallback(cmd):
  print('inside command callback')
  print cmd

def main():
  client = ibmiotf.device.Client(options)
  client.connect()
  client.commandCallback = myCommandCallback
  while True:
    sleep(1)

if __name__ == "__main__":
  main()
#!/usr/bin/python

import ibmiotf.application

options = {
  "org": "redacted",
  "id": "python app",
  "auth-method": "apikey",
  "auth-key": "redacted",
  "auth-token": "redacted"
}

try:
  client = ibmiotf.application.Client(options)
  client.connect()
  client.publishCommand('table', 'b827eb764b7a', 'test')
  client.disconnect()
except ibmiotf.ConnectionException as e:
  print e
应用程序代码:

#!/usr/bin/python

import ibmiotf.device
from time import sleep

options = {
  "org": "cgmncc",
  "type": "table",
  "id": "b827eb764b7a",
  "auth-method": "token",
  "auth-token": "redacted"
}

def myCommandCallback(cmd):
  print('inside command callback')
  print cmd

def main():
  client = ibmiotf.device.Client(options)
  client.connect()
  client.commandCallback = myCommandCallback
  while True:
    sleep(1)

if __name__ == "__main__":
  main()
#!/usr/bin/python

import ibmiotf.application

options = {
  "org": "redacted",
  "id": "python app",
  "auth-method": "apikey",
  "auth-key": "redacted",
  "auth-token": "redacted"
}

try:
  client = ibmiotf.application.Client(options)
  client.connect()
  client.publishCommand('table', 'b827eb764b7a', 'test')
  client.disconnect()
except ibmiotf.ConnectionException as e:
  print e
每当运行应用程序代码时,我都会看到以下输出:

root@raspberrypi ~ # ./app.py 
inside command callback
<ibmiotf.device.Command instance at 0x14e8490>
root@raspberrypi~#/app.py
内部命令回调
我有一个节点红色iotf输出节点,如下所示配置,但当我触发流时,命令回调函数不会触发


我在想,尝试使用时间戳触发器来触发命令,或者我配置输出节点本身的方式可能有问题——任何建议或建议都将不胜感激

< P>一个简单的测试来检查命令是否到达IBM IOT基金会-开发另一个流,它在订阅命令的节点中有一个IOT应用程序。我在这里附加相同的节点红色流

[
{
“id”:“40560f8b.30693”,
“类型”:“ibmiot in”,
“身份验证”:“边界服务”,
“apiKey”:“,
“输入类型”:“cmd”,
“设备ID”:“b827eb764b7a”,
“应用程序ID”:“,
“设备类型”:“表”,
“事件类型”:“,
“命令类型”:“测试”,
“格式”:“字符串”,
“名称”:“IBM物联网应用程序中”,
“服务”:“已注册”,
“所有设备”:错误,
“所有申请”:“所有申请”,
“所有设备类型”:false,
“allEvents”:“allEvents”,
“所有命令”:错误,
“所有格式”:false,
“x”:268,
“y”:171,
“z”:“6bd610b9.7b40a”,
“电线”:[
[
“2f9b9c00.8b7ba4”
]
]
},
{
“id”:“2f9b9c00.8b7ba4”,
“类型”:“调试”,
“名称”:“,
“主动”:正确,
“控制台”:“假”,
“完成”:“错误”,
“x”:493,
“y”:195,
“z”:“6bd610b9.7b40a”,
“电线”:[]
}

]
您的设备类型“表”似乎有点奇怪。这就是您注册设备的方式吗?请提供您的组织,以便我可以检查您注册的设备。谢谢@ValerieLampkin您可以查看,我的组织是cgmncc。我完全可以使用注册到同一组织的python应用程序向设备发送命令,但每当我尝试从Node RED执行相同操作时,设备上都不会显示任何内容。我不确定这些命令是否会进入IOT基金会(历史学家似乎没有API来查看命令消息)。我确实按照您的建议进行了尝试,并在输出中看到了两次时间戳。这就告诉我命令确实通过IOT基金会。我现在要启动我的Raspberry Pi并重新连接到IOT基金会,看看它是否也会收到命令。我用我正在运行的代码更新了原来的问题,据我所知,它仍然没有收到任何命令。在您先前粘贴的设备代码中,我看不到命令类型设置为“test”的任何条目。你能发布整个客户端代码吗(同时屏蔽身份验证令牌)?嗨,阿米特,这是整个设备代码。我看不到从文档中设置命令类型的任何方法。请告知!我完全错过了这个评论,虽然4个多月过去了,我想知道这个问题是否仍然存在。