通过内网穿透远程控制家中Home Assistant智能家居系统

news2024/9/24 5:33:44

文章目录

  • 前言
  • 1. 安装Home Assistant
  • 2. 配置Home Assistant
  • 3. 安装cpolar内网穿透
    • 3.1 windows系统
    • 3.2 Linux系统
    • 3.3 macOS系统
  • 4. 映射Home Assistant端口
  • 5. 公网访问Home Assistant
  • 6. 固定公网地址
    • 6.1 保留一个固定二级子域名
    • 6.2 配置固定二级子域名

前言

Home Assistant(以下简称HA)是个开源的智能家居平台,也叫家庭助手,就像一个软件,比如我们的QQ软件,微信软件。

Home Assistant把家中的智能家居设备整合到HA中,它能够接入的设备非常的多比如大名鼎鼎的小米、博联、易微联、飞利浦、特斯拉…,也可以接入软件,让后让各个品牌之间的设备可以联网。

一个设备,在没接入HA之前,它是个单一设备,只能在自己的生态里面联动,一旦接入到HA上,它就活了,它可以在所有接入的平台里面自己联动,实现各种各样的自动化。

下面介绍Home Assistant 面板+cpolar内网穿透实现在外随时随地远程访问。

1. 安装Home Assistant

这里使用vmwhere 虚拟机进行安装,通过Home Assistant官网的下载链接下载,下载后解压。

vmdk文件:https://www.home-assistant.io/installation/linux#install-home-assistant-container

image-20230329140034810

然后创建一个虚拟机

image-20230329140523751

选择自定义虚拟机

image-20230329140559237

直接下一步

image-20230329140626938

选择稍后安装操作系统

image-20230329140651521

然后选择Linux,版本选择4.x内核64位

image-20230329140916527

设置一下虚拟机名称,然后下面安装的位置可以自己选择,也可以默认

image-20230329141109224

处理器可以选择1个,内核选择两个,这里配置的数量越多,消耗电脑性能越大,可根据本机配置设置

image-20230329141558147

按照官网的要求,需2G以上,这里选择3G

image-20230329141741615

选择NET网络模式

image-20230329141838721

直接下一步

image-20230329141927176

磁盘类型可以默认,也可以选择SATA

image-20230329142125999

这里需要选择现有磁盘

image-20230329142241934

这里选择我们上面官网下载的.vmdk文件

image-20230329142336733

然后选择保持现有格式

image-20230329142435852

最后,点击完成即可

image-20230329142505378

安装成功后启动虚拟机,启动完成后我们可以看到局域网ip地址和端口信息,8123就是管理面板的端口

image-20230329142908172

2. 配置Home Assistant

启动虚拟机后,我们在浏览器上,输入Home Assistant的局域网ip地址加上8123的端口号,就可以看到管理面板

image-20230329143213764

首次访问登陆,需要创建账户,填写相关用户名密码,创建账户

image-20230329143436938

地区选择,可以手动定位,也可以选择自动检测

image-20230329143740404

接下来默认点击下一步即可

image-20230329143904127

然后点击完成,这里提示添加智能设备,可以先点击完成,后面自己设置

image-20230329144017846

然后就进入了控制面板界面

image-20230329144126684

3. 安装cpolar内网穿透

在局域网下的浏览器访问成功后,我们接下来用cpolar内网穿透将其映射到公网上,实现在公网环境下也可以远程访问家里的HA,不需要公网IP,也无需设置路由器。

cpolar官网:https://www.cpolar.com/

访问cpolar官网,注册一个账号,然后下载并安装客户端,具体安装教程可以参考官网文档教程。

3.1 windows系统

在cpolar官网下载安装包后,双击安装包一路默认安装即可。

3.2 Linux系统

cpolar支持一键自动安装脚本,详细请参考文章教程

  • Linux安装cpolar内网穿透

3.3 macOS系统

可通过homebrew安装,可参考文章教程

  • macOS安装cpolar内网穿透

20230130105715

4. 映射Home Assistant端口

cpolar安装成功后,在浏览器上访问本地9200端口,访问cpolar web UI管理界面【http://localhost:9200】,使用cpolar账号登录。

20230130105810

点击左侧仪表盘的隧道管理——创建隧道,创建一个http隧道,指向8123端口 ,即Home Assistant的端口

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:home assistant 局域网ip+端口
  • 域名类型:免费选择随机域名
  • 地区:选择China vip

点击创建

image-20230329151644131

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网地址,然后复制地址

image-20230329151724274

5. 公网访问Home Assistant

打开浏览器,使用刚刚获取的公网地址进行连接访问,此时会出现一个400的错误,如果没有的话,可以跳过此步骤

image-20230330113646549

我们查看日志,看一下提示具体错误,点击左下角配置,点击系统

image-20230330115658528

可以看到日志,点击日志

image-20230330130245362

打开日志后,我们可以看到这么一个问题,大致意思是:从192.168.191.1收到来自反向代理的请求,但HTTP集成未针对反向代理进行设置,所以我们需要修改一下配置文件

image-20230330130645997

解决方法:打开面板,找到左下角配置,点击加载项

image-20230330113824049

去商店下载一个文件编辑器,我们需要修改一个配置文件

image-20230330113845841

找到File editor 文件编辑器

image-20230330113950556

点击安装这个File editor

image-20230330114133188

安装成功后点击启动

image-20230330114417659

然后为了方便下次使用,可以勾选一个在侧边栏显示

image-20230330114525062

开启后,我们从侧边栏即可进入,然后点击左上角文件目录

image-20230330114704791

找到并且点击configuration.yaml的文件,点击一下即可

image-20230330114807991

在文件上添加如下配置,下面ip地址就是我们上面查看日志提示的那个ip地址:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.191.1

image-20230330131216892

然后我们打开虚拟机关机,重启虚拟机,接着再次输入公网地址访问,即可成功

image-20230330131548575

6. 固定公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。

6.1 保留一个固定二级子域名

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20230330132159756

保留成功后复制保留的二级子域名地址

image-20230330132218331

6.2 配置固定二级子域名

访问http://127.0.0.1:9200/,登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的Home Assistant隧道,点击右侧的编辑

image-20230330131957337

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新

image-20230330132252714

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了保留过的二级子域名名称,将其复制下来

image-20230330132345392

然后使用固定https地址打开浏览器访问,同样访问成功,且域名不会发生变化.

image-20230330132444605

转载自cpolar极点云文章:如何搭建Home Assistant智能家居系统并通过内网穿透实现远程控制家中设备

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

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

相关文章

【纠错】遗传算法求解VRP计算车辆容量限制的代码有bug

关联文章 关联的博客文章为:《遗传算法求解带时间窗的VRP问题(python)》 原出错函数 源程序代码如下: def vehicle_capacity_restraint(chrom):# 计算一条染色体的车辆容量限制individual copy.deepcopy(chrom)split_flag_no…

Simian使用方法

1.下载 链接1:官网下载 链接2:压缩包 2.操作 1.双击exe启动 2.打开控制台,winR 输入cmd 3.输入操作语句 G:\1111\simian-2.5.10\bin\simian-2.5.10.exe -includes"G:\1111\test\*.cpp" -threshold3 > output.txt G:\1111\si…

Vuex中多个参数显示undefined的解决方案

笔者今天在使用Vuex中的mutations改变state里面的全局状态的值,获取到的数据却怎么都是第一个参数是可以获取到,但是第二个就获取不到,就显示undefined 问题代码 mutations: {multiparameter(state,id,newStatus) {console.log("数据的Key&#x…

【Java】java中的集合框架组成部分

集合框架中 单列与多列的区别 单列——一行只有一列数据 多列(双列)——一行两列数据 key value 集合框架组成部分: 1. Collection(存放单列数据) List 接口——存放数据可以允许重复的 ArrayList 底层基于 数组 数据结构实现LinkedList 底层基于 链表 数据结构实现…

seq“ 和 “time“ 字段

在RTP(Real-time Transport Protocol)报文中,"seq" 和 "time" 字段分别表示以下内容: 1. **Seq(Sequence Number)字段**:Seq字段是RTP头部中的一个16位字段,用…

Python---练习:判断是否为一个合法三角形(if else)

案例 判断是否为一个合法三角形 需求:输入三角形的3边,如果两边的长度大于第三条边,则代表是一个合法三角形 思路: 先确定什么是一个合法三角形-----就是任意两边的和,大于第三边。 就像下图,a b 展…

分享一个基于Python+Django的高校食堂外卖点餐系统的设计实现(源码、调试、开题、lw、ppt)

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

Hadoop3教程(二十四):Yarn的常用命令与参数配置实例

文章目录 (132)YARN常用命令查看任务查看日志查看容器查看节点状态rmadmin更新配置查看队列 (133)生产环境核心配置参数(135)生产环境核心参数配置案例(140/141)Tool接口案例参考文献…

Flink之Window窗口机制

窗口Window机制 窗口概述窗口的分类是否按键分区按键分区窗口非按键分区 按照驱动类型按具体分配规则滚动窗口Tumbling Windows滑动窗口 Sliding Windows会话窗口 Session Windows全局窗口 Global Windows 时间语义窗口分配器 Window Assigners时间窗口计数窗口例子 窗口函数 W…

一篇文章带你弄懂编译和链接

一篇文章带你弄懂编译和链接 文章目录 一篇文章带你弄懂编译和链接一、环境二、翻译环境1.编译①预处理②编译③汇编 2.链接 三、运行环境 一、环境 翻译环境和运行环境 翻译环境:源代码被转换成可执行的机器指令。 运行环境:用于实际执行代码。 二、…

使用 Android Studio 开发一款弹钢琴app

A. 项目描述 本项目主要实现了【钢琴键盘的模拟】、【弹奏引导】以及【乐曲库】等功能。 钢琴键盘模拟:提供全尺寸键盘,并且根据用户的喜好来调整键盘的颜色样式。 弹奏引导:用户可以根据键盘上的提示符号 👆 来学习演奏。对于钢…

Win32 简单日志实现

简单实现日志保存, 支持设置日志文件数量, 单个日志文件大小上限, 自动超时保存日志, 日志缓存超限保存 CLogUtils.h #pragma once#include <string> #include <windows.h> #include <vector> #include <map> #include <mutex> #include <tc…

04、MySQL-------MyCat实现分库分表

目录 九、MyCat实现分库分表1、分库分表介绍&#xff1a;横向&#xff08;水平&#xff09;拆分**垂直分表**&#xff1a;水平分表&#xff1a;**分库分表** 纵向&#xff08;垂直&#xff09;拆分分表字段选择 2、分库分表操作&#xff1a;1、分析图&#xff1a;2、克隆主从3、…

【Docker从入门到入土 1】Docker管理命令

Part1 一、容器1.1 虚拟化技术的演变1.2 容器简介1.3 为什么要用到容器&#xff1f;1.4 常用的容器引擎1.5 容器和虚拟机 二、Docker2.1 什么是docker&#xff1f;&#xff08;面试题&#xff09;2.2 Docker和虚拟机的区别&#xff08;面试常问&#xff0c;记住&#xff09;2.3…

SLAM 14 notes

4.23 推导 f ( x ) f(x) f(x)在点a处的泰勒展开 f ( x ) ∑ n 0 ∞ f ( n ) a n ! ( x − a ) n f(x) \sum_{n0}^\infty \frac{f^{(n)}a}{n!}(x-a)^n f(x)∑n0∞​n!f(n)a​(x−a)n l n x lnx lnx的n阶导数 l n ( n ) x ( − 1 ) n − 1 ( n − 1 ) ! x n ln^{(n)}x \fr…

C++进阶语法之函数和指针【学习笔记(二)】

文章目录 1、C 函数1.1 函数的定义1.2 函数原型&#xff08;function prototypes&#xff09;1.3 参数&#xff08;parameter&#xff09;——值传递&#xff08;pass by value&#xff09;1.4 重载&#xff08;overloading&#xff09;1.5 函数传参——传递数组&#xff08;ar…

drawio都能做那些事情和模板示例

drawio都能做那些事情和模板示例 你可以使用drawio&#xff0c;并使用drawio提供的扩展模板库和大量的形状库&#xff0c;针对很多不同的工业领域创建不同类型的图表。 针对如下的内容中的所有的图&#xff0c;均可以下载源文件并导入到drawio中再次编辑&#xff08;供学习者…

如何远程通过内网穿透实现微信公众号在本地的完整调试

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 前言 在微信公众号开发中&#xff0c;微信要求开发者需要拥有自己的服务器资源来…

什么是兼容性测试? 重要性是什么?

在数字化时代&#xff0c;用户使用各种不同类型的设备和操作系统来访问应用程序和网站。为了确保用户体验的一致性和应用程序的可用性&#xff0c;兼容性测试变得至关重要。本文将深入探讨兼容性测试的概念及重要性。 一、什么是兼容性测试? 兼容性测试是一种软件测试方法&…

混入组件 (mixin)

1 什么是混入以及作用 *混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的选项。作用&#xff1a;主要作用是继承和封装…