Navigation

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

    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

    N
    • Profile
    • Following 0
    • Followers 0
    • Topics 9
    • Posts 26
    • Best 0
    • Groups 1

    noleck123

    @noleck123

    0
    Reputation
    16
    Profile views
    26
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    noleck123 Follow
    Starter

    Latest posts made by noleck123

    • Yahka Homekit - Winmatic einbinden

      Hallo, kann mir evtl jemand helfen meine Winmatic in den Homekit Adapter Yahka zu integrieren.
      Welchen Yahka/Service muss man dafür nutzen

      posted in ioBroker Allgemein
      N
      noleck123
    • RE: Klingelsensor loggen

      Okay das mit dem Klingelbild habe ich auch aber das wird bei mir auf dem Tablet zuhause angezeigt. Deshalb wollte ich gern, wenn ich nach Hause komme eine Benachrichtigung .. Hallo schön das Du zuhause bist.. Es hat heute um 12:00 Uhr an der Tür geklingelt .. Es liegt Post im Briefkasten usw…

      posted in Skripten / Logik
      N
      noleck123
    • Klingelsensor loggen

      Hallo,

      ich würde gern meinen Klingelsensor loggen, also Aufzeichnen wann und um welche Uhrzeit geklingelt wurde.

      Die Informationen würde ich dann gern im Alexa Begrüßungscript benutzen..

      Hat vlt jemand eine Idee wie man das umsetzen könnte?

      posted in Skripten / Logik
      N
      noleck123
    • RE: [gelöst] Lichter zählen Script läuft nicht

      Hallo ich habe das Fenster / Zählen Script und das Lichter Zählen Script Installiert.. Funktioniert soweit ganz gut, nur wird die Eingeschaltete Lichter / Fenster Variable nicht richtig angezeigt bzw ausgewertet.. 2453_io.jpg

      /* Status Zahl Lichter
      
      zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
      Daten kommen vom Gewerk "licht"
      
      erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
      23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
      Log Ausgabe auskommentiert
      05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
      24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
      06.05.2016 Datenpunkt für Ansagen zugefügt
      02.07.2016 abgeschaltet, da Fehler
      03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
      search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
      27.11.2016 Verschoben in Status
      Code optimiert
      23.12.2016 Räume eingebaut
      */
      var logging = true;
      
      var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
      idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
      idText = 'javascript.0.Status.Lichter.Text',
      idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
      idAnsage = 'javascript.0.Status.Lichter.Ansage';
      
      // Ab hier nix mehr ändern
      createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
      type: 'number',
      name: 'Anzahl aller Lichter',
      min: 0,
      def: 0,
      role: 'value'
      });
      createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
      type: 'number',
      name: 'Anzahl der eingeschalteten Lichter',
      min: 0,
      def: 0,
      role: 'value'
      });
      createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
      type: 'string',
      name: 'Eingeschaltete Lichter',
      desc: 'Namen der eingeschalteten Lichter',
      def: ' ',
      role: 'value'
      });
      createState(idAnsage, {
      type: 'string',
      name: 'Eingeschaltete Lichter (Ansage)',
      desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
      def: ' ',
      role: 'value'
      });
      createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
      type: 'string',
      name: 'Räume mit eingeschalteten Lichter',
      desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
      def: ' ',
      role: 'value'
      });
      
      var cacheSelectorState = $('channel[state.id=*.STATE](functions="Licht")'); // Gewerk licht
      var cacheSelectorLevel = $('channel[state.id=*.level](functions="Licht")');
      var cacheSelectorPOWER = $('channel[state.id=*.POWER](functions="Licht")'); // Sonoff Lampen (müssen im Gewerk Licht sein)
      
      function checkDevices(obj) {
      // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0
      var anzahlLichterAn = 0;
      var anzahlLichter = 0;
      var textLichterAn = [];
      var textRaum = [];
      
      if (logging) {
      log('++++++ Lichter Anzahl ++++ ');
      log('#### SCHALTER ##### ');
      }
      cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
      var obj = getObject(id);
      var name = getObject(id).common.name;
      var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
      var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
      var raumname = getObject(id, "rooms"); // <---- NEU
      
      // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
      /*
      if (logging) {
      log('-------');
      log('Kanal: ' + name);
      log('Status: ' + status);
      }
      */
      
      if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
      ++anzahlLichterAn;
      textLichterAn.push(devicename); // Zu Array hinzufügen
      textRaum.push(raumname.enumNames); // <---- NEU
      }
      ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      // } // ENDE VK-Abfrage
      
      });
      
      if (logging) log('#### DIMMER ##### ');
      cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
      var obj = getObject(id);
      var name = getObject(id).common.name;
      var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
      var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
      var raumname = getObject(id, "rooms"); // <---- NEU
      
      // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
      /*
      if (logging) {
      log('-------');
      log('Kanal: ' + name);
      log('Status: ' + status + '%');
      }
      */
      
      if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
      ++anzahlLichterAn;
      textLichterAn.push(devicename); // Zu Array hinzufügen
      textRaum.push(raumname.enumNames); // <---- NEU
      }
      ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      // } // Ende Abfrage VK
      
      });
      
      if (logging) {
      log('++++++ Lichter Anzahl ++++ ');
      log('#### SCHALTER ##### ');
      }
      cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
      var obj = getObject(id);
      var name = getObject(id).common.name;
      var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
      var devicename = name.substring(0, name.indexOf("POWER")); //.state aus Text entfernen
      var raumname = getObject(id, "rooms"); // <---- NEU
      
      // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
      /*
      if (logging) {
      log('-------');
      log('Kanal: ' + name);
      log('Status: ' + status);
      }
      */
      
      if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
      ++anzahlLichterAn;
      textLichterAn.push(devicename); // Zu Array hinzufügen
      textRaum.push(raumname.enumNames); // <---- NEU
      }
      ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      // } // ENDE VK-Abfrage
      
      });
      
      // Array mit Lichternamen sortieren
      textLichterAn.sort();
      textRaum.sort(); // <---- NEU
      // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
      if (logging) log("Text: " + textLichterAn);
      if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
      // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
      setState(idText, textLichterAn.join(',
      ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
      setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
      setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
      // setState(idRaum, textRaum.join(',
      ')); // Räume, in denen Licht brennt // <---- NEU
      setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
      }
      
      // Trigger
      cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
      if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      checkDevices();
      });
      cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk licht
      if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      checkDevices();
      });
      cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
      if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      checkDevices();
      });
      function main() {
      setTimeout(function(){
      if (logging) log('Auslöser Skriptstart');
      checkDevices();
      }, 2000);
      }
      
      main(); // Skriptstart-Auslöser
      
      // Aufbereitung für Ansage
      function strip_tags(data) {
      var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
      return(rueckgabe);
      }
      
      on(idText, function (obj) {
      var text = obj.state.val;
      text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
      setState(idAnsage, text);
      });
      
      // Status Fenster. Das Script zählt alle Fenster im Gewerk Fenster (Aufzählungen-Funktion)
      // Telegramnachricht bei Abwesenheit wenn sich der Fensterstatus ändert. Bei Anwesenheit in der Homezone keine Nachricht senden.
      // Anwesenheit Datenpunkte separat erstellt und durch die Adapter google-sharedlocation und Places geschaltet
      
      var logging = true;
      
      var
      idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
      idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
      idText = 'javascript.0.Status.Fenster.Text',
      idRaum = 'javascript.0.Status.Fenster.Raum',
      idAnsage = 'javascript.0.Status.Fenster.Ansage';
      
      // Ab hier nix mehr ändern
      createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Fenster
      type: 'number',
      name: 'Anzahl aller Fenster',
      min: 0,
      def: 0,
      role: 'value'
      });
      createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
      type: 'number',
      name: 'Anzahl der geoeffneten Fenster',
      min: 0,
      def: 0,
      role: 'value'
      });
      createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen als Variable unter Javascript.0 anlegen
      type: 'string',
      name: 'geoeffnete Fenster',
      desc: 'Namen der geoeffneten Fenster',
      def: ' ',
      role: 'value'
      });
      createState(idAnsage, {
      type: 'string',
      name: 'geoeffnete Fenster (Ansage)',
      desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
      def: ' ',
      role: 'value'
      });
      createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
      type: 'string',
      name: 'Räume mit geoeffneten Fenster',
      desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
      def: ' ',
      role: 'value'
      });
      
      var cacheSelectorState = $('channel[state.id=*.STATE](functions="Fenster")'); // Gewerk Fenster
      
      function checkDevices(obj) {
      // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
      var anzahlFensterAuf = 0;
      var anzahlFenster = 0;
      var textFensterAuf = [];
      var textRaum = [];
      if (logging) {
      log('++++++ Fenster Anzahl ++++ ');
      log('#### SCHALTER ##### ');
      }
      cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
      var obj = getObject(id);
      var name = getObject(id).common.name;
      var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
      var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
      var raumname = getObject(id, "rooms");
      
      if (logging) {
      log('-------');
      log('Kanal: ' + name);
      log('Status: ' + status);
      }
      if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
      ++anzahlFensterAuf;
      textFensterAuf.push(devicename); // Zu Array hinzufügen
      textRaum.push(raumname.enumNames); //
      }
      ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
      });
      
      textRaum = deleteDuplicates(textRaum);
      
      // Array mit Fensternamen sortieren
      textFensterAuf.sort();
      textRaum.sort();
      // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
      if (logging) log("Text: " + textFensterAuf);
      if (logging) 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(idText, textFensterAuf.join(',\nund\n')); // Schreibt die aktuelle Namen der geoeffneten Fenster
      setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
      setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
      // setState(idRaum, textRaum.join(',
      ')); // Räume, in denen Fenster geoeffnet sind
      setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Fenster geoeffnet sind
      }
      
      // Trigger
      cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Fenster
      if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      checkDevices();
      });
      
      function main() {
      setTimeout(function() {
      if (logging) log('Auslöser Skriptstart');
      checkDevices();
      }, 2000);
      }
      
      main(); // Skriptstart-Auslöser
      
      // Aufbereitung für Ansage
      function strip_tags(data) {
      var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
      return (rueckgabe);
      }
      
      on(idText, function(obj) {
      var text = obj.state.val;
      text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
      setState(idAnsage, text);
      });
      
      // Bei Anwesenheit zu Hause keine Telegramnachricht---Bei Abwesenheit sendet Telegram eine Nachricht
      // on({id: 'javascript.0.Status.Fenster.Ansage', change: "ne"}, function (obj) {
      // var value = obj.state.val;
      // var oldValue = obj.oldState.val;
      // if (getState("javascript.0.Anwesenheit.Heiko.Home.Heiko_Home").val === false) {
      // sendTo("telegram", "send", {
      // text: getState("javascript.0.Status.Fenster.Ansage").val,
      // disable_notification: true // ohne Ton am Handy
      //});
      //}
      //});
      
      posted in Skripten / Logik
      N
      noleck123
    • RE: Skriptsammlung für den neuen ALEXA2.0 Adapter

      Hallo ich habe das Fenster / Zählen Script und das Lichter Zählen Script Installiert.. Funktioniert soweit ganz gut, nur wird die Eingeschaltete Lichter / Fenster Variable nicht richtig angezeigt bzw ausgewertet.. 2453_io.jpg

      ! /* Status Zahl Lichter
      ! zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
      ! Daten kommen vom Gewerk "licht"
      ! erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
      ! 23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
      ! Log Ausgabe auskommentiert
      ! 05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php … t=20#p9267
      ! 24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
      ! 06.05.2016 Datenpunkt für Ansagen zugefügt
      ! 02.07.2016 abgeschaltet, da Fehler
      ! 03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
      ! search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
      ! 27.11.2016 Verschoben in Status
      ! Code optimiert
      ! 23.12.2016 Räume eingebaut
      ! */
      ! var logging = true;
      ! var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
      ! idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
      ! idText = 'javascript.0.Status.Lichter.Text',
      ! idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
      ! idAnsage = 'javascript.0.Status.Lichter.Ansage';
      ! // Ab hier nix mehr ändern
      ! createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
      ! type: 'number',
      ! name: 'Anzahl aller Lichter',
      ! min: 0,
      ! def: 0,
      ! role: 'value'
      ! });
      ! createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
      ! type: 'number',
      ! name: 'Anzahl der eingeschalteten Lichter',
      ! min: 0,
      ! def: 0,
      ! role: 'value'
      ! });
      ! createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
      ! type: 'string',
      ! name: 'Eingeschaltete Lichter',
      ! desc: 'Namen der eingeschalteten Lichter',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! createState(idAnsage, {
      ! type: 'string',
      ! name: 'Eingeschaltete Lichter (Ansage)',
      ! desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
      ! type: 'string',
      ! name: 'Räume mit eingeschalteten Lichter',
      ! desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk licht
      ! var cacheSelectorLevel = $('channelstate.id=*.level');
      ! var cacheSelectorPOWER = $('channelstate.id=*.POWER'); // Sonoff Lampen (müssen im Gewerk Licht sein)
      ! function checkDevices(obj) {
      ! // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0
      ! var anzahlLichterAn = 0;
      ! var anzahlLichter = 0;
      ! var textLichterAn = [];
      ! var textRaum = [];
      ! if (logging) {
      ! log('++++++ Lichter Anzahl ++++ ');
      ! log('#### SCHALTER ##### ');
      ! }
      ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
      ! var obj = getObject(id);
      ! var name = getObject(id).common.name;
      ! var status = getState(id).val; // Zustand .STATE abfragen (jedes Element)
      ! var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
      ! var raumname = getObject(id, "rooms"); // <–-- NEU
      ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      ! // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
      ! /

      ! if (logging) {
      ! log('-------');
      ! log('Kanal: ' + name);
      ! log('Status: ' + status);
      ! }
      ! */
      ! if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
      ! ++anzahlLichterAn;
      ! textLichterAn.push(devicename); // Zu Array hinzufügen
      ! textRaum.push(raumname.enumNames); // <---- NEU
      ! }
      ! ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      ! // } // ENDE VK-Abfrage
      ! });
      ! if (logging) log('#### DIMMER ##### ');
      ! cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
      ! var obj = getObject(id);
      ! var name = getObject(id).common.name;
      ! var status = getState(id).val; // Zustand .LEVEL abfragen (jedes Element)
      ! var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
      ! var raumname = getObject(id, "rooms"); // <---- NEU
      ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      ! // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
      ! /

      ! if (logging) {
      ! log('-------');
      ! log('Kanal: ' + name);
      ! log('Status: ' + status + '%');
      ! }
      ! */
      ! if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
      ! ++anzahlLichterAn;
      ! textLichterAn.push(devicename); // Zu Array hinzufügen
      ! textRaum.push(raumname.enumNames); // <---- NEU
      ! }
      ! ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      ! // } // Ende Abfrage VK
      ! });
      ! if (logging) {
      ! log('++++++ Lichter Anzahl ++++ ');
      ! log('#### SCHALTER ##### ');
      ! }
      ! cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
      ! var obj = getObject(id);
      ! var name = getObject(id).common.name;
      ! var status = getState(id).val; // Zustand .STATE abfragen (jedes Element)
      ! var devicename = name.substring(0, name.indexOf("POWER")); //.state aus Text entfernen
      ! var raumname = getObject(id, "rooms"); // <---- NEU
      ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
      ! // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
      ! /

      ! if (logging) {
      ! log('-------');
      ! log('Kanal: ' + name);
      ! log('Status: ' + status);
      ! }
      ! */
      ! if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
      ! ++anzahlLichterAn;
      ! textLichterAn.push(devicename); // Zu Array hinzufügen
      ! textRaum.push(raumname.enumNames); // <---- NEU
      ! }
      ! ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
      ! // } // ENDE VK-Abfrage
      ! });
      ! // Array mit Lichternamen sortieren
      ! textLichterAn.sort();
      ! textRaum.sort(); // <---- NEU
      ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
      ! if (logging) log("Text: " + textLichterAn);
      ! if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
      ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
      ! setState(idText, textLichterAn.join(',
      ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
      ! setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
      ! setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
      ! // setState(idRaum, textRaum.join(',
      ')); // Räume, in denen Licht brennt // <---- NEU
      ! setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
      ! }
      ! // Trigger
      ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
      ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      ! checkDevices();
      ! });
      ! cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk licht
      ! if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      ! checkDevices();
      ! });
      ! cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
      ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      ! checkDevices();
      ! });
      ! function main() {
      ! setTimeout(function(){
      ! if (logging) log('Auslöser Skriptstart');
      ! checkDevices();
      ! }, 2000);
      ! }
      ! main(); // Skriptstart-Auslöser
      ! // Aufbereitung für Ansage
      ! function strip_tags(data) {
      ! var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
      ! return(rueckgabe);
      ! }
      ! on(idText, function (obj) {
      ! var text = obj.state.val;
      ! text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
      ! setState(idAnsage, text);
      ! });

      ! // Status Fenster. Das Script zählt alle Fenster im Gewerk Fenster (Aufzählungen-Funktion)
      ! // Telegramnachricht bei Abwesenheit wenn sich der Fensterstatus ändert. Bei Anwesenheit in der Homezone keine Nachricht senden.
      ! // Anwesenheit Datenpunkte separat erstellt und durch die Adapter google-sharedlocation und Places geschaltet
      ! var logging = true;
      ! var
      ! idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
      ! idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
      ! idText = 'javascript.0.Status.Fenster.Text',
      ! idRaum = 'javascript.0.Status.Fenster.Raum',
      ! idAnsage = 'javascript.0.Status.Fenster.Ansage';
      ! // Ab hier nix mehr ändern
      ! createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Fenster
      ! type: 'number',
      ! name: 'Anzahl aller Fenster',
      ! min: 0,
      ! def: 0,
      ! role: 'value'
      ! });
      ! createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
      ! type: 'number',
      ! name: 'Anzahl der geoeffneten Fenster',
      ! min: 0,
      ! def: 0,
      ! role: 'value'
      ! });
      ! createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen als Variable unter Javascript.0 anlegen
      ! type: 'string',
      ! name: 'geoeffnete Fenster',
      ! desc: 'Namen der geoeffneten Fenster',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! createState(idAnsage, {
      ! type: 'string',
      ! name: 'geoeffnete Fenster (Ansage)',
      ! desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
      ! type: 'string',
      ! name: 'Räume mit geoeffneten Fenster',
      ! desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
      ! def: ' ',
      ! role: 'value'
      ! });
      ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Fenster
      ! function checkDevices(obj) {
      ! // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
      ! var anzahlFensterAuf = 0;
      ! var anzahlFenster = 0;
      ! var textFensterAuf = [];
      ! var textRaum = [];
      ! if (logging) {
      ! log('++++++ Fenster Anzahl ++++ ');
      ! log('#### SCHALTER ##### ');
      ! }
      ! cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
      ! var obj = getObject(id);
      ! var name = getObject(id).common.name;
      ! var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
      ! var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
      ! var raumname = getObject(id, "rooms");
      ! if (logging) {
      ! log('–-----');
      ! log('Kanal: ' + name);
      ! log('Status: ' + status);
      ! }
      ! if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
      ! ++anzahlFensterAuf;
      ! textFensterAuf.push(devicename); // Zu Array hinzufügen
      ! textRaum.push(raumname.enumNames); //
      ! }
      ! ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
      ! });
      ! textRaum = deleteDuplicates(textRaum);
      ! // Array mit Fensternamen sortieren
      ! textFensterAuf.sort();
      ! textRaum.sort();
      ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
      ! if (logging) log("Text: " + textFensterAuf);
      ! if (logging) 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(idText, textFensterAuf.join(',\nund\n')); // Schreibt die aktuelle Namen der geoeffneten Fenster
      ! setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
      ! setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
      ! // setState(idRaum, textRaum.join(',
      ')); // Räume, in denen Fenster geoeffnet sind
      ! setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Fenster geoeffnet sind
      ! }
      ! // Trigger
      ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Fenster
      ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
      ! checkDevices();
      ! });
      ! function main() {
      ! setTimeout(function() {
      ! if (logging) log('Auslöser Skriptstart');
      ! checkDevices();
      ! }, 2000);
      ! }
      ! main(); // Skriptstart-Auslöser
      ! // Aufbereitung für Ansage
      ! function strip_tags(data) {
      ! var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
      ! return (rueckgabe);
      ! }
      ! on(idText, function(obj) {
      ! var text = obj.state.val;
      ! text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
      ! setState(idAnsage, text);
      ! });
      ! // Bei Anwesenheit zu Hause keine Telegramnachricht–-Bei Abwesenheit sendet Telegram eine Nachricht
      ! // on({id: 'javascript.0.Status.Fenster.Ansage', change: "ne"}, function (obj) {
      ! // var value = obj.state.val;
      ! // var oldValue = obj.oldState.val;
      ! // if (getState("javascript.0.Anwesenheit.Heiko.Home.Heiko_Home").val === false) {
      ! // sendTo("telegram", "send", {
      ! // text: getState("javascript.0.Status.Fenster.Ansage").val,
      ! // disable_notification: true // ohne Ton am Handy
      ! //});
      ! //}
      ! //});

      posted in Skripten / Logik
      N
      noleck123
    • RE: Amazon Dash Adapter

      ja daran liegt es nicht … Ich sitze quasi neben dem Router

      posted in Visualisierung
      N
      noleck123
    • RE: Amazon Dash Adapter

      ja dauert wirklich so lange .. Ich kann aber nicht nachvollziehen warum das so ist..

      posted in Visualisierung
      N
      noleck123
    • Amazon Dash Adapter

      Hallo, ich habe einen Amazon Dash Button installiert. Hat soweit alles funktioniert, wenn ich auf den Button drücke dann kommt das Signal im Iobroker erst nach 30 - 60 min an .. Hat vlt jemand eine Idee?

      posted in Visualisierung
      N
      noleck123
    • RE: IoBroker stürzt alle 20 Stunden ab

      Also ohne Radar funktioniert es einwandfrei… Ich habe heute mal so ein Amazon Dash button installiert .. wurde erkannt (nach xxx Minuten) und wenn ich damit was steuern möchte (script) dauert es ewig bis der Befehl ankommt im Iobroker... so ist es auch bei Systemvariablen von Homematic .. alles dauert sehr lang .. Warum ist das so ?

      posted in ioBroker Allgemein
      N
      noleck123
    • RE: IoBroker stürzt alle 20 Stunden ab

      Hy ,, ich habe den Radar Adapter mal abgeschalten.. bis jetzt lief der Iobrocker 25h 🙂 .. leider steht nicht mehr im log .. bzw geht der Syslog nur bis 09:04 …

      aber warum soll der Radar Adpater den Iobroker lahm legen ?

      posted in ioBroker Allgemein
      N
      noleck123
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo