Node-RED, узел IOT Foundation Out не отправляет команды

У меня есть приложение Node-RED, привязанное к службе IOT Foundation (iotf). Я могу получать события от устройств и обрабатывать их соответствующим образом.

Однако теперь я заинтересован в отправке команд обратно на свои устройства, и у меня возникли некоторые проблемы. На устройстве ничего не отображается, но, создав IOTF в узле, я могу подтвердить, что команда проходит через iotf.

Я определенно могу получить команды для прохождения через iotf, используя чистый Python, так как следующий код работает хорошо:

Код клиента:

#!/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>

У меня есть выходной узел Node-RED iotf, настроенный, как показано ниже, но когда я запускаю поток, функция обратного вызова команды не запускается!

введите описание изображения здесь введите описание изображения здесь

Я думаю, что, возможно, что-то не так, либо с попыткой использовать триггер временной метки для запуска команды, либо с тем, как я настроил сам выходной узел - любые предложения или советы будут оценены!


person holocron    schedule 16.06.2015    source источник
comment
Таблица типов вашего устройства кажется немного странной. Так вы зарегистрировали свое устройство? Укажите свою организацию, чтобы я мог проверить ваши зарегистрированные устройства.   -  person ValerieLampkin    schedule 17.06.2015
comment
Спасибо @ValerieLampkin. Вы можете взглянуть, моя организация - cgmncc. Я определенно могу отправлять команды на устройство, используя приложение Python, зарегистрированное в той же организации, но всякий раз, когда я пытаюсь сделать то же самое из Node-RED, на устройстве ничего не отображается. Я не уверен, попадают ли команды в основу IOT (у историка, похоже, нет API для просмотра командных сообщений).   -  person holocron    schedule 17.06.2015


Ответы (1)


Простым тестом для проверки того, достигают ли команды IBM IoT Foundation, является разработка другого потока, имеющего узел IoT App In, который подписывается на команды. Я прикрепляю поток Node-RED для того же здесь

[
{
    "id": "40560f8b.30693",
    "type": "ibmiot in",
    "authentication": "boundService",
    "apiKey": "",
    "inputType": "cmd",
    "deviceId": "b827eb764b7a",
    "applicationId": "",
    "deviceType": "table",
    "eventType": "",
    "commandType": "test",
    "format": "string",
    "name": "IBM IoT App In",
    "service": "registered",
    "allDevices": false,
    "allApplications": "",
    "allDeviceTypes": false,
    "allEvents": "",
    "allCommands": false,
    "allFormats": false,
    "x": 268,
    "y": 171,
    "z": "6bd610b9.7b40a",
    "wires": [
        [
            "2f9b9c00.8b7ba4"
        ]
    ]
},
{
    "id": "2f9b9c00.8b7ba4",
    "type": "debug",
    "name": "",
    "active": true,
    "console": "false",
    "complete": "false",
    "x": 493,
    "y": 195,
    "z": "6bd610b9.7b40a",
    "wires": []
}
]

В рабочей области оно будет выглядеть следующим образом.
введите здесь описание изображения

После добавления этого потока вы можете протестировать публикацию команд устройства из той же рабочей области.
Не могли бы вы попробовать это? Поскольку теперь у вас будет 2 узла отладки, вы сможете увидеть один и тот же вывод timetamp дважды. Я пробовал тот же поток, с теми же деталями (кроме организации), и он отлично работает.

Спасибо и привет Амит М Мангалведкар

person Amit Mangalvedkar    schedule 18.06.2015
comment
Привет @ amit-mangalvedkar, спасибо за ответ. Я попробовал, как вы предлагаете, и дважды вижу метку времени на выходе. Это говорит мне о том, что команда действительно проходит через IOT Foundation. Теперь я собираюсь загрузить свой Raspberry Pi и повторно подключить его к IOT Foundation, чтобы посмотреть, получит ли он команду. - person holocron; 18.06.2015
comment
Я обновил исходный вопрос кодом, который я запускаю на устройстве, но, насколько я могу судить, он все еще не получает никаких команд! - person holocron; 19.06.2015
comment
В коде устройства, который вы вставили ранее, я не вижу никакой записи для типа команды, настроенной для тестирования. Не могли бы вы опубликовать весь клиентский код (просто замаскировав токен аутентификации)? - person Amit Mangalvedkar; 20.06.2015
comment
Привет, Амит, это весь код устройства. Я не вижу способа установить тип команды из документации. docs.internetofthings.ibmcloud.com/libraries/ Пожалуйста, сообщите ! - person holocron; 22.06.2015
comment
Я полностью пропустил этот комментарий, и хотя прошло более 4 месяцев, я хотел бы знать, сохраняется ли эта проблема. - person Amit Mangalvedkar; 31.10.2015
comment
Честно говоря, это было так давно, я не могу вспомнить, что именно помогло мне преодолеть препятствие, но я действительно заставил эту вещь работать! Я отмечу ваш ответ как правильный, поскольку он привел меня к решению ... каким бы он ни был ‹blush /› - person holocron; 05.11.2015