之前介绍了一些thingsboard的使用,今天简单的介绍下thingsboard用到的技术
ThingsBoard使用笔记(1) 安装
ThingsBoard使用笔记(2)模拟传感器发送MQTT并显示监控图表
ThingsBoard使用笔记(3)模拟控制远程温度传感器
ThingsBoard使用笔记(4)创建资产并在地图上显示
1.common(data,message,transport):
2.dao:
3.tools:
4.transport(http,caop,mqtt):
使用nodejs,
此框架已实现前后端分离,可以直接把前段编译后,打包成app来使用,支持android 和ios。
不是打web的url,这样访问很慢,要下载的资源很多。
是把前段的js,css,html等资源放在app中,只访问远程api,因为资源都在手机本地,加载会快点。
既然要让本地资源访问远程服务,就要修改angular访问api的路径问题。
打开这个文件ui\src\app\global-interceptor.service.js
这是angularjs的全局拦截器,ajax请求响应 共同部分在这里 。
默认的ajax请求,访问如“/api/**”这样的路径,是会去找当前页面说在主机的路径。实际访问的完整路径应该是"http://192.168.1.222:8080/api/**" app里面,js运行在本地,而服务url在远程。按默认的就无法访问服务了
global-interceptor.service.js找到这里
if (config.url.startsWith('/api/'))
{
onfig.url=CUSTOMHOST+config.url;
}
CUSTOMHOST 是我自定义的主机+端口,写你实际服务器就可以了var CUSTOMHOST=" http://192.168.1.101:8888";另外下面response的url判断改下就ok了。
websocket服务器地址同样需要修改
\ui\src\app\api\telemetry-websocket.service.js
完成以上配置后,把前段用webpack打包后,生成html,js 等文件,放到app中,打包即可。
需要懂app打包技术。
#遥测数据发送规则
curl -v -X POST -d @dummy_data.json http://<你的IP>:<开放的端口(一般是80)>/api/v1/<访问令牌>
curl -v -X POST -d '{"temperature":21, "humidity":55.0, "active": false}' http://iot.test.com/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"
#发送属性数据
curl -v -X POST -d '{"firmware_version":"1.0.1", "serial_number":"SN-001"}' http://iot.test.com/api/v1/A1_TEST_TOKEN/attributes --header "Content-Type:application/json"
#发送遥测数据
curl -v -X POST -d '{"temperature":21, "humidity":55.0, "active": false}' http://localhost:8080/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"
登陆及数据查看
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"username":"[email protected]", "password":"tenant"}' 'http://iot.test.com/api/auth/login'
curl -v -X GET http://iot.test.com/api/plugins/telemetry/DEVICE/e00c4cd0-a885-11e9-884f-57005a69df9c/keys/timeseries \
--header "Content-Type:application/json" \
--header "X-Authorization:Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIiwic2NvcGVzIjpbIlRFTkFOVF9BRE1JTiJdLCJ1c2VySWQiOiJkZmE5NmM1MC1hODg1LTExZTktODg0Zi01NzAwNWE2OWRmOWMiLCJlbmFibGVkIjp0cnVlLCJpc1B1YmxpYyI6ZmFsc2UsInRlbmFudElkIjoiZGY2N2NmNzAtYTg4NS0xMWU5LTg4NGYtNTcwMDVhNjlkZjljIiwiY3VzdG9tZXJJZCI6IjEzODE0MDAwLTFkZDItMTFiMi04MDgwLTgwODA4MDgwODA4MCIsImlzcyI6InRoaW5nc2JvYXJkLmlvIiwiaWF0IjoxNTYzNzc3NDQ5LCJleHAiOjE1NjM3ODY0NDl9.37XPIGd_A2Wpvzk8DJSSnAaXpTvcEbptikgaTK9r5654jyg7A2OklkDTGFRX2OSLZquv7ywpO38iDUt-RfHMCw"
参考网址:https://thingsboard.io/docs/getting-started-guides/helloworld/
github地址:https://github.com/thingsboard/thingsboard
演示环境:https://demo.thingsboard.io/login。注册时总提示“请确认不是机器人” 需要google验证