Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Fenster zählen auf verschiedenen Ebenen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Fenster zählen auf verschiedenen Ebenen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 735 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    Camuri
    schrieb am zuletzt editiert von
    #1

    Hallo das Script zum Fensterzählen habe ich schon gefunden nun habe ich auch der Raspimatic das Gewerke FensterEG und FensterOG angelegt, wo muss ich das denn jetzt alles im Script ändern er findet irgendwie keine Fenster bei mir da er ja das Gewerke Fenster eigentlich braucht.

    ! /* System Zahl Fenster
    ! zählt die Fenster in allen Räumen und meldet die offenen Fenster namentlich
    ! Daten kommen vom Gewerk 'Fenster'
    ! erstellt: 17.06.2015 nach diesem Vorbild: http://forum.iobroker.net/viewtopic.php … 79c1#p6564
    ! 05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
    ! 02.12.2015 Fehler beseitigt bei Anzahl Fenster, wenn offen (Unterscheidung RHS und TFK)
    ! Überprüfung des Zustandes (function fensterstatus) und Übergabe an Text
    ! 25.01.2016 Fenster Nummer in Log korrigiert (+1)
    ! 02.03.2016 Ansage für TTS aufbereitet
    ! 02.07.2016 Regulärer Ausdruck (gierig) bei Aufbereitung für Ansage
    ! */
    ! function fensterstatus(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'
    ! });
    ! var cacheSelectorState = $('channelstate.id=*.STATE');
    ! 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('FensterEG #' + (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(',
    ')); // 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);
    ! });

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      Adnim
      schrieb am zuletzt editiert von
      #2

      ! ````
      //Add device rules
      addDeviceCounter("lowbat", $('channel[state.id=LOWBAT]'), true);
      addDeviceCounter("lowbat", $('channel[state.id=lowbat]'), true);
      addDeviceCounter("sticky_unreach", $('channel[state.id=
      .STICKY_UNREACH]'), true);
      addDeviceCounter("unreach", $('channel[state.id=
      .UNREACH]'), true);
      addDeviceCounter("config_pending", $('channel[state.id=.CONFIG_PENDING]'), true);
      addDeviceCounter("Motion", $('channel[state.id=
      .MOTION]'), true);
      addDeviceCounter("DutyCycle", $('channel[state.id=.DUTYCYCLE]'), true);
      addDeviceCounter("Spannungsüberwachung", $('channel[state.id=
      .VOLTAGE]'), function(state){return state<200;});
      addDeviceCounter("Auskühlschutz", $('channel[state.id=.ACTUAL_TEMPERATURE]'), function(state){return state<12;});
      addDeviceCounter("ERROR", $('channel[state.id=
      .ERROR*]'), function(state){return state>0;});
      addDeviceCounter("Heizbedarf", $('channel[state.id=.VALVE_STATE]'), function(state){return state>45;});
      addDeviceCounter("Alive", $('channel[state.id=alive]'), false);
      addDeviceCounter("CONNECTED", $('channel[state.id=
      .connected]'), false);
      addDeviceCounter("open_shutters", $('channel{TYPE=BLIND}[state.id=
      .LEVEL]'), function(state){return state>0;});
      addDeviceCounter("open_windows", $('channel{TYPE=SHUTTER_CONTACT}[state.id=.STATE]'), true);
      ! /
      *****************************************

      • Code - do not change anything bellow this line *
        ******************************************/

      ! function addDeviceCounter(name, selector, val_to_count) {
      ! //Total amount of devices found by selector
      var state_total = 'deviceCounter.' + name + '.total';
      createState(state_total, 0);
      //List of devices that match condition
      var state_list = 'deviceCounter.' + name + '.list';
      createState(state_list, "");
      //Number of devices that match condition
      var state_counter = 'deviceCounter.' + name + '.counter';
      ! createState(state_counter, 0);
      function countDevs(obj) {
      var d_count = 0;
      var d_list = [];
      ! selector.each(function (id, i) {
      var status = getState(id).val;
      var obj = getObject(id);
      if ((typeof val_to_count === 'function' && val_to_count(status)) ||
      (typeof val_to_count === 'boolean' && val_to_count == status)) {
      //Get parent object
      var parentChannelId = id.slice(id.lastIndexOf("."));
      var parentDevicelId = id.split(".").slice(0,-2).join(".");
      var deviceObject = getObject(parentDevicelId);
      //remember device name
      d_list.push(deviceObject.common.name);
      }
      ++d_count; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
      });
      ! //if ("state_counter" > 0) {event(name + "(" + d_count + "): " + d_list);
      //}
      ! setState(state_list, d_list.join('
      '));
      setState(state_counter, d_list.length);
      setState(state_total, d_count);
      }
      ! //Re-evaluate when a device status changes
      selector.on(function(obj) { // bei Zustandänderung . LOWBAT in allen Gewerken
      countDevs(obj);
      });
      ! //Re-evaluate each hour
      schedule("
      /60 * * * *", countDevs);

      //Evaluate for the first time
      countDevs();
      

      }

      ! ````

      Glaube der Devicecounter ist einfacher…(original gibt es bei den vorlagen, hier so wie ich es am laufen habe)

      Hier bin ich auch unsicher wie genau du den einfügen müsstest glaube so?

      addDeviceCounter("open_windows", $('channel{ROLE:DEINEGEWERKE}{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true);

      1 Antwort Letzte Antwort
      0
      • flkontaktF Online
        flkontaktF Online
        flkontakt
        schrieb am zuletzt editiert von
        #3

        Ich habe das durch Anpassung des Script gelöst viewtopic.php?t=10820

        Gesendet von meinem SM-G920F mit Tapatalk

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          Adnim
          schrieb am zuletzt editiert von
          #4

          ok verstehe viele Wege führen nach Rom :)

          Vorteil des Device Counters hier trotzdem aus meiner Sicht: "all in one skript" und kann mehr

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            Camuri
            schrieb am zuletzt editiert von
            #5

            @flkontakt:

            Ich habe das durch Anpassung des Script gelöst viewtopic.php?t=10820

            Gesendet von meinem SM-G920F mit Tapatalk `

            scheint bei mir irgendwie immer noch nicht zu gehen :(
            5264_e84cedd3395181fbe0489adced3635ac.png

            1 Antwort Letzte Antwort
            0
            • C Offline
              C Offline
              Camuri
              schrieb am zuletzt editiert von
              #6

              5264_fcc8a3d037bf64810f4b26d5037277d8.png

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              636

              Online

              32.6k

              Benutzer

              82.3k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe