【问题标题】:Telemetry does not show up in Thingsboard device dialog ("Hello world" tutorial)遥测未显示在 Thingsboard 设备对话框中(“Hello world”教程)
【发布时间】:2022-11-13 15:31:19
【问题描述】:

我在本地安装了 ThingsBoard CE。我跟着

https://thingsboard.io/docs/user-guide/install/ubuntu/

一步步。安装基础是在虚拟主机上安装全新的 Ubuntu 22.04 Server,没有其他职责。这是一个仅限 IPv6 的安装,其中 127.0.0.1 是唯一可直接访问的 IPv4 地址,其他 IPv4 目标是 NAT64/DNS64。从我所看到的(例如通过 systemctl)来看,所有服务(Postgresql、Zookeeper、Kafka、Thingsboard)都能正确启动。我安装了 Thingsboard说明第 6 步中的 --loadDemo 选项。我可以使用预装的帐户登录。我已经更改了密码。在检查了连接到 localhost:8080 的情况后,我为 IPv6 和 IPv4 连接安装了基于 Apache 的反向代理。这一切都有效。

接下来,我继续学习“Hello world”教程

https://thingsboard.io/docs/getting-started-guides/helloworld/

我使用curl 触发了模拟遥测传输:

root@thingsboard:~# curl -v -X POST -d '{"temperature": "24"}' http://localhost:8080/api/v1/xxx/telemetry --header "Content-Type:application/json"

在 HTTP 级别上,这似乎有效:

*   Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /api/v1/xxx/telemetry HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.81.0
> Accept: */*
> Content-Type:application/json
> Content-Length: 21
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 
< Vary: Origin
< Vary: Access-Control-Request-Method
< Vary: Access-Control-Request-Headers
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< Content-Length: 0
< Date: Wed, 26 Oct 2022 04:33:32 GMT
< 
* Connection #0 to host localhost left intact

但是,我在租户的“设备”对话框中的“我的新设备”的“最新遥测”选项卡中看不到遥测数据。我试过了

  • 通过反向代理远程发送数据或直接发送到 localhost:8080
  • 通过 IPv6 或 IPv4 发送
  • 通过禁用 thingsboard.conf 中的 Kafka-config 行,用内存中队列替换 Kafka 队列。

没有什么改变行为。但是,使其在语法上不正确的 JSON 或使用错误的凭据会导致不同的错误结果代码,因此 Thingsboard实际处理消息。

我在租户的“Api 使用”对话框中也看不到任何内容,因为子框架中只有旋转轮。

这就是我现在卡住的地方。我不知道在哪里寻找问题,因为我什至不知道我可能在哪里可以看。

谁能帮我?

此致, 短剑

【问题讨论】:

    标签: thingsboard


    【解决方案1】:

    确认遥测已正确到达您在帖子 url (/api/v1/xxx/telemetry), you have to set up debug mode in rule chain nodes: https://thingsboard.io/docs/user-guide/rule-engine-2-0/overview/#debugging

    默认情况下,所有设备消息都进入根规则链,在“消息类型切换”节点中设置调试模式并再次发送相同的请求,然后检查该节点的事件。

    如果一切顺利,“Message Type Switch”的输出一定是“Post telemetry” rule chain

    “保存时间序列”是负责保存遥测数据的节点。

    【讨论】:

    • 我终于找到了继续测试的时间。在根链节点中启用调试实际上表明事件已处理并且“保存遥测”节点显示“成功”。设备日志中仍然没有出现遥测。我仍然卡住了,不知道在哪里继续搜索。
    【解决方案2】:

    通常,问题出在一个完全出乎意料的位置:事实证明,ThingsBoard 实际上完美地处理了这些事件,但我的反向代理配置错误。这也是原因

    我在租户的“Api 使用”对话框中也看不到任何内容,因为子框架中只有旋转轮。

    我使用 Apache 作为反向代理。它需要启用proxyproxy_htmlproxy_wstunnel 模块以及以下配置(假设它与ThingsBoard 在同一台机器上运行):

    # close off proxying while allowing reverseproxy
    ProxyRequests Off
    # pass header information through to the proxied host
    ProxyPreserveHost On
    
    # mod_proxy_wstunnel for the data websockets
    ProxyPass /api/ws/ ws://localhost:8080/api/ws/
    
    # "normal" http reverse proxy
    ProxyPass /        http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    

    现在我看到了遥测,我有了仪表板,我可以最后继续学习教程。

    我可以建议本地安装说明至少提及此配置需要吗?这是一个微不足道的陷阱,但如果您忘记了它并且没有得到任何暗示存在问题的迹象,那可能会非常令人沮丧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2015-03-19
      相关资源
      最近更新 更多