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

news2024/10/2 12:27:19

总览

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 输入创建容器命令,并回车:

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

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

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之类的,只要能进到云服务器终端里就行,依次运行如下命令:

firewall-cmd --add-port=8123/tcp --permanent
firewall-cmd --reload

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

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:

docker pull emqx/emqx:5.1.4

代码片2:

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 中:

使用命令:

sudo docker ps

在这里插入图片描述

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

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

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

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

firewall-cmd --reload

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

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 编程的单片机如何连接的内容,请看我这篇博客的下一篇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/865148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel小技巧揭秘:结合3行Bat代码,轻松提升工作效率

在日常工作中,Excel是一个不可或缺的工具,而掌握一些小技巧可以大大提升我们的工作效率。今天,我们将介绍一种巧妙的方法,结合仅有3行Bat代码,让你在Excel中实现更多的功能,让同事们都会对你赞叹不已&#…

宋浩高等数学笔记(十一)曲线积分与曲面积分

个人认为同济高数乃至数学一中最烧脑的一章。。。重点在于计算方式的掌握,如果理解不了可以暂时不强求,背熟积分公式即可。此外本贴暂时忽略两类曲面积分之间的联系,以及高斯公式的相关内容,日后会尽快更新,争取高效率…

QGraphicsView实现简易地图4『局部加载-地图漫游』

前文链接:QGraphicsView实现简易地图3『局部加载-地图缩放』 当鼠标拖动地图移动时,需要实时增补和删减瓦片地图,大致思路是计算地图从各方向移动时进出视口的瓦片坐标值,根据变化后的瓦片坐标值来增减地图瓦片,以下将…

c51单片机串行通信示例代码(单片机--单片机通信)(附带proteus线路图)

//这个发送端代码 #include "reg51.h" #include "myheader.h" #define uchar unsigned char long int sleep_i0; long int main_i0; void main() {uchar sendx[6]{2,0,2,3,8,1};sleep(2000);TMOD0x20;TH10XF4;//根据波特率计算公式这里需要设置为这么多才能…

微服务系列(2)--注册中心

在博文:微服务系列(1)里我们提到过注册中心的概念,简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件,它提供了服务注册、服务发现、服务健康检查等功能,以确保微服务之间的稳定通信。在微服务架构中,各…

火爆全网,Jmeter接口自动化-参数化CSV实战详解(超级详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般来说&#xf…

MachineLearningWu_16/P72-P77_Diagnostic

x.1 导数,计算图,大型网络 计算图就是根据链式法则求取偏导,大型网络就是多层网络堆叠而成。 x.2 Diagnostic 在我们对深度学习有了一些认知后,最重要的就是模型的诊断,以带有L1正则化的线性回归为例,我…

【Linux】系统内核中System.map中字段含义解释

可以通过命令行过来初始化内容 cat System.map-4.18.0-193.el8.x86_64 | grep pci | grep initcall "T":表示该符号是一个全局函数,可以被其他模块或文件访问。 "D":表示该符号是一个全局数据对象,可以被其…

玩转轻叶H5:批量功能上线,落地页创建更高效

在营销领域,落地页作为营销过程的最后一环,不仅要准确传达产品或服务的独特卖点,也要提升互动的友好度,完成承接用户和转化用户的价值作用。 为了满足营销人员的落地页自建需求,我们推出了轻叶H5制作工具,帮…

CVPR 2023 | 4D雷达场景流的跨模态监督学习

注1:本文系“计算成像最新论文速览”系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‐Science & Applications, Optica 等)。 本次介绍的论文是:CVPR 2023 | 4D雷…

请求转发和请求重定向

目录 1. 定义层面 2. 请求方层面 3. 数据共享层面 4. 最终 url 层面 5. 代码实现层面 请求转发 请求重定向 在Java中,跳转网页的方式有两种,一种是请求转发,另一种是请求重定向,而实际上,这两种方式是有着明显…

最小生成树——prim算法

prim算法详解 prim算法简介prim算法步骤prim复杂度prim样例题目公路修建题目描述输入格式输出格式样例样例输入样例输出 提示 prim样例代码 prim算法简介 P r i m Prim Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树是一个连通图的生成树,它的所有边…

Vue+SpringBoot项目开发:登录页面美化,登录功能实现(三)

写在开始:一个搬砖程序员的随缘记录上一章写了从零开始VueSpringBoot后台管理系统:Vue3TypeScript项目搭建 VueTypeScript的前端项目已经搭建完成了 这一章的内容是引入element-plus和axios实现页面的布局和前后端数据的串联,实现一个登陆的功能&#x…

LVGL学习笔记 28 - 键盘keyboard

目录 1. 设置关联文本框 2. 设置模式 2.1 LV_KEYBOARD_MODE_TEXT_LOWER 2.2 LV_KEYBOARD_MODE_TEXT_UPPER 2.3 LV_KEYBOARD_MODE_SPECIAL 2.4 LV_KEYBOARD_MODE_NUMBER 2.5 LV_KEYBOARD_MODE_USER_1 ~ LV_KEYBOARD_MODE_USER_4 3. 使能弹窗模式 4. 更改按键布局 5. 事…

uniapp----分包

系列文章目录 uniapp-----封装接口 uniapp-----分包 目录 系列文章目录 uniapp-----封装接口 uniapp-----分包 前言 二、使用步骤 1.创建文件 ​编辑 2.min.js的修改 2.1 subPackages 代码如下(示例): 2.2 preloadRule 代码如下&am…

第一次PR经历

第一次PR测试地址:https://github.com/firstcontributions/first-contributions说明文档: https://github.com/firstcontributions/first-contributions/blob/main/translations/README.zh-cn.md

SAP MM学习笔记17-在库品目评价中的标准原价 S 和移动平均价格 V

SAP中有2种价格,标准原价 S 和 移动平均价格 V。 1,标准原价 S 2,移动平均价格 V 在MM03 会计1 Tab中,现行评价区域中,有原价管理区分。 比如下面这个物料 100-100, 它的原价管理区分是 S。 它的合计额…

在Vue中动态引入图片为什么要用require

静态资源和动态资源 静态资源 动态的添加src 动态资源 我们通过网络请求从后端获取的资源 动态的添加src会被当成静态资源 动态的添加src最终会被打包成: 动态的添加图片最会会被编译成一个静态的字符串,然后再浏览器运行中会去项目中查找这个资源…

ucharts-地图

以唐山地图为例&#xff1a; 先去找需要的区域入下图&#xff0c;会得到一堆的经纬度&#xff0c;我把他它放到静态文件里&#xff0c;需要的是它的features <template><view class"charts-box"><qiun-data-charts type"map":opts"o…

Redis中的数据类型

Redis中的数据类型 Redis存储的是key-value结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有5种常用的数据类型: 字符串string哈希hash列表list集合set有序集合sorted set