mqtt协议

mosquitto mqtt服务器搭建

monit 监控软件

esp8266 esp_easy固件

domoticz添加设备和硬件

1.mqtt协议:

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是由IBM于1999年发布的一种基于发布/订阅模的"轻量级"通讯协议,旨在为物联网、小型设备在带宽低,不可靠的网络环境中提供即时通讯,是物联网通讯中的重要组成部分,简而言之mqtt协议非常适合物联网的设备之间的即时通信。

2.mqtt服务器:mosquitto

常用的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

等待报错:

easymesh 组网topo easymesh协议_固件

没有安装g++编译环境,安装后解决:

sudo apt-get install g++

编译后安装然后启动:

mosquitto -v

easymesh 组网topo easymesh协议_物联网_02

有两个信息不影响安装,我没有理会,但是启动的时候报错,应该是没有用户mosquitto,新建用户之后就可以了:

adduser mosquitto

启动成功默认端口是1883

easymesh 组网topo easymesh协议_服务器_03

3.monit 监控软件

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界面也会延迟启动,稍等片刻。

easymesh 组网topo easymesh协议_配置文件_04

monit状态监控,在重启的时候会出现Connection refused的错误,应该是monit延迟启动,过了延迟的时间就可以了。

monit status

easymesh 组网topo easymesh协议_物联网_05

4.esp8266 esp_easy固件

固件地址是https://github.com/letscontrolit/ESPEasy,选择合适的Flash大小下载。

esp_easy固件介绍的地址https://www.letscontrolit.com/wiki/index.php/ESPEasy

手上有一块nodemcu esp8266正在吃灰中,正好可以刷这个固件玩玩,用esp8266download tool烧写固件,先擦除,再进行烧写

easymesh 组网topo easymesh协议_服务器_06

j

配置好wifi和密码就可以进行设备的添加了

我的配置图

easymesh 组网topo easymesh协议_服务器_07

不知道为什么我的local time不太对,我明明已经配置了ntp服务器了,疑惑

easymesh 组网topo easymesh协议_固件_08

wifi和ip地址配置

easymesh 组网topo easymesh协议_配置文件_09

设备和io口设置

easymesh 组网topo easymesh协议_配置文件_10

我添加了一个oled ssd1306和DHT11模块

easymesh 组网topo easymesh协议_服务器_11

easymesh 组网topo easymesh协议_固件_12

esp_easy设置

easymesh 组网topo easymesh协议_固件_13

mqtt设置

easymesh 组网topo easymesh协议_物联网_14

用户名和密码设置很重要,还有设备中的IDX编号和domoticz中对应

5.domoticz添加设备和mqtt客户端

easymesh 组网topo easymesh协议_easymesh 组网topo_15

mqtt的ip地址和用户名密码和esp_easy中mqtt设置相对应

easymesh 组网topo easymesh协议_服务器_16

easymesh 组网topo easymesh协议_物联网_17

添加虚拟传感器DHT11

easymesh 组网topo easymesh协议_服务器_18

可以看到domoticz和esp_easy已经连接上了。

easymesh 组网topo easymesh协议_固件_19

可以看到已经有数据了,点击左下角的五角星就可以在仪表盘中看到了,点击日志就可以看到温度和湿度的曲线

easymesh 组网topo easymesh协议_物联网_20

easymesh 组网topo easymesh协议_easymesh 组网topo_21

到此就ok了。。。