mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 19:06:34 +00:00
Three new Node-RED trigger nodes in BetterFrame Triggers palette: bf-trigger-motion (red) — fires on MotionAlarm, CellMotionDetector, VideoAnalytics/Motion, FieldDetector topics. Outputs msg.active (true/false) for motion start/stop. Camera ID filter optional. bf-trigger-anpr (blue) — fires on LicensePlateRecognition, Plate, ANPR, LPR, NumberPlate topics. Extracts msg.plate (string) and msg.confidence (number) from vendor-specific payload fields (Hikvision PlateNumber, Dahua plateNumber, etc.). Camera ID filter. bf-trigger-event (green) — generic catch-all. Topic substring filter + camera ID filter. Outputs msg.source + msg.data as key-value objects parsed from ONVIF SimpleItems. Use for line crossing, intrusion, digital input, tamper, audio detection, or any unknown topic. Server side: ONVIF events (source_type=onvif) now additionally forward to the fixed onvif.event route so all three nodes receive events without needing per-topic Node-RED route registration.
56 lines
2.2 KiB
HTML
56 lines
2.2 KiB
HTML
<script type="text/javascript">
|
|
RED.nodes.registerType("bf-trigger-event", {
|
|
category: "BetterFrame Triggers",
|
|
color: "#ccddaa",
|
|
defaults: {
|
|
name: { value: "" },
|
|
camera_id: { value: "" },
|
|
topic_filter: { value: "" },
|
|
},
|
|
inputs: 0,
|
|
outputs: 1,
|
|
icon: "betterframe.svg",
|
|
label: function () {
|
|
if (this.name) return this.name;
|
|
if (this.topic_filter) return "Event: " + this.topic_filter;
|
|
return "ONVIF Event";
|
|
},
|
|
paletteLabel: "ONVIF Event",
|
|
});
|
|
</script>
|
|
|
|
<script type="text/html" data-template-name="bf-trigger-event">
|
|
<div class="form-row">
|
|
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
<input type="text" id="node-input-name" placeholder="(optional)" />
|
|
</div>
|
|
<div class="form-row">
|
|
<label for="node-input-camera_id"><i class="fa fa-video-camera"></i> Camera ID</label>
|
|
<input type="number" id="node-input-camera_id" placeholder="(blank = all cameras)" />
|
|
</div>
|
|
<div class="form-row">
|
|
<label for="node-input-topic_filter"><i class="fa fa-filter"></i> Topic Filter</label>
|
|
<input type="text" id="node-input-topic_filter" placeholder="e.g. LineCrossing, DigitalInput" />
|
|
</div>
|
|
<div class="form-tips">
|
|
Generic ONVIF event trigger. Fires on any event topic from any camera.
|
|
Use <b>Topic Filter</b> for substring matching (e.g. <code>LineCrossing</code>,
|
|
<code>DigitalInput</code>, <code>Tamper</code>). Leave blank for all events.
|
|
Outputs <code>msg.source</code> (source SimpleItems) and <code>msg.data</code>
|
|
(data SimpleItems) as key-value objects.
|
|
</div>
|
|
</script>
|
|
|
|
<script type="text/html" data-help-name="bf-trigger-event">
|
|
<p>Generic catch-all for ONVIF events not covered by the specialized
|
|
Motion or ANPR trigger nodes.</p>
|
|
<p>Common topic filters:</p>
|
|
<ul>
|
|
<li><code>LineDetector/Crossed</code> — line crossing</li>
|
|
<li><code>FieldDetector/ObjectsInside</code> — intrusion zone</li>
|
|
<li><code>Device/Trigger/DigitalInput</code> — physical I/O</li>
|
|
<li><code>Tamper</code> — camera tamper detection</li>
|
|
<li><code>AudioDetection</code> — audio analytics</li>
|
|
</ul>
|
|
<p>Leave filter blank to receive ALL events from ALL cameras.</p>
|
|
</script>
|