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 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
                                        • cash
                                          cash Most Active @hg6806 last edited by

                                          @hg6806 Das kommt darauf an welche Datenpunkte Du verwenden willst. Hast Du Dir das Script mal angesehen? Eigentlich sollte es dann klar sein wo welche Datenpunkte rein müssen. Falls Du die Datenpunkte nicht brauchst einfach meine Datenpunkte aus dem Script löschen und Parameter auf false.

                                          Ich weiß nicht was die User-ID bei Telegram ist. Bei Pushover gibt man den Smartphone Namen. Ich habe Telegram eingefügt weil es gewünscht war. Nutze es selber nicht. Ggf mal im Telegram Adapter nachschauen…

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

                                            @cash
                                            Ja hatte ich mir angeschaut.
                                            Ist das so korrekt? Dann müsste ich die noch in den Objekten anlegen.

                                            const id_IST_LOWBAT = 'javascript.0.Servicemeldungen.Homematic.Anzahl_LOWBAT'/*Anzahl LOWBAT*/;
                                            const id_IST_LOW_BAT = '';
                                            const id_IST_UNREACH = 'javascript.0.Servicemeldungen.Homematic.Anzahl_UNREACH'/*Anzahl_UNREACH*/;
                                            const id_IST_STICKY_UNREACH = 'javascript.0.Servicemeldungen.Homematic.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 = "javascript.0.Servicemeldungen.Homematic.Anzahl_GESAMT"/*Anzahl_GESAMT*/;
                                            
                                            

                                            Und wie werden die Texte in Datenpunkte geschrieben?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            721
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            93
                                            1038
                                            230532
                                            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