一、开机自启脚本(启动控电程序.bat)
1. 新建文本文件,重命名为 启动控电程序.bat(后缀改成 .bat)
2. 粘贴以下内容(记得修改「你的用户名」):
@echo off
chcp 65001 >nul 2>&1
echo ======================================
echo 棋牌室分房控电程序 - 启动脚本
echo ======================================
echo 正在切换到程序目录...
cd /d C:\Users\你的用户名\Desktop\棋牌室控电
echo 正在启动控电程序...
python relay_control.py
echo 程序已退出,按任意键关闭窗口...
pause >nul
3.使用方法:
• 把这个 .bat 文件放到 棋牌室控电 文件夹里
• 双击即可启动程序(不用手动输命令)
• 要设置开机自启:按 Win+R → 输入 shell:startup → 把 .bat 复制到启动文件夹
二、手机网页控制端(room_control.html)
1.新建文本文件,重命名为 room_control.html
2. 粘贴以下内容(已适配你的 EMQX 配置):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>棋牌室分房控电系统</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: "微软雅黑", sans-serif;
background: #f5f5f5;
padding: 20px;
}
.header {
text-align: center;
margin-bottom: 30px;
color: #333;
}
.room-list {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 15px;
}
.room-card {
background: white;
border-radius: 10px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
text-align: center;
}
.room-name {
font-size: 20px;
font-weight: bold;
margin-bottom: 15px;
color: #2c3e50;
}
.btn-group {
display: flex;
gap: 10px;
}
button {
flex: 1;
padding: 12px 0;
border: none;
border-radius: 6px;
font-size: 18px;
color: white;
cursor: pointer;
transition: all 0.2s;
}
.btn-on { background: #27ae60; }
.btn-on:hover { background: #219653; }
.btn-off { background: #e74c3c; }
.btn-off:hover { background: #c0392b; }
.status {
margin-top: 10px;
font-size: 14px;
color: #666;
}
.connect-status {
text-align: center;
margin-bottom: 20px;
font-size: 16px;
padding: 10px;
border-radius: 6px;
}
.connected { background: #d5f5e3; color: #27ae60; }
.disconnected { background: #fadbd8; color: #e74c3c; }
</style>
</head>
<body>
<div class="header">
<h1>棋牌室分房控电系统</h1>
</div>
<div id="connectStatus" class="connect-status disconnected">
未连接到服务器
</div>
<div class="room-list">
<!-- 1号房 -->
<div class="room-card">
<div class="room-name">九局(1号房)</div>
<div class="btn-group">
<button class="btn-on" onclick="controlRoom('r1', '九局', 0, 'on')">打开电源</button>
<button class="btn-off" onclick="controlRoom('r1', '九局', 0, 'off')">关闭电源</button>
</div>
<div class="status" id="status_r1">未操作</div>
</div>
<!-- 2号房(可复制新增) -->
<div class="room-card">
<div class="room-name">二局(2号房)</div>
<div class="btn-group">
<button class="btn-on" onclick="controlRoom('r2', '二局', 1, 'on')">打开电源</button>
<button class="btn-off" onclick="controlRoom('r2', '二局', 1, 'off')">关闭电源</button>
</div>
<div class="status" id="status_r2">未操作</div>
</div>
<!-- 3号房(可复制新增) -->
<div class="room-card">
<div class="room-name">三局(3号房)</div>
<div class="btn-group">
<button class="btn-on" onclick="controlRoom('r3', '三局', 2, 'on')">打开电源</button>
<button class="btn-off" onclick="controlRoom('r3', '三局', 2, 'off')">关闭电源</button>
</div>
<div class="status" id="status_r3">未操作</div>
</div>
<!-- 4号房(可复制新增) -->
<div class="room-card">
<div class="room-name">四局(4号房)</div>
<div class="btn-group">
<button class="btn-on" onclick="controlRoom('r4', '四局', 3, 'on')">打开电源</button>
<button class="btn-off" onclick="controlRoom('r4', '四局', 3, 'off')">关闭电源</button>
</div>
<div class="status" id="status_r4">未操作</div>
</div>
</div>
<!-- 引入MQTT库 -->
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
// 配置(和你的程序一致)
const EMQX_WS_URL = 'ws://43.137.8.230:8083/mqtt';
const EMQX_USER = 'wmjk';
const EMQX_PWD = '88888888';
const MQTT_TOPIC = 'cashier/power/set/1';
// 初始化MQTT客户端
let client;
initMQTT();
// 连接MQTT服务器
function initMQTT() {
client = mqtt.connect(EMQX_WS_URL, {
username: EMQX_USER,
password: EMQX_PWD,
keepalive: 60,
reconnectPeriod: 1000
});
// 连接成功
client.on('connect', () => {
document.getElementById('connectStatus').className = 'connect-status connected';
document.getElementById('connectStatus').innerText = '已连接到服务器,可控制房间';
console.log('✅ MQTT连接成功');
});
// 连接失败
client.on('error', (err) => {
document.getElementById('connectStatus').className = 'connect-status disconnected';
document.getElementById('connectStatus').innerText = '连接失败:' + err.message;
console.error('❌ MQTT连接失败', err);
});
}
// 控制房间电源
function controlRoom(roomId, roomName, coil, power) {
// 构造JSON指令(和你的程序解析格式一致)
const cmd = {
roomId: roomId,
roomName: roomName,
power: power,
timestamp: new Date().toLocaleString(),
slaveId: 1,
coil: coil
};
// 发送指令
client.publish(MQTT_TOPIC, JSON.stringify(cmd), (err) => {
const statusEl = document.getElementById('status_' + roomId);
if (err) {
statusEl.innerText = '发送失败:' + err.message;
alert(`${roomName} → ${power === 'on' ? '打开' : '关闭'}电源失败!`);
} else {
statusEl.innerText = `${new Date().toLocaleTimeString()} → ${power === 'on' ? '打开' : '关闭'}成功`;
alert(`${roomName} → ${power === 'on' ? '打开' : '关闭'}电源成功!`);
}
});
}
</script>
</body>
</html>
3.使用方法:
• 把这个 .html 文件放到 棋牌室控电 文件夹里
• 用手机浏览器打开这个文件(可以通过微信 / QQ 传文件,或共享文件夹)
• 点击「打开 / 关闭电源」按钮,就能直接控制对应房间,不用输任何指令!
三、最终文件清单(全部放 棋牌室控电 文件夹)
| 文件名称 | 作用 |
✨ 最后说明
- 新增房间:复制网页里的
<div class="room-card">模块,修改房间名和coil地址即可 - 网页依赖:需要 EMQX 服务器开启
8083端口(WebSocket),如果没开,联系服务器管理员放行 - 脚本适配:
.bat里的你的用户名要改成新电脑的实际用户名(比如ASUS)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容