Verwendung des INSTAR MQTT-Alarmservers zur Verfolgung bewegter Objekte
Q: Ist es möglich, Node-RED zu verwenden, damit meine Full-HD Pan&Tilt Kamera bewegten Objekten folgt?
A: Sie können den INSTAR MQTT Alarmserver verwenden, um Node-RED über erkannte Bewegungen zu benachrichtigen. Sie können damit beginnen, zwei Bereiche auszuwählen, die Sie zum Auslösen einer Schwenk- oder Neigebewegung Ihrer Kamera verwenden möchten:
Wir möchten nun Node-RED anweisen, unsere Kamera nach links zu bewegen, wenn der linke Bewegungserkennungsbereich (Bereich 1) ausgelöst wird, und nach rechts, wenn der rechte Erkennungsbereich (Bereich 4) ausgelöst wird.
Um sicherzustellen, dass unsere Kamera nicht durch Schatten oder Lichtreflexionen verwirrt wird und plötzlich zur Wand schaut, stellen wir zunächst die Preset-Position 1 in einer sinnvollen Mittelposition ein:
Und sagen Sie Ihrer Kamera, dass sie nach einer angemessenen Zeit auf diese Position (Parkposition) zurückkehren soll:
Node-RED benötigt nun ein Abonnement für das MQTT-Status-Topic status/alarm/triggered
. Wie wir zuvor gezeigt haben, erhält dieses Topic ein Update mit dem Wert 1-4, wenn die Bereiche 1 bis 4 ausgelöst werden.
Wenn wir eine Meldung mit dem Wert {"val": "1"}
erhalten, wissen wir jetzt, dass der linke Bereich ausgelöst wurde und wir uns nach links bewegen müssen. Auf dieselbe Weise bedeutet eine Nutzlast von {"val": "4"}
, dass wir uns einen Schritt nach rechts bewegen müssen. Der komplette Node-RED Flow sieht so aus (siehe JSON-Export am Ende dieses Artikels):
Und hier ist der Flow in Aktion:
[
{
"id": "b3f2131d.c323e",
"type": "mqtt in",
"z": "c025b147.f6afb",
"name": "Alarm Server",
"topic": "instar/local/status/alarm/triggered",
"qos": "1",
"datatype": "auto",
"broker": "996228fe.ababc8",
"x": 90,
"y": 620,
"wires": [
[
"7e41db00.f5ed94"
]
]
},
{
"id": "7e41db00.f5ed94",
"type": "json",
"z": "c025b147.f6afb",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 230,
"y": 620,
"wires": [
[
"da03fe2f.869de"
]
]
},
{
"id": "da03fe2f.869de",
"type": "switch",
"z": "c025b147.f6afb",
"name": "",
"property": "payload.val",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "1",
"vt": "str"
},
{
"t": "eq",
"v": "4",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 347,
"y": 620,
"wires": [
[
"682bc199.6b418"
],
[
"ec0056bc.645fa8"
]
]
},
{
"id": "682bc199.6b418",
"type": "change",
"z": "c025b147.f6afb",
"name": "Area 1 => Move Left",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "{\"val\":\"left\"}",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 520,
"y": 600,
"wires": [
[
"5bbe46a4.047128"
]
]
},
{
"id": "ec0056bc.645fa8",
"type": "change",
"z": "c025b147.f6afb",
"name": "Area 4 => Move Right",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "{\"val\":\"right\"}",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 520,
"y": 640,
"wires": [
[
"5bbe46a4.047128"
]
]
},
{
"id": "5bbe46a4.047128",
"type": "mqtt out",
"z": "c025b147.f6afb",
"name": "features/ptz/movestep",
"topic": "instar/local/features/ptz/movestep",
"qos": "1",
"retain": "false",
"broker": "996228fe.ababc8",
"x": 740,
"y": 620,
"wires": []
},
{
"id": "996228fe.ababc8",
"type": "mqtt-broker",
"z": "",
"name": "INSTAR MQTT",
"broker": "192.168.2.117",
"port": "1883",
"clientid": "iored",
"usetls": false,
"compatmode": false,
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"willTopic": "",
"willQos": "0",
"willPayload": ""
}
]