Python通过巴法云实现远程控制电脑开关机/重启
前言
在物联网应用中,巴法云是一个非常友好的接入平台,支持将微信小程序、小爱同学等设备与自建硬件或软件桥接。本文将以一段 Python 代码为例,讲解如何订阅巴法云主题 ad002,并根据收到的 on/off 指令,远程执行 Windows/Linux 电脑的关机或重启操作。
第一步:环境准备
你需要安装 Python 环境(推荐 3.10+)以及 MQTT 客户端库:
pip install paho-mqtt
第二步:核心配置说明
在代码运行前,需要明确巴法云的三个关键参数(已根据您提供的私钥信息更新):
| | |
|---|
HOST | bemfa.com | |
PORT | 9501 | |
client_id | 052f7e01726440ba9cb95070a6225efe | |
topic | ad002 | |
第三步:优化后的完整代码
相较于原片段,此代码修正了变量名未定义 (s 应为 d)、未引入 os 模块以及私钥未正确填入的问题。
# -*- coding: utf-8 -*-"""巴法云 MQTT 远程控制电脑开关机示例设备主题: ad002功能: 收到 'on' 执行重启, 收到 'off' 执行关机"""import osimport paho.mqtt.client as mqtt# ========== 配置区域 ==========HOST ="bemfa.com"PORT =9501# 重要:请将这里替换为你巴法云控制台的“私钥”client_id ="xxxXxxx"TOPIC ="xx002"# 订阅的主题# ==============================# 连接成功回调defon_connect(client, userdata, flags, rc):print(f"✅ 连接成功,返回码: {rc}")# 订阅主题 client.subscribe(TOPIC)print(f"📡 正在监听主题: {TOPIC}")# 消息接收回调defon_message(client, userdata, msg):# 解码收到的指令 (例如 b'off' -> 'off') command =str(msg.payload.decode('utf-8')).strip().lower()print(f"🔔 收到主题 [{msg.topic}] 的消息: {command}")# 执行系统指令逻辑if command =='off':print("⚠️ 正在执行关机指令...")# Windows 系统关机 (延迟0秒) os.system("shutdown -s -t 0")# 如果是 Linux 系统,请使用: os.system("shutdown -h now")elif command =='on':print("🔄 正在执行重启指令...")# Windows 系统重启 (延迟0秒) os.system("shutdown -r -t 0")# 如果是 Linux 系统,请使用: os.system("reboot")else:print(f"⚠️ 未识别的指令: {command}")# 订阅成功回调defon_subscribe(client, userdata, mid, granted_qos):print(f"✅ 订阅成功,QoS等级: {granted_qos}")# 连接断开回调defon_disconnect(client, userdata, rc):if rc !=0:print(f"❌ 连接意外断开,错误码: {rc}")# 主程序入口if __name__ =='__main__': client = mqtt.Client(client_id)# 巴法云 MQTT 认证方式:# 用户名随意填写(不能为空),密码即为你的私钥 client.username_pw_set("bemfa", client_id) client.on_connect = on_connect client.on_message = on_message client.on_subscribe = on_subscribe client.on_disconnect = on_disconnecttry:print("🚀 正在连接巴法云服务器...") client.connect(HOST, PORT,60)# 开启网络循环,阻塞等待消息 client.loop_forever()except KeyboardInterrupt:print("🛑 程序手动退出")except Exception as e:print(f"❌ 发生错误: {e}")
运行与测试
- 将上述代码保存为
bemfa_shutdown.py。 - 在终端运行:
python bemfa_shutdown.py。 - 打开微信,搜索“巴法云”小程序,绑定账号后进入控制台。
- 在设备列表点击
ad002(灯设备),发送 on 或 off。 - 观察 Python 控制台输出,电脑应会按照指令执行重启或关机。
注册账号



002代表灯 可以开和关

注意事项与安全警告
- 管理员权限:部分 Windows 系统环境下,Python 调用
shutdown 可能需要以管理员身份运行 CMD 或 IDE,否则命令会静默失败。 - 取消关机:如果不小心触发了关机,可以在 CMD 中快速执行
shutdown -a 取消本次定时任务。 - 长期运行:如需作为后台服务运行,建议使用
nssm (Windows) 或 systemd (Linux) 守护该 Python 进程。如有任何连接问题,请优先检查防火墙是否放行了 9501 端口。