Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Servicemeldungen - All inclusive für Homematic -

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Servicemeldungen - All inclusive für Homematic -

    This topic has been deleted. Only users with topic management privileges can see it.
    • opossum
      opossum @cash last edited by

      @cash ,

      ich schreibe jetzt mal die VM für iobroker mit der Sicherung von heute früh 04.00 Uhr zurück. Dann habe ich den Zustand für Telegram und dann fange ich noch einmal neu an mit der Umstellung. Ich melde mich dann noch einmal wieder. Ich möchte Dir auch nicht den Restsonntag versauen. Hoffe, das ist ok für Dich.

      1 Reply Last reply Reply Quote 0
      • opossum
        opossum @cash last edited by

        @cash ,

        nein, leider nicht. Daher wollte ich auch mal zurück mit der Sicherung.

        1 Reply Last reply Reply Quote 0
        • opossum
          opossum @cash last edited by opossum

          @cash ,
          habe das jetzt mal getestet. Habe die VM zurückgeschrieben, dann hatte ich als Script Deine Version 1.83 auf dem System.
          Sabotagemeldung mit Telegram und mit Pushover erfolgreich.

          Dann von GitHub das Script 1.85 kopiert und ein neues Script gemacht. Dort die gleichen Anpassungen wie in 1.83 gemacht. Es kamen keine Meldungen, weder mit Telegram noch mit Pushover.

          Ist so auch reproduzierbar. Habe dann Telegram abgeschaltet, immer nach Änderungen den js-Adapter durchgestartet. Wenn Du Hilfe beim Testen benötigst, dann lasse es mich wissen. Danke für Deine bisherige Hilfe. Ich lasse jetzt erst mal das 1.83 aktiv.

          Habe ich vielleicht auch das 1.85 falsch von GitHub kopiert?

          1 Reply Last reply Reply Quote 0
          • opossum
            opossum last edited by opossum

            @cash
            habe jetzt die 1.86 eingebaut, erst nach Neustart js-Adapter kommt jetzt die Meldung:

            18:30:43.858 - info: javascript.0 (19105) script.js.common.Servicemeldungen_185: Neue Servicemeldung: HM-Sec-SCo OEQ1986453 (OEQ1986453) --- HM-Sec-SCo--- Typ: ERROR --- Status: 7 Sabotage
            18:30:46.938 - info: pushover.0 (17013) Send pushover notification: {"device":"galaxys215g","message":"HM-Sec-SCo OEQ1986453 Arbeitszimmer optisch (OEQ1986453) - Sabotage. --- seit: 08.06.21 18:30:43 Uhr","title":"Servicemeldung","priority":"0","retry":60,"expire":600,"html":1}
            18:30:56.021 - info: javascript.0 (19105) script.js.common.Servicemeldungen_185: Neue Servicemeldung: HM-Sec-SCo OEQ1986453 (OEQ1986453) --- HM-Sec-SCo--- Typ: ERROR --- Status: 0 ERROR mit dem Wert: 0
            


            Auch in der Pushover-App ist die Nachricht angekommen. Denke, Du hast das sauber gefixt.

            1 Reply Last reply Reply Quote 0
            • J
              JensBHB last edited by

              Hi!

              Ich bekomme seit einiger Zeit die folgende Fehlermeldung:

              2021-06-26 12:05:12.285 - error: javascript.0 (4733) Error in callback: ReferenceError: device is not defined
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at Object. (script.js.Info.ccu_servicemeldungen:2141:39)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2105:34)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at listOnTimeout (internal/timers.js:554:17)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at processTimers (internal/timers.js:497:7)
              
              

              Das ganze Logfile mit Debug:

              2021-06-26 12:05:09.211 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: Servicemeldung aufgehoben: RL|OG|BAD (OEQ0269994) --- HM-LC-Bl1PBU-FM--- Typ: STICKY_UNREACH_ALARM --- Status: 2 Kommunikation war gestört
              2021-06-26 12:05:09.225 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] id_IST Feld für LOW_BAT nicht gefüllt
              2021-06-26 12:05:09.236 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: Es gibt: 60 Geräte mit dem Datenpunkt UNREACH_ALARM. Derzeit: 1 Servicemeldung(en).
              2021-06-26 12:05:09.253 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] id_IST Feld für ERROR nicht gefüllt
              2021-06-26 12:05:09.261 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] id_IST Feld für DEVICE_IN_BOOTLOADER nicht gefüllt
              2021-06-26 12:05:09.271 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] id_IST Feld für CONFIG_PENDING nicht gefüllt
              2021-06-26 12:05:09.281 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] id_IST Feld für UPDATE_PENDING nicht gefüllt
              2021-06-26 12:05:09.282 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Betroffen mehr als 0. Es sind 1
              2021-06-26 12:05:09.282 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] log_manuell: false
              2021-06-26 12:05:09.282 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Derzeit gibt es Servicemeldungen. Ergebnis in Objekt geschrieben
              2021-06-26 12:05:09.282 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Betroffen: 1
              2021-06-26 12:05:09.283 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] write_message steht auf true. Ergebnis in Objekt geschrieben
              2021-06-26 12:05:09.283 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Betroffen: RL|OG|BAD (OEQ0269994) - Kommunikation gestört.
              2021-06-26 12:05:09.284 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] meldung alt und neu geändert
              2021-06-26 12:05:09.348 - info: javascript.0 (4733) script.js.Info.ccu_service_formatieren: RL|OG|BAD (OEQ0269994) - Kommunikation gestört.
              2021-06-26 12:05:09.349 - info: javascript.0 (4733) script.js.Info.ccu_service_formatieren: RL|OG|BAD (OEQ0269994) - Kommunikation gestört.
              2021-06-26 12:05:12.283 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Timer abgelaufen. Verarbeitung der Servicemeldung
              2021-06-26 12:05:12.284 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: Es werden: 333 Datenpunkte überwacht. Derzeit: 1 Servicemeldung(en).
              2021-06-26 12:05:12.284 - info: javascript.0 (4733) script.js.Info.ccu_servicemeldungen: [DEBUG] Es gibt eine Servicemeldung: RL|OG|BAD (OEQ0269994) - Kommunikation gestört.
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) Error in callback: ReferenceError: device is not defined
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at Object. (script.js.Info.ccu_servicemeldungen:2141:39)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2105:34)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at listOnTimeout (internal/timers.js:554:17)
              2021-06-26 12:05:12.285 - error: javascript.0 (4733) at processTimers (internal/timers.js:497:7)
              


              Ich nehme mal an, dass ich irgendwo etwas falsch gemacht habe. deshalb hier meine Konfiguration:

              const Version = 1.86;
              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 = true;         //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)
              
              const observation = true;        //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
              
              //Instanz Cuxd ausschließen. Instanz als Zahl z. B. '1' oder bei Nichtnutzung hohe Nr eintragen z. B. '9'
              const CUXD = '2';
              
              //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 = 'javascript.0.Systemvariable.0.Servicemeldungen.Info';  // Objekt wo die Servicemeldung hingeschrieben werden soll (String)
              
              //Variablen für Pushover
              const sendpush = true;     //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
              const pushover_Instanz0 =  'pushover.1';     // Pushover instance für Pio = 0
              const pushover_Instanz1 =  'pushover.2';     // Pushover instance für Pio = 1
              const pushover_Instanz2 =  'pushover.3';     // Pushover instance für Pio = 2
              const pushover_Instanz3 =  'pushover.4';     // Pushover instance für Pio = -1 oder -2
              let h_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 = '';
              //Müssen selber als Zahl angelegt werden
              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*/;
              

              Ich würde mich über einen Tipp woran es liegen kann sehr freuen.

              cash 2 Replies Last reply Reply Quote 0
              • cash
                cash Most Active @JensBHB last edited by

                @jensbhb hast Du das Script verändert?

                1 Reply Last reply Reply Quote 0
                • cash
                  cash Most Active @JensBHB last edited by

                  @jensbhb Zeile 47 den Unterstrich entfernen…

                  J 1 Reply Last reply Reply Quote 1
                  • J
                    JensBHB @cash last edited by

                    @cash Ohje... das wurde hier ja schon thematisiert... sorry... 😇 . Der Wald, die Bäume...

                    Ich danke Dir, das scheint es gewesen zu sein... 👍

                    1 Reply Last reply Reply Quote 0
                    • B
                      Bratwurst last edited by

                      Ich hatte das Problem der fehlenden Datenpunkte... jetzt habe ich durch Umstieg auf SSD einmal komplett neu angefangen und siehe da... nicht ein Datenpunkt vom Skript gefunden.
                      Ich habe "nur" die 4 Datenpunkte für das Skript angelegt... habe ich etwas essenzielles vergessen / übersehen? Muss eine Einstellung im hm-rpc gemacht sein? oder in PIVCCU?

                      cash 1 Reply Last reply Reply Quote 0
                      • cash
                        cash Most Active @Bratwurst last edited by

                        @bratwurst Sind die Datenpunkte mit Alarm da? Wenn nicht, kann das Script nichts finden

                        1 Reply Last reply Reply Quote 0
                        • B
                          Bratwurst last edited by

                          Tatsächlich ist nicht ein ALARM Datenpunkt da... ich habe mit der SSD komplett neu angefangen... das kann doch nicht sein.
                          Gibt es Einstellung in PiVCCU3 oder im Rega Adapter die vergessen haben kann?

                          cash 1 Reply Last reply Reply Quote 0
                          • cash
                            cash Most Active @Bratwurst last edited by

                            @bratwurst Nicht das ich wüßte. Du hattest die gleichen Probleme aber schon auf der Seite davor. Wenn ich es richtig gesehen habe gab es neue Versionen von den Adaptern die sich teils um Probleme mit den Datenpunkten kümmern. Bist Du auf den Beta-Channel oder stable? Ggf. sonst Issue auf Github bei dem Adapter aufmachen.

                            Mein Script ist an sich dumm. Es fragt nur nach den Datenpunkten. Ohne Datenpunkte kann mein Script nichts.

                            1 Reply Last reply Reply Quote 0
                            • B
                              Bratwurst last edited by

                              stable... ist cuxd eine Voraussetzung?

                              cash 1 Reply Last reply Reply Quote 0
                              • cash
                                cash Most Active @Bratwurst last edited by

                                @bratwurst nein. Cuxd braucht man nicht. Bei stable warte mal noch ein paar Tage oder Wochen. Da werden die Beta-Versionen bestimmt stable. Vielleicht werden dann die Punkte auch bei Dir richtig angelegt. Ich kann Dir hier leider nicht helfen. Hatte selber noch nie Probleme mit fehlenden Datenpunkten.

                                1 Reply Last reply Reply Quote 0
                                • hg6806
                                  hg6806 Most Active last edited by hg6806

                                  Leider habe ich seit einiger Zeit das Problem, dass immer die Servicemeldung erscheint, dass der Rauchmelder nicht erreichbar wäre.
                                  In der CCU2 ist keine Servicemeldung aktiv. Alles grün.
                                  Wenn ich den Wert aus den Objekten löschen, erscheint er bei Neustart des Skriptes wieder. Auch Telegram meldet es.

                                  Ich sehe auch nicht im Skript wo er sich das herholt:

                                  instanz = 'javascript.0.';
                                  var idAnzahl = instanz + 'Servicemeldungen.Homematic.Anzahl',
                                      idText =   instanz + 'Servicemeldungen.Homematic.Text';
                                   
                                  createState(idAnzahl, 0, {
                                      name: 'Homematic Servicemeldungen Anzahl',
                                      desc: 'Zahl der Homematic Servicemeldungen',
                                      type: 'number'
                                  });
                                  createState(idText, "", {
                                      name: 'Homematic Servicemeldungen Text',
                                      desc: 'Liste der Geräte, die Servicemeldungen produzieren',
                                      type: 'string'
                                  });
                                   
                                  var SelectorUNREACH         = $('channel[state.id=*.UNREACH]');
                                  var SelectorLOWBAT          = $('channel[state.id=*.LOWBAT]');
                                   
                                  function countService(obj) {
                                      var anzahl    = 0;
                                      var text      = "";
                                      var delimiter = "";
                                   
                                      // Klartext Name ermitteln
                                      function getname(id) {
                                          var tokens      =  [];
                                          var object = getObject(id);
                                      	tokens          =  object.common.name.split(":");
                                      	return tokens[0];
                                      }
                                   
                                      function count(id,cause) {
                                          var status = getState(id).val;
                                          if (status) { 
                                              text = text + delimiter + getname(id) + " " + cause + " " ;
                                              delimiter = "\n"; // Neue Zeile für Telegram
                                              ++anzahl;
                                          }
                                      }
                                   
                                      SelectorUNREACH.each(function (id, i) {count(id,"ist nicht erreichbar");});
                                      SelectorLOWBAT.each(function (id, i) {count(id,"hat schwache Batterie");});
                                   
                                      if (!anzahl) text = "keine Servicemeldungen";
                                   
                                      log("Homematic-Servicemeldungen: " + text);
                                      //log("Anzahl Homematic-Servicemeldungen: " + anzahl);
                                   
                                      setState(idText, text); 
                                      setState(idAnzahl, anzahl);
                                      setState('telegram.0.communicate.response', text);
                                  }
                                   
                                  countService();
                                  SelectorUNREACH.on(function(obj)        {countService(obj);});
                                  SelectorLOWBAT.on(function(obj)         {countService(obj);});
                                   
                                  
                                  cash 1 Reply Last reply Reply Quote 0
                                  • cash
                                    cash Most Active @hg6806 last edited by

                                    @hg6806 sorry das ist ein anderes Script was Du nutzt. Falscher Thread...

                                    1 Reply Last reply Reply Quote 0
                                    • hg6806
                                      hg6806 Most Active last edited by

                                      OK, würde das Script hier ganz gerne nehmen, jedoch habe ich etwas Startschwierigkeiten.

                                      1. Wo werden dann Datenpunkte angelegt?
                                      2. Was muss ich bei Telegramm eintragen? Im alten Script gab es einfach nur
                                      setState('telegram.0.communicate.response', text);
                                      
                                      cash 1 Reply Last reply Reply Quote 0
                                      • B
                                        Bratwurst last edited by

                                        Hatte Kontakt mit foxriver76 und er hat eine neue stable Version veröffentlicht... jetzt funktioniert es... vielen Dank!

                                        1 Reply Last reply Reply Quote 0
                                        • cash
                                          cash Most Active @hg6806 last edited by

                                          @hg6806 zu 1) ist mir persönlich völlig egal wo Du die Datenpunkte anlegst. Ich habe bei mir ein System was ich nutze. Wichtig ist nur die Datenpunkte im Script einzutragen.

                                          zu2) Es gibt nur 2 Parameter für den Telegramversand. Ich hätte bisher behauptet die sind sehr selbsterklärend? Welcher Parameter in welcher Zeile ist nicht klar?

                                          hg6806 1 Reply Last reply Reply Quote 0
                                          • hg6806
                                            hg6806 Most Active @cash last edited by hg6806

                                            @cash sagte in Servicemeldungen - All inclusive für Homematic -:

                                            Wichtig ist nur die Datenpunkte im Script einzutragen.

                                            Verrätst du mir auch wo die eingetragen werden?

                                            const user_telegram = '';
                                            Hier trage ich die User-ID ein?

                                            cash 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            648
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            93
                                            1038
                                            232284
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo