米家通过HomeAssistant控制笔记本电脑开关机

米家通过HomeAssistant控制笔记本电脑开关机

  • 配置HomeAssistant
  • 配置EMQX mqtt
  • 自动化配置
  • 电脑关机实现
  • 电脑开机实现(网络唤醒WOL包)

环境准备:

  1. HomeAssistant:能配置接入米家的设备,我这里采用fnos安装
  2. MQTT服务器:可以使用免费的云服务器或则本地安装都可以,我这里采用本地搭建emqx
  3. 米家:有可以控制的设备
  4. 电脑(支持网络唤醒不支持的电脑)

配置HomeAssistant

首先是使用fnos安装配置HomeAssistant
在这里插入图片描述
安装好后直接进入后台配置相关账户,因为飞牛os商店里面安装的HomeAssistant无法接通米家的设备,这里还需要通过安装hacs来实现控制米家设备和获取米家设备状态,打开docker的HomeAssistant控制台输入以下指令并重启就可以安装成功了

// 下载并安装hacs
wget -O - https://get.hacs.xyz | bash -
// 重启
reboot 

在这里插入图片描述
然后通过hacs安装Xiaomi Miot Auto来添加米家设备
在这里插入图片描述
然后我们添加集成米家设备
在这里插入图片描述
在这里插入图片描述
然后选择模式接入即可获取设备信息,这里有三种接入模式:

  1. 自动模式:插件定期更新支持本地miot协议的设备,并自动将用户赛选的设备符合条件的型号使用本地链接(推荐)
  2. 本地模式:继承配置嗦赛选的设备都将使用本地链接,如勾选了不支持本地的miot协议的设备将不可用
  3. 云端模式:继承配置所筛选的设备都将使用云端链接,建议旧版miio、蓝牙、ZigBee设备使用

然后到这一步HomeAssistant就可以控制我们的米家设备了,还可以获取米家设备信息,这里推荐一篇博主的配置HomeAssistant,他的教程会详细很多而且文章附带B站UP主视频配置会更加容易操作【小米MIoT设备接入HomeAssistant通用插件教程】,下一步我们需要创建一个mqtt服务器

配置EMQX mqtt

下载镜像
在这里插入图片描述
在这里插入图片描述
设置端口,这里保持默认
在这里插入图片描述
移植下一步然后输入你的IP地址:18083进入后台默认账号密码admin public
在这里插入图片描述
然后我们的mqtt就安装好了,下一步配置HomeAssistant的MQTT服务,进入设置添加设备与集成选择mqtt

在这里插入图片描述
然后输入你的NAS的IP地址,端口填入1883
在这里插入图片描述
然后我们可以通过emqx的后台web调试来测试链接是否成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自动化配置

然后我们创建一条自动化来实现控制米家控制,这也是关键的一点,我的思路是米家通过控制设备的一个状态让HomeAssistant检测到设备状态,当状态为开就执行开机,当状态为管就执行关机,具体操作如下:
在这里插入图片描述
当人在传感器的指示灯被打开就发送mqtt指令on(记住这里的computer_contrl主题,这个对后面的控制关机会用到)
在这里插入图片描述
当存在感应传感器指示灯关发送off指令(这里应该是执行网络唤醒程序,看文章后:网络唤醒WOL包)
在这里插入图片描述
然后在米家中我们创建两条手动控制指令来控制人在传感器的指示灯的开关
请添加图片描述
请添加图片描述

在这里插入图片描述

然后我们在emqx中可以订阅computer_contrl这个主题,然后通过米家控制测试是否会被触发,这里实测触发正常,但是非常的缓慢(大概30s),如果您是主要使用HomeAssistant(苹果的homekit)那反应速度会比该种方式要快的过(不知道有没有设置可以调整设备状态的轮询时间),因为HomeAssistant获取米家设备的速度还是比较慢,我测试了直接在网页点击通信响应速度会非常快。

电脑关机实现

既然我们实现了HomeAssistant发送mqtt消息,那接下来我们只需要通过代码去接受mqtt消息然后执行关机指令即可实现控制关机,下面我是用python来实现mqtt通信测试;

1、安装paho-mqtt包
在这里插入图片描述
2、测试代码

import paho.mqtt.client as mqtt
import time
import os
 
# MQTT 配置
broker_address = "192.168.10.104"  # MQTT 服务器地址
port = 1883  # 端口号,默认为 1883
publish_topic = "computer_contrl"  # 发布给HomeAssistant消息的主题
subscribe_topic = "computer_contrl" # 订阅HomeAssistant发送消息的主题

 
# 当客户端收到来自服务器的CONNACK响应时调用
def on_connect(client, userdata, flags, rc, properties):
    if rc == 0:
        print("Connected with result code " + str(rc))
        client.subscribe(topic=subscribe_topic,qos=1)  # 订阅HomeAssistant发送消息的主题

# 订阅成功后调用
def on_subscribe(client, userdata, mid, granted_qos, properties):
    print("On Subscribed: Success" + str(granted_qos))

# 在收到消息的时候被调用
def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))

#这里需要解析发过来的数据,根据自己配置的主题包来定义,可以扩展json格式数据
    if str("off") in str(msg.payload):
        # os.system('shutdown /r /t 0') # 重启电脑
        # os.system('shutdown /s /t 0') # 关闭电脑
        os.system('notepad.exe') # 打开记事本
    else:
        print("off")
    

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)# 创建客户端实例
client.on_connect = on_connect  # 绑定连接回调函数
client.username_pw_set("admin", "password") # emqx可以不设置,如果是其他mqtt服务器需要设置
client.connect(host=broker_address, port=port, keepalive=60) # 连接到MQTT Broker
client.on_subscribe = on_subscribe # 订阅回调
client.on_message = on_message # 收到消息
time.sleep(2) # 等待链接服务器
client.loop_forever() # 开始监听消息

# 断开连接
# client.disconnect()

然后我们创建一个按钮手动触发执行mqtt下发
在这里插入图片描述

请添加图片描述

最终我们收到消息,然后我们通过python就可以做很多事情,这里我演示打开记事本,当然这里语言不重要,只要能链接mqtt什么语言都可以,选择你合适的语言去搞就好了,在这个基础上还可以做很多事,根据发送的消息不同可以打开软件,可以休眠电脑,可以关闭电脑重启电脑都是可以的,然后我们需要做的就是代码在开机自动运行就可以了,具体的操作步骤如下:

  1. 获取python安装路径:执行python -version(将python.exe替换为pythonw.exe这样开机就不会显示cmd窗口直接后台运行)
  2. 获取脚本存放路径:右击python脚本文件
  3. 在任务计划程序中添加执行任务:按win键输入任务计划程序打开即可

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我这里做测试没有替换python.exe是为了方便看到是否开机运行脚本状态,如果正常使用记得替换,脚本位置不推荐放在桌面可以根据情况更改位置
在这里插入图片描述
在这里插入图片描述
取消勾选
在这里插入图片描述

保存任务

电脑开机实现(网络唤醒WOL包)

首先我们需要保证电脑以太网卡通过网线链接到路由器(无线网卡不行,关机后无线网卡会掉电无法唤醒),保证和HomeAssistant在同一网关下的路由器,然后使用cmd命令行获取网卡的mac地址,然后打开HomeAssistant的安装的文件夹(不论是docker安装还是服务器安装还是其他闲置电脑安装都会有这个文件),在该文件中添加以下代码(根据IPconfig中获取的信息更改以下代码)

#yaml通过缩进判断变量从属关系,↓属于一级配置,需要顶格,不要留空格!
switch:
  - platform: wake_on_lan
    name: "Computer"                 # 定义HA中实体的名称,可任意命名
    mac: "9C-6C-80-05-DE-55"        # 主机(电脑)的MAC地址
    host: "192.168.10.245"            # 主机(电脑)地址,可省略
    broadcast_address: "192.168.10.255"      # 广播地址.不可省略.此处假设路由器地址为192.168.10.1,如为其他网段需要修改
    broadcast_port: 9               # 止定wol端口,可省略

在这里插入图片描述
然后回到HomeAssistant检查配置无误重启服务(完全重启)
在这里插入图片描述
然后我们在卡片中添加实体
在这里插入图片描述
然后保存设置,通过点击该按钮就会发送网络唤醒包给设置的mac地址的网卡,因为我的笔记本离路由器太远,网络唤醒实验我没法验证,这里推荐几篇博文自行尝试即可
网络唤醒Wake-on-LAN (WoL or WOL) 设置方法
通过Home Assistant实现远程唤醒WOL
然后在对应的自动化里控制该实体即可实现米家控制远程唤醒了;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端环境配置

对于换公司的小伙伴来讲,重新安装环境,百度或许稍微有点麻烦,本文章让你无脑式直接操作,保证环境畅通无阻。 1.安装nvm-setup 该插件是一款管理nodeJs的包,无需你单独下载nodeJs去安装,只需要下载安装此…

[CKS] K8S AppArmor Set Up

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …

提升自然排名的有效策略与方法

内容概要 在数字营销的快速发展背景下,自然排名的提升日益显得重要。自然排名不仅影响网站的流量,同时也直接关系到品牌的曝光度和市场竞争力。针对这个主题,我们将探讨多个关键因素,帮助读者更好地理解自然排名的重要性及其影响…

golang go语言 组建微服务架构详解 - 代码基于开源框架grpc+nacos服务管理配置平台

整体介绍: 本文主要介绍如何用go语言 来组建微服务的框架,grpc服务管理 示例框架 代码由grpcnacos go sdk 组成。 grpc负责将调用序列化并传递到远端,nacos负责服务发现和服务管理。 grpc和nacos都是开源产品。代码复制下来就能跑。 微服…

软件测试项目实战

软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 在软件投入使用前,要经过一系列的严格测试,才能保证交付质量。 一、引言 1.编写目的 本文档…

基于百度飞桨paddle的paddlepaddle2.4.2等系列项目的运行

PPASR 必看&#xff01;&#xff01;&#xff01; PaddleSpeech develop --> PaddlePaddle 2.5.0/2.5.1 PaddleSpeech < 1.4.1 --> PaddlePaddle < 2.4.2 1.创建虚拟环境 conda create --name test python3.10 2.激活环境&#xff0c;安装ppasr的paddlepaddl…

MySQL数据库专栏(四)MySQL数据库链接操作C#篇

摘要 本篇文章主要介绍C#链接MySQL数据库的接口介绍&#xff0c;使用实例及注意事项&#xff0c;辅助类的封装及调用实例&#xff0c;可以直接移植到项目里面使用。 目录 1、添加引用 2、接口介绍 2.1、MySqlConnection 2.2、MySqlCommand 2.3、MySqlDataReader…

【Pikachu】File Inclusion文件包含实战

永远也不要忘记能够笑的坚强&#xff0c;就算受伤&#xff0c;我也从不彷徨。 1.File Inclusion(文件包含漏洞)概述 File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码…

计算机网络基本概念总结

IP地址 概念 使网络中的设备都有唯一的地址标识&#xff0c;用于表示其在网络中的位置。 格式 IP地址是一个32位的二进制数&#xff0c;通常被分割为4个8位二进制数&#xff08;也就是4个字节&#xff09;&#xff0c;如&#xff1a;01100100.00001000.00001010.00000110。通常…

CSS回顾-基础知识详解

一、引言 在前端开发领域&#xff0c;CSS 曾是构建网页视觉效果的关键&#xff0c;与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现&#xff0c;我们亲手书写 CSS 样式的情况越来越少&#xff0c;CSS 基础知识也逐渐被我们遗忘。 现在&#xff0c;这种遗…

RabbitMq项目实战--延迟队列实现超时订单处理

简单实现版 RabbitMq创建队列绑定交换机_rabbitmq 绑定交换机-CSDN博客 Configuration public class RabbitmqConfig {Value("${rabbitmq.exchange}")private String exchange;Value("${rabbitmq.host}")private String host;Value("${rabbitmq.por…

Vivado+Vscode联合打造verilog环境

一、Vivado下载安装 详细参考我另一篇文章&#xff1a; Vivado2022.2下载安装_fpga vivado下载-CSDN博客https://blog.csdn.net/weixin_61081689/article/details/143460790?spm1001.2014.3001.5501 二、Vscode下载安装 详细参考我另一篇文章&#xff1a; VscodeAnacond…

Unity 热更新 之 一篇文章完全入门AssetBundle

本篇知识来源于unity官方手册以及siki学院的相关教程,链接如下,仅作学习分享 AssetBundle&#xff08;创建打包&#xff09;入门学习(基于Unity2017) - SiKi学院|SiKi学堂 - unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程 目录 0.热更新是什么 1.AssetBundl…

思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)

Linux vi/vim | 菜鸟教程 https://zhuanlan.zhihu.com/p/602675406 Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客 这里提出使用 vi / vim 进行简单的编辑操作的原因&#xff0c;主要是在容器镜像中&#xff0c;普遍都是使用这个。 在 linux 服务器应用场景&#x…

【网络安全 | 甲方建设】DDOS 防范教程

未经许可,不得转载。 文章目录 前言DDoSDDoS种类针对DDoS CC攻击的防护备份网站拦截HTTP请求带宽扩容使用CDN隐藏服务器真实IP关闭不必要的服务或端口限制SYN/ICMP流量启用反向代理前言 假设你是一个电商平台的管理员,网站每天都处理大量的用户请求,比如用户浏览商品、加入…

【WRF模拟】全过程总结:WPS预处理及WRF运行

【WRF模拟】全过程总结:WPS预处理及WRF运行 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据1.2.1 叶面积指数LAI和植被覆盖度Fpar(月尺度)1.2.2 地面反照率(月尺度)1.2.3 土地利用类型+不透水面积1.2.4 数据处理:geotiff→tiff(W…

【青牛科技】 GC6153——TMI8152 的不二之选,可应用于摇头机等产品中

在电子工程领域&#xff0c;不断寻求性能更优、成本更低的解决方案是工程师们的永恒追求。今天&#xff0c;我们要为广大电子工程师带来一款极具竞争力的产品 —— GC6153&#xff0c;它将成为 TMI8152 的完美替代之选。 一、产品背景 随着科技的飞速发展&#xff0c;电子设备…

Openstack9--安装etcd分布式键-值对存储系统

只需在控制节点安装 yum -y install etcd 编辑配置文件 配图画线处需要更改&#xff0c;如果改行被#注释请删掉# 以取消注释 vi /etc/etcd/etcd.conf 修改的 ETCD_LISTEN_PEER_URLS"http://192.168.10.10:2380" ETCD_LISTEN_CLIENT_URLS"http://192.168.1…

Go语言开发基于SQLite数据库实现用户表增删改查项目搭建(一)

背景 前几天我们不是写了个关于go语言解决rtsp协议只播放部分的问题(业务问题)这个么 里面用到了mysql&#xff0c;但不够轻量级&#xff0c;如果有的项目地需要的话&#xff0c;我们还需要部署mysql 其实这个项目就使用了一个表&#xff0c;没必要搞mysql&#xff0c;那有没有…

论文阅读-Event-based Visible and Infrared Fusion via Multi-task Collaboration

一、前言 可见光图像与红外图像融合&#xff08;VIF&#xff09;通过结合热红外图像与可见光图像的丰富纹理&#xff0c;提供了一个全面可靠的场景描述。然而&#xff0c;传统的VIF系统可能在极端光照和高动态运动场景中捕获过曝或欠曝的图像&#xff0c;进而导致融合结果下降…