物联网云平台是一个好东西呀,和他相关的项目帮助许许多多的同学拿到了数目可观的经费支持,让大家库存里的元器件都充实了很多。今天在这里安利一个开源的物联网云平台,thingsboard。

本指南将介绍如何在Linode上安装ThingsBoard并使用 Curl / esp8266的AT指令将简单的遥测数据发送到云仪表板。官网操作:https://thingsboard.io/docs/user-guide/install/linux/

安装thingsboard

你需要

​ 一个服务器(树莓派其实也可以,教程里就不写了)

​ 一个能连接服务器的电脑

​ 一个能看懂本教程的脑子

你要做

​ Ctrl + C

​ Ctrl + V

Let’s rock!

安装Java 8 JDK

​ 请移步 Oracle Java 8 JDK下载界面:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

$ cd ~
$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "<下载链接>"
$ sudo yum localinstall <下载文件名.rpm>
$ rm <下载文件名.rpm>

​ Java在 /usr/java/jre<你的路径>/bin/java /usr/bin/java 中

$ java --version

​ 检查一下java是否安装成功,没有报错就成功了!

外部数据库安装

​ 跳过了。。感兴趣可以移步官网操作:https://thingsboard.io/docs/user-guide/install/linux/

ThingsBoard服务安装

$ wget https://github.com/thingsboard/thingsboard/releases/download/v2.1/thingsboard-2.1.rpm
$ sudo rpm -Uvh thingsboard-2.1.rpm
$ export JAVA_OPTS="$JAVA_OPTS -Xms256M -Xmx256M"
$ sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

​ 执行命令启动ThingsBoard:

$ sudo service thingsboard start

NGINX安装和反向代理

$ sudo apt install nginx

​ 于 /etc/nginx/conf.d/thingsboard.conf 新建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设备

用户名:tenant@thingsboard.org
密码:tenant

​ 安装完成!

开始测试

Curl发送数据

​ 新建JSON文件 dummy_data.json

{
"temperature": 38,
"humidity": 50,
"pressure": 1100
}

​ 打开cmd

$ curl -v -X POST -d @dummy_data.json http://<你的IP>:<开放的端口(一般是80)>/api/v1/<访问令牌>/telemetry --header "Content-Type:application/json"

​ 发送数据成功以后,打开 ThingsBoard 设备 里面的 DHT11 Demo Device,最新遥测里显示的就是上传的数据。在仪表板库里面点进Temprature&Humidity Demo Dashboard就是上传数据的图表显示。

ESP8266+AT模式

针对NodeMCU的AT模式初始化

ESP8266有着令人愉快的AT模式,使用串口发送数据即可完成通信,这是在上位机进行串口调试的代码

AT+RST      //一键重启
AT+CWMODE=1 //配置WiFi模组工作模式为单STA模式,并把配置保存在flash,重启后生效
AT+RST
AT+CWLAPAT+CWJAP="wifi名","wifi密码"
AT+CIPMUX=1 //启动多ip连接
AT+CIPSTART=0,"TCP","服务器ip",端口 //连接服务器
AT+CIPSEND=0,218 //包的长度
(作为包头结尾也要发送一个新行,即\r\n)

POST /api/v1/DHT11_DEMO_TOKEN/telemetry HTTP/1.1
Host: ip地址:端口
User-Agent: curl/7.55.1
Accept: */*
Content-Type:application/json
Content-Length: 51

{"temperature": 20,"humidity": 30,"pressure": 4400}

发表评论