关注

Python远程充电桩一键断电(演示版)

 

注意:

实际部署时需替换为充电桩的硬件API。

 

---

 

模拟代码(仅供参考)

 

```python

from flask import Flask, request, jsonify

import time

import threading

 

app = Flask(__name__)

 

# 模拟充电桩状态数据库

charging_piles = {

    "CP001": {"status": "charging", "power": 7.2, "session_id": "S123"},

    "CP002": {"status": "idle", "power": 0, "session_id": None}

}

 

# 模拟硬件通信(实际需替换为Modbus/OCPP协议)

def hardware_power_off(pile_id):

    """模拟向充电桩发送TCP断电指令"""

    print(f"[硬件] 向 {pile_id} 发送断电信号...")

    time.sleep(1) # 模拟网络延迟

    

    # 模拟硬件成功响应

    if pile_id in charging_piles:

        return {"code": 0, "msg": "断路器已跳闸"}

    return {"code": -1, "msg": "设备离线"}

 

# 一键断电核心接口

@app.route('/api/power_off/<pile_id>', methods=['POST'])

def remote_power_off(pile_id):

    # 1. 身份验证(生产环境需JWT/OAuth2)

    token = request.headers.get('Authorization')

    if token != "Bearer admin_token":

        return jsonify({"code": 401, "msg": "未授权"}), 401

 

    # 2. 检查桩是否存在

    pile = charging_piles.get(pile_id)

    if not pile:

        return jsonify({"code": 404, "msg": "充电桩不存在"}), 404

 

    # 3. 安全检查(防止误操作)

    if pile["status"] == "idle":

        return jsonify({"code": 400, "msg": "设备已空闲,无需断电"}), 400

 

    # 4. 调用硬件接口断电

    result = hardware_power_off(pile_id)

    

    if result["code"] == 0:

        # 5. 更新数据库状态

        pile["status"] = "offline"

        pile["power"] = 0

        # 记录操作日志(生产需写入数据库)

        print(f"[日志] {time.ctime()} 管理员远程断开了 {pile_id}")

        return jsonify({"code": 200, "msg": "断电成功", "data": pile})

    else:

        return jsonify({"code": 500, "msg": result["msg"]}), 500

 

# 模拟前端调用(演示用)

if __name__ == '__main__':

    print("模拟服务器启动,请用POST请求测试:")

    print("curl -X POST -H 'Authorization: Bearer admin_token' http://127.0.0.1:5000/api/power_off/CP001")

    app.run(debug=True, host='0.0.0.0', port=5000)

```

 

---

 

真正项目中 4 个关键点

 

模块 关键要求

1物理安全 必须使用工业级继电器,支持急停硬件回路,软件故障时硬件仍可切断。

2通信协议 实际使用 OCPP 1.6/2.0(国际标准)或 Modbus TCP,需实现心跳保活和重连机制。

3权限控制 必须绑定操作员ID + 双因素认证,所有操作留痕(不可篡改日志)。

4异常处理 需处理断电失败回滚、断网重试、状态不一致时的人工确认流程。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2602_95242675/article/details/162794928

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--