2017年5月19日20:24:15
0x00 配置nodejs环境
windows 下,直接下载二进制包,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ node -v
$ npm -v
$ # 配置cnpm 可忽略
$ npm install -g cnpm --registry=https://registry.npm.taobao.org #配置cnpm
$ # 进入一个存放项目文件的目录,不使用-g全局安装
$ mdkir d:/work/node
$ cd d:/work/node
$ npm install monitor-dashboard
$ # 运行项目
$ cd node_modules/monitor-dashboard
$ npm start monitor-dashboard
$ # 根据提示信息访问站点 localhost:4200
$
linux下的部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ # try ln -s
$ ln -s ./bin/node /usr/bin/node
$ ln -s ./bin/npm /usr/bin/npm
$ # 如果失败,则尝试用.profile添加路径
$
$ cd nodejs/bin
$ pwd
$ vim .profile
[vim .profile]
export PATH=/root/nodejs/bin:$PATH
$ source .profile
其实linux下的部署官方给了更简单的方式,参考链接 放弃上面的手动链接吧..
1
2
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt install nodejs
搞定
chrome的kiosk模式 这个模式下
$ # 结束chrome的进程
$ taskkill /f /im chrome.exe
$ chrome.exe https://ip.cn -kiosk
monitor-dashboard是一个将monitor的数据可视化的项目
参考monitor的说明
freeboard是一个在线的web仪表盘,通过js获取输入信息源进行绘图, 免费的项目均为public,私有的需要付费
配置dashboard-monitor,freeboard环境
1
$ npm install mqtt monitor-dashboard freeboard -g
mqttjs 是nodejs提供的一套关于mqtt的js接口,透过mqtt.js可以方便的调用mqtt的相关模块 其中mqtt的github地址, 面向例程编程 :)
官方给出的demo如下
1
2
3
4
5
6
7
8
9
10
11
12
13
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org')
client.on('connect', function () {
client.subscribe('presence')
client.publish('presence', 'Hello mqtt')
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
配置mqtt环境可以直接通过apt包管理
1
2
3
4
$ sudo apt install mosquitto mosquitto-client
$ # 如果需要使用c/c++开发的,请安装dev包/如果不行再装lib....
$ # apt list|grep mosquitto找找哪些可能有用的
$ sudo apt install mosquitto-dev
0x01 mqtt和mqttjs笔记
发布消息和订阅消息格式如下
1
$ mosquitto_sub -d -q 2 -t 'topic'
1
$ mosquitto_pub -d -q 2 -t 'topic' -m 'your_info'
即可
在通过npm安装好mqtt之后相当于装好了mqtt的server 和client端, 发布和订阅消息格式如下
1
$ mqtt subscribe 'your_topic'
以及
1
$ mqtt publish 'your_topic' 'your_infomation'
如果需要一台服务器做中转broker,这只需在中转服务器上安装好mosquitto, 服务自动启动。分别在不同的客户端上运行订阅和发送消息的服务即可,如下
中转服务器, 默认开放1883端口,启动了mqtt之后不需要做任何的操作
1
2
$ sudo apt install mosquitto mosquitto-client
$ mosquitto -d # 后台运行,配置文件是默认读取的,不需要指定 /etc/mosquitto/mosquitto.conf
接收订阅消息的客户机, 这里直接使用nodejs 提供的mqtt模块
1
2
3
$ mqtt sub -t 'topic/first' -h 'xxx.xxx.com'
$ #使用mosquitto模块也可以,命令如下
$ mosquitto_sub -d -t 'topic' -h 'xxx.xx.com'
运行之后即处于监听状态
发布订阅消息的客户机
1
2
3
$ mqtt pub -t 'topic/first' -h 'xxx.xxx.com' -m "this info comes from Les1ie's clientA"
$ # 使用mosquitto则命令如下
$ mosquitto_pub -d -t 'topic' -h 'xxx.xx.com' -m "infomaiton is here"
当然,这只是最简单的mqtt的命令行版本,我们需要把这个移植到我们的js脚本里面去。
这里提供了一个例程,可以参考一下
以及可能没有什么用的比较难一点的js进阶
在服务端的/etc/mosquitto/mosquitto.conf文件中加入
1
2
listener 233390
protocol websockets
重启mosquitto,
1
$ mosquitto -c /etc/mosquitto/mosquitto.conf
本地发布消息的js代码:
client_pub.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* author: Les1ie
* email: [email protected]
* date: 2017.5.26
*/
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://t.les1ie.com')
var date = new Date()
var second = date.getSeconds()
//client.publish('topic', 'this is a test info')
client.publish('topic', second.toString())
console.log("now it is at " + second)
client.end()
以及订阅的js代码
client_sub.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
* author: Les1ie
* email: [email protected]
* date: 2017.5.26
*/
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://t.les1ie.com')
client.subscribe('topic')
client.on('message', function(topic, message){
console.log(message.toString())
})
0x02 可视化mqtt数据
目前准备尝试两种解决方案, freeboard 和 monitor-dashboard
尝试用过一段时间的freeboard-mqtt, 发现有部分问题未能解决, 服务端开启了websockets之后,本地仍然无法很好的连接到服务端, 参考的是树莓派的例子,
对于monitor-dashboard, 网上参考的例程特别少,需要自己摸索, 在作者的仓库里面有一个样例