首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Thingsboard的控件窗口小部件声称“设备已离线”。

Thingsboard的控件窗口小部件声称“设备已离线”。
EN

Stack Overflow用户
提问于 2019-12-05 20:46:52
回答 1查看 1.7K关注 0票数 1

我在Raspberry Pi 3B上运行了一个python程序,在Thingsboard上发送数据。Thingsboard中的设备作为单个实体连接到仪表板。在运行该程序时,可以在仪表板的图表和卡片上显示数据,并且可以通过规则链发送服务器端RPC命令。但是控件窗口小部件声称“设备已离线”。

下面是Raspberry的代码:

代码语言:javascript
运行
复制
import paho.mqtt.client as mqtt
import time
import json
import random

def on_message(client, data, message):
  print json.loads(message.payload)

def main():
  client = mqtt.Client("python1")

  client.connected_flag=False
  client.suppress_puback_flag=False

  client.on_message = on_message

  token=[DEVICE ID]
  if token !="":
     pass
  client.username_pw_set(token, "")

  client.connect([MY THINGSBOARD HOST'S IP], 1883)
  client.subscribe("v1/devices/me/attributes", 1)
  client.subscribe("v1/devices/me/rpc/request/+", 1)
  time.sleep(2)

  while not client.connected_flag:
     client.loop()

  while True:
      message = {"number": random.randint(0, 100)};
      message_json = json.parse(message)

      client.publish("v1/devices/me/telemetry", message_json, 1)
      client.loop_start()
      time.sleep(3)
      client.loop_stop()

if __name__== '__main__':
    main()

如何让控件小部件意识到设备处于在线状态?

EN

回答 1

Stack Overflow用户

发布于 2019-12-11 07:44:38

当您打开仪表板控件小工具发送给您的请求时:

代码语言:javascript
运行
复制
{"method":"getValue","params":{}}

您需要在超时前对此消息进行响应。否则设备就会离线,我不知道有没有办法让设备在线。

编辑

J-Dobu,是的,你需要使用双向RPC。

请逐步查找路径:

要解决您的问题(假设您的应用程序接口是HTML API):1)当您打开仪表板RPC小部件生成RPC命令2)使用消息订阅此命令: curl -v -X GET http://localhost:8080/api/v1/$ACCESS_TOKEN/rpc 3) Thingsboard响应应类似于:{" ID ": 956,"method":"getValue","params":null} 4)使用此命令进行回复(在本例中将956替换为您的ID):curl -v -X POST -d '20‘https://cloud.thingsboard.io/api/v1/$ACCESS_TOKEN/rpc/956 --header "Content-Type:application/json“

Control RPC Widget有一些超时(它在编辑模式和高级选项卡上)。请确保您在此超时时间段内回复。否则,设备将使用另一个ID再次生成RPC命令,并且不会侦听上次回复。

在根规则链中,我将Message Type Switch直接连接到RPC Call request。确保你有最短的路径。在我的例子中,这就是问题所在。当我尝试添加一些逻辑时,它不能正常工作。

关于你的Raspberry,如果你没有看到正确的答案,你可能会错误地使用你的API。你能看到id和method的正确响应吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59195537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档