ESP8266 带 BMP 180 刷 ESPEasy 通过MOTT协议连接 docker 里的 domoticz 查看气温 气压 监控结果

本文详细介绍了如何使用ESP8266模块配合ESPEasy固件和Domoticz软件搭建智能家居监控系统,包括固件烧录、Docker部署Domoticz、MQTT配置及传感器数据上报流程。

ESP8266 确实是弄个小玩意的利器啊

这个配合刷 ESPEasy domoticz 就能做到0代码完成监控

不错

ESPEasy 从这里找

https://github.com/letscontrolit/ESPEasy 

找稳定版,看好自己的型号,这个里面的ESP01 EPS-12 模块的都有
https://github.com/letscontrolit/ESPEasy/releases

但是那个1.2稳定版本是不行的,气压数据传不了,我使用还是20194月编译的稳定版

先擦除ESP8266原有的固件 端口自己找,这个是个python2命令 可以pip esptool安装
esptool.py --port /dev/ttyUSB0 erase_flash

然后写入新固件
esptool.py --port /dev/ttyUSB0  --baud 460800 write_flash --flash_size=detect 0 固件名.bin

domoticz 么 这个从官网下载即可。但是这软件让我放到了的docker里面,这样的好处是,重启 改端口之类的活都归docker了。。

dockerfile

FROM ubuntu:18.04
RUN apt-get  update \
    && apt-get upgrade -y     && apt-get  install -y libssl1.0.0  libusb-0.1    libcurl4-gnutls-dev python3.6 libpython3.6  \
 && apt-get autoremove -y   && apt-get clean  && mkdir /root/domoticz && mkdir /home/root && mkdir /home/root/domoticz
EXPOSE 8080
EXPOSE 443
EXPOSE 6144

docker build -t domoticz . 编译即可

启动时,实际上domoticz是在硬盘上的,不在docker里面

docker run -d --name domoticz -m 256M -v /etc/localtime:/etc/localtime:ro -v /home/zc/domoticz:/fit -p 34782:443 -p 26144:6144 --restart=on-failure domoticz   /bin/bash -c 'cd /fit && ./domoticz'

MQTT的配置  --- 用MQTT 的优点-----1点上传 N个点做服务器接受数据 也算是一种备份吧。。。

 

安装MQTT
完成上述步骤后,接下来我们就要安装MQTT了,这个也是两条命令搞定的事情,很简单:
  apt-get install mosquitto
为MQTT设置一下密码:
 mosquitto_passwd -c /etc/mosquitto/passwd  用户名
Password: 设置你的MQTT密码
修改一下配置文件:
nano /etc/mosquitto/conf.d/default.conf
打开配置文件后,将下面两段添加到配置文件中去:
allow_anonymous false
password_file /etc/mosquitto/passwd
设置让MQTT在Ubuntu启动时自动启动:
 systemctl enable mosquitto.service
 systemctl restart mosquitto
原则上这就完事了 

 安装一个客户端,用来测试:
 apt-get install mosquitto-clients
 
mosquitto_sub -t "test" -u "用户名" -P "密码"

然后再启动另一个终端, 输入:
 
mosquitto_pub  -t "test" -m "HEllo" -u "用户名" -P "密码"

配置domoticz连接MQTT

在设置---硬件 下面配置相关内容

在domoticz里配置BMP180

先创建一个虚拟传感器

然后点击创建虚拟传感器,然后选择参数 气温+气压 然后在设备下面就能看到这个设备了 注意IDX值,这个需要在EasyESP固件里指定这个值

 

到此 一切就妥当了

### 使用MQTT协议将CAN总线数据上传至云端 要实现通过MQTT协议将CAN总线数据上传到云端,需要完成以下几个方面的设计与开发: #### 1. CAN总线数据采集 CAN(Controller Area Network)总线是一种用于嵌入式系统的串行通信协议。为了获取CAN总线上的数据,通常需要使用专门的硬件设备来捕获消息帧并将其转换为适合处理的形式。 - 可以选用支持CAN接口的数据采集模块或微控制器单元(MCU),例如STM32系列芯片或其他专用CAN-to-TCP网关设备[^1]。 - 数据采集过程中需要注意解析CAN报文的标准格式,提取ID、DLC以及具体的数据字段。 ```c // 示例代码:读取CAN数据 (假设使用的是HAL库) void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { CanRxMessageTypeDef RxMessage; if(HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxMessage)) { uint8_t canData[RxMessage.DLC]; memcpy(canData, RxMessage.Data, RxMessage.DLC); // 将接收到的CAN数据发送给MQTT客户端 sendToMqttBroker(canData, RxMessage.ID); } } ``` #### 2. MQTT客户端配置 MQTT客户端负责建立与云端服务器之间的连接,并按照指定主题发布数据。以下是设置MQTT客户端的关键要素: - **选择合适的MQTT库**:对于资源受限的小型设备,可以选择轻量级的MQTT库如Paho C/C++ 或者 Arduino PubSubClient[^1]。 - 配置必要的参数包括但不限于: - Broker地址和端口; - 客户端ID; - 用户名密码认证信息(如果启用的话); ```python import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client = mqtt.Client() client.on_connect = on_connect client.connect("mqtt.example.com", 1883, 60) # 发布函数调用 def publish_can_data(topic, payload): client.publish(topic, payload=payload) ``` #### 3. 数据传输逻辑 定义清晰的数据映射关系,即将原始CAN信号转化为结构化的JSON字符串或者其他便于解析的形式再经由网络层传递出去。 - 考虑压缩算法减少宽消耗的同时保持足够的精度满足业务需求。 - 设定合理的重传机制应对可能出现的丢包现象确保重要事件不会遗漏。 #### 4. 物联网模组选型及其固件升级 根据实际应用场景挑选匹配性能指标要求的IoT模块产品实例提到过的FS-MCore-F8A2M1即属于此类别之一它具备良好的兼容性和扩展能力能够很好地适配多种主流公有云服务平台比如阿云腾讯云华为云等等[^2]. 最终形成的整体解决方案架构如下图所示: ![整体方案](https://via.placeholder.com/500x300?text=Overall+Architecture) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值