Alarmgong, Alarmlicht und Hoftor Steuerung

This commit is contained in:
Patrick Niebeling
2020-11-28 13:07:21 +01:00
parent 1193e1a93c
commit f2a79a737b
9 changed files with 171 additions and 18 deletions

View File

@ -1,2 +1,2 @@
String REMCAM001Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.31/control/control?read&section=recording&recording_activ{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}:60000:REGEX(recording_activ=(.*))] >[enable:GET:http://10.112.30.31/control/control?set&section=recording&recording_activ=enable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}] >[disable:GET:http://10.112.30.31/control/control?set&section=recording&recording_activ=disable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}]" } Switch REMCAM001Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.31/control/control?read&section=recording&recording_activ{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}:60000:REGEX(recording_activ=(.*))] >[ON:GET:http://10.112.30.31/control/control?set&section=recording&recording_activ=enable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}] >[OFF:GET:http://10.112.30.31/control/control?set&section=recording&recording_activ=disable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}]" }
String REMCAM002Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.32/control/control?read&section=recording&recording_activ{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}:60000:REGEX(recording_activ=(.*))] >[enable:GET:http://10.112.30.32/control/control?set&section=recording&recording_activ=enable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}] >[disable:GET:http://10.112.30.32/control/control?set&section=recording&recording_activ=disable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}]" } Switch REMCAM002Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.32/control/control?read&section=recording&recording_activ{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}:60000:REGEX(recording_activ=(.*))] >[ON:GET:http://10.112.30.32/control/control?set&section=recording&recording_activ=enable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}] >[OFF:GET:http://10.112.30.32/control/control?set&section=recording&recording_activ=disable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}]" }

13
rules/Cron.rules Normal file
View File

@ -0,0 +1,13 @@
rule "Funktionsüberprüfung exception ON"
when
Time cron "0 55 12 ? * SAT#1"
then
FunctioncheckSwitch.sendCommand(ON)
end
rule "Funktionsüberprüfung exception OFF"
when
Time cron "0 5 13 ? * SAT#1"
then
FunctioncheckSwitch.sendCommand(OFF)
end

View File

@ -8,7 +8,7 @@ then
sendPushoverMessage(pushoverBuilder("Abfrage Erfolgt").withSound("siren").withUser("u8s32g4yym8xbk7yqn66cokjys13mf")) sendPushoverMessage(pushoverBuilder("Abfrage Erfolgt").withSound("siren").withUser("u8s32g4yym8xbk7yqn66cokjys13mf"))
var String jsonString = sendHttpGetRequest("https://fms.ffhstm.de/dienste_lesen_json.php") var String jsonString = sendHttpGetRequest("https://fms.ffhstm.de/dienste_lesen_json.php")
postUpdate(FFDienstZVD,transform("JSONPATH", "$.DIENSTE.C", jsonString)) postUpdate(FFDienstZVD,transform("JSONPATH", "$.DIENSTE.C", jsonString))
postUpdate(FFDienstIUK2,transform("JSONPATH", "$.DIENSTE.D", jsonString)) postUpdate(FFDienstIUK2,transform("JSONPATH", "$.DIENSTE.D1", jsonString))
postUpdate(FFDienstIUK3,transform("JSONPATH", "$.DIENSTE.E", jsonString)) postUpdate(FFDienstIUK3,transform("JSONPATH", "$.DIENSTE.E", jsonString))
var String IUKN = transform("JSONPATH", "$.DIENSTE.F", jsonString) var String IUKN = transform("JSONPATH", "$.DIENSTE.F", jsonString)
if (!IUKN.contains("DIENSTE")) { if (!IUKN.contains("DIENSTE")) {

View File

@ -34,7 +34,7 @@ then
postUpdate(FFAlarmMeldender,transform("JSONPATH", "$.Meldender", FFAlarmJSON.state.toString)) postUpdate(FFAlarmMeldender,transform("JSONPATH", "$.Meldender", FFAlarmJSON.state.toString))
logInfo("FFAlarmJSON","Vor FFAlarmEinsatzmittel") logInfo("FFAlarmJSON","Vor FFAlarmEinsatzmittel")
postUpdate(FFAlarmEinsatzmittel,transform("JSONPATH","$.Einsatzmittel",FFAlarmJSON.state.toString)) postUpdate(FFAlarmEinsatzmittel,transform("JSONPATH","$.Einsatzmittel",FFAlarmJSON.state.toString))
logInfo("FFAlarmJSON","Vor ") logInfo("FFAlarmJSON","Vor Alarmtrigger")
postUpdate(FFAlarmTrigger,transform("JSONPATH","$.AlarmTrigger",FFAlarmJSON.state.toString)) postUpdate(FFAlarmTrigger,transform("JSONPATH","$.AlarmTrigger",FFAlarmJSON.state.toString))
end end
@ -42,16 +42,20 @@ rule "FFR Alarm Logik"
when when
Item FFAlarmTrigger changed to ON Item FFAlarmTrigger changed to ON
then then
if (FFRAlarmTimer === null) { if (FFAlarmTimer === null) {
postUpdate(FFAlarmView,"ON") postUpdate(FFAlarmView,"ON")
postUpdate(FHZPush,"ON") postUpdate(FHZPush,"ON")
postUpdate(REMCAM001Record,"ON") REMWEBIO001_Ausgang5.sendCommand(ON)
postUpdate(REMCAM002Record,"ON") REMWEBIO001_Ausgang6.sendCommand(ON)
// postUpdate(REMCAM001Record,"ON")
// postUpdate(REMCAM002Record,"ON")
sendHttpGetRequest("http://admin:rt8qff8ppkma82bzxq2vcy3m3@10.112.30.31/control/rcontrol?action=sound&soundfile=q96_feuer2&speakerlevel=30")
sendHttpGetRequest("http://admin:pdgqa62v4f4bd9trmvp7z7t88@10.112.30.32/control/rcontrol?action=sound&soundfile=q96_feuer2&speakerlevel=30")
FFAlarmTimer = createTimer(now.plusMinutes(60)) [| FFAlarmTimer = createTimer(now.plusMinutes(60)) [|
postUpdate(FFAlarmTrigger,"OFF") postUpdate(FFAlarmTrigger,"OFF")
postUpdate(FHZPush,"OFF") postUpdate(FHZPush,"OFF")
postUpdate(REMCAM001Record,"OFF") // postUpdate(REMCAM001Record,"OFF")
postUpdate(REMCAM002Record,"OFF") // postUpdate(REMCAM002Record,"OFF")
FFAlarmTimer.cancel() FFAlarmTimer.cancel()
FFAlarmTimer = null FFAlarmTimer = null
] ]
@ -64,41 +68,55 @@ when
then then
postUpdate(FHZPush,"OFF") postUpdate(FHZPush,"OFF")
postUpdate(FFAlarmView,"OFF") postUpdate(FFAlarmView,"OFF")
// postUpdate(REMCAM001Record,"OFF")
// postUpdate(REMCAM002Record,"OFF")
end end
rule "Alarmschleifen Auswertung" rule "Alarmschleifen Auswertung"
when when
Item FFAlarmSchleife received update Item FFAlarmSchleife received update
then then
// val telegramActionProd = getActions("telegramActionProd","telegram:telegramBot:11a46758")
// val telegramActionDEV = getActions("telegram","telegram:telegramBot:a0986dc8")
logInfo("Alarmschleife", "Alarmschleife wurde aktualisiert") logInfo("Alarmschleife", "Alarmschleife wurde aktualisiert")
switch(FFAlarmSchleife.state.toString) { switch(FFAlarmSchleife.state.toString) {
case "57459": { case "57459": {
logInfo("Alarmschleife", "Vollalarm Rembrücken und Heusenstamm") logInfo("Alarmschleife", "Vollalarm Rembrücken und Heusenstamm")
postUpdate(FFAlarmTrigger,"ON") postUpdate(FFAlarmTrigger,"ON")
sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken und Heusenstamm").withSound("siren").withPriority(1)) sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken und Heusenstamm").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6"))
// telegramActionProd.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken und Heusenstamm")
// telegramActionDEV.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken und Heusenstamm")
} }
case "57449": { case "57449": {
logInfo("Alarmschleife", "Einsatz für den ELW") logInfo("Alarmschleife", "Einsatz für den ELW")
postUpdate(FFAlarmTrigger,"ON") postUpdate(FFAlarmTrigger,"ON")
sendPushoverMessage(pushoverBuilder("Einsatz für den ELW").withSound("siren").withPriority(1)) sendPushoverMessage(pushoverBuilder("Einsatz für den ELW").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6"))
// telegramActionProd.sendTelegram("Alarmschleife hat ausgelöst: Einsatz für den ELW")
// telegramActionDEV.sendTelegram("Alarmschleife hat ausgelöst: Einsatz für den ELW")
} }
case "57455": { case "57455": {
logInfo("Alarmschleife", "Vollalarm Rembrücken") logInfo("Alarmschleife", "Vollalarm Rembrücken")
postUpdate(FFAlarmTrigger,"ON") postUpdate(FFAlarmTrigger,"ON")
sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken").withSound("siren").withPriority(1)) sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6"))
// telegramActionProd.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken")
// telegramActionDEV.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken")
}
case "57451": {
logInfo("Alarmschleife", "Vollalarm Heusenstamm")
sendPushoverMessage(pushoverBuilder("Vollalarm Heusenstamm").withSound("siren").withPriority(0).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6"))
} }
} }
end end
rule "Push Fahrzeugstatus" rule "Push Fahrzeugstatus"
when when
Member of gFHZ changed Member of gFHZ changed
then then
Thread::sleep(300) Thread::sleep(300)
if (!lockState.isLocked) { if (!lockState.isLocked) {
lockState.lock() lockState.lock()
try { try {
logInfo("Testing","gNetwork received update") logInfo("GroupTest","gFHZ received update")
val member = gFHZ.members.filter[d | d.lastUpdate("jdbc") !== null].sortBy[lastUpdate("jdbc")].last val member = gFHZ.members.filter[d | d.lastUpdate("jdbc") !== null].sortBy[lastUpdate("jdbc")].last
val name = member.label.toString val name = member.label.toString
if (FFAlarmTrigger.state == ON && member.state.toString == "3") { if (FFAlarmTrigger.state == ON && member.state.toString == "3") {
@ -119,6 +137,6 @@ if (!lockState.isLocked) {
lockState.unlock() lockState.unlock()
} }
} else { } else {
logInfo("Testing","Locked, update ignored") logInfo("Testing","Locked, update ignored")
} }
end end

92
rules/REMWEBIO001.rules Normal file
View File

@ -0,0 +1,92 @@
rule "Steuerung Tor 1"
when
Item REMWEBIO001_Ausgang0 changed to ON
then
Thread::sleep(1000)
REMWEBIO001_Ausgang0.sendCommand(OFF)
end
rule "MTF 1 (3-19-1) - Status 2"
when
Item FFStatus67641319 changed to 2
then
if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) {
REMWEBIO001_Ausgang0.sendCommand(ON)
}
end
rule "Steuerung Tor 2"
when
Item REMWEBIO001_Ausgang1 changed to ON
then
Thread::sleep(1000)
REMWEBIO001_Ausgang1.sendCommand(OFF)
end
rule "LF 8/6-1 (3-42-1) - Status 2"
when
Item FFStatus67641342 changed to 2
then
if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) {
REMWEBIO001_Ausgang1.sendCommand(ON)
}
end
rule "Steuerung Tor 3"
when
Item REMWEBIO002_Ausgang2 changed to ON
then
Thread::sleep(1000)
REMWEBIO001_Ausgang2.sendCommand(OFF)
end
rule "LF 8/6-2 (3-42-2) - Status 2"
when
Item FFStatus67641349 changed to 2
then
if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) {
REMWEBIO001_Ausgang2.sendCommand(ON)
}
end
rule "Steuerung Tor 4"
when
Item REMWEBIO001_Ausgang3 changed to ON
then
Thread::sleep(1000)
REMWEBIO001_Ausgang3.sendCommand(OFF)
end
rule "MTF 2 (3-19-2) - Status 2"
when
Item FFStatus67641317 changed to 2
then
if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) {
REMWEBIO001_Ausgang4.sendCommand(ON)
}
end
rule "Steuerung Tor 5"
when
Item REMWEBIO001_Ausgang4 changed to ON
then
Thread::sleep(1000)
REMWEBIO001_Ausgang4.sendCommand(OFF)
end
rule "RW1 (3-51-1) - Status 2"
when
Item FFStatus67641351 changed to 2
then
if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) {
REMWEBIO001_Ausgang5.sendCommand(ON)
}
end
rule "Steuerung Alarmlicht & Gong"
when
Item REMWEBIO001_Ausgang5 changed to ON
then
Thread::sleep(6000)
REMWEBIO001_Ausgang5.sendCommand(OFF)
end

11
rules/SystemStart.rules Normal file
View File

@ -0,0 +1,11 @@
var Timer StartupTimer = null
rule "Startup Message"
when
System started
then
logInfo("SystemStart.rules", "Create timer for Systemstartup & Restore")
StartupTimer = createTimer(now.plusSeconds(30), [|
StartupSwitch.postUpdate(ON)
])
end

View File

@ -80,6 +80,14 @@ sitemap default label="Feuerwehr Rembrücken" {
Text item=FFStatus67641272 label="GW-N (2-64-1) [MAP(status.map):%s]" icon="" valuecolor=["1"="#31CF31", "2"="#31CF31", "3"="#FF8E00", "4"="#840000", "6"="#000000"] Text item=FFStatus67641272 label="GW-N (2-64-1) [MAP(status.map):%s]" icon="" valuecolor=["1"="#31CF31", "2"="#31CF31", "3"="#FF8E00", "4"="#840000", "6"="#000000"]
} }
} }
Text label="Torsteuerung" icon=garagedoor {
Switch item=REMWEBIO001_Ausgang0 icon=garagedoor
Switch item=REMWEBIO001_Ausgang1 icon=garagedoor
Switch item=REMWEBIO001_Ausgang2 icon=garagedoor
Switch item=REMWEBIO001_Ausgang3 icon=garagedoor
Switch item=REMWEBIO001_Ausgang4 icon=garagedoor
}
Text label="Dienste" icon="kalender" { Text label="Dienste" icon="kalender" {
Text item=FFDienstZVD Text item=FFDienstZVD
Text item=FFDienstIUK2 Text item=FFDienstIUK2
@ -95,18 +103,20 @@ sitemap default label="Feuerwehr Rembrücken" {
Frame label="Anzeige" { Frame label="Anzeige" {
Switch item=CamSelection label="Auswahl" mappings=[0="Vorne", 1="Hinten"] Switch item=CamSelection label="Auswahl" mappings=[0="Vorne", 1="Hinten"]
Video url="http://admin:rt8qff8ppkma82bzxq2vcy3m3@10.112.30.31/record/current.jpg" encoding="mjpeg" visibility=[CamSelection==0, CamSelection=="Uninitialized"] Video url="http://admin:rt8qff8ppkma82bzxq2vcy3m3@10.112.30.31/record/current.jpg" encoding="mjpeg" visibility=[CamSelection==0, CamSelection=="Uninitialized"]
Switch item=REMCAM001Record label="Aufzeichung" mappings=[enable="Aktiv", disable="Inaktiv"] visibility=[CamSelection==0, CamSelection=="Uninitialized"] Switch item=REMCAM001Record label="Aufzeichung" mappings=[ON="Aktiv", OFF="Inaktiv"] visibility=[CamSelection==0, CamSelection=="Uninitialized"]
Video url="http://admin:pdgqa62v4f4bd9trmvp7z7t88@10.112.30.32/record/current.jpg" encoding="mjpeg" visibility=[CamSelection==1] Video url="http://admin:pdgqa62v4f4bd9trmvp7z7t88@10.112.30.32/record/current.jpg" encoding="mjpeg" visibility=[CamSelection==1]
Switch item=REMCAM002Record label="Aufzeichung" mappings=[enable="Aktiv", disable="Inaktiv"] visibility=[CamSelection==1] Switch item=REMCAM002Record label="Aufzeichung" mappings=[ON="Aktiv", OFF="Inaktiv"] visibility=[CamSelection==1]
} }
Frame label="Sound" { Frame label="Sound" {
Switch item=CamSoundLocSelection label="Auswahl" mappings=[0="Vorne", 1="Hinten", 2="Beide"] Switch item=CamSoundLocSelection label="Auswahl" mappings=[0="Vorne", 1="Hinten", 2="Beide"]
Selection item=CamSoundTone label="Ton" mappings=["Alarm"="Alarm", "AnsKeyNoFunction"="AnsKeyNoFunction", "AnsMsgBell"="AnsMsgBell", "AnsMsgKeypad"="AnsMsgKeypad", "AnsMsgNoAnswer"="AnsMsgNoAnswer", "Beep"="Beep", "Busy"="Busy", "Cuckooclock"="Cuckooclock", "Default"="Default", "DoorBell"="DoorBell", "Phonering"="Phonering", "Standard"="Standard"] Selection item=CamSoundTone label="Ton" mappings=["Alarm"="Alarm", "AnsKeyNoFunction"="AnsKeyNoFunction", "AnsMsgBell"="AnsMsgBell", "AnsMsgKeypad"="AnsMsgKeypad", "AnsMsgNoAnswer"="AnsMsgNoAnswer", "Beep"="Beep", "Busy"="Busy", "Cuckooclock"="Cuckooclock", "Default"="Default", "DoorBell"="DoorBell", "Phonering"="Phonering", "Standard"="Standard", "q96_feuer2"="Q96"]
Setpoint item=CamSoundVolume label="Lautstärke" minValue=0 maxValue=30 step=1 Setpoint item=CamSoundVolume label="Lautstärke" minValue=0 maxValue=30 step=1
Slider item=CamSoundVolume label="Lautstärke" switchSupport minValue=0 maxValue=30 step=1
Switch item=CamPlaySound label="Auswahl" mappings=[ON="Abspielen"] Switch item=CamPlaySound label="Auswahl" mappings=[ON="Abspielen"]
} }
} }
Switch item=REMWEBIO001_Ausgang5
} }
Frame label="Wetter" { Frame label="Wetter" {
Text label="Blitzkarte" icon="lightning" { Text label="Blitzkarte" icon="lightning" {

2
transform/presence.map Normal file
View File

@ -0,0 +1,2 @@
OPEN=zu Hause
CLOSED=Unterwegs

7
transform/status_sbi.map Normal file
View File

@ -0,0 +1,7 @@
1=Einsatzbereit über Funk
2=Einsatzbereit auf Wache
3=Auf Anfahrt zur E-Stelle
4=An E-Stelle eingetroffen
5=Sprechwunsch
6=nicht einsatzbereit
NULL=Unbekannt