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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 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使用过程中可能遇到的一些常见问题及其答案的汇总:
|
9月前
|
安全 网络协议 物联网
不看后悔系列之一篇搞懂LinuxCentOS搭建MQTT服务器及客户端操作使用
linux CentOS上搭建MQTT服务器并不难,主要就是用到了mosquitto这款消息代理服务软件。其采用发布/订阅模式传输机制,轻量、简单、开放并易于实现,被广泛应用于物联网之中。
1510 0
|
7天前
|
消息中间件 存储 RocketMQ
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
|
8天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
25 1
|
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服务
|
8天前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
266 0
|
8天前
|
JSON 物联网 开发工具
MQTT协议问题之如何搭建物联网空调的服务器
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
87 1
|
8天前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
178 1
|
8月前
|
消息中间件 物联网 应用服务中间件
MQTT代理服务器特性对比
MQTT代理服务器特性对比