ESP32配合米家智能插座实现WOL网络唤醒

一、实现功能

通过米家APP或小爱同学即可唤醒电脑,不改电脑接线

二、物料准备

1.ESP32开发板

2.充电头+数据线(用于给ESP32供电)

3.米家智能插座(在米家APP里添加好插座,可将设备名称修改为“电脑”,方便用小爱同学语音控制)

三、下载ESP32代码

import socket
import struct
import network

# ESP32连接的WIFI信息
SSID = "你的2.4G的WIFI名称(与要唤醒电脑属于同一局域网)"
PASSWORD = "你的WIFI密码"

# 改成要唤醒电脑的 MAC 地址(大写,冒号分隔)
TARGET_MAC = "6F:5F:4F:3F:1F:1F"

# 广播地址和端口(改为你的路由器局域网的IP网段,最后一个保持为255,端口保持为9)
BROADCAST_IP = "192.168.31.255"
PORT = 9

def mac_to_bytes(mac):
    """
    将 MAC 地址转换为字节格式
    """
    return bytes.fromhex(mac.replace(":", ""))

def create_magic_packet(mac):
    """
    创建 WoL 魔术包
    """
    mac_bytes = mac_to_bytes(mac)
    return b"\xFF" * 6 + mac_bytes * 16

def send_wake_on_lan(mac):
    """
    通过 UDP 广播发送魔术包
    """
    magic_packet = create_magic_packet(mac)
    
    # 初始化网络(确保 ESP32 已连接到 WiFi)
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(SSID, PASSWORD)
    while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())
    if not wlan.isconnected():
        print("WiFi 未连接")
        return

    # 创建 UDP 套接字
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    try:
        sock.sendto(magic_packet, (BROADCAST_IP, PORT))
        print(f"魔术包已发送到 {BROADCAST_IP}:{PORT}")
    finally:
        sock.close()

#主函数
if __name__ == "__main__":
    send_wake_on_lan(TARGET_MAC)

四、电脑网口设置

设置插网线的网口启用网络唤醒(有些主板也可以在BIOS里改)

五、连接说明

ESP32开发板→数据线→充电头→插在米家智能插座上

六、创建自动化任务

在米家APP上创建一个智能插座的自动化任务用于打开电脑后自动关闭插座。

当以下情况发生:插座状态为开

且满足全部状态:插座状态为开

将设备调整到:延时30秒后、关闭插座

七、测试

1、在米家APP上打开智能插座,ESP32上电自动执行一次连接WiFi+广播发送唤醒魔术包过程,此时电脑收到唤醒包则会自动开机,30秒后插座自动关闭。

2、用小爱同学语言控制:“小爱同学,打开电脑”,效果同上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此花亭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值