node-red-contrib-cctvql
v1.0.4
Published
Node-RED nodes for querying and controlling CCTV systems via cctvQL — natural language queries, live events, and PTZ control across Frigate, Hikvision, Synology, and more.
Maintainers
Readme
node-red-contrib-cctvql
Node-RED nodes for cctvQL — a natural-language query layer for CCTV systems.
Ask questions like "Were there any people at the front door last night?" directly inside Node-RED flows, fetch live events, and send PTZ commands — across Frigate, Hikvision, Synology, Dahua, Milestone, ONVIF, and more.
Installation
npm install node-red-contrib-cctvqlOr in Node-RED: Menu → Manage Palette → Install → search cctvql
Prerequisites
A running cctvQL server:
docker run -p 8000:8000 \
-e CCTVQL_ADAPTER=frigate \
-e CCTVQL_FRIGATE_HOST=http://192.168.1.100:5000 \
ghcr.io/arunrajiah/cctvql:latestNodes
cctvQL Query
Ask cctvQL a natural language question. The answer arrives on msg.answer ready for a notification, template, or debug node.
Inputs: msg.query (string) — overrides the configured default query
Outputs: msg.payload (full response), msg.answer (plain text), msg.intent
cctvQL Events
Fetch recent detection events, optionally filtered by camera or label. Can poll on an interval or trigger on an incoming message.
Outputs: msg.payload — array of event objects
cctvQL PTZ
Send a pan/tilt/zoom command to a camera.
Inputs: msg.cameraId, msg.action, msg.speed, msg.presetId
Example Flow
[
{
"id": "inject1",
"type": "inject",
"name": "Ask cctvQL",
"props": [{ "p": "query", "v": "Any people at the front door last night?", "vt": "str" }],
"wires": [["query1"]]
},
{
"id": "query1",
"type": "cctvql-query",
"name": "NLP Query",
"server": "server1",
"sessionId": "node-red",
"wires": [["debug1"]]
},
{
"id": "debug1",
"type": "debug",
"name": "Answer",
"active": true,
"tosidebar": true,
"property": "answer"
},
{
"id": "server1",
"type": "cctvql-config",
"name": "cctvQL Server",
"host": "localhost",
"port": 8000
}
]License
MIT — arunrajiah/cctvql
