Ich habe inzwischen meine Kameras ohne Bewegungs-Möglichkeit in DS integriert mit Folgendem Skript:
// hier muss die richtige IP-Adresse mit user:pw der Kamera eingetragen werden
var baseurl = "!https://admin:instar@192.168.178.xxx"
var alarm_sig = signal()
// hier muss eine globale Variable mit dem Namen signal_<Testkam> definiert werden
glob signal_Testkam
signal_Testkam = alarm_sig
// Meldungen vom System (hier: Änderung des Ausgangswerts) behandeln
on (message()) as m {
// wenn die Meldung den Kanal mit Index 0 (=Standard-Ausgang) betrifft...
if (m.message=="channel" && m.index==0) {
// Kamera scharfschalten wenn Wert > 50, sonst nicht-scharf
try {
var res = geturl(baseurl + format('/param.cgi%s', instar_gen_arm_req(m.value>50)), 5)
if (!isvalid(find(res, '[Succeed]'))) {
throw(format("Unerwartete Kamera-Antwort: %s", res))
}
log("Kamera alarm geändert auf %d", m.value)
}
catch as e {
log(4, "Kamera-Befehl nicht ausgeführt: %s", e)
}
}
}
on (alarm_sig) as alarm {
try {
if (isvalid(alarm.active)) {
if (alarm.active>0) {
// Alarm in einem der Bereiche
var m = { 'message':'input', 'value':1 }
m.index = number(alarm.active)-1; // Alarm1..10 -> input0..9
message(m)
}
else {
// keine Alarme, alle ausschalten
message({ 'message':'input', 'value':0, 'index':0 })
message({ 'message':'input', 'value':0, 'index':1 })
message({ 'message':'input', 'value':0, 'index':2 })
message({ 'message':'input', 'value':0, 'index':3 })
message({ 'message':'input', 'value':0, 'index':4 })
message({ 'message':'input', 'value':0, 'index':5 })
message({ 'message':'input', 'value':0, 'index':6 })
message({ 'message':'input', 'value':0, 'index':7 })
message({ 'message':'input', 'value':0, 'index':8 })
message({ 'message':'input', 'value':0, 'index':9 })
}
}
}
catch {
log(4,"Problem beim Auswerten des alarm-Signals: %s", alarm)
}
}
return true // es ist ok, dass das Script hier endet
Was ich mich in diesem Zusammenhang frage: Wie wird denn ein getriggerter Alarm ("geschlossen") wieder auf "offen" gestellt? Wir haben ja - soweit ich das überblicke - keine Zeit o.ä. definiert in dem Skript. Oder wird das automatisch erledigt? Die Kamera sendet ja nicht nach einer gewissen Zeit automatisch "kein Alarm mehr" o.ä., sondern reine Trigger. Zumindest ist nichts Gegenteiliges in den Logs zu sehen.
Des Weiteren warte ich mit der Erstellung der beweglichen Kameras auf der Plan44 noch, da wir dazu in der INIT Message auch eine Bewegungsvariable brauchen. Und wie ich es verstanden habe, können INIT Messages nicht hinterher editiert werden. Ich stelle mir diese Funktion als eine Art "Rollladenklemme" vor.