Python + PyVISA + 多渠道告警(弹窗 + 声音 + 邮件 + 企业微信 / 钉钉 + 短信)
你可以实现:
EEPROM 写入失败 → 立即告警
EEPROM 写保护被异常关闭 → 立即告警
EEPROM 磨损超阈值 → 提前预警
所有告警自动记录、可追溯、可审计
全程不需要改动仪器,纯第三方软件实现。
一、告警触发条件(必须精准)
只要出现以下任意一种,立刻触发告警:
EEPROM 写入指令执行失败
写入后回读校验失败
仪器返回错误(写保护、CRC 错、超时)
EEPROM 磨损 ≥ 80%(寿命预警)
异常频繁写入(攻击 / 误操作)
二、完整可运行代码(复制即用)
1. 安装依赖
bash
运行
pip install pyvisa requests python-dotenv
2. 核心告警程序(eeprom_alarm.py)
python
运行
import pyvisa
import time
import datetime
import smtplib
from email.mime.text import MIMEText
import requests
# ==================== 配置 ====================
VISA_ADDR = "USB0::0x0957::0x1707::MY49001234::INSTR"
WARNING_RATE = 80 # 磨损80%预警
ALARM_RATE = 95 # 磨损95%告警
N_MAX_WRITE = 100000
# 邮件配置
MAIL_HOST = "smtp.163.com"
MAIL_USER = "你的邮箱"
MAIL_PASS = "你的授权码"
RECEIVER = ["收件人1@xx.com", "收件人2@xx.com"]
# 企业微信机器人(可选)
WECHAT_WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx"
# =============================================
rm = pyvisa.ResourceManager()
psu = rm.open_resource(VISA_ADDR)
psu.timeout = 5000
# ------------------------------
# 工具函数
# ------------------------------
def clear_errors():
psu.write("*CLS")
def get_error():
return psu.query("SYST:ERR?").strip()
def is_no_error(err):
return "+0." in err or "No error" in err
# ------------------------------
# 告警通道(多渠道同时通知)
# ------------------------------
def send_alarm(title, content):
print(f"n