• Thingsboard 简单教程:使用 ThingsBoard 查看物联网数据


    好东西分享给大家

    ==========================================================

    什么是ThingsBoard?

    ThingsBoard是一个开源平台,用于收集和可视化物联网设备的数据。可以将来自任意数量设备的数据发送到云服务器,在云服务器中可以通过可自定义的仪表板查看或共享。

    本指南将介绍如何在Linode上安装ThingsBoard并使用Raspberry Pi将简单的遥测数据发送到云仪表板。

    注意: 本指南将使用带有Sense HAT的Raspberry Pi 3 。您可以替换任何能够发送遥测数据的设备,或者curl在不使用任何外部设备的情况下用于试验ThingsBoard。

    安装ThingsBoard

    ThingsBoard在Java 8上运行,建议使用Oracle JDK。

    • 安装software-properties-common:

    sudo apt install software-properties-common

    • 添加Oracle PPA存储库:

    sudo apt-add-repository ppa:webupd8team/java

    • 更新您的系统:

    sudo apt update

    • 安装Oracle JDK。要安装Java 9 JDK,java8请java9在命令中更改为:

    sudo apt install oracle-java8-installer

    • 检查您的Java版本:

    java -version

    设置PostgreSQL

    • 安装PostgreSQL:

    sudo apt install postgresql postgresql-contrib

    • 为ThingsBoard创建数据库和数据库用户:

    sudo -u postgres createdb thingsboard sudo -u postgres createuser thingsboard

    • 为thingsboard用户设置密码并授予对数据库的访问权限:

    sudo -u postgres psql thingsboard ALTER USER thingsboard WITH PASSWORD 'thingsboard'; GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard; q

    • 安装ThingsBoard

    下载安装包。检查版本页面,并将以下命令中的版本号替换为标记为最新版本的版本:

    wget https://github.com/thingsboard/thingsboard/releases/download/v1.3.1/thingsboard-1.3.1.deb

    安装ThingsBoard:

    sudo dpkg -i thingsboard-1.3.1.deb

    /etc/thingsboard/conf/thingsboard.yml在文本编辑器中打开并注释掉该HSQLDB DAO Configuration部分:

    /etc/thingsboard/conf/thingsboard.yml

    # HSQLDB DAO Configuration
    #spring:
    #  data:
    #    jpa:
    #      repositories:
    #        enabled: "true"
    #  jpa:
    #    hibernate:
    #      ddl-auto: "validate"
    #    database-platform: "org.hibernate.dialect.HSQLDialect"
    #  datasource:
    #    driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
    #    url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
    #    username: "${SPRING_DATASOURCE_USERNAME:sa}"
    #    password: "${SPRING_DATASOURCE_PASSWORD:}"
    

    在同一节中,取消注释PostgreSQL配置块。用thingsboard用户名和密码替换用户名和密码字段thingsboard:

    /etc/thingsboard/conf/thingsboard.yml

    # PostgreSQL DAO Configuration
    spring:
      data:
        jpa:
          repositories:
            enabled: "true"
      jpa:
        hibernate:
          ddl-auto: "validate"
        database-platform: "org.hibernate.dialect.PostgreSQLDialect"
      datasource:
        driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
        url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
        username: "${SPRING_DATASOURCE_USERNAME:thingsboard}"
        password: "${SPRING_DATASOURCE_PASSWORD:thingsboard}"
    
    • 运行此安装脚本:

    sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

    • 启动ThingsBoard服务:

    sudo systemctl enable thingsboard sudo systemctl start thingsboard

    NGINX反向代理

    localhost:8080默认情况下,ThingsBoard会监听。出于安全考虑,最好通过反向代理服务仪表板。本指南将使用NGINX,但可以使用任何网络服务器。

    • 安装NGINX:

    sudo apt install nginx

    /etc/nginx/conf.d/thingsboard.conf使用文本编辑器创建并编辑它以匹配下面的示例。替换example.com为您的Linode的公共IP地址或FQDN。

    /etc/nginx/conf.d/thingsboard.conf

    server {
        listen 80;
        listen [::]:80;
    
        server_name example.com;
    
        location / {
            # try_files $uri $uri/ =404;
            proxy_pass http://localhost:8080/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }
    
    • 重启NGINX:

    sudo systemctl restart nginx

    设置ThingsBoard设备

    使用Web浏览器导航到您的Linode的IP地址。你应该看到ThingsBoard登录页面:

    模拟账户登录tenant@thingsboard.org和密码是tenant。登录后,您应该将其更改为更安全的密码。

    • 在主菜单中,单击“ 设备”图标,然后单击右下角的+图标以添加新设备。

    • 选择设备名称。将设备类型设置为PI。

    • 添加设备后,单击“ 设备”菜单中的图标。单击COPY ACCESS TOKEN复制此设备的API密钥(在下面使用)。
      配置Raspberry Pi

    注意以下步骤假定您具有对Raspberry Pi的终端访问权限,并且已配置Sense HAT及其库。有关Sense HAT入门的更多信息,请参阅Raspberry Pi 官方文档。如果您更愿意使用curl将模拟数据发送到ThingsBoard,则可以跳过本节。

    • 基本Python脚本

    使用文本编辑器,thingsboard.py在您选择的目录中创建。使用上一节中复制到剪贴板的API密钥添加以下内容:

    thingsboard.py

    #!/usr/bin/env python
    
    import json
    import requests
    from sense_hat import SenseHat
    from time import sleep
    
    # Constants
    
    API_KEY          = "<ThingsBoard API Key>"
    THINGSBOARD_HOST = "<Linode Public IP Address>"
    
    thingsboard_url  = "http://{0}/api/v1/{1}/telemetry".format(THINGSBOARD_HOST, API_KEY)
    
    sense = SenseHat()
    
    
    data = {}
    
    while True:
        data['temperature'] = sense.get_temperature()
        data['pressure']    = sense.get_pressure()
        data['humidity']    = sense.get_humidity()
    
        #r = requests.post(thingsboard_url, data=json.dumps(data))
        print(str(data))
        sleep(5)
    

    通过从命令行运行脚本来测试脚本:

    python thingsboard.py

    基本遥测应每五秒打印到控制台:

    {'pressure': 1020.10400390625, 'temperature': 31.81730842590332, 'humidity': 19.72637939453125}
    {'pressure': 1020.166259765625, 'temperature': 31.871795654296875, 'humidity': 20.247455596923828}
    {'pressure': 1020.119140625, 'temperature': 31.908119201660156, 'humidity': 19.18065643310547}
    {'pressure': 1020.11669921875, 'temperature': 31.908119201660156, 'humidity': 20.279142379760742}
    {'pressure': 1020.045166015625, 'temperature': 31.92628288269043, 'humidity': 20.177040100097656}
    
    

    如果脚本正常工作,请删除该print语句并取消注释该r = requests.post()行。还要增加sleep()时间间隔:

    thingsboard.py

    while True:
        data['temperature'] = sense.get_temperature()
        data['pressure']    = sense.get_pressure()
        data['humidity']    = sense.get_humidity()
    
        r = requests.post(thingsboard_url, data=json.dumps(data))
        sleep(60)
    

    创建系统服务

    您现在应该能够从命令行运行脚本,每分钟传输一次温度,压力和湿度数据。但是,为了确保持续发送数据,最好启用一个新服务,该服务将在服务器重新启动时自动运行脚本。

    • 将脚本复制到/usr/bin/并使其可执行:

    sudo cp thingsboard.py /usr/bin/thingsboard.py sudo chmod +x /usr/bin/thingsboard.py

    • 创建服务文件以将Python脚本作为服务运行:

    /lib/systemd/system/thingsdata.service

    [Unit]
    Description=Push telemetry data from Sense HAT to ThingsBoard.
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/thingsboard.py
    
    [Install]
    WantedBy=multi-user.target
    
    • 启用并启动服务:

    sudo systemctl enable thingsdata.service sudo systemctl start thingsdata.service

    • 检查新服务的状态:

    sudo systemctl status thingsdata.service

    使用cURL发送数据

    注意: 如果您使用的是Raspberry Pi,请跳过此部分。

    • 使用虚拟数据创建示例JSON文件:
    dummy_data.json
    {
      "temperature": 38,
      "humidity": 50,
      "pressure": 1100
    }
    

    用于curl向ThingsBoard服务器发送POST请求:

    curl -v -X POST -d @dummy_data.json http://$THINGSBOARD_HOST:$THINGSBOARD_PORT/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
    

    查看ThingsBoard中的数据

    如果服务成功运行,则应每隔60秒将数据传输到ThingsBoard服务器。

    • 重新登录浏览器中的ThingsBoard仪表板,然后在“ 设备”菜单中单击设备的卡。从结果详细信息页面中选择最新的遥测选项卡。您应该看到设备的温度,湿度和压力数据:

    • 单击其中一种数据类型旁边的复选框,然后单击“在小组件上显示”。

    • 使用下拉菜单和轮播菜单选择一个预设小组件,以在仪表板上显示此数据类型。选择窗口小部件后,单击“ 添加到仪表板”。

    下一步

    ThingsBoard提供的小部件可以轻松编辑,也可以创建新的小部件。可以组合表示来自多个设备的多个数据流的多个小部件,以生成定制的仪表板。然后,这些仪表板可以公开或与客户共享。

    有关如何自定义和设置控件和仪表盘的更多信息,请参阅ThingsBoard 部件库和仪表板页面的ThingsBoard Github上回购也有例如仪表板的图像。

    更多信息

    有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

    入门 - ThingsBoard

    ThingsBoard Github Repo

    来源:https://cloud.tencent.com/developer/article/1343322

    感谢社区,感谢作者,源与社区一起进步:

    IoTSchool物联网社区Q群:121202538

    Thingsboard 话题讨论区:https://forum.iotschool.com/topics/node8

    欢迎大家加入thingsboard 二次开发讨论群:121202538

    thingsboard交流QQ群 121202538

  • 相关阅读:
    Robot Framework-资源文件的使用方法(7)
    Robot Framework-用户关键字的使用方法(6)
    robotframework 新建UI自动化测试用例实例一(2)
    robotframework--登录接口,post传递多个参数、及获取content中指定属性的值(5)
    robotframework基础知识(2)
    win7如何打开防火墙某个端口的tcp连接
    外观模式
    享元模式
    代理模式
    模板模式
  • 原文地址:https://www.cnblogs.com/iotschool/p/13307840.html
Copyright © 2020-2023  润新知