当前位置: 首页 > news >正文

Homeassistant docker配置

Homeassistant docker配置

【说明】本系列为自用教程,记录以便下次使用
【背景】一台J1900 4G+64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。
【参考】主要基于GPT生成的教程,并基于自己的测试,进行配置。如有特殊参考,会在文中备注。
【通用账号】:能修改的使用root,不能修改的一般为admin

一、配置Portainer

Portainer 是一个用于 Docker 容器管理的可视化界面工具。方便管理容器和卷。

  1. 创建 Portainer 数据卷:
docker volume create portainer_data
  1. 运行 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 容器的管理。

  1. 配置
    访问http://<你的服务器IP>:9000,进行账密配置。

二、配置HA的docker

要在 Docker 中安装 Home Assistant,你可以使用官方的 Home Assistant Docker 映像。

  1. 创建一个数据卷 (用于存储 Home Assistant 的配置和数据):
docker volume create homeassistant_data
  1. 运行 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 的界面,并进行初始设置。

  1. 配置
    访问http://<你的服务器IP>:8123 ,进行账密配置。其他配置在后续说明

三、配置MQTT服务器(Eclipse Mosquitto)

对于 MQTT 服务器,经常推荐使用的是 Eclipse Mosquitto。Mosquitto 是一个开源的 MQTT 代理,非常轻量级且可靠,可以很好地与 Home Assistant 和 Node-RED 配合使用。
额外参考:https://zhuanlan.zhihu.com/p/452896841

  1. 创建 Mosquitto 数据卷:
docker volume create mosquitto_config
docker volume create mosquitto_data
docker volume create mosquitto_log
  1. 配置 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
  1. 运行 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 可能更高效。
为了长时间运行的稳定,那还是设置吧

  1. 创建一个持久化存储数据的 Docker 卷:
    MariaDB 将其数据存储在 /var/lib/mysql,所以为了确保数据的持久性,我们应该为这个路径创建一个 Docker 卷。
docker volume create mariadb_data
  1. 启动 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
  1. 配置 Home Assistant 使用 MariaDB:
    如之前所述,您需要更新 Home Assistant 的 configuration.yaml 文件,指向这个新的 MariaDB 实例。修改password。
recorder:db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8
  1. 之后重启HA
    使用数据库工具DBeaver,连接这个数据库进行查看,可以看到正常。

四、配置Node-RED

Node-RED 是一个基于流的开发工具,用于连接硬件设备、API 和在线服务。

  1. 创建 Node-RED 数据卷 (用于存储 Node-RED 的配置和数据):
docker volume create nodered_data
  1. 运行 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 设置。

  1. 创建 ESPHome 数据卷 (用于存储 ESPHome 的配置和数据):
docker volume create esphome_data
  1. 运行 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 的步骤:

  1. 创建 Duplicati 的数据卷 (用于存储配置和备份数据):
docker volume create duplicati_backups
docker volume create duplicati_config
docker volume create duplicati_data
  1. 运行 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
  1. 配置
    首先在设置中设置密码。
    随后创建备份,使用onedrive或其他进行备份。

七、配置HA的HACS

参考官方:https://hacs.xyz/docs/setup/download/,使用container的教程

  1. 打开HA的bash,输入如下指令即可
wget -O - https://get.hacs.xyz | bash -
  1. 打开HA中的高级模式
  2. 添加集成HACS,并进行相应配置,即可显示HACS内容

八、配置HA的Node-Red

  1. HACS安装Node-Red
  2. 添加集成Node-Red
  3. 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

  1. 在Node-Red中添加节点node-red-contrib-home-assistant-websocket,并安装
  2. 拖入一个HA节点,随后进行HA的配置,如下:
    在这里插入图片描述
  3. 其中的令牌在HA中创建并复制
  4. 测试一下,获取IP并显示
    在这里插入图片描述

十、配置MQTT

  1. HA添加集成MQTT,并配置如下:
    在这里插入图片描述

  2. 进行测试
    在这里插入图片描述

  3. 使用MQTT发布一个传感器给HA的教程,请参考另外一个博客。

十一、配置彩云天气

  1. HACS搜索彩云天气,安装组件和卡片
    在这里插入图片描述
  2. 添加集成Colorfuclouds,并进行相应配置
  3. 在主页中添加卡片,为了高级使用,要学会使用编辑器。
    在这里插入图片描述

十二、配置mini-graph-card

可以在主页显示好看的时序数据,比如温湿度、流量、等等

  1. HACS搜索并安装

  2. 添加如下卡片:
    在这里插入图片描述

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

相关文章:

Homeassistant docker配置

Homeassistant docker配置 【说明】本系列为自用教程&#xff0c;记录以便下次使用 【背景】一台J1900 4G64G的小主机&#xff0c;安装了OP系统&#xff0c;里面自带了Docker。为实现Homeassistant&#xff08;简称HA&#xff09;控制智能家居设备&#xff0c;进行如下配置。 【…...

Go 深入解析非类型安全指针

一、引言 非类型安全指针&#xff08;也称为“裸指针”或“原始指针”&#xff09;在编程领域中一直是一个具有争议和挑战性的主题。它们赋予程序员直接操作计算机内存的能力&#xff0c;为高级性能优化和底层系统交互提供了可能。然而&#xff0c;这种能力往往伴随着高风险&a…...

vue动态绑定class

Vue.js 允许您使用 v-bind 指令或简写的 : 来动态绑定 class 属性。这允许您基于某些条件为元素添加或删除类名&#xff0c;从而实现动态样式控制。以下是一些示例&#xff1a; 动态添加单个类名&#xff1a; <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层将数据打包封装向下传递后&#xff0c;网络层将其整个看为一个数据&#xff0c;然后对其数据加网络报头操作&#xff0c;在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本&#xff1a;指定ip的版本号&#xff0c;对于ipv4来说就是4。 …...

linux之应用编程回顾总结

gcc编译过程 一个c/c文件要经过预处理、编译、汇编和链接4个阶段&#xff0c;才能变成可执行文件 1.预处理 C/C源文件中&#xff0c;以“#”开头的命令被称为预处理命令&#xff0c;如包含命令“#include”、宏定义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理…...

nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…...

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 …...

【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)

目录 线性表的定义及其基本操作&#xff08;顺序表插入、删除、查找、修改&#xff09; 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…...

数据结构和算法——图

图 有向图 带权图 邻接矩阵 邻接表相较于邻接矩阵&#xff0c;减少了存储空间&#xff1b; 邻接表 参考视频&#xff1a;【尚硅谷】数据结构与算法&#xff08;Java数据结构与算法&#xff09;_哔哩哔哩_bilibili...

大数据学习(16)-mapreduce详解

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

Android---OkHttp详解

OkHttp 是一套处理 HTTP 网络请求的依赖库&#xff0c;由 Square 公司设计研发并开源&#xff0c;目前可以在 Java 和 Kotlin 中使用。对于 Android App&#xff0c;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数据中心机房建设中的应用

当今社会互联网发展迅速&#xff0c; 随着带宽需求的提升&#xff0c; 网络的保密性、安全性的要求就越来越迫切。PDU(Power Distribution Unit) 是 PDU具备电源分配和管理功能的电源分配管理器。PDU电源插座是多有设备运行的第一道也是最为密切的部件&#xff0c; PDU的好坏直…...

Elasticsearch学习笔记

1.核心概念 bucket: 一个数据分组&#xff08;类似于sql group by以后的数据&#xff09;metric&#xff1a;对bucket执行的某种聚合分析的操作&#xff0c;比如说求平均值&#xff0c;最大值&#xff0c;最小值。一些系列的统计方法(类似 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的启动流程可以分为以下几个步骤&#xff1a…...

自然语言处理基础——词表示

词表示 把自然语言中最基本的语言单元——词转换为机器能够理解的 词表示能完成以下两个能力 词相似度计算 词与词之间语义的关系 近义词&上位词 使用近义词或上位词表示的问题 遗漏差异 遗漏新的释义 带有主观性 数据吸收 需要大量人工构建 One-Hot Representation …...

2023年9月青少年软件编程(C 语言) 等级考试试卷(七级)

青少年软件编程&#xff08;C/C&#xff09;7级等级考试真题试卷&#xff08;2023年9月&#xff09; 编程题第 1 题 红与黑&#xff08;2023.9&#xff09; 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上&#xff0c…...

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…...

apache httpd 换行解析漏洞

原理 Apache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞&#xff0c;在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过一些服务器的安全策略。 漏洞编号 cve-2017-15715 环境…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 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样…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...