From 5ecc1c6ce8639ecfcc20939373effba4ceb86f20 Mon Sep 17 00:00:00 2001
From: Baenker
Date: Sun, 8 Sep 2019 18:22:52 +0200
Subject: [PATCH] Update Servicemeldungen.js
---
Servicemeldungen.js | 413 +++++++++++++++++++++++++++++++-------------
1 file changed, 291 insertions(+), 122 deletions(-)
diff --git a/Servicemeldungen.js b/Servicemeldungen.js
index c3cab79..c5fb583 100644
--- a/Servicemeldungen.js
+++ b/Servicemeldungen.js
@@ -54,13 +54,28 @@
* 08.07.19 V1.50 Meldung das der Batterietyp für Cux-Geräte fehlt unterdrückt
* Log fehlerhafter Eintrag LOWBAT statt LOW_BAT
* Status von FAULT_REPORTING wurde nicht übersetzt
-*
+* 09.07.19 V1.51 Unterschiedlicher Loggingtext beim auftreten und aufheben einer Servicemeldung
+* Wenn Sticky_UNreach und Unreach gleichzeitig auftreten wird eine Push verschickt
+* find_bug geändert auf Zeitstempel von UNREACH Meldungen
+* 11.07.19 V1.52 Update Batterieliste
+* 19.07.19 V1.53 Logging für Zeitstempel Unreach geändert (find_bug)
+* Bei V1.45 wurde nicht auf die Alarm Punkte abgefragt sondern auf UNREACH und STICKY_UNREACH
+* 31.07.19 V1.54 Erstmal wieder find_bug auf false
+* 21.08.19 V1.55 Vergleich von neuen und alten Servicemeldungen nun als Array damit bei mehr als 2 Meldungen die Meldung korrekt unterdrückt wird
+* 23.08.19 V1.56 Änderungen im Umgang mit Unreach und Sticky_Unreach
+* 06.09.19 V1.57 no_observation arbeitet nicht richtig. Korrekur erstmal nur für LOWBAT und LOW_BAT
+* 07.09.19 V1.58 Vergleich no_oberservation bei der Verarbeitung aller Datenpunkte erntfernt da zukünftig überflüssig
+* Neuer Paramter show_each_device zeigt von jedem Gerät die überwachten Datenpunkte beim Scriptstart an
+* no_observation auch für UNREACH
+* 08.09.19 V1.59 Korrektur aller Servicemeldungen für no_observation
+*
* Andere theoretisch mögliche LOWBAT_REPORTING, U_SOURCE_FAIL, USBH_POWERFAIL, STICKY_SABOTAGE, ERROR_REDUCED, ERROR_SABOTAGE
*******************************************************/
-const Version = 1.50;
+const Version = 1.59;
const logging = true; //Sollte immer auf true stehen. Bei false wird garnicht protokolliert
const debugging = false; //true protokolliert viele zusätzliche Infos
const find_bug = false; //erhöht das Logging wird nur verwendet wenn ein aktulles Bug gesucht wird
+const show_each_device = false; //zeigt alle verfügbaren Datenpunkte je Device
const autoAck = true; //Löschen bestätigbarer Kommunikationsstörungen (true = an, false = aus)
@@ -139,8 +154,9 @@ const SelectorSABOTAGE = $('channel[state.id=hm-rpc.*.0.SABOTAGE_ALARM$]');
const SelectorERROR_NON_FLAT_POSITIONING = $('channel[state.id=hm-rpc.*.0.ERROR_NON_FLAT_POSITIONING_ALARM$]');
let timer = null;
-let meldung_alt = ' ';
-let meldung_neu = ' ';
+let timer_sticky_unreach = null;
+let meldung_alt = [];
+let meldung_neu = [];
function send_pushover (device, message, titel, prio) {
//Version V4.01 vom 10.04.19
@@ -369,8 +385,8 @@ function func_Batterie(native_type){
let lr6x2 = ['HM-CC-VD', 'HM-CC-RT-DN', 'HM-Sec-WDS', 'HM-Sec-WDS-2', 'HM-CC-TC', 'HM-Dis-TD-T', 'HB-UW-Sen-THPL-I', 'HM-WDS40-TH-I', 'HM-WDS40-TH-I-2', 'HM-WDS10-TH-O', 'HmIP-SMI', 'HMIP-eTRV', 'HM-WDS30-OT2-SM-2', 'HmIP-SMO', 'HmIP-SMO-A', 'HmIP-SPI', 'HmIP-eTRV-2', 'HmIP-SPDR', 'HmIP-SWD', 'HmIP-STHO-A', 'HmIP-eTRV-B', 'HmIP-PCBS-BAT','HmIP-STHO'];
let lr6x3 = ['HmIP-SWO-PL', 'HM-Sec-MDIR', 'HM-Sec-MDIR-2', 'HM-Sec-SD', 'HM-Sec-Key', 'HM-Sec-Key-S', 'HM-Sec-Key-O', 'HM-Sen-Wa-Od', 'HM-Sen-MDIR', 'HM-Sen-MDIR-O', 'HM-Sen-MDIR-O-2', 'HM-WDS100-C6-O', 'HM-WDS100-C6-O-2', 'HM-WDS100-C6-O-2', 'HmIP-ASIR', 'HmIP-SWO-B'];
let lr6x4 = ['HM-CCU-1', 'HM-ES-TX-WM', 'HM-WDC7000'];
- let lr3x1 = ['HM-RC-4-2', 'HM-RC-4-3', 'HM-RC-Key4-2', 'HM-RC-Key4-3', 'HM-RC-Sec4-2', 'HM-RC-Sec4-3', 'HM-Sec-RHS-2', 'HM-Sec-SCo', 'HmIP-KRC4', 'HmIP-KRCA', 'HmIP-RC8', 'HmIP-SRH', 'HMIP-SWDO', 'HmIP-DBB'];
- let lr3x2 = ['HM-TC-IT-WM-W-EU', 'HM-Dis-WM55', 'HM-Dis-EP-WM55', 'HM-PB-2-WM55', 'HM-PB-2-WM55-2', 'HM-PB-6-WM55', 'HM-PBI-2-FM', 'HM-RC-8', 'HM-Sen-DB-PCB', 'HM-Sen-EP', 'HM-Sen-MDIR-SM', 'HM-Sen-MDIR-WM55', 'HM-WDS30-T-O', 'HM-WDS30-OT2-SM', 'HmIP-STH', 'HmIP-STHD', 'HmIP-WRC2', 'HmIP-WRC6', 'HmIP-WTH', 'HmIP-WTH-2', 'HmIP-SAM', 'HmIP-SLO', 'HMIP-SWDO-I', 'HmIP-FCI6', 'HmIP-SMI55', 'HM-PB-2-FM', 'HmIP-SWDM', 'HmIP-SCI', 'HmIP-SWDM-B2'];
+ let lr3x1 = ['HM-RC-4-2', 'HM-RC-4-3', 'HM-RC-Key4-2', 'HM-RC-Key4-3', 'HM-RC-Sec4-2', 'HM-RC-Sec4-3', 'HM-Sec-RHS-2', 'HM-Sec-SCo', 'HmIP-KRC4', 'HmIP-KRCA', 'HmIP-SRH', 'HMIP-SWDO', 'HmIP-DBB'];
+ let lr3x2 = ['HM-TC-IT-WM-W-EU', 'HM-Dis-WM55', 'HM-Dis-EP-WM55', 'HM-PB-2-WM55', 'HM-PB-2-WM55-2', 'HM-PB-6-WM55', 'HM-PBI-2-FM', 'HM-RC-8', 'HM-Sen-DB-PCB', 'HM-Sen-EP', 'HM-Sen-MDIR-SM', 'HM-Sen-MDIR-WM55', 'HM-WDS30-T-O', 'HM-WDS30-OT2-SM', 'HmIP-STH', 'HmIP-STHD', 'HmIP-WRC2', 'HmIP-WRC6', 'HmIP-WTH', 'HmIP-WTH-2', 'HmIP-SAM', 'HmIP-SLO', 'HMIP-SWDO-I', 'HmIP-FCI6', 'HmIP-SMI55', 'HM-PB-2-FM', 'HmIP-SWDM', 'HmIP-SCI', 'HmIP-SWDM-B2', 'HmIP-RC8'];
let lr3x3 = ['HM-PB-4Dis-WM', 'HM-PB-4Dis-WM-2', 'HM-RC-Dis-H-x-EU', 'HM-Sen-LI-O'];
let lr3x3a = ['HM-RC-19', 'HM-RC-19-B', 'HM-RC-12', 'HM-RC-12-B', 'HM-RC-12-W'];
let lr14x3 = ['HmIP-MP3P'];
@@ -577,6 +593,7 @@ function Servicemeldung(obj) {
var Gesamt_DEVICE_IN_BOOTLOADER = 0;
var Gesamt_FAULT_REPORTING = 0;
var Betroffen = 0;
+ var Betroffen_no_observation = 0;
var Betroffen_UNREACH = 0;
var Betroffen_STICKY_UNREACH = 0;
var Betroffen_SABOTAGE = 0;
@@ -588,6 +605,17 @@ function Servicemeldung(obj) {
var Betroffen_UPDATE_PENDING = 0;
var Betroffen_DEVICE_IN_BOOTLOADER = 0;
var Betroffen_FAULT_REPORTING = 0;
+ var Betroffen_UNREACH_no_observation = 0;
+ var Betroffen_STICKY_UNREACH_no_observation = 0;
+ var Betroffen_SABOTAGE_no_observation = 0;
+ var Betroffen_ERROR_no_observation = 0;
+ var Betroffen_LOWBAT_no_observation = 0;
+ var Betroffen_LOW_BAT_no_observation = 0;
+ var Betroffen_ERROR_NON_FLAT_POSITIONING_no_observation = 0;
+ var Betroffen_CONFIG_PENDING_no_observation = 0;
+ var Betroffen_UPDATE_PENDING_no_observation = 0;
+ var Betroffen_DEVICE_IN_BOOTLOADER_no_observation = 0;
+ var Betroffen_FAULT_REPORTING_no_observation = 0;
var id_UNREACH;
var servicemeldung = [];
@@ -608,8 +636,13 @@ function Servicemeldung(obj) {
common_name = replaceAll(common_name, 'oe', 'ö');
common_name = replaceAll(common_name, 'ss', 'ß');
- if(no_observation.search(id_name) == -1){
- log('Neue Servicemeldung: ' +common_name +' ('+id_name +') --- ' +native_type +'--- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text);
+ if(no_observation.search(id_name) == -1){
+ if(meldungsart != 'ERROR' && meldungsart != 'FAULT_REPORTING' && status != 1){
+ log('Servicemeldung aufgehoben: ' +common_name +' ('+id_name +') --- ' +native_type +'--- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text);
+ }
+ else{
+ log('Neue Servicemeldung: ' +common_name +' ('+id_name +') --- ' +native_type +'--- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text);
+ }
}
else{
if(debugging){
@@ -638,7 +671,11 @@ function Servicemeldung(obj) {
var Batterie = func_Batterie(native_type);
var datum_seit = func_get_datum(id);
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_LOWBAT_no_observation
+ }
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_LOWBAT
if(prio < prio_LOWBAT){prio = prio_LOWBAT;}
@@ -655,7 +692,7 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_LOWBAT
- if(debugging){
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit +' --- ' +Batterie);
}
//wenn Batterie unbekannt dann Log
@@ -672,6 +709,12 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_LOWBAT_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_LOWBAT +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_LOWBAT_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
+
if(Betroffen_LOWBAT > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_LOWBAT +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_LOWBAT +' Servicemeldung(en).');
@@ -735,7 +778,11 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_LOW_BAT_no_observation
+ }
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_LOW_BAT
if(prio < prio_LOWBAT){prio = prio_LOWBAT;}
@@ -752,7 +799,7 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_LOW_BAT
- if(debugging){
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit +' --- ' +Batterie);
}
//wenn Batterie unbekannt dann Log
@@ -769,6 +816,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_LOW_BAT_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_LOW_BAT +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_LOW_BAT_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_LOW_BAT > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_LOW_BAT +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_LOW_BAT +' Servicemeldung(en).');
@@ -826,30 +878,57 @@ function Servicemeldung(obj) {
obj = getObject(id);
native_type = getObject(id.substring(0, id.lastIndexOf('.') - 2)).native.TYPE;
meldungsart = id.split('.')[4];
+ var id_STICKY_UNREACH = id.substring(0, id.lastIndexOf('.')+1) +'STICKY_UNREACH_ALARM';
+ if(native_type.substring(0, 3) == 'HM-'){
+ var statusSTICKY_UNREACH = getState(id_STICKY_UNREACH).val;
+
+ }
var status = getState(id).val;
var status_text = func_translate_status(meldungsart, native_type, status);
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1) {
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_UNREACH_no_observation
+ }
+ if (status === 1 && no_observation.search(id_name) == -1) {
++Betroffen;
++Betroffen_UNREACH;
if(prio < prio_UNREACH){prio = prio_UNREACH;}
- if(with_time && datum_seit !== ''){
- formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
- servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
+ if(native_type.substring(0, 3) == 'HM-' ){
+ if(statusSTICKY_UNREACH == 1 && autoAck){
+ if(with_time && datum_seit !== ''){
+ formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
+ //formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht.' +datum_seit);
+ servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
+ //servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht..' +datum_seit);
+
+ }
+ else{
+ formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
+ //formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht..');
+ servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
+ //servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht.');
+ }
+ }
}
else{
- formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
- servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
+ if(with_time && datum_seit !== ''){
+ formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
+ servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.' +datum_seit);
+ }
+ else{
+ formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
+ servicemeldung.push(common_name +' ('+id_name +')' + ' - Kommunikation gestört.');
+ }
}
-
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_UNREACH;
- if(debugging){
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +(i + 1) +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -862,6 +941,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_UNREACH_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_UNREACH +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_UNREACH_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_UNREACH > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_UNREACH +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_UNREACH +' Servicemeldung(en).');
@@ -919,21 +1003,56 @@ function Servicemeldung(obj) {
obj = getObject(id);
native_type = getObject(id.substring(0, id.lastIndexOf('.') - 2)).native.TYPE;
meldungsart = id.split('.')[4];
- id_UNREACH = id.substring(0, id.lastIndexOf('.')+1) +'UNREACH';
+ var id_UNREACH = id.substring(0, id.lastIndexOf('.')+1) +'UNREACH_ALARM';
var statusUNREACH = getState(id_UNREACH).val;
+ var lcUNREACH = getState(id_UNREACH).lc;
+ var aktuelles_Datum = new Date();
+ var dif= Math.round((aktuelles_Datum - lcUNREACH)/1000);
+
var status = getState(id).val;
var status_text = func_translate_status(meldungsart, native_type, status);
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1 && statusUNREACH === false) { // wenn Status = true und UNREACH= false, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_STICKY_UNREACH_no_observation
+ }
+
+ if (status === 1 && no_observation.search(id_name) == -1) {
+ var log_autoAck = common_name +' ('+id_name +')';
++Betroffen;
++Betroffen_STICKY_UNREACH;
if(prio < prio_STICKY_UNREACH){prio = prio_STICKY_UNREACH;}
//text.push(common_name +' ('+id_name +') --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text); // Zu Array hinzufügen
-
+
+ if(find_bug){
+ log('[find_bug] ' +'Test Zeitstempel Unreach: ' +formatDate(lcUNREACH, "TT.MM.JJ SS:mm:ss")+' Uhr ');
+ log('[find_bug] ' +'Test Zeitstempel STICKY_Unreach: ' +formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss")+' Uhr ');
+ log('[find_bug] ' +'Dif in Sekunden von unreach: ' +dif);
+ log('[find_bug] ' +'Status Unreach: ' +statusUNREACH);
+
+ if(dif < 300){
+ log('[find_bug] ' +'Meldung soll unterdrückt werden.');
+ }
+ }
+ if(timer_sticky_unreach){
+ clearTimeout(timer_sticky_unreach);
+ timer_sticky_unreach = null;
+ }
+ timer_sticky_unreach = setTimeout(function() {
+ statusUNREACH = getState(id_UNREACH).val;
+ timer_sticky_unreach = null;
+ if(autoAck && statusUNREACH != 1){
+ if(logging){
+ log(log_autoAck + ' - Hinweis über bestätigbare Kommunikationsstörung wird jetzt gelöscht.');
+ }
+ setStateDelayed(id,2);
+
+ }
+ }, 180 * 1000); // 180 Sekunden Verzögerung
if(autoAck){
- setStateDelayed(id,2,180000); //60.000 = 1 Minute
+ //setStateDelayed(id,2,180000); //60.000 = 1 Minute
if(with_time && datum_seit !== ''){
formatiert_servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht. ' +datum_seit);
servicemeldung.push(common_name +' ('+id_name +')' + ' - Meldung über bestätigbare Kommunikationsstörung gelöscht. ' +datum_seit);
@@ -959,7 +1078,7 @@ function Servicemeldung(obj) {
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_STICKY_UNREACH;
- if(debugging){
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +(i + 1) +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -972,6 +1091,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_STICKY_UNREACH_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_STICKY_UNREACH +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_STICKY_UNREACH_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_STICKY_UNREACH > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_STICKY_UNREACH +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_STICKY_UNREACH +' Servicemeldung(en).');
@@ -1034,7 +1158,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1) {
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_SABOTAGE_no_observation
+ }
+
+ if (status === 1 && no_observation.search(id_name) == -1) {
++Betroffen;
++Betroffen_SABOTAGE;
if(prio < prio_SABOTAGE){prio = prio_SABOTAGE;}
@@ -1050,7 +1179,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_SABOTAGE;
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1063,6 +1193,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_SABOTAGE_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_SABOTAGE +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_SABOTAGE_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_SABOTAGE > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_SABOTAGE +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_SABOTAGE +' Servicemeldung(en).');
@@ -1125,7 +1260,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status > 0) { // wenn Zustand größer 0, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_ERROR_no_observation
+ }
+
+ if (status > 0 && no_observation.search(id_name) == -1) { // wenn Zustand größer 0, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_ERROR;
if(prio < prio_ERROR){prio = prio_ERROR;}
@@ -1142,7 +1282,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_ERROR
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1155,6 +1296,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_ERROR_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_ERROR +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_ERROR_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_ERROR > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_ERROR +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_ERROR +' Servicemeldung(en).');
@@ -1217,7 +1363,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_ERROR_NON_FLAT_POSITIONING_no_observation
+ }
+
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_ERROR_NON_FLAT_POSITIONING
if(prio < prio_ERROR_NON_FLAT_POSITIONING){prio = prio_ERROR_NON_FLAT_POSITIONING;}
@@ -1234,7 +1385,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_ERROR_NON_FLAT_POSITIONING
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1247,6 +1399,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_ERROR_NON_FLAT_POSITIONING_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_ERROR_NON_FLAT_POSITIONING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_ERROR_NON_FLAT_POSITIONING_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_ERROR_NON_FLAT_POSITIONING > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_ERROR_NON_FLAT_POSITIONING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_ERROR_NON_FLAT_POSITIONING +' Servicemeldung(en).');
@@ -1309,7 +1466,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status > 0) { // wenn Zustand größer 0, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_FAULT_REPORTING_no_observation
+ }
+
+ if (status > 0 && no_observation.search(id_name) == -1) { // wenn Zustand größer 0, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_FAULT_REPORTING;
if(prio < prio_FAULT_REPORTING){prio = prio_FAULT_REPORTING;}
@@ -1327,7 +1489,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_FAULT_REPORTING;
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1340,6 +1503,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_FAULT_REPORTING_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_FAULT_REPORTING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_FAULT_REPORTING_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_FAULT_REPORTING > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_FAULT_REPORTING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_FAULT_REPORTING +' Servicemeldung(en).');
@@ -1402,7 +1570,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_DEVICE_IN_BOOTLOADER_no_observation
+ }
+
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_DEVICE_IN_BOOTLOADER;
if(prio < prio_DEVICE_IN_BOOTLOADER){prio = prio_DEVICE_IN_BOOTLOADER;}
@@ -1417,8 +1590,9 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
- ++Gesamt_DEVICE_IN_BOOTLOADER
- if(debugging){
+ ++Gesamt_DEVICE_IN_BOOTLOADER;
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1431,6 +1605,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_DEVICE_IN_BOOTLOADER_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_DEVICE_IN_BOOTLOADER +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_DEVICE_IN_BOOTLOADER_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_DEVICE_IN_BOOTLOADER > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_DEVICE_IN_BOOTLOADER +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_DEVICE_IN_BOOTLOADER +' Servicemeldung(en).');
@@ -1493,8 +1672,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
-
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_CONFIG_PENDING_no_observation
+ }
+
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_CONFIG_PENDING;
if(prio < prio_CONFIG_PENDING){prio = prio_CONFIG_PENDING;}
@@ -1510,7 +1693,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_CONFIG_PENDING;
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1523,6 +1707,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_CONFIG_PENDING_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_CONFIG_PENDING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_CONFIG_PENDING_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_CONFIG_PENDING > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_CONFIG_PENDING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_CONFIG_PENDING +' Servicemeldung(en).');
@@ -1585,8 +1774,12 @@ function Servicemeldung(obj) {
//var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss");
var datum_seit = func_get_datum(id);
+ if (status === 1 && no_observation.search(id_name) != -1) {
+ ++Betroffen_no_observation
+ ++Betroffen_UPDATE_PENDING_no_observation
+ }
- if (status === 1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
+ if (status === 1 && no_observation.search(id_name) == -1) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
++Betroffen;
++Betroffen_UPDATE_PENDING;
if(prio < prio_UPDATE_PENDING){prio = prio_UPDATE_PENDING;}
@@ -1604,7 +1797,8 @@ function Servicemeldung(obj) {
}
++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
++Gesamt_UPDATE_PENDING;
- if(debugging){
+
+ if(show_each_device && log_manuell){
log('Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit);
}
@@ -1617,6 +1811,11 @@ function Servicemeldung(obj) {
}
}
else{
+ if(Betroffen_UPDATE_PENDING_no_observation > 0){
+ if(debugging || log_manuell){
+ log('Es gibt: '+Gesamt_UPDATE_PENDING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_UPDATE_PENDING_no_observation +' unterdrückte Servicemeldung(en).');
+ }
+ }
if(Betroffen_UPDATE_PENDING > 0){
if(debugging || log_manuell){
log('Es gibt: '+Gesamt_UPDATE_PENDING +' Geräte mit dem Datenpunkt ' +meldungsart+'. Derzeit: '+Betroffen_UPDATE_PENDING +' Servicemeldung(en).');
@@ -1669,12 +1868,15 @@ function Servicemeldung(obj) {
}
- //Verarbeitung aller Datenpunkte
+ //Verarbeitung aller Datenpunkte
+ if(Betroffen_no_observation > 0 && native_type !=='HmIP-HEATING'){
+ if(debugging){
+ log('Derzeit gibt es insgesamt ' +Betroffen_no_observation +' unterdrückte Servicemeldungen');
+ }
+ }
if(Betroffen > 0 && native_type !=='HmIP-HEATING'){
- if(find_bug){
- log('[find_bug] ' +'Derzeit Betroffen: ' +Betroffen);
- }
+
if(write_state){
if(id_IST_Gesamt === ''){
if(debugging){
@@ -1683,16 +1885,13 @@ function Servicemeldung(obj) {
}
else{
if(debugging){
- log('Derzeitige gibt es Servicemeldungen. Ergebnis in Objekt geschrieben');
+ log('Derzeit gibt es Servicemeldungen. Ergebnis in Objekt geschrieben');
}
setState(id_IST_Gesamt,Betroffen);
}
}
if(write_message){
if(id_Text_Servicemeldung){
- if(find_bug){
- log('[find_bug] ' +'id_Text_Servicemeldung ergibt true');
- }
setState(id_Text_Servicemeldung,servicemeldung.join(', '));
}
}
@@ -1704,9 +1903,9 @@ function Servicemeldung(obj) {
}
- if(meldung_neu != servicemeldung.join(' , ')){
+ if(meldung_neu != servicemeldung){
meldung_alt = meldung_neu;
- meldung_neu = servicemeldung.join(' , ');
+ meldung_neu = servicemeldung;
if(debugging){
log('meldung alt und neu geändert');
}
@@ -1716,27 +1915,14 @@ function Servicemeldung(obj) {
if(debugging && !log_manuell){
log('Else Teil Meldung_neu');
}
- meldung_neu = 'Test';
+ meldung_neu = ['Derzeit keine neue Servicemeldung'];
}
- if(meldung_alt.indexOf(meldung_neu) == -1){
- if(debugging && !log_manuell){
- log('Die Servicemeldung alt und neu sind unterschiedlich. Es wird eine Push verschickt')
- log('Meldung neu: ' +meldung_neu);
- log('Meldung alt: ' +meldung_alt);
- }
- }
- else{
- if(debugging && !log_manuell){
- log('Die Servicemeldung alt und neu sind identisch. Es wird keine Push verschickt.')
- log('Meldung neu: ' +meldung_neu);
- log('Meldung alt: ' +meldung_alt);
- }
- }
+
if(timer){
clearTimeout(timer);
timer = null;
- if(logging){
+ if(debugging){
log('Es gibt bereits eine Servicemeldung. Abruch des Timers .');
}
@@ -1744,23 +1930,22 @@ function Servicemeldung(obj) {
log('Übersicht aller Servicemeldungen: '+ servicemeldung.join(', '));
}
//Push verschicken
- if(no_observation.search(id_name) == -1){
- if(sendpush && !log_manuell){
- prio = 0;
- titel = 'Servicemeldung';
- message = formatiert_servicemeldung.join('\n');
- send_pushover(device, message, titel, prio);
- }
- if(sendtelegram && !log_manuell){
- message = servicemeldung.join('\n');
- send_telegram(message, user_telegram);
- }
- if(sendmail && !log_manuell){
- message = servicemeldung.join('\n');
- send_mail(message);
- }
-
+ if(sendpush && !log_manuell){
+ prio = 0;
+ titel = 'Servicemeldung';
+ message = formatiert_servicemeldung.join('\n');
+ send_pushover(device, message, titel, prio);
}
+ if(sendtelegram && !log_manuell){
+ message = servicemeldung.join('\n');
+ send_telegram(message, user_telegram);
+ }
+ if(sendmail && !log_manuell){
+ message = servicemeldung.join('\n');
+ send_mail(message);
+ }
+
+
}
else{
timer = setTimeout(function() {
@@ -1784,62 +1969,46 @@ function Servicemeldung(obj) {
}
}
//Push verschicken
- if(no_observation.search(id_name) == -1){
- if(meldung_alt.indexOf(meldung_neu) == -1){
-
- //log('Meldung unterschiedlich');
- //log('Meldung neu: ' +meldung_neu);
- //log('Meldung alt: ' +meldung_alt);
- if(sendpush && !log_manuell){
- prio = 0;
- titel = 'Servicemeldung';
- message = formatiert_servicemeldung.join('\n');
- send_pushover(device, message, titel, prio);
- }
- if(sendtelegram && !log_manuell){
- message = servicemeldung.join('\n');
- send_telegram(message, user_telegram);
- }
- if(sendmail && !log_manuell){
- message = servicemeldung.join('\n');
- send_mail(message);
- }
-
+ meldung_neu = meldung_neu.filter(item => !meldung_alt.includes(item));
+ if(meldung_neu.length === 0){
+ if(debugging && !log_manuell){
+ log('Pushnachricht unterdrückt, da es über diese Servicemeldung bereits eine Push gab.');
}
}
- if(meldung_alt.indexOf(meldung_neu) != -1){
- if(logging && !log_manuell){
- log('Pushnachricht unterdrückt, da es über diese Servicemeldung bereits eine Push gab.');
- //log('Meldung neu: ' +meldung_neu);
- //log('Meldung alt: ' +meldung_alt);
+ else{
+ //log('Test: '+meldung_neu);
+ if(sendpush && !log_manuell){
+ prio = 0;
+ titel = 'Servicemeldung';
+ message = formatiert_servicemeldung.join('\n');
+ send_pushover(device, message, titel, prio);
+ }
+ if(sendtelegram && !log_manuell){
+ message = servicemeldung.join('\n');
+ send_telegram(message, user_telegram);
}
+ if(sendmail && !log_manuell){
+ message = servicemeldung.join('\n');
+ send_mail(message);
+ }
+
}
+
}, 3 * 1000); // 3 Sekunden Verzögerung
}
}
else{
- if(find_bug){
- log('[find_bug] ' +'Derzeit keine Servicemeldungen');
- }
- meldung_alt = 'Derzeit keine Servicemedungen.';
- if(debugging){
- log('Meldung alt aus dem else-Teil: '+meldung_alt);
- }
+ meldung_alt = ['Derzeit keine Servicemedungen.'];
+
if((debugging) || (onetime && log_manuell)){
log(+Gesamt +' Datenpunkte werden insgesamt vom Script ' +name +' (Version: '+Version +') überwacht. Instance: '+instance);
}
if(write_message){
- if(find_bug){
- log('[find_bug] ' +'Write_message ist true.');
- }
if(id_Text_Servicemeldung){
- if(find_bug){
- log('[find_bug] ' +'id_Text_Servicemeldung ergibt true');
- }
setState(id_Text_Servicemeldung,'Derzeit keine Servicemeldungen');
}
}