У меня есть приложение 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, настроенный, как показано ниже, но когда я запускаю поток, функция обратного вызова команды не запускается!
Я думаю, что, возможно, что-то не так, либо с попыткой использовать триггер временной метки для запуска команды, либо с тем, как я настроил сам выходной узел - любые предложения или советы будут оценены!