BetterFrame/nodered/src/bf-trigger-camera-changed.html
Mitchell R 887db013ef fix: trigger nodes self-register + move to angie-blocked path
Trigger nodes now self-contained inputs (inputs:0):
- Each registers POST /api/internal/<topic> on RED.httpNode
- Angie returns 404 for any /api/* not whitelisted (kiosk/pair/admin)
  so external requests cannot trigger BF nodes
- Server bridge POSTs direct to nodered container (bypasses Angie)
- nodered-bridge.ts updated to use /api/internal/<topic>
- 6 trigger nodes converted: display-power, layout-changed,
  kiosk-changed, camera-changed, status, kiosk-camera-event
- Optional per-node filters (display_id, kiosk_id, camera_id)
- close handler removes only this node's route layer
2026-05-13 02:42:37 +02:00

43 lines
1.6 KiB
HTML

<script type="text/javascript">
RED.nodes.registerType("bf-trigger-camera-changed", {
category: "BetterFrame Triggers",
color: "#a6d4ff",
defaults: {
name: { value: "" },
camera_id: { value: "" },
},
inputs: 0,
outputs: 1,
icon: "betterframe.svg",
label: function () {
return this.name || "camera changed";
},
paletteLabel: "Camera Changed Trigger",
});
</script>
<script type="text/html" data-template-name="bf-trigger-camera-changed">
<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-tips">
Triggers when a camera is created, updated, or deleted in admin.
Listens on <code>POST /in/camera.changed</code> internally no upstream
<code>http in</code> node required.
Emits <code>msg.payload = {camera_id, event}</code>.
Leave Camera ID blank to receive events from all cameras.
</div>
</script>
<script type="text/html" data-help-name="bf-trigger-camera-changed">
<p>Fires when a camera entity is created, updated, or deleted in admin
(manual create, ONVIF import, edit, delete, enable/disable).</p>
<p>Listens on <code>POST /in/camera.changed</code> internally no upstream
<code>http in</code> node needed.</p>
<p>Optional <b>Camera ID</b> filter limits this node to a single camera.</p>
</script>