NEWS
Servicemeldungen - All inclusive für Homematic -
-
Danke für deine schnelle Antwort. Es geht um den Text der Fehlermeldung. Lowbat wurde in das Feld geschrieben, jedoch der Unreachalarm nicht.
Hier der Config:
const Version = 1.61; const logging = true; //Sollte immer auf true stehen. Bei false wird garnicht protokolliert const debugging = true; //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 = true; //zeigt alle verfügbaren Datenpunkte je Device const autoAck = true; //Löschen bestätigbarer Kommunikationsstörungen (true = an, false = aus) const observation = false; //Dauerhafte Überwachung der Geräte auf Servicemeldungen aktiv (true = aktiv // false =inaktiv) const onetime = true; //Prüft beim Script Start ob derzeit Geräte eine Servicemeldung haben const with_time = false; //Hängt die Uhrzeit an die Serviemeldung //Geräte die nicht überwacht werden sollen. Komma getrennt erfassen const no_observation = 'LEQ092862x9, XXX'; //pro Fehlertyp kann eine andere Prio genutzt werden const prio_LOWBAT = 0; const prio_UNREACH = 0; const prio_STICKY_UNREACH = 0; const prio_CONFIG_PENDING = 0; const prio_UPDATE_PENDING = 0; const prio_DEVICE_IN_BOOTLOADER = 0; const prio_ERROR = 0; const prio_ERROR_CODE = 0; const prio_FAULT_REPORTING = 0; const prio_SABOTAGE= 0; const prio_ERROR_NON_FLAT_POSITIONING = 0; //Variablen für Servicemeldung in Objekt schreiben // Wenn einer Meldung auftritt wird diese in ein Textfeld geschrieben. z. B. für vis const write_message = true; // true schreibt beim auftreten einer Servicemeldung die Serviemeldung in ein Objekt const id_Text_Servicemeldung = 'Systemvariable.0.Servicemeldungen.Text_MELDUNGEN'; // Objekt wo die Servicemeldung hingeschrieben werden soll //Variablen für Pushover const sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt const pushover_Instanz0 = 'pushover.0'; // Pushover instance für Pio = 0 const pushover_Instanz1 = 'pushover.1'; // Pushover instance für Pio = 1 const pushover_Instanz2 = 'pushover.2'; // Pushover instance für Pio = 2 const pushover_Instanz3 = 'pushover.3'; // Pushover instance für Pio = -1 oder -2 let prio = -2; //nicht verändern die höchste Prio nach Fehlertyp wird verwendet let titel; let message; let device = 'TPhone'; //Welches Gerät soll die Nachricht bekommen //let _device = 'All'; //Variablen für Telegram const sendtelegram = false; //true = verschickt per Telegram Nachrchten // false = Telegram wird nicht benutzt const user_telegram = ''; //User der die Nachricht bekommen soll //Variable zum verschicken der Servicemeldungen per eMail const sendmail = false; //true = verschickt per email Nachrchten // false = email wird nicht benutzt //Ergebnis in Datenfelder schreiben const write_state = true; //Schreibt die Ergebnisse der Servicemeldungen in Datenfelder. (true = schreiben, false, kein schreiben) //nicht benutzte Felder einfach leer lassen --> var id_IST_XXX = ''; const id_IST_LOWBAT = 'Systemvariable.0.Servicemeldungen.Anzahl_LOWBAT'/*Anzahl LOWBAT*/; const id_IST_LOW_BAT = ''; const id_IST_UNREACH = 'Systemvariable.0.Servicemeldungen.Anzahl_UNREACH'/*Anzahl_UNREACH*/; const id_IST_STICKY_UNREACH = 'Systemvariable.0.Servicemeldungen.Anzahl_STICKY_UNREACH'/*Anzahl_STICKY_UNREACH*/; const id_IST_CONFIG_PENDING = ''; const id_IST_UPDATE_PENDING = ''; const id_IST_DEVICE_IN_BOOTLOADER = ''; const id_IST_ERROR = ''; const id_IST_ERROR_NON_FLAT_POSITIONING = ''; const id_IST_ERROR_CODE = ''; const id_IST_FAULT_REPORTING = ''; const id_IST_SABOTAGE = ''; const id_IST_Gesamt = "Systemvariable.0.Servicemeldungen.Anzahl_GESAMT"/*Anzahl_GESAMT*/;
Hier sind meine Datenpunkte, der letzte ist als Zeichenkette angelegt, die anderen als Zahl:
-
Hallo ich habe dein Script installiert.
Habe zuerst einen Fehler in Zeile 158.
Habe das let durch var ersetzt. Fehler ist weg.
Allerdings bekomme ich im Log einige WARN Meldungen
Was bedeutet das?
Michael -
@Dominik-F Gucke ich mir genauer an.
-
Vielen Dank. Ich werde jetzt ins Bett gehen und dir Morgen antworten.
Ich habe die Prozentzeichen bei den Datenpunkten weg bekommen und in Zeile 67 von der von mir geposteten Config die " durch ' erstetzt. Hat keinen Unterschied gebracht.
-
@Michael-Horn In dem Du let durch var ersetzt läuft das Script? Das wäre mehr als komisch.
Mal davon abgesehen das es kein Fehler ist nur weil es rot unterstrichen ist. Es heißt nur das ein Bug im Adapter ist... Ich gebe auch kein Support für veränderte ScripteFür den Rest bitte mal die Variable debug auf true und show_each_device auch auf true...
Welche Instanzen nutzt Du wofür? Hast Du cuxd?
-
@cash Hallöchen, ja mit "var" läuft das Script, zumindest bekomme ich Meldungen im LOG (siehe Spoiler).
Ich habe den Urprung nun wieder hergestellt. Leider bekomme ich jetzt wieder den Compelier Fehler in Zeile 158.
Das Script läuft nun nicht mehr. Deine Vorschläge habe ich übernommen, ohne Erfolg. Ich benutze CuxD . Gruß Michael -
@cash: Fehler gefunden hatte in Global bereits einmal den "timer" vergeben. Somit konnte sich die Variable nicht im selben Gültigkeitsbereit den Namen teilen.
Gruß Michael -
Neue Version auf Github.
Für Cuxd User mit neuer Option. Dort muss man die Instanz-Nr eingeben damit die Gerät überlesen werden.
@Michael-Horn bitte mit neuer Version testen und bei Fehler das Log kopieren und nicht das was unter dem Script angezeigt wird... Auch wenn es theoretisch das gleiche sein sollte. Es macht keinen Unterschied ob let oder var. Muss beides gehen. Bitte auf jeden Fall das komplette Script kopieren (Vom ersten bis letzten Zeichen). Hattest Du die Config angepasst? Welche Javascript Version welchen js-Adapter? Windows-System?
@Dominik-F Du hast in Zeile 9 observation auf false. Das macht doch eigentlich keinen Sinn? Denn dann bekommt man von Servicemeldungen ja nichts mit? Bitte mal debug auf true und show_each_device auf false. Danach das Log falls der Datenpunkt nicht richtig gesetzt wird. Ob " oder ' spielt auch keine Rolle beides geht meistens
Ich habe im Debug nochmal etwas mehr logging eingebaut um zu sehen was er macht oder nicht macht. Einen Fehler konnte ich so erstmal nicht finden.@bommel_030 Mit der neuen Version sollten Deine Probleme hoffentlich weg sein....
-
@Michael-Horn Ah. Hatte ich überlesen. Aus Interesse was hast Du denn unter Global damit angestellt?
Somit ist es mit let auch nachvollziehbar da ja global immer vor jeden Script ausgeführt wird und somit natürlich die Variable deklariert war...
-
ich hatte observation auf false weil du das in deinem ersten Post geschrieben hattest, dass man dies zu Testzwecken tun sollte. One Time war auf true und hatte das so verstanden, dass zum Start des Skriptes dann einmal alles geloggt wird und nur nicht weiter überprüft. hab es jetzt auf True, es wird auch mit der neuen Version des Skripts nichts in den Datenpunkt geschrieben.
Hier der Log:
javascript.0 2019-11-12 20:46:15.027 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Es gibt eine Servicemeldung: javascript.0 2019-11-12 20:46:15.026 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es werden: 100 Datenpunkte überwacht. Derzeit: 1 Servicemeldung(en). javascript.0 2019-11-12 20:46:12.026 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: registered 100 subscriptions and 0 schedules javascript.0 2019-11-12 20:46:12.025 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] meldung alt und neu geändert javascript.0 2019-11-12 20:46:12.025 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Betroffen: javascript.0 2019-11-12 20:46:12.025 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] write_message steht auf true. Ergebnis in Objekt geschrieben javascript.0 2019-11-12 20:46:12.024 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Betroffen: 1 javascript.0 2019-11-12 20:46:12.024 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Derzeit gibt es Servicemeldungen. Ergebnis in Objekt geschrieben javascript.0 2019-11-12 20:46:12.024 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Betroffen mehr als 0 und keine Heizungsgruppe javascript.0 2019-11-12 20:46:12.024 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] id_IST Feld für UPDATE_PENDING nicht gefüllt javascript.0 2019-11-12 20:46:12.024 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 10 Geräte mit dem Datenpunkt UPDATE_PENDING. javascript.0 2019-11-12 20:46:12.020 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] id_IST Feld für CONFIG_PENDING nicht gefüllt javascript.0 2019-11-12 20:46:12.020 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 19 Geräte mit dem Datenpunkt CONFIG_PENDING. javascript.0 2019-11-12 20:46:12.017 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] id_IST Feld für DEVICE_IN_BOOTLOADER nicht gefüllt javascript.0 2019-11-12 20:46:12.017 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 10 Geräte mit dem Datenpunkt DEVICE_IN_BOOTLOADER. javascript.0 2019-11-12 20:46:12.015 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] id_IST Feld für FAULT_REPORTING nicht gefüllt javascript.0 2019-11-12 20:46:12.014 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 6 Geräte mit dem Datenpunkt FAULT_REPORTING. javascript.0 2019-11-12 20:46:12.013 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Keine Geräte gefunden mit dem Datenpunkt ERROR_NON_FLAT_POSITIONING. javascript.0 2019-11-12 20:46:12.013 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Keine Geräte gefunden mit dem Datenpunkt ERROR. javascript.0 2019-11-12 20:46:12.012 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Keine Geräte gefunden mit dem Datenpunkt SABOTAGE. javascript.0 2019-11-12 20:46:12.012 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 19 Geräte mit dem Datenpunkt STICKY_UNREACH. javascript.0 2019-11-12 20:46:12.007 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 19 Geräte mit dem Datenpunkt UNREACH_ALARM. Derzeit: 1 Servicemeldung(en). javascript.0 2019-11-12 20:46:12.003 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Keine Geräte gefunden mit dem Datenpunkt LOW_BAT. javascript.0 2019-11-12 20:46:12.003 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: Es gibt: 17 Geräte mit dem Datenpunkt LOWBAT. javascript.0 2019-11-12 20:46:11.997 info (27245) script.js.common.Geräte.CCU_3_Servicemeldungen: [DEBUG] Function wird gestartet. javascript.0 2019-11-12 20:46:11.152 info (27245) Start javascript script.js.common.Geräte.CCU_3_Servicemeldungen javascript.0 2019-11-12 20:46:10.428 info (27245) Stop script script.js.common.Geräte.CCU_3_Servicemeldungen
-
@Dominik-F alles klar. Er schreibt schon das Datenfeld nur leider mit "" also leer. Hatte ja geschrieben das ich erstmal nur mehr logging eingebaut habe damit ich weiß wo er hängt...
Kannst Du mir bitte mal ein Screenshot zeigen von den entsprechenden Datenpunkt bzw das Gerät.
Ich habe mir gerade nochmal den Code angeguckt und eine erste Idee.
-
@cash Dankeschön das Script läuft. Morgen kümmere ich mich mal um den Telegram Versand
-
@Dominik-F und noch etwas: bitte mal das Script ändern.
Zeile 900
if(statusSTICKY_UNREACH == 1 && autoAck){
löschen und
Zeile 923}
ebenfalls entfernen und dann mal testen. Ich gehe davon aus das es dann gehen würde?
Was ist das für ein Gerät warum ist es nur unreach und nicht auch sticky_unreach. Hast Du manuell Batterien rausgenommen?
-
@cash Ich hatte ein Script gebastelt, das mittels Bewegungsmelder mir eine Tablets im Büro einschaltet und wenn eine bestimmte Zeit ohne Bewegung oder Dunkelheit festgestellt wird, die Tablets wieder Ausschaltet. Hat sich aber erledigt, da FullyBrower mit Lizenz das auch kann.
-
@Michael-Horn ah ok. Hört sich nicht so an als ob so etwas in global sollte. Ist ja ein ganz normales Script. Unter global sollten nur Scripts die man immer vor jedem anderen Script ausgeführt haben möchte also z. B. bestimmte functions auf die man bei vielen Scripten drauf zugreifen möchte...
-
Genau das war die Lösung mit dem Löschen der Zeilen. Danach wurde genau das richtige in den Datenpunkt geschrieben.
Das Gerät war ein Rauchmelder, ich hab die Verbindung wegen Fehlalarmen getrennt Hab den Rauchmelder von der Halterung entfernt und da es immer noch angelernt ist, bleibt dort die Fehlermeldung. Da ich mich irgendwann nochmal damit befassen möchte, hab ich die Fehlermeldung davon akzeptiert. Zum testen des Skripts war es jetzt natürlich hilfreich
ich danke dir vielmal für deinen tollen support.
-
@Dominik-F Wenn ich nun noch wüßte warum ich die Zeilen darein gemacht habe
Es wird auch dazu einen Grund geben. Ich werde es für mich bewerten und entweder mit der nächsten Version die Zeilen löschen oder eben drin lassen. Ich tendiere derzeit zum löschen, da icb glaube das die Einschränkung nicht mehr relevant war.
Letzte Frage an Dich: Hast die auto_Ask auf true oder false. Damit bestätigt man löschbare Meldungen in der ccu. Ansonsten muss man das in der ccu web-ui selber machen.
-
@cash
Läuft bis jetzt fehlerfrei. Schau mal was im Laufe des Tages via Pushover kommt und melde mich dann.
Danke nochmals für den Support. Kann man auch mehrere Instanzen ausklammern, oder ist das nur auf eine CuxD-Instanz ausgelegt? -
@cash
Irgendwas scheint wohl doch noch zu klemmen...
Hatte das neue Skript heute früh scharf geschaltet und mal nen LowBat Alarm simuliert. Skript hat wie gewünscht reagiert.
Ausm Büro nochmal nachgeschaut, irgendwann tauchte das auf:
Später kam dann das:
Und das Skript wurde automatisch angehalten (Gelbes Symbol).
Find_bug auf true gesetzt und reboot... Low_Bat simuliert, Meldung kommt....
Mal schauen ob er jetzt durchgehend läuft oder sich wieder was einfängt. -
ich habe auto_ack (ich hoffe das meintest du auch) auf true weil es so voreingestellt war bei dir. hab das aber in der CCU auch voreingestellt, daher kann ich da nicht sagen ob die einstellung funktioniert. Hab das Skript mit einem Funkzwischenstecker noch einmal getestet, in dem ich das einfach aus der Steckdose gezogen habe. Die Meldung wurde erfolgreich angezeigt.