MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是由IBM于1999年发布的一种基于发布/订阅模的"轻量级"通讯协议,旨在为物联网、小型设备在带宽低,不可靠的网络环境中提供即时通讯,是物联网通讯中的重要组成部分,简而言之mqtt协议非常适合物联网的设备之间的即时通信。
常用的mqtt服务器有ActiveMQ,EMQ,Mosquitto等,其中Mosquitto服务器开源轻量的特点适合安装在性能低的服务器上。
安装mosquitto依赖:
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake
下载mosquitto,官网是https://mosquitto.org/,最新版本是1.6.8
wget https://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz
解压并编译
tar xzvf mosquitto-1.6.8.tar.gz
cd mosquitto-1.6.8.tar.gz
make
make install
等待报错:
没有安装g++编译环境,安装后解决:
sudo apt-get install g++
编译后安装然后启动:
mosquitto -v
有两个信息不影响安装,我没有理会,但是启动的时候报错,应该是没有用户mosquitto,新建用户之后就可以了:
adduser mosquitto
启动成功默认端口是1883
monit是一款开源轻量的监控软件,比较zabbix之类的监控软件要小得多。
domoticz的运行不是很稳定总是莫名其妙的挂掉,我原来在cron中配置定时重启,发现这个办法还是不够灵活,时间太长和太短都无法很好的启动domoticz,好在官网中给出了用monit来进行监控的方法,只需要修改一下配置文件就可以了,研究了一下就决定用它了。原本预订每五分钟重启一下,但是还是没有很好解决,所以就放弃了。
*/10 * * * * sudo service domoticz.sh restart >/root/reboot
安装在linux下非常简单:
apt-get install monit
编辑配置文件monitrc,默认目录在/etc/monit/monitrc中,
set daemon 30 # 每30秒检测一次
with start delay 240 # 延迟启动,240s,web界面也会延迟启动
set log /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set httpd port 2812 #默认web界面端口
allow localhost #允许本地ip地址127.0.0.1
allow 192.168.0.0/24 #允许访问的端口
allow admin:admin #用户名:密码的形式
allow @root
check process domoticz with pidfile /var/run/domoticz.pid
start program = "/etc/init.d/domoticz.sh start"
stop program = "/etc/init.d/domoticz.sh stop"
restart program = "/etc/init.d/domoticz.sh restart"
if failed port 443 protocol https with timeout 15 seconds then restart
check process mosquitto with pidfile /var/run/mosquitto.pid
start program = "/usr/local/sbin/mosquitto"
stop program = "/usr/local/sbin/mosquitto stop"
restart program = "/usr/local/sbin/mosquitto -v"
if failed port 1883 protocol mqtt then restart
check process mosquitto matching "mosquitto"
if does not exist then exec "/usr/local/sbin/mosquitto -v"
检测配置文件
monit -t
Control file syntax OK
配置文件正确。
启动monit
monit
web界面访问,ip地址加上2812端口,web界面也会延迟启动,稍等片刻。
monit状态监控,在重启的时候会出现Connection refused的错误,应该是monit延迟启动,过了延迟的时间就可以了。
monit status
固件地址是https://github.com/letscontrolit/ESPEasy,选择合适的Flash大小下载。
esp_easy固件介绍的地址https://www.letscontrolit.com/wiki/index.php/ESPEasy
手上有一块nodemcu esp8266正在吃灰中,正好可以刷这个固件玩玩,用esp8266download tool烧写固件,先擦除,再进行烧写j
配置好wifi和密码就可以进行设备的添加了
我的配置图
不知道为什么我的local time不太对,我明明已经配置了ntp服务器了,疑惑
wifi和ip地址配置
设备和io口设置
我添加了一个oled ssd1306和DHT11模块
esp_easy设置
mqtt设置
用户名和密码设置很重要,还有设备中的IDX编号和domoticz中对应
mqtt的ip地址和用户名密码和esp_easy中mqtt设置相对应
添加虚拟传感器DHT11
可以看到domoticz和esp_easy已经连接上了。
可以看到已经有数据了,点击左下角的五角星就可以在仪表盘中看到了,点击日志就可以看到温度和湿度的曲线
到此就ok了。。。