Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Sunny 0

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 13
    • Best 0
    • Groups 1

    Sunny 0

    @Sunny 0

    Starter

    0
    Reputation
    4
    Profile views
    13
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Sunny 0 Follow
    Starter

    Latest posts made by Sunny 0

    • Problem Fenstersensor Stripes keine Statusänderung

      Hallo zusammen,

      wir haben bei drei Fenstern die Sensative Strips im Einsatz. Die Statusänderung wird über Access_Control_1 -> Door/Window Closed(2)

      c5d3e41f-caa6-41cc-8161-895010a512fc-image.png

      Den Sensor habe ich der Funktion"Fenster" analog unserer anderen Fenstersensoren zugefügt. Jedoch werden bei der Visualisierung die Fenster immer als offen angezeigt. Folgendes Skript habe ich für die Abfrage der Fenstersensoren am laufen:

      const idsFenster = $('zwave*.Sensor_1|zwave*.Access_Control_1(functions=fenster)');
      const idAnzahl = 'zählen_Fenster.anzahlFensterauf';
      const idText = 'zählen_Fenster.textFensterauf';
       
      setState('zählen_Fenster.anzahlFenster', idsFenster.length, true);
      setState('zählen_Fenster.anzahlFensterauf', idAnzahl.length, true); 
       
      function countFenster() {
          var textFensterauf = [];
          idsFenster.each(function (id, i) {   // Schleife für jedes gefundenen Element im Gewerk Fenster
              if(getState(id).val) {  // Zustand offen
                   textFensterauf.push(getObject(id).common.name);  // Name zum Array hinzufügen
              }
          });
       
          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
          setState(idText, textFensterauf.join(', '), true);    // Schreibt die aktuelle Namen der offenen Fenster
          setState(idAnzahl, textFensterauf.length, true);      // Schreibt die aktuelle Anzahl der offenen Fenster
      }
       
      countFenster(); // Script start
      idsFenster.on(function() {    // bei Wertänderung im Gewerk Fenster
          countFenster();
      });
      

      Auch beim direkten Verwendes der Objekt-ID werden die Fenster immer als offen angezeigt:
      8b5314b9-f1c0-4bf3-b186-e079bcf79e0f-image.png

      Kann mir hier jmd weiterhelfen?

      MfG

      Sunny

      posted in Visualisierung
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53

      ok, ist gelöscht.

      Das andere probiere ich, sobald die anderen Fenstersensoren angebracht sind 🙂

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      Ich habe es wie folgt angepasst:

      const idsFenster = $('zwave*.Sensor_1(functions=fenster)');
      const idAnzahl = 'zählen_Fenster.anzahlFensterauf';
      const idText = 'zählen_Fenster.textFensterauf';
       
      setState('zählen_Fenster.anzahlFenster', idsFenster.length, true);
      setState('zählen_Fenster.anzahlFensterauf', idAnzahl.length, true); 
       
      function countFenster() {
          var textFensterauf = [];
          idsFenster.each(function (id, i) {   // Schleife für jedes gefundenen Element im Gewerk Fenster
              if(getState(id).val) {  // Zustand offen
                   textFensterauf.push(getObject(id).common.name);  // Name zum Array hinzufügen
              }
          });
       
          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
          setState(idText, textFensterauf.join(', '), true);    // Schreibt die aktuelle Namen der offenen Fenster
          setState(idAnzahl, textFensterauf.length, true);      // Schreibt die aktuelle Anzahl der offenen Fenster
      }
       
      countFenster(); // Script start
      idsFenster.on(function() {    // bei Wertänderung im Gewerk Fenster
          countFenster();
      });
      
      

      Eine Frage hätte ich noch: Wenn jetzt Sensoren dazukommen, die z.B. Switch_1 als ID haben, schreibe ich das dann einfach noch hinten dran?

      const idsFenster = $('zwave*.Sensor_1(functions=fenster)';'zwave*.Switch_1(functions=fenster)');
      
      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      Hab jetzt noch eine Zeile bei deinem Skript hinzugefügt 🙂

      Jetzt passt es.

      Vielen Dank.

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      Der Debug Modus ist nicht angeklickt:
      854823ab-6e6d-4eaf-b17b-a623ff6716b8-image.png
      Und in der Log zeigt er mir keine Warnung oder ähnliches an, aber die Datenpunkte werden nur angelegt aber nicht befüllt:
      4446a243-1cd7-4a12-a97f-7f694a520dc9-image.png

      Hab jetzt Zeile 5 von deinem Skript geändert und das würde jetzt schonmal gehen:
      73c3e468-9308-4390-98fe-7a6f42824c05-image.png

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      folgende Datenpunkte habe ich durch das bisherige Skript:
      5d7041b6-1c50-467c-abf6-297e90aa4013-image.png

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      Jetzt hab ich doch noch eine kurze Frage. Muss ich das Skript von dir in meinem bestehenden Skript einbauen? Wenn ja wo? (bin leider absoluter Newbee)

      Ich hab einmal versucht nur das in das Skript zu nehmen, bekomme dann aber eine Warnmeldung:
      14704:11.514 warn javascript.0 (5384) at countFenster (script.js.Status_Offen.Fenster:16:5)
      17:04:11.514 warn javascript.0 (5384) at script.js.Status_Offen.Fenster:20:1
      17:04:11.516 warn javascript.0 (5384) at countFenster (script.js.Status_Offen.Fenster:17:5)
      17:04:11.516 warn javascript.0 (5384) at script.js.Status_Offen.Fenster:20:1

      Die Datenpunkte würden so dann ja auch nicht angesprochen werden:
      26275d22-81d0-46c2-ae21-fd237f995894-image.png

      Diese sollen in VIS eingebunden werden

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53
      Danke, das werd ich heute Abend mal versuchen 🙂

      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53

         function fenster(zustand) {
          var meldung;
          switch (zustand) {
              case 1:
                  meldung = 'RHS gekippt';
              break;
              case 2:
                  meldung = 'RHS offen';
              break;
              case true:
                  meldung = 'TFK offen';
              break;
              default:
                  meldung = 'geschlossen';
              break;
          }
          return(meldung);
      }
      
      createState('zählen_Fenster.anzahlFenster', {     // wenn benötigt: Anzahl der vorhandenen Fenster
          type: 'number',
          min: 0,
          def: 0,
          role: 'value'
      });
      createState('zählen_Fenster.anzahlFensterauf', {  // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
          type: 'number',
          min: 0,
          def: 0,
          role: 'value'
      });
      createState('zählen_Fenster.textFensterauf', {      // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
          type: 'string',
          def: ' ',
          role: 'value'
      });
      
      const cacheSelectorZwave = $('zwave*.Sensor*(functions=fenster)');
      var cacheSelectorState  = $('channel[state.id=*.STATE](functions="Fenster")');
      
      function countFenster(obj) {
           // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
          var anzahlFenster = 0;
          var anzahlFensterauf = 0;
          var textFensterauf = [];
      
          log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);              // Info im Log, welcher Zustand sich geändert hat
      
          cacheSelectorState.each(function (id, i) {                                  // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
              var status = getState(id).val;                                          // Zustand *.STATE abfragen (jedes Element)
              var obj    = getObject(id);
              var name = getObject(id).common.name;
              var devicename = name.substring(0, name.indexOf(".STATE"));             //.state aus Text entfernen
              if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                   ++anzahlFensterauf;
                   textFensterauf.push(devicename + ' (' + fensterstatus(status) + ')');  // Name und Zustand zum Array hinzufügen
              }
              log('Fenster #' + (i+1) + ': ' + devicename + ' ' + fensterstatus(status)/* + ' (' + status + ' / ' + typeof status + ')'*/);
              ++anzahlFenster;                                                        // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
          });
      
          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
              log("Text: " + textFensterauf);
              log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " +  anzahlFensterauf);
      
          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
          setState("zählen_Fenster.textFensterauf", textFensterauf.join(',<br>'));    // Schreibt die aktuelle Namen der offenen Fenster
          setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length);         // Schreibt die aktuelle Anzahl der offenen Fenster
          setState("zählen_Fenster.anzahlFenster", anzahlFenster);                    // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
      }
      
      cacheSelectorState.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Fenster
          countFenster(obj);
      });
      
      // Variable für Ansage aufbereiten
      createState('zählen_Fenster.textFensteraufAnsage', {
          type: 'string',
          def: ' ',
          role: 'value'
      });
      // Anzahl der Fenster, die auf sind, für Ansage aufbereitet
      var idQuelle = 'javascript.0.zählen_Fenster.textFensterauf',
          idAnsage = 'javascript.0.zählen_Fenster.textFensteraufAnsage';
      
      on(idQuelle, function (obj) {
          var text = obj.state.val;
          text = text.replace(/RHS/g, 'Drehgriff');
          text = text.replace(/TFK/g, 'Reedkontakt');
          text = (text.length > 1) ? 'Geöffnete Fenster: ' + text : 'Alle Fenster sind verschlossen';
          setState(idAnsage, text);
      });
      posted in Skripten / Logik
      S
      Sunny 0
    • RE: [gelöst] Skript Fenster offen mit ZWave Sensoren

      @paul53

      Das funktioniert:

      29.3.2021, 14:50:13.099 [info ]: javascript.0 (4182) Stop script script.js.Test.Test

                                            29.3.2021, 14:50:13.179	[info ]: javascript.0 (4182) Start javascript script.js.Test.Test
                                            
                                            29.3.2021, 14:50:13.211	[info ]: javascript.0 (4182) script.js.Test.Test: Fensteranzahl: 6
                                            
                                            29.3.2021, 14:50:13.212	[info ]: javascript.0 (4182) script.js.Test.Test: TFK Sensor Speisekammer
                                            
                                            29.3.2021, 14:50:13.213	[info ]: javascript.0 (4182) script.js.Test.Test: Sensor Essbereich TFK
                                            
                                            29.3.2021, 14:50:13.213	[info ]: javascript.0 (4182) script.js.Test.Test: Sensor WHZ Terrasse
                                            
                                            29.3.2021, 14:50:13.214	[info ]: javascript.0 (4182) script.js.Test.Test: Sensor Essbereich Terrasse
                                            
                                            29.3.2021, 14:50:13.214	[info ]: javascript.0 (4182) script.js.Test.Test: Sensor Wohnzimmer
                                            
                                            29.3.2021, 14:50:13.214	[info ]: javascript.0 (4182) script.js.Test.Test: Sensor Gästezimmer Seite
                                            
                                            29.3.2021, 14:50:13.215	[info ]: javascript.0 (4182) script.js.Test.Test: registered 0 subscriptions and 0 schedules
      posted in Skripten / Logik
      S
      Sunny 0
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo