mqtt服务器搭建及homeassistant使用

简介: 本文介绍了服务器的基础配置,并利用服务器安装docker,搭建mqtt服务器传输数据,并利用homeassistant显示数据。

个人介绍

我今年20岁,是一个计算机专业的小白,通过查询百度资料了解到阿里云的飞天加速计划·高校学生在家实践,并产生了浓厚的兴趣,于是申请了两周的体验,并且获得了一次很不错的使用感受。

阿里云ECS使用攻略

设置安全组

https://ecs.console.aliyun.com/server/region/cn-heyuan

修改密码

image.png

获取ip地址

ip地址 47.113.207.xx(保护一下我的隐私) 可以finnalshell连接

收获总结,展望未来

让我了解到了服务器的强大,并在课余时间看到b站上有同学自己搭建服务器的过程,其开机造成的巨大声响让我在枯燥的学习中得到了一丝快乐。

我的收获

1.连接服务器

获取ip地址和修改密码这在之前讲过,这里不再赘述。讲密码和ip输入finalshell中,即可连接。

2.安装docker

  • 安装一组工具

    sudo yum install -y yum-utils 
  • 设置 yum 仓库地址
sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
  • 安装新版 docker ce是社区版,ee是企业版
sudo yum install -y docker-ce docker-ce-cli containerd.io
  • 启动docker
systemctl start docker
  • 安装成功以后,检查启动状态 :
docker version

3.mosquitto

mqtt服务器知识

  1. 发布时clientID 一旦确定后面就要根据它来 (此时设置100)

开启

  1. docker search mosquitto
  2. docker pull eclipse-mosquitto
  3. 先做完数据卷配置再开启容器

    sudo docker run -it --name=mosquitto --privileged \
    -p 1883:1883 -p 9001:9001 \
    -v /home/dxy/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \
    -v /home/dxy/mosquitto/data:/mosquitto/data \
    -v /home/dxy/mosquitto/log:/mosquitto/log \
    -d eclipse-mosquitto
    

    1883为固定配置端口,访问时9001不行

  4. docker exec -it mosquitto sh 进入容器
  5. 客户端发布

    同一个传感器里面的数据:

    1. -t 发布主题 不一样
    2. “name” 显示的名称 不一样
    3. “unique_id” 实体id 不一样
    4. "value_template"不一样
mosquitto_pub -h (你的ip) -p 1883 -t "homeassistant/sensor/room2-temp/config" -u (你的用户名) -P (你的密码) -i "pub100" -m '{"device_class": "temperature", "name": "BPM", "unique_id":"room2-temp", "state_topic": "homeassistant/sensor/room2/state", "unit_of_measurement": "/min", "value_template": "{{ value_json.BPM}}" }'
mosquitto_pub -h (你的ip) -p 1883 -t "homeassistant/sensor/room2-humi/config" -u (你的用户名) -P (你的密码) -i "pub100" -m '{"device_class": "humidity", "name": "AVG", "unique_id":"room2-humi", "state_topic": "homeassistant/sensor/room2/state", "unit_of_measurement": "/min", "value_template": "{{ value_json.Avg}}" }'
  1. 客户端接收
mosquitto_pub -h (你的ip)  -p 1883 -t "homeassistant/sensor/room2/state" -u (你的用户名) -P (你的密码) -i "pub100" -m '{ "BPM": 42, "Avg": 54 }'

配置

数据卷配置

  1. 在本地新建目录
mkdir /home/dxy/mosquitto
cd /home/dxy/mosquitto
sudo mkdir config
sudo mkdir data
sudo mkdir log
  1. 新建配置文件
vi ./config/mosquitto.conf

内容如下

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

log_dest stdout

listener 1883 //不加这一句会在新版本2.x.x中报错:Error: Address not available
  1. 修改目录权限
chmod -R 755 /home/dxy/mosquitto
chmod -R 777 /home/dxy/mosquitto/log

设置用户

  • 在 /home/dxy/mosquitto/config/mosquitto.conf 中继续添加

    # 开启匿名模式,关闭之后我测试机连不上
    allow_anonymous true
    # 指定密码文件
    password_file /mosquitto/config/pwfile.conf
  • 创建并修改密码文件权限
touch /mosquitto/config/pwfile.conf
chmod -R 755 /mosquitto/config/pwfile.conf
  • 创建用户
mosquitto_passwd -b /mosquitto/config/pwfile.conf (此处为用户名) (此处为密码)
## 这个是mqtt服务器登录的账号密码

4.homeassitant

开启

  1. docker search home-assistant
  2. docker pull homeassistant/home-assistant
  3. docker run -d --name="hass" -v ${HOME}/hass/mac_config -p 8123:8123 homeassistant/home-assistant

    1. 8123:8123 前面的是映射地址,后面的固定为8123
    2. 该语句创建一个网站,里面不包含mqtt服务器

配置

无需进入容器,无需配置文件

最终效果如下,通过传感器连接mqtt服务器(搭建在阿里云服务器上)即可传入数据,并实时显示!
image.png

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
消息中间件 缓存 物联网
MQTT常见问题之MQTT发送消息到阿里云服务器被拒如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
5月前
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
374 0
|
8月前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
84 1
|
8月前
|
消息中间件 存储 RocketMQ
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
|
7月前
|
IDE 物联网 网络性能优化
什么是MQTT?如何使用ESP12F芯片连接到MQTT服务器
通过上述步骤,你可以成功地使用ESP12F模块连接到MQTT服务器,发布和订阅消息。MQTT的轻量级和高效性使其非常适合各种物联网应用,而ESP12F模块的强大功能和低成本使其成为实现这些应用的理想选择。
241 0
|
7月前
|
消息中间件 Serverless 网络性能优化
消息队列 MQ产品使用合集之客户端和服务器之间的保活心跳检测间隔是怎么设置的
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
8月前
|
消息中间件 存储 JSON
服务器的异步通信——RabbitMQ2
服务器的异步通信——RabbitMQ
63 0
|
8月前
|
消息中间件 缓存 中间件
服务器的异步通信——RabbitMQ1
服务器的异步通信——RabbitMQ
64 0
|
8月前
|
消息中间件 数据安全/隐私保护
MQTT微消息队列服务器连接报错:Error: Connection refused: Not authorized
使用MQTTX工具进行测试时,通过AccessKey创建了Client ID的用户名和密码。配置了公网接入点及端口1883,但尝试连接时出现错误。已附上工具截图:![](https://ucc.alicdn.com/pic/developer-ecology/3byii5uar64gg_36327474e991439da422f38c450ef153.png)。确认过用户名、密码和Client ID无误,问题仍未解决,期待回复!
|
8月前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务