diff --git a/icons/classic/fire-station.png b/icons/classic/fire-station.png new file mode 100644 index 0000000..65cb539 Binary files /dev/null and b/icons/classic/fire-station.png differ diff --git a/icons/classic/fire-truck.png b/icons/classic/fire-truck.png new file mode 100644 index 0000000..5d85b85 Binary files /dev/null and b/icons/classic/fire-truck.png differ diff --git a/icons/headphones.png b/icons/headphones.png new file mode 100644 index 0000000..f768d99 Binary files /dev/null and b/icons/headphones.png differ diff --git a/items/HTTP.items b/items/HTTP.items index 7d954d1..e69de29 100644 --- a/items/HTTP.items +++ b/items/HTTP.items @@ -1,2 +0,0 @@ -Switch REMCAM001Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.31/control/control?read§ion=recording&recording_activ{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}:60000:REGEX(recording_activ=(.*))] >[ON:GET:http://10.112.30.31/control/control?set§ion=recording&recording_activ=enable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}] >[OFF:GET:http://10.112.30.31/control/control?set§ion=recording&recording_activ=disable{Authorization=Basic YWRtaW46cnQ4cWZmOHBwa21hODJienhxMnZjeTNtMw==}]" } -Switch REMCAM002Record "Aufzeichnung Starten" (gHistory) { http="<[http://10.112.30.32/control/control?read§ion=recording&recording_activ{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}:60000:REGEX(recording_activ=(.*))] >[ON:GET:http://10.112.30.32/control/control?set§ion=recording&recording_activ=enable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}] >[OFF:GET:http://10.112.30.32/control/control?set§ion=recording&recording_activ=disable{Authorization=Basic YWRtaW46cGRncWE2MnY0ZjRiZDl0cm12cDd6N3Q4OA==}]" } \ No newline at end of file diff --git a/rules/Dienste.rules b/rules/Dienste.rules index 8dbee93..43ece05 100644 --- a/rules/Dienste.rules +++ b/rules/Dienste.rules @@ -5,7 +5,7 @@ when Time cron "0 0 7 ? * SAT,SUN" then logInfo("HTTPGET", "Abfrage Erfolgt") - sendPushoverMessage(pushoverBuilder("Abfrage Erfolgt").withSound("siren").withUser("u8s32g4yym8xbk7yqn66cokjys13mf")) + NotificationPatrickPushover.sendCommand("Abfrage Erfolgt") var String jsonString = sendHttpGetRequest("https://fms.ffhstm.de/dienste_lesen_json.php") postUpdate(FFDienstZVD,transform("JSONPATH", "$.DIENSTE.C", jsonString)) postUpdate(FFDienstIUK2,transform("JSONPATH", "$.DIENSTE.D1", jsonString)) diff --git a/rules/FFRAlarm.rules b/rules/FFRAlarm.rules index 515f78b..f44996a 100644 --- a/rules/FFRAlarm.rules +++ b/rules/FFRAlarm.rules @@ -47,15 +47,11 @@ then postUpdate(FHZPush,"ON") REMWEBIO001_Ausgang5.sendCommand(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)) [| postUpdate(FFAlarmTrigger,"OFF") postUpdate(FHZPush,"OFF") - // postUpdate(REMCAM001Record,"OFF") - // postUpdate(REMCAM002Record,"OFF") FFAlarmTimer.cancel() FFAlarmTimer = null ] @@ -68,8 +64,6 @@ when then postUpdate(FHZPush,"OFF") postUpdate(FFAlarmView,"OFF") - // postUpdate(REMCAM001Record,"OFF") - // postUpdate(REMCAM002Record,"OFF") end rule "Alarmschleifen Auswertung" @@ -83,27 +77,27 @@ then case "57459": { logInfo("Alarmschleife", "Vollalarm Rembrücken und Heusenstamm") postUpdate(FFAlarmTrigger,"ON") - sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken und Heusenstamm").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6")) + NotificationIPAD3Pushover.sendCommand("Vollalarm Rembrücken und Heusenstamm") // telegramActionProd.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken und Heusenstamm") // telegramActionDEV.sendTelegram("Alarmschleife hat ausgelöst: Vollalarm Rembrücken und Heusenstamm") } case "57449": { logInfo("Alarmschleife", "Einsatz für den ELW") postUpdate(FFAlarmTrigger,"ON") - sendPushoverMessage(pushoverBuilder("Einsatz für den ELW").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6")) + NotificationIPAD3Pushover.sendCommand("Einsatz für den ELW") // telegramActionProd.sendTelegram("Alarmschleife hat ausgelöst: Einsatz für den ELW") // telegramActionDEV.sendTelegram("Alarmschleife hat ausgelöst: Einsatz für den ELW") } case "57455": { logInfo("Alarmschleife", "Vollalarm Rembrücken") postUpdate(FFAlarmTrigger,"ON") - sendPushoverMessage(pushoverBuilder("Vollalarm Rembrücken").withSound("siren").withPriority(1).withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6")) + NotificationIPAD3Pushover.sendCommand("Vollalarm Rembrücken") // 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")) + NotificationIPAD3Pushover.sendCommand("Vollalarm Heusenstamm") } } end @@ -122,16 +116,16 @@ if (!lockState.isLocked) { if (FFAlarmTrigger.state == ON && member.state.toString == "3") { logInfo("GroupTest", "Member "+ name +" to " + member.state ) if (FHZPush.state == ON && member.state.toString == "3") { - sendPushoverMessage(pushoverBuilder(name + " ist aus zur E-Stelle").withSound("siren").withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6")) + NotificationIPAD3Pushover.sendCommand(name + " ist aus zur E-Stelle") } - sendPushoverMessage(pushoverBuilder(name + " ist aus zur E-Stelle").withSound("siren").withUser("u8s32g4yym8xbk7yqn66cokjys13mf")) + NotificationPatrickPushover.sendCommand(name + " ist aus zur E-Stelle") } if (FFAlarmTrigger.state == ON && member.state.toString == "4") { logInfo("GroupTest", "Member "+ name +" to " + member.state ) if (FHZPush.state == ON && member.state.toString == "4") { - sendPushoverMessage(pushoverBuilder(name + " an der E-Stelle angekommen").withSound("siren").withUser("upgb55kps8rx2xotn7dvdg3w2yjpt6")) + NotificationIPAD3Pushover.sendCommand(name + " an der E-Stelle angekommen") } - sendPushoverMessage(pushoverBuilder(name + " an der E-Stelle angekommen").withSound("siren").withUser("u8s32g4yym8xbk7yqn66cokjys13mf")) + NotificationPatrickPushover.sendCommand(name + " an der E-Stelle angekommen") } } finally { lockState.unlock() diff --git a/rules/REMWEBIO001.rules b/rules/REMWEBIO001.rules index 27967e3..a9c8a1b 100644 --- a/rules/REMWEBIO001.rules +++ b/rules/REMWEBIO001.rules @@ -8,9 +8,13 @@ end rule "MTF 1 (3-19-1) - Status 2" when - Item FFStatus67641319 changed to 2 + Item FFStatus67641319 received update then - if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) { + logInfo("REMWEBIO001.rules", "Rule MTF 1 (3-19-1) - Status 2 triggered") + logInfo("REMWEBIO001.rules", "StartupSwitch: " + StartupSwitch.state.toString) + logInfo("REMWEBIO001.rules", "FunctioncheckSwitch: " + FunctioncheckSwitch.state.toString) + if( StartupSwitch.state == ON && FFStatus67641319.state == 2) { + logInfo("REMWEBIO001.rules", "Tor 1 öffnen") REMWEBIO001_Ausgang0.sendCommand(ON) } end @@ -25,16 +29,20 @@ end rule "LF 8/6-1 (3-42-1) - Status 2" when - Item FFStatus67641342 changed to 2 + Item FFStatus67641342 received update then - if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) { + logInfo("REMWEBIO001.rules", "Rule LF 8/6-1 (3-42-1) - Status 2 triggered") + logInfo("REMWEBIO001.rules", "StartupSwitch: " + StartupSwitch.state.toString) + logInfo("REMWEBIO001.rules", "FunctioncheckSwitch: " + FunctioncheckSwitch.state.toString) + if( StartupSwitch.state == ON && FFStatus67641342.state == 2) { + logInfo("REMWEBIO001.rules", "Tor 2 öffnen") REMWEBIO001_Ausgang1.sendCommand(ON) } end rule "Steuerung Tor 3" when - Item REMWEBIO002_Ausgang2 changed to ON + Item REMWEBIO001_Ausgang2 changed to ON then Thread::sleep(1000) REMWEBIO001_Ausgang2.sendCommand(OFF) @@ -42,9 +50,13 @@ end rule "LF 8/6-2 (3-42-2) - Status 2" when - Item FFStatus67641349 changed to 2 + Item FFStatus67641349 received update then - if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) { + logInfo("REMWEBIO001.rules", "Rule LF 8/6-2 (3-42-2) - Status 2 triggered") + logInfo("REMWEBIO001.rules", "StartupSwitch: " + StartupSwitch.state.toString) + logInfo("REMWEBIO001.rules", "FunctioncheckSwitch: " + FunctioncheckSwitch.state.toString) + if( StartupSwitch.state == ON && FFStatus67641349.state == 2) { + logInfo("REMWEBIO001.rules", "Tor 3 öffnen") REMWEBIO001_Ausgang2.sendCommand(ON) } end @@ -59,10 +71,14 @@ end rule "MTF 2 (3-19-2) - Status 2" when - Item FFStatus67641317 changed to 2 + Item FFStatus67641317 received update then - if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) { - REMWEBIO001_Ausgang4.sendCommand(ON) + logInfo("REMWEBIO001.rules", "Rule MTF 2 (3-19-2) - Status 2 triggered") + logInfo("REMWEBIO001.rules", "StartupSwitch: " + StartupSwitch.state.toString) + logInfo("REMWEBIO001.rules", "FunctioncheckSwitch: " + FunctioncheckSwitch.state.toString) + if( StartupSwitch.state == ON && FFStatus67641317.state == 2 ) { + logInfo("REMWEBIO001.rules", "Tor 4 öffnen") + REMWEBIO001_Ausgang3.sendCommand(ON) } end @@ -76,10 +92,14 @@ end rule "RW1 (3-51-1) - Status 2" when - Item FFStatus67641351 changed to 2 + Item FFStatus67641351 received update then - if( StartupSwitch.state == ON && FunctioncheckSwitch.state!=ON ) { - REMWEBIO001_Ausgang5.sendCommand(ON) + logInfo("REMWEBIO001.rules", "Rule RW1 (3-51-1) - Status 2 triggered") + logInfo("REMWEBIO001.rules", "StartupSwitch: " + StartupSwitch.state.toString) + logInfo("REMWEBIO001.rules", "FunctioncheckSwitch: " + FunctioncheckSwitch.state.toString) + if( StartupSwitch.state == ON && FFStatus67641351.state == 2) { + logInfo("REMWEBIO001.rules", "Tor 5 öffnen") + REMWEBIO001_Ausgang4.sendCommand(ON) } end diff --git a/rules/SystemStart.rules b/rules/SystemStart.rules index 5e107f1..c9b1274 100644 --- a/rules/SystemStart.rules +++ b/rules/SystemStart.rules @@ -6,6 +6,7 @@ when then logInfo("SystemStart.rules", "Create timer for Systemstartup & Restore") StartupTimer = createTimer(now.plusSeconds(30), [| + logInfo("SystemStart.rules", "Set StartupSwitch to ON") StartupSwitch.postUpdate(ON) ]) end \ No newline at end of file diff --git a/rules/Wetterwarnung.rules b/rules/Wetterwarnung.rules index 3e5d96b..02dbd59 100644 --- a/rules/Wetterwarnung.rules +++ b/rules/Wetterwarnung.rules @@ -7,12 +7,13 @@ then var String newString = transform("JS", "Wetter_DWD_getWarningsJSON.js", jsonString) if (newString !="NULL") { var String newStart = transform("JSONPATH", "$.start", newString) - var DateTime timestart = new DateTime(Long::parseLong(newStart)) - DWD_Warnung_start.postUpdate(new DateTimeType(timestart.toString)) + var DateTimeType timestart = DateTimeType.valueOf(newStart) + DWD_Warnung_start.postUpdate(timestart) var String newEnd = transform("JSONPATH", "$.end", newString) if (newEnd !==null) { - var DateTime timeend = new DateTime(Long::parseLong(newEnd)) - DWD_Warnung_end.postUpdate(new DateTimeType(timeend.toString)) + // var DateTime timeend = new DateTime(Long::parseLong(newEnd)) + var DateTimeType timeend = DateTimeType.valueOf(newEnd) + DWD_Warnung_end.postUpdate(timeend) } DWD_Warnung_level.postUpdate(transform("JSONPATH","$.level",newString)) diff --git a/services/jdbc.cfg b/services/jdbc.cfg index 99a575a..739ff22 100644 --- a/services/jdbc.cfg +++ b/services/jdbc.cfg @@ -18,7 +18,7 @@ # url=jdbc:h2:./testH2 # url=jdbc:hsqldb:./testHsqlDb # url=jdbc:mariadb://192.168.0.1:3306/testMariadb -url=jdbc:mysql://10.112.30.17:3306/openhab_ffr +url=jdbc:mysql://10.112.30.17:3306/openhab_ffr?serverTimezone=Europe/Berlin # url=jdbc:postgresql://192.168.0.1:5432/testPostgresql # url=jdbc:sqlite:./testSqlite.db # url= @@ -78,4 +78,4 @@ tableUseRealItemNames=true # T I M E K E E P I N G # (optional, default: false) -enableLogTime=true \ No newline at end of file +enableLogTime=true diff --git a/services/mysql.cfg b/services/mysql.cfg new file mode 100644 index 0000000..8229622 --- /dev/null +++ b/services/mysql.cfg @@ -0,0 +1,19 @@ +# the database url like 'jdbc:mysql://:/' (without quotes) +#url= + +# the database user +#user= + +# the database password +#password= + +# the reconnection counter +#reconnectCnt= + +# the connection timeout (in seconds) +#waitTimeout= + +# Use MySQL Server time to store item values (=false) or use openHAB Server time (=true). +# For new installations, its recommend to set "localtime=true". +# (optional, defaults to false) +#localtime=true diff --git a/services/telegram.cfg b/services/telegram.cfg new file mode 100644 index 0000000..b8be52d --- /dev/null +++ b/services/telegram.cfg @@ -0,0 +1,14 @@ +# +# Read https://www.openhab.org/addons/actions/telegram/#telegram-actions +# to see how to set up bots and find your chat ids +# + +# bots=bot1,bot2 + +# bot1.chatId=22334455 +# bot1.token=xxxxxx +# Optional: Either 'Markdown' or 'HTML' see https://core.telegram.org/bots/api#markdown-style +# bot1.parseMode=Markdown + +# bot2.chatId=654321 +# bot2.token=yyyyyyyyyyy diff --git a/sitemaps/default.sitemap b/sitemaps/default.sitemap index 176eb2a..b7d3b93 100644 --- a/sitemaps/default.sitemap +++ b/sitemaps/default.sitemap @@ -97,16 +97,22 @@ sitemap default label="Feuerwehr Rembrücken" { Text label="Straßensperrung" icon="road_closed" { Text item=FFSperrungen } + Text item=availability icon=parents_1_1 { + Text item=Available_Gesamt + Text item=Available_Zugfuhrer valuecolor=[<1="red", >=1="green"] + Text item=Available_Gruppenfuhrer valuecolor=[<2="red", >=2="green"] + Text item=Available_Maschinisten valuecolor=[<1="red", >=1="green"] + Text item=Available_PATrager valuecolor=[<4="red", >=4="green"] + Text item=Available_CSATrager valuecolor=[<2="red", >=2="green"] + } } Frame label="Sonstiges" { Text label="Webcams" icon="camera" { Frame label="Anzeige" { 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"] - 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] - Switch item=REMCAM002Record label="Aufzeichung" mappings=[ON="Aktiv", OFF="Inaktiv"] visibility=[CamSelection==1] } Frame label="Sound" { Switch item=CamSoundLocSelection label="Auswahl" mappings=[0="Vorne", 1="Hinten", 2="Beide"] diff --git a/transform/status_sbi.map b/transform/status_sbi.map index 8ed425d..40c9b8e 100644 --- a/transform/status_sbi.map +++ b/transform/status_sbi.map @@ -1,7 +1,13 @@ 1=Einsatzbereit über Funk -2=Einsatzbereit auf Wache +1.0=Einsatzbereit über Funk +2=Verfügbar +2.0=Verfügbar 3=Auf Anfahrt zur E-Stelle +3.0=Auf Anfahrt zur E-Stelle 4=An E-Stelle eingetroffen +4.0=An E-Stelle eingetroffen 5=Sprechwunsch -6=nicht einsatzbereit +5.0=Sprechwunsch +6=Nicht verfügbar +6.0=Nicht verfügbar NULL=Unbekannt \ No newline at end of file diff --git a/transform/status_sbti.map b/transform/status_sbti.map new file mode 100644 index 0000000..1e0fc3f --- /dev/null +++ b/transform/status_sbti.map @@ -0,0 +1,7 @@ +1=Einsatzbereit über Funk +2=Verfügbar +3=Auf Anfahrt zur E-Stelle +4=An E-Stelle eingetroffen +5=Sprechwunsch +6=Nicht verfügbar +NULL=Unbekannt \ No newline at end of file diff --git a/transform/status_zentrale.map b/transform/status_zentrale.map new file mode 100644 index 0000000..086d4b1 --- /dev/null +++ b/transform/status_zentrale.map @@ -0,0 +1,13 @@ +1=Einsatzbereit über Funk +1.0=Einsatzbereit über Funk +2=Zentrale nicht besetzt +2.0=Zentrale nicht besetzt +3=Auf Anfahrt zur E-Stelle +3.0=Auf Anfahrt zur E-Stelle +4=Zentrale besetzt +4.0=Zentrale besetzt +5=Sprechwunsch +5.0=Sprechwunsch +6=nicht einsatzbereit +6.0=nicht einsatzbereit +NULL=Unbekannt \ No newline at end of file