三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

打造智能安防系统:Neolink+MQTT实现灯光与警笛联动控制

打造智能安防系统:Neolink+MQTT实现灯光与警笛联动控制

打造智能安防系统:Neolink+MQTT实现灯光与警笛联动控制

【免费下载链接】neolinkAn RTSP bridge to Reolink IP cameras项目地址: https://gitcode.com/gh_mirrors/neo/neolink

Neolink作为一款RTSP桥接工具,能将Reolink IP摄像头接入标准流媒体系统,而通过MQTT协议可实现设备间的智能联动。本文将详细介绍如何通过Neolink与MQTT构建自动化安防系统,实现运动检测触发灯光和警笛的智能控制。

核心功能与工作原理

Neolink通过RTSP协议获取摄像头视频流的同时,提供了丰富的设备控制接口。其MQTT模块(src/mqtt/mod.rs)支持将摄像头状态(如运动检测、灯光状态)发布到MQTT主题,并接收控制指令实现远程操作。

系统工作流程:

  1. 摄像头检测到运动时,通过Neolink发布消息到neolink/{摄像头名}/status/motion主题
  2. MQTT客户端订阅该主题并触发联动规则
  3. 自动发送指令到neolink/{摄像头名}/control/floodlight/control/siren主题控制设备

准备工作与环境配置

硬件要求

  • Reolink IP摄像头(支持灯光和警笛功能,如Floodlight系列)
  • 运行Neolink的服务器(推荐树莓派或Linux服务器)
  • MQTT broker(如Mosquitto)

软件安装

  1. 克隆Neolink仓库:
git clone https://gitcode.com/gh_mirrors/neo/neolink cd neolink
  1. 编译项目(需Rust环境):
cargo build --release
  1. 安装并启动MQTT broker:
sudo apt install mosquitto sudo systemctl start mosquitto

MQTT配置与启用

基础配置

编辑配置文件sample_config.toml,添加MQTT相关设置:

[mqtt] broker_addr = "127.0.0.1" # MQTT服务器地址 port = 1883 # MQTT端口 credentials = ["mqtt_user", "mqtt_password"] # 认证信息(可选) [cameras.my_camera] enable_motion = true # 启用运动检测 enable_floodlight = true # 启用灯光控制

启用Home Assistant发现

若使用Home Assistant,可开启MQTT自动发现功能:

[mqtt] discovery.topic = "homeassistant" # 发现主题 discovery.features = ["floodlight", "motion", "siren"] # 启用的功能

启动Neolink的MQTT模式:

./target/release/neolink mqtt --config=sample_config.toml

实现灯光与警笛联动

手动控制测试

通过MQTT客户端发送指令测试设备控制:

  1. 开启灯光:
mosquitto_pub -t "neolink/my_camera/control/floodlight" -m "on"
  1. 关闭灯光:
mosquitto_pub -t "neolink/my_camera/control/floodlight" -m "off"
  1. 触发警笛:
mosquitto_pub -t "neolink/my_camera/control/siren" -m "on"

自动化联动脚本

创建Python脚本实现运动检测触发灯光和警笛:

import paho.mqtt.client as mqtt import time def on_connect(client, userdata, flags, rc): client.subscribe("neolink/my_camera/status/motion") def on_message(client, userdata, msg): if msg.payload.decode() == "on": # 运动检测到,开启灯光并触发警笛 client.publish("neolink/my_camera/control/floodlight", "on") client.publish("neolink/my_camera/control/siren", "on") # 5秒后关闭警笛 time.sleep(5) client.publish("neolink/my_camera/control/siren", "off") client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("localhost", 1883, 60) client.loop_forever()

Home Assistant自动化配置

在Home Assistant中创建自动化规则:

alias: 运动检测触发安防 trigger: platform: mqtt topic: neolink/my_camera/status/motion payload: 'on' action: - service: mqtt.publish data: topic: neolink/my_camera/control/floodlight payload: 'on' - service: mqtt.publish data: topic: neolink/my_camera/control/siren payload: 'on' - delay: '00:00:05' - service: mqtt.publish data: topic: neolink/my_camera/control/siren payload: 'off'

高级功能与优化

调整灵敏度与延迟

修改摄像头配置调整运动检测灵敏度:

[cameras.my_camera] motion_timeout = 2.1 # 运动停止后等待2.1秒才触发后续动作

多设备联动

通过MQTT主题设计实现多摄像头协同工作:

  • 主摄像头检测到运动时,开启所有摄像头的灯光
  • 按区域优先级触发不同级别的警报

日志与调试

查看Neolink日志排查问题:

RUST_LOG=debug ./target/release/neolink mqtt --config=sample_config.toml

监控MQTT消息流:

mosquitto_sub -v -t "neolink/#"

常见问题解决

  1. MQTT连接失败:检查broker地址和端口,确保防火墙允许连接
  2. 运动检测不触发:确认摄像头支持运动检测,配置中启用enable_motion = true
  3. 灯光无响应:验证摄像头型号是否支持灯光控制,检查sample_config.toml中enable_floodlight设置

通过Neolink与MQTT的结合,我们可以构建灵活强大的智能安防系统,实现设备间的无缝联动。无论是家庭安防还是小型商业监控,这种方案都能提供可靠的自动化控制能力。更多高级功能可参考官方文档docs/和源代码src/mqtt/进行扩展。

【免费下载链接】neolinkAn RTSP bridge to Reolink IP cameras项目地址: https://gitcode.com/gh_mirrors/neo/neolink

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表