Homeassistant docker配置
Homeassistant docker配置
【说明】本系列为自用教程,记录以便下次使用
【背景】一台J1900 4G+64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。
【参考】主要基于GPT生成的教程,并基于自己的测试,进行配置。如有特殊参考,会在文中备注。
【通用账号】:能修改的使用root,不能修改的一般为admin
一、配置Portainer
Portainer 是一个用于 Docker 容器管理的可视化界面工具。方便管理容器和卷。
- 创建 Portainer 数据卷:
docker volume create portainer_data
- 运行 Portainer 容器:
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
指令的解释:
-d:表示在后台模式运行容器。
-p 9000:9000:这将宿主机的 9000 端口映射到容器的 9000 端口。
–name portainer:为容器指定一个名称。
–restart always:确保容器在任何情况下都会重新启动。
-v /var/run/docker.sock:/var/run/docker.sock:这允许 Portainer 直接访问 Docker API。
-v portainer_data:/data:将前面创建的数据卷挂载到容器内。
完成上述步骤后,你可以通过浏览器访问 http://<你的服务器IP>:9000 来使用 Portainer 界面进行 Docker 容器的管理。
- 配置
访问http://<你的服务器IP>:9000,进行账密配置。
二、配置HA的docker
要在 Docker 中安装 Home Assistant,你可以使用官方的 Home Assistant Docker 映像。
- 创建一个数据卷 (用于存储 Home Assistant 的配置和数据):
docker volume create homeassistant_data
- 运行 Home Assistant 容器:
docker run -d --name="home-assistant" -v homeassistant_data:/config -e "TZ=Asia/Shanghai" --net=host homeassistant/home-assistant:stable
指令的解释:
-d:表示在后台模式运行容器。
–name=“home-assistant”:为容器指定一个名称。
-v homeassistant_data:/config:将前面创建的数据卷挂载到容器内,用于存储 Home Assistant 的配置。
-e “TZ=Asia/Shanghai”:设置时区为上海 (你可以根据需要修改为其他时区)。
–net=host:这允许 Home Assistant 使用宿主机的网络,有助于自动发现和控制本地网络上的设备。
homeassistant/home-assistant:stable:使用稳定版的 Home Assistant 映像。
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:8123 来访问 Home Assistant 的界面,并进行初始设置。
- 配置
访问http://<你的服务器IP>:8123 ,进行账密配置。其他配置在后续说明
三、配置MQTT服务器(Eclipse Mosquitto)
对于 MQTT 服务器,经常推荐使用的是 Eclipse Mosquitto。Mosquitto 是一个开源的 MQTT 代理,非常轻量级且可靠,可以很好地与 Home Assistant 和 Node-RED 配合使用。
额外参考:https://zhuanlan.zhihu.com/p/452896841
- 创建 Mosquitto 数据卷:
docker volume create mosquitto_config
docker volume create mosquitto_data
docker volume create mosquitto_log
- 配置 mosquitto.conf 文件:
在mosquitto_config下创建文件mosquitto.conf,特别注意,由于使用docker volume创建,应该是在mosquitto_config的_data文件夹下。实际路径如下:
cd /opt/docker/volumes/mosquitto_config/_data
touch mosquitto.conf
chmod 755 mosquitto.conf # 需要给权限,因为容器可能要读写
nano mosquitto.conf
写入以下内容:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
- 运行 Mosquitto 容器:
docker run -d \--name mosquitto \--privileged \-p 1883:1883 \-p 9001:9001 \-v mosquitto_config:/mosquitto/config \-v mosquitto_data:/mosquitto/data \-v mosquitto_log:/mosquitto/log \--restart always \eclipse-mosquitto
三、配置MariaDB数据库
Home Assistant 默认使用 SQLite 数据库,但在大型设置或长时间使用后,使用 MariaDB 或 PostgreSQL 可能更高效。
为了长时间运行的稳定,那还是设置吧
- 创建一个持久化存储数据的 Docker 卷:
MariaDB 将其数据存储在 /var/lib/mysql,所以为了确保数据的持久性,我们应该为这个路径创建一个 Docker 卷。
docker volume create mariadb_data
- 启动 MariaDB 容器:
使用以下命令运行 MariaDB 容器,注意替换 password 为您自己的值。
docker run -d \--name mariadb \--privileged \--restart always \-e MYSQL_ROOT_PASSWORD=password \-e MYSQL_DATABASE=homeassistant \-e MYSQL_USER=root \-e MYSQL_PASSWORD=password \-v mariadb_data:/var/lib/mysql \-p 3306:3306 \mariadb:latest
- 配置 Home Assistant 使用 MariaDB:
如之前所述,您需要更新 Home Assistant 的 configuration.yaml 文件,指向这个新的 MariaDB 实例。修改password。
recorder:db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8
- 之后重启HA
使用数据库工具DBeaver,连接这个数据库进行查看,可以看到正常。
四、配置Node-RED
Node-RED 是一个基于流的开发工具,用于连接硬件设备、API 和在线服务。
- 创建 Node-RED 数据卷 (用于存储 Node-RED 的配置和数据):
docker volume create nodered_data
- 运行 Node-RED 容器:
docker run -d --name nodered -p 1880:1880 -v nodered_data:/data --user node-red --restart always nodered/node-red:latest
指令的解释:
-d: 表示在后台模式运行容器。
–name nodered: 为容器指定一个名称。
-p 1880:1880: 这将宿主机的 1880 端口映射到容器的 1880 端口。
-v nodered_data:/data: 将前面创建的数据卷挂载到容器内,用于存储 Node-RED 的配置。
–user node-red: 以 node-red 用户身份运行 Node-RED,增加安全性。
–restart always: 确保容器在任何情况下都会重新启动。
nodered/node-red:latest: 使用最新版本的 Node-RED Docker 映像。
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:1880 来访问 Node-RED 的界面并开始构建你的流。
五、配置ESPHome
ESPHome 是一个很好的选择,尤其是如果你计划使用 ESP8266 或 ESP32 微控制器来扩展你的 Home Assistant 设置。
- 创建 ESPHome 数据卷 (用于存储 ESPHome 的配置和数据):
docker volume create esphome_data
- 运行 ESPHome 容器:
docker run -d \--name esphome \-p 6052:6052 \-v esphome_data:/config \--restart always \esphome/esphome
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:6052 来访问 ESPHome 的界面,并开始创建和管理你的设备配置。
六、配置Duplicati
Duplicati 是一个备份软件,用于存储加密的、增量的、压缩的备份到云或本地存储。下面是在 Docker 中安装 Duplicati 的步骤:
- 创建 Duplicati 的数据卷 (用于存储配置和备份数据):
docker volume create duplicati_backups
docker volume create duplicati_config
docker volume create duplicati_data
- 运行 Duplicati 容器:
注意替换/opt/docker/volumes为你需要备份的文件夹。
docker run -d \--name duplicati \-p 8200:8200 \-v duplicati_backups:/backups \-v duplicati_config:/config \-v duplicati_data:/data \-v /opt/docker/volumes:/source:ro \--restart unless-stopped \duplicati/duplicati
- 配置
首先在设置中设置密码。
随后创建备份,使用onedrive或其他进行备份。
七、配置HA的HACS
参考官方:https://hacs.xyz/docs/setup/download/,使用container的教程
- 打开HA的bash,输入如下指令即可
wget -O - https://get.hacs.xyz | bash -
- 打开HA中的高级模式
- 添加集成HACS,并进行相应配置,即可显示HACS内容
八、配置HA的Node-Red
- HACS安装Node-Red
- 添加集成Node-Red
- HA导航栏添加Node-Red
配置configuration.yaml,添加如下内容后重启HA。(顺带把ESPhome的也添加进来)
panel_iframe:nodered:title: 'Node-Red'icon: 'mdi:shuffle-variant'#填写node-red的地址url: 'http://192.168.5.1:1880/'esphome:title: 'ESPHome'icon: 'mdi:car-esp'#填写node-red的地址url: 'http://192.168.5.1:6052/'

九、配置Node-Red
- 在Node-Red中添加节点node-red-contrib-home-assistant-websocket,并安装
- 拖入一个HA节点,随后进行HA的配置,如下:

- 其中的令牌在HA中创建并复制
- 测试一下,获取IP并显示

十、配置MQTT
-
HA添加集成MQTT,并配置如下:

-
进行测试

-
使用MQTT发布一个传感器给HA的教程,请参考另外一个博客。
十一、配置彩云天气
- HACS搜索彩云天气,安装组件和卡片

- 添加集成Colorfuclouds,并进行相应配置
- 在主页中添加卡片,为了高级使用,要学会使用编辑器。

十二、配置mini-graph-card
可以在主页显示好看的时序数据,比如温湿度、流量、等等
-
HACS搜索并安装
-
添加如下卡片:

-
手动添加卡片到资源中
可能会出现卡片无法检索到,需要手动添加。
首先在HACS的该卡片,打开源获得该卡片路径:http://192.168.5.1:8123/hacsfiles/mini-graph-card/mini-graph-card-bundle.js
其次,在配置-仪表盘-资源(右上角选择),添加如下资源。可以看到,这里还包括的彩云天气得到资源

相关文章:
Homeassistant docker配置
Homeassistant docker配置 【说明】本系列为自用教程,记录以便下次使用 【背景】一台J1900 4G64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。 【…...
Go 深入解析非类型安全指针
一、引言 非类型安全指针(也称为“裸指针”或“原始指针”)在编程领域中一直是一个具有争议和挑战性的主题。它们赋予程序员直接操作计算机内存的能力,为高级性能优化和底层系统交互提供了可能。然而,这种能力往往伴随着高风险&a…...
vue动态绑定class
Vue.js 允许您使用 v-bind 指令或简写的 : 来动态绑定 class 属性。这允许您基于某些条件为元素添加或删除类名,从而实现动态样式控制。以下是一些示例: 动态添加单个类名: <template> <div> <p :class"{ active: isActi…...
UDP网络通信反复发收
package UDP2;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner;/* * 完成UDP 通信快速入门 实现发1收1*/ public class Client {public static void main(String[] args) throws Exception{// …...
ip报头和ip报文切片组装问题
在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本:指定ip的版本号,对于ipv4来说就是4。 …...
linux之应用编程回顾总结
gcc编译过程 一个c/c文件要经过预处理、编译、汇编和链接4个阶段,才能变成可执行文件 1.预处理 C/C源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、宏定义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理…...
nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
Mac GPU MPS常用方法
Requirements Mac computers with Apple silicon or AMD GPUs macOS 12.3 or later Python 3.7 or later Xcode command-line tools: xcode-select --install 判断是否可用 import torch if torch.backends.mps.is_available():mps_device torch.device("mps")x …...
【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)
目录 线性表的定义及其基本操作(顺序表插入、删除、查找、修改) 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…...
数据结构和算法——图
图 有向图 带权图 邻接矩阵 邻接表相较于邻接矩阵,减少了存储空间; 邻接表 参考视频:【尚硅谷】数据结构与算法(Java数据结构与算法)_哔哩哔哩_bilibili...
大数据学习(16)-mapreduce详解
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
Android---OkHttp详解
OkHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用。对于 Android App,OkHttp 现在几乎已经占据了所有的网络请求操作。RetroFit OkHttp 实现网络请求似乎成了一种标配。 因此&…...
向某文件中逐秒追加带序号输入当前时间 fgets fputs fprintf sprintf
//向某文件中逐秒追加带序号输入当前时间 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include <unistd.h> int main(int argc, char const *argv[]) { time_t tv; // time(&tv);//法1:获取秒数 …...
同为科技(TOWE)机架PDU产品在IDC数据中心机房建设中的应用
当今社会互联网发展迅速, 随着带宽需求的提升, 网络的保密性、安全性的要求就越来越迫切。PDU(Power Distribution Unit) 是 PDU具备电源分配和管理功能的电源分配管理器。PDU电源插座是多有设备运行的第一道也是最为密切的部件, PDU的好坏直…...
Elasticsearch学习笔记
1.核心概念 bucket: 一个数据分组(类似于sql group by以后的数据)metric:对bucket执行的某种聚合分析的操作,比如说求平均值,最大值,最小值。一些系列的统计方法(类似 select count(1) MAX MIN AVG) 请…...
Java框架随笔
Maven面试题 Myabtis面试题 文章目录 Maven面试题Myabtis面试题 1、简述Spring Boot的启动流程2、如何理解Bean的生命周期3、MyBatis的主要功能4、MyBatis的组成部分5、MyBatis的动态SQL 1、简述Spring Boot的启动流程 Spring Boot的启动流程可以分为以下几个步骤:…...
自然语言处理基础——词表示
词表示 把自然语言中最基本的语言单元——词转换为机器能够理解的 词表示能完成以下两个能力 词相似度计算 词与词之间语义的关系 近义词&上位词 使用近义词或上位词表示的问题 遗漏差异 遗漏新的释义 带有主观性 数据吸收 需要大量人工构建 One-Hot Representation …...
2023年9月青少年软件编程(C 语言) 等级考试试卷(七级)
青少年软件编程(C/C)7级等级考试真题试卷(2023年9月) 编程题第 1 题 红与黑(2023.9) 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,…...
鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…...
apache httpd 换行解析漏洞
原理 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 漏洞编号 cve-2017-15715 环境…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
