【自用】云服务器 使用 docker 搭建 HomeAssistant + MQTT 物联网平台

总览

1.搭建流程概述

2.准备工作

3.开始搭建!

4.总结
如果想看 ESP32 或其他使用 MicroPython 编程的单片机如何连接到该云服务器,实现 HomeAssistant 控制 单片机的内容,请看我这篇博客的下一篇。

一、搭建流程概述

0.总体流程

我们需要先有一台云服务器,然后在上面搭建 docker(用宝塔傻瓜式搭建就行了,一会儿我会写怎么搭建),再用 docker 创建 2个 容器,它们分别装着 HomeAssistant 和 MQTT,这相当于我们在 1个 云服务器 上 运行了 2个 "服务(服务器)"。MQTT 网络信协议的具体内容如下,可以把它想象成一个 用于连接 ESP32物联网终端 和 HomeAssistant 平台 的 中转站:

二、准备工作

0.购买云服务器

0.1 买一台云服务器(什么阿某云、腾某云、华某云随便,轻量型服务器应该就够用了,看自己。不会买的自己搜去)

1.个人PC上暂时需要下载的软件或服务

1.1 Xshell(用于访问云服务器,没有安装的话自己去搜安装xshell的安装和使用教程,想要控制云服务器没有xshell...除非你用其他的终端访问软件)

2.云服务器上暂时需要下载的软件和服务

2.1 宝塔(用于更简便地使用docker和其他操作)

三、搭建工作开始

1.使用宝塔,访问你的云服务器,并傻瓜式安装 docker

点击左侧栏的 docker,你的页面上应该有一个"安装"。点击后,就进行安装,时间可能会较长,请耐心等待直到安装完成。

2.docker 安装完成后,直接拉取 HomeAssistant 镜像

2.1 拉取 HomeAssistant

docker -> 镜像 -> 从仓库中拉取 -> 填入内容:homeassistant/home-assistant:latest -> 确认

2.2 安装 HomeAssistant 步骤:

3.创建 docker 容器

3.1 创建容器文件夹

文件 -> 进入到 根目录下的 home/你的用户名/ 路径下,新建一个文件夹"homeassistant-config",如图所示。
3.2 打开终端,开始创建容器

3.3 输入创建容器命令,并回车:

bash 复制代码
sudo docker run -d --name="homeassistant-v1" -v xxx:/config -p 8123:8123 homeassistant/home-assistant:latest

请注意!上面的命令中"xxx"是创建容器的路径,应替换为你自己的路径!!!如我的命令改为了:

bash 复制代码
sudo docker run -d --name="homeassistant-v1" -v /home/admin/homeassistant-config:/config -p 8123:8123 homeassistant/home-assistant:latest

3.4 创建容器成功

运行命令没有报错,去看看你刚才创建的空文件夹,现在如果已经有东西了则创建成功。如下面这样:

4.开放 云服务器 防火墙 8123 端口

4.1 开放端口

我也懒得写了,你直接在宝塔的终端里或者其他什么软件xshell之类的,只要能进到云服务器终端里就行,依次运行如下命令:

bash 复制代码
firewall-cmd --add-port=8123/tcp --permanent
bash 复制代码
firewall-cmd --reload

4.2 查看端口是否开放,你能看到 8123/tcp 代表开放成功

bash 复制代码
firewall-cmd --list-ports

4.3 在云平台上开放端口

这个根据你使用的是什么云,自已找找,你的服务器的防火墙选项,添加端口即可(我演示的是阿里云):

5.配置 HomeAssistant

5.1 访问 HomeAssistant

使用你的ip:8123的方式来访问 HomeAssistant 网页。如你的云服务器外网ip如果是182.96.213.203,那么你就在浏览器里访问如下网址:(我只是举个例子,你别填182.96.213.203,填你自己的服务器外网IP!)

182.96.213.203:8123

6.安装 MQTT 服务器

6.1 访问 EMQX 官网下载区
https://www.emqx.io/zh/downloads
6.2 运行命令 将 EMQX 放入 docker 中

分别在服务器终端上执行下面图中的"获取Docker镜像"和"启动Docker容器"的两段代码。

代码片1:

bash 复制代码
docker pull emqx/emqx:5.1.4

代码片2:

bash 复制代码
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.1.4

6.3 EMQX 下载完成后,查看是否 EMQX 已经在 docker 中:

使用命令:

bash 复制代码
sudo docker ps

6.4 开放防火墙上的 18083 和 1883 端口

6.4.1 依次运行命令,开放端口并重启防火墙使其生效:

bash 复制代码
firewall-cmd --add-port=18083/tcp --permanent

firewall-cmd --add-port=1883/tcp --permanent

firewall-cmd --reload

6.4.2 运行如下命令,看是否我们已经开放了 18083 和 1883 端口:

bash 复制代码
firewall-cmd --list-ports

6.4.3 在服务器控制台上开放 18083 和 1883 端口:

6.5 访问 EMQX 网站
6.5.1 URL :

http://xxx.xxx.xxx.xxx:18083

xxx.xxx.xxx.xxx 代表你云服务器的公网IP地址

6.5.2 登录

默认的用户名是:admin

默认的密码是:public

6.6 回到 HomeAssistant 网站

6.6.1 操作流程:

i:配置(左边栏) ->

ii:设备与服务 ->

iii:添加集成(右下角)->

iv:搜索"MQTT" ->

v:点击"MQTT" ->

vi:点击"MQTT" ->

vii:输入相关信息(请注意,用户名和密码是你刚才登录 EMQX 的用户名和密码)

viii:提交,成功。我们的 HomeAssistant 已经成功连接了 MQTT 服务

6.7 回到 EMQX 网站

6.7.1 操作流程:

监控 -> 客户端 -> 发现一个新连接,好耶

6.7.2 确认 MQTT 和 HomeAssistant 已经连接成功:

1.去 HomeAssistant 网站

2.进入刚才的 MQTT

3.点击"选项"

4.打开监听后,发送数据包测试,成功。

四、总结

至此,在云服务器上使用 docker 搭建 HomeAssistant 平台并 让 MQTT 与 HomeAssistant 平台建立通讯的任务圆满结束。如果想看 ESP32 或其他使用 MicroPython 编程的单片机如何连接的内容,请看我这篇博客的下一篇。

相关推荐
嵌新程17 分钟前
day06(单片机高级)PCB设计
单片机·嵌入式硬件·pcb
stm 学习ing1 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
sun0077002 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记2 小时前
centos一键卸载docker脚本
linux·docker·centos
oi772 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
小袁搬码3 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
学Linux的语莫4 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920114 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon4 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos