Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Servicemeldung mit Typunterscheidung

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Servicemeldung mit Typunterscheidung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      schittl last edited by

      Hallo,

      ich habe das Skript für Erstellung der Servicemeldungen als Liste für meine Zwecke soweit angepasst und es funktioniert. Nun möchte ich es noch anhand des CCU-Types unterscheiden (z.B. für die Batterienart). Nur leider bekomme ich aus dem Object nicht den Typ heraus. Lt. Forum sollt es so funktionieren````
      var type = getObject(id).native.TYPE;

      
      >! ````
      /*  System Homematic Servicemeldungen
      Skript erstellt Variablen Service.Homematic.*
      http://forum.iobroker.org/viewtopic.php?f=21&t=914#p9153
      >! erstellt: 04.08.2015 von paul53
      angepasst von pix
      05.10.2015 STICKY UNREACH wird jetzt auf true gesetzt und damit gelöscht http://forum.iobroker.org/viewtopic.php?f=21&t=914&p=9200&hilit=sticky#p9173
      04.02.2016 Instanz Variable
      */
      >! instanz = 'javascript.0.';
      >! // Service Meldungen
      >! createState('Servicemeldungen.Homematic.Anzahl', 0, {
          name: 'Homematic Servicemeldungen Anzahl',
          desc: 'Zahl der Homematic Servicemeldungen',
          type: 'number'
      });
      createState('Servicemeldungen.Homematic.Text', "", {
          name: 'Homematic Servicemeldungen Text',
          desc: 'Liste der Geräte, die Servicemeldungen produzieren',
          type: 'string'
      });
      >! var idAnzahl = instanz + 'Servicemeldungen.Homematic.Anzahl',
          idText = instanz + 'Servicemeldungen.Homematic.Text';
      >! var SelectorUNREACH = $('channel[state.id=*.UNREACH]'),
          SelectorSTICKY_UNREACH = $('channel[state.id=*.STICKY_UNREACH]'),
          SelectorLOWBAT = $('channel[state.id=*.LOWBAT]'),
          SelectorCONFIG_PENDING = $('channel[state.id=*.CONFIG_PENDING]');
      >! var blockdevice = "XEQ012345678";
      >! function countService(obj) {
          var anzahl         = 0;
          var text_VIS       = "";
      >!     function count(id) {
              var status = getState(id).val;                          // Zustand abfragen (jedes Element)
              if (status) {                                           // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
                  text_VIS = text_VIS + formatText(id) + "
      ";             // Zu String hinzufügen
                  ++anzahl;                                           // Zählt die Anzahl der Service-Alarme
              }
          }
      >!     SelectorUNREACH.each(function (id, i) {
              count(id);
           });
      >!     SelectorSTICKY_UNREACH.each(function (id, i) {
              var status = getState(id).val;       // Zustand abfragen (jedes Element)
              if (status) {                        // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
                  log('STICKY_UNREACH Meldung: ' + id + ' wurde auf <true>gesetzt. Das Homematic Gerät ist wieder uneingeschränkt erreichbar.');
                  setState(id, false); // STICKY_UNREACH werden gelöscht
              }
          });
      >!     SelectorLOWBAT.each(function (id, i) {
              count(id);
          });
      >!     SelectorCONFIG_PENDING.each(function (id, i) {
              count(id);
          });
      >!     // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert
          if (!anzahl) {
              text_VIS = "keine Servicemeldungen";
          }
          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon Service zutreffend) ausgegeben
          log("Homematic-Servicemeldungen: " + text_VIS);
          log("Anzahl Homematic-Servicemeldungen: " + anzahl);
      >!     setState(idText, text_VIS);                     // Schreibt die IDs der Datenpunkte mit Service Meldung
          setState(idAnzahl, anzahl);                 // Schreibt die aktuelle Anzahl der Service Meldungen
      }
      >! function formatText(id) {
          var idS = id.split('.');
          var serial = idS[2];
          var status = idS[4]; // Zustand abfragen
          var obj = getObject(id);
          var name = getObject(id).common.name;
          var devicename = name.substring(0, name.indexOf(":"));
          var type = getObject(id).native.TYPE; // funktioniert nicht
          var ival = getState(id).val;
          var stime = formatDate(getState(id).ts, "TT.MM.YYYY SS:mm");
          if (serial != blockdevice) {
              if (status == "CONFIG_PENDING") { status = "Konfigurationsdaten stehen zur Übertragung an"; }
              if (status == "LOWBAT") { status = "Batteriestand niedrig"; }
              if (status == "STICKY_UNREACH") { status = "Kommunikation war gestört"; }
              if (status == "UNREACH") { status = "Kommunikation zur Zeit gestört"; }
              if (status == "LOWBAT") {
                  return devicename + ": Batterien für " + type + " bestellen";
              }
              else {
                  return devicename + ": " + status + " seit: " + stime + " Uhr";
              }
          }
      }
      >! SelectorUNREACH.on(function(obj) {          // bei Zustandänderung *.UNREACH in allen Gewerken
          countService(obj);
      });
      >! SelectorSTICKY_UNREACH.on(function(obj) {   // bei Zustandänderung *.STICKY_UNREACH in allen Gewerken
          countService(obj);
      });
      >! SelectorLOWBAT.on(function(obj) {          // bei Zustandänderung *.LOWBAT in allen Gewerken
          countService(obj);
      });
      >! SelectorCONFIG_PENDING.on(function(obj) {   // bei Zustandänderung *.CONFIG_PENDING in allen Gewerken
          countService(obj);
      });
      >! // Ausführung bei Scriptstart
      countService();</true> 
      

      mfg

      Falk

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        Wie sieht dein Objekt aus, wenn du im Objekte-Tab auf dessen Eigenschaften gehst?

        Und was heißt "funktioniert nicht"? Gibts nen Fehler?

        1 Reply Last reply Reply Quote 0
        • S
          schittl last edited by

          Ich glaube ich denke woran es liegt. Die Eigenschaften für LOWBAT sehen wie folgt aus:

          ! ````
          {
          "type": "state",
          "common": {
          "def": false,
          "type": "boolean",
          "read": true,
          "write": false,
          "role": "indicator.battery",
          "name": "Wohnzimmer Fenstersensor Links:0.LOWBAT"
          },
          "native": {
          "DEFAULT": false,
          "FLAGS": 9,
          "ID": "LOWBAT",
          "MAX": true,
          "MIN": false,
          "OPERATIONS": 5,
          "TAB_ORDER": 3,
          "TYPE": "BOOL",
          "UNIT": ""
          },
          "_id": "hm-rpc.0.XXX1234567.0.LOWBAT",
          "acl": {
          "object": 1638,
          "state": 1638
          }
          }

          
          Ich benötige aber den type aus "Wohnzimmer Fenstersensor Links". Darin ist der TYPE mit "HM-Sec-SCo" angegeben. Möglich wäre auch noch "Wohnzimmer Fenstersensor Links.0" und "PARENT_TYPE": "HM-Sec-SCo".
          
          Komme ich irgendwie daran?
          
          Danke schon im voraus.
          
          vg
          
          Falk
          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            @schittl:

            Ich benötige aber den type aus "Wohnzimmer Fenstersensor Links". Darin ist der TYPE mit "HM-Sec-SCo" angegeben. Möglich wäre auch noch "Wohnzimmer Fenstersensor Links.0" und "PARENT_TYPE": "HM-Sec-SCo". `
            Screenshot von der Objektstruktur und Eigenschaften der relevanten Objekte bitte.

            1 Reply Last reply Reply Quote 0
            • S
              schittl last edited by

              Die Info's bekommst Du heute Abend. Bin auf Arbeit.

              Mal ne kurze Zwischenfrage. Kann man sich irgendwie das komplette Objekt in der Log ausgeben lassen fürs debugging? Wie sowas in der Art?

              log(getObject(id));
              

              Danke im voraus.

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @schittl:

                Kann man sich irgendwie das komplette Objekt in der Log ausgeben lassen fürs debugging? Wie sowas in der Art?

                log(getObject(id));
                ```` `  
                

                Beinahe richtig!

                log(JSON.stringify(getObject(id)));
                
                1 Reply Last reply Reply Quote 0
                • S
                  schittl last edited by

                  Anbei die Screenshots. Hoffe das ist so in Ordnung. Lowbat.jpg ist vermutlich das aktuelle Objekt bei der Abfrage. Aber ich benötige "HM-Sec-SCo" aus dem Objekt (properties.jpg)
                  3116_lowbat.jpg
                  3116_properties.jpg
                  3116_objekt.jpg

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

                    var idDp = id.split('.');
                    var idDevice = idDp[0] + '.' + idDp[1] + '.' + idDp[2];
                    var type = getObject(idDevice).native.TYPE;
                    
                    1 Reply Last reply Reply Quote 0
                    • S
                      schittl last edited by

                      Danke funktioniert 😄

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      798
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      2100
                      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