找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1233

积分

0

好友

165

主题
发表于 17 小时前 | 查看: 2| 回复: 0

市场上许多基于SIP的告警解决方案价格偏高,且难以支持定制化需求。通过开源思路,我们可以为有特定需求的用户提供非常灵活的替代方案。SIP → GPIO Ringer (Raspberry Pi) 正是这样一个将SIP呼叫状态转换为物理警报的实用项目。

SIP呼叫控制LED信标系统架构流程图

SIP呼叫组振铃器 (树莓派) 概述

本项目实现了一个由SIP(基于 baresip协议栈)呼叫活动驱动的物理警报振铃器。其核心是让树莓派注册为一个SIP端点,加入特定的呼叫组,并实时检测呼入呼叫状态。当呼叫组开始响铃时,树莓派会驱动外部MOSFET开关模块上的GPIO触发输入,从而为高可见度的12V紧急LED信标供电。一旦呼叫结束或被取消,警报便会自动停止。

我们设计该系统为一个无头、可通过PoE供电的设备,非常适合办公室、车间等环境,在这些地方,传统的听觉振铃往往因环境嘈杂而失效。

架构摘要

整个系统的工作流程可以概括为:SIP 呼叫baresip (SIP 端点)sip_watch.sh (事件解析器)HTTP (localhost)Flask 服务 (GPIO 控制)MOSFET 触发器12V LED 信标

  • 触发源: SIP呼入呼叫状态。
  • 控制器: 树莓派 4 (推荐PoE供电)。
  • 开关: XY-MOS 串联 MOSFET 模块。
  • 负载: 12V 紧急LED信标。
  • 关键设计: 树莓派永不直接为LED供电,实现了电气隔离。软件中还设置了超时机制,可防止警报被无限期激活,提供故障保护。

硬件摘要

所需的核心硬件组件包括:

  • 树莓派 4 (仅使用以太网版即可)
  • PoE HAT (会占用GPIO引脚1–6)
  • XY-MOS MOSFET 触发模块
  • 12V 直流电源
  • 带5A保险丝的在线保险丝座
  • 12V 紧急LED (汽车点烟器样式)

电源模型(关键注意事项)
务必区分两套独立的电源系统:

  1. 树莓派电源: 仅通过PoE供电。
  2. LED电源: 由外部12V电源提供。

两套电源之间没有共享的正极轨,但必须在以下三点之间建立可靠的公共接地连接:

  • 树莓派的GND (物理引脚 14)
  • MOSFET模块的 VIN−
  • 12V 电源的负极

GPIO 使用定义

功能 BCM 编号 物理引脚
MOSFET 触发 18 12
接地 GND 14

软件组件

系统的控制核心是一个 Flask GPIO 服务 (app.py),其设计注重安全性与可靠性:

  • gunicorn 应用服务器下运行。
  • 从 Python 虚拟环境中执行,隔离依赖。
  • 服务仅绑定到本地回环地址 127.0.0.1:5005,不暴露给外部网络。
  • systemd 通过 ringer.service 单元文件进行管理,确保开机自启和进程守护。

服务提供的API端点

  • POST /ring/on, POST /ring/off
  • POST /ring/start, POST /ring/stop (功能同上,提供别名)
  • GET /health (用于健康检查)

项目开源地址

完整的代码、配置详情及更深入的搭建说明,可以在 GitHub 上找到该开源项目: https://github.com/union95bb2/voip-ringer 。如果你对这类将网络协议与硬件控制结合的开源实战项目感兴趣,欢迎到 云栈社区的开源实战板块 探索更多精彩内容。




上一篇:Next.js 实战:5周从零上线AI产品的全栈开发与技术栈复盘
下一篇:Rust替代C++实战:内存安全为何能带来19.3%的性能提升
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-14 18:38 , Processed in 0.271518 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表