zy5uv-2aaaa-aaaad-qbniq-cai.icp0.io Open in urlscan Pro
2a0b:21c0:b002:2:5000:59ff:fead:c233  Public Scan

URL: https://zy5uv-2aaaa-aaaad-qbniq-cai.icp0.io/archives/59972/index.html
Submission: On November 25 via api from US — Scanned from FR

Form analysis 0 forms found in the DOM

Text Content

小晨曦
 * 首页
 * 标签
 * 分类
 * 归档
 * 关于
 * 友情链接
   * 零组官网
   * 520
   * 迪迪
   * ian
 * 

小晨曦
小晨曦的博客
 * 首页
 * 标签
 * 分类
 * 归档
 * 关于
 * 友情链接
   * 零组官网
   * 520
   * 迪迪
   * ian


小爱同学打开电脑

openwrt
技术分享
发布日期:   2022-02-14
更新日期:   2022-02-14
文章字数:   616
阅读时长:   2 分
阅读次数:   37

--------------------------------------------------------------------------------


想法

之前都是登陆路由器后用wake on lan唤醒电脑,最近突然想到用小爱语音控制电脑开机。网上大致有这几种方案

none

1.拆机TTL获取小爱root权限,在小爱上跑网络唤醒。
2.智能插座+BIOS设置来电自启。
3.ESP8266/ESP32的blinker库+网络唤醒。
4.虚拟设备(巴法云/电灯科技)+网络唤醒。
5.小米小爱开放平台(需要开发者账号),自写代码网络唤醒。
6.wifi继电器,加装到主板上。

我选择了巴法云这套方案,在openwrt上跑虚拟设备,接收到请求后用openwrt唤醒电脑。(需要电脑BIOS支持wake on lan)


实现

先去巴法云注册个账号

https://cloud.bemfa.com/







然后在MQTT设备云添加一个PC001并将昵称改为电脑,关于命名规则可以看这里。

在openwrt安装相关环境

bash

opkg update
opkg install etherwake python3 python3-paho-mqtt

分别为网络唤醒工具,python3和mqtt依赖。

连接代码参考https://www.cnblogs.com/bemfa/p/15435616.html

python

import paho.mqtt.client as mqtt
import os

HOST = "bemfa.com"
PORT = 9501
client_id = "xxxxxxx"
cmd1='/usr/bin/etherwake -D -i "br-lan" "xx:xx:xx:xx:xx:xx"'
cmd2='/usr/bin/curl -s "https://api.bemfa.com/api/device/v1/data/3/push/get/?uid=%s&topic=PC001&msg=off" -w "\n"'%client_id
#连接并订阅
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("PC001")         # 订阅消息

#消息接收
def on_message(client, userdata, msg):
    print("主题:"+msg.topic+" 消息:"+str(msg.payload.decode('utf-8')))
    sw = str(msg.payload.decode('utf-8'))
    if sw == "on":
        os.system(cmd1)
        os.system(cmd2)

#订阅成功
def on_subscribe(client, userdata, mid, granted_qos):
    print("On Subscribed: qos = %d" % granted_qos)

# 失去连接
def on_disconnect(client, userdata, rc):
    if rc != 0:
        print("Unexpected disconnection %s" % rc)


client = mqtt.Client(client_id)
client.username_pw_set("userName", "passwd")
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.on_disconnect = on_disconnect
client.connect(HOST, PORT, 60)
client.loop_forever()

将xxxxxxx修改为巴法云私钥,xx:xx:xx:xx:xx:xx修改为电脑MAC,上传到openwrt上运行。

运行后会显示订阅者在线,之后在巴法云控制台发送on,查看是否成功执行网络唤醒







执行结果:







然后在米家绑定巴法云设备。

米家app–>我的–>其他平台设备–>点击添加–>找到”巴法”,输入巴法云账号绑定,绑定后即可使用小爱进行控制







测试无误,再设置为启动脚本,即可做到路由器开机自动运行虚拟设备。

bash

/usr/bin/python3 -u /root/mi.py >/root/mi.log 2>&1 &







--------------------------------------------------------------------------------

openwrt

微信扫一扫:分享



微信扫一扫即可分享!

为正常使用来必力评论功能请激活JavaScript。

 本篇
小爱同学打开电脑
2022-02-14 技术分享
openwrt
下一篇 
新版天擎绕过秘密卸载/退出
2022-02-14 技术分享
Windows
  目录
 1. 想法
 2. 实现


Copyright © 2019-2022 2019 小晨曦 | Powered by Hexo | Theme Matery
  站点总字数: 7.2k  |  总访问量:  39  |  总访问人数:  39




  搜索








看板娘
欢迎阅读「小爱同学打开电脑 | 小晨曦」