Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Script zum Auflisten was ist online

    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

    Script zum Auflisten was ist online

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

      Moin Leute
      Ich möchte ein Script erstellen mit welchem ich feststellen kann welche Lampen an sind, bzw welche Geräte sind on. Diesen Zustand möchte ich dann per Telegram abfragen.
      Gibt es irgendwelche Beispielscripts zum auslesen was gerade ein oder aus ist?
      Ich habe keinen Plan......😲

      Danke euch

      crunchip 1 Reply Last reply Reply Quote 0
      • crunchip
        crunchip Forum Testing Most Active @albi_63 last edited by

        @albi_63 es gibt hier im Forum einige Tabellen Scripte
        hier z.b. https://forum.iobroker.net/topic/28953/sonoff-geräte-als-html-tabelle-vis-iqontrol

        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by

          anbei mal ein Script für Heizung:

          /* Status Zahl Heizung
          
          zählt die Heizung in allen Räumen und meldet die Eingeschalteten namentlich
          Daten kommen vom Gewerk "Heizung"
          
          23.12.2016 Vorlage von "pix" - geändert von bahnuhr auf Heizung
          */
          var logging = false;
          
          var idAnzahlEin = 'javascript.0.System.Zusammenfassung.Heizung.Anzahl_ein',
             idAnzahl =    'javascript.0.System.Zusammenfassung.Heizung.Anzahl',
             idRaum =      'javascript.0.System.Zusammenfassung.Heizung.Raum';
          
          var cacheSelectorLevel = $('channel[state.id=*.VALVE_STATE](functions="Heizung")'); // Gewerk Heizung
          
          function checkDevices(obj) {
              // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Heizung auf 0
             var anzahlHeizungAn = 0;
             var anzahlHeizung = 0;
             var textRaum = [];
             if (logging) log('++++++ Heizung Anzahl ++++ ');
             cacheSelectorLevel.each(function (id, i) {                     // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                 var obj = getObject(id);
                 var status = getState(id).val;                              // Zustand *.LEVEL abfragen (jedes Element)
                 var raumname = getObject(id, "rooms");
                 
                     if (logging) {
                         log('-------');
                         log('Kanal: ' + name);
                         log('Status: ' + status + '%'); 
                     }
                     if (parseFloat(status) > 0) {                               // Wenn Dimmwert über 0
                         ++anzahlHeizungAn;    
                         textRaum.push(raumname.enumNames);  
                     }
                     ++anzahlHeizung;                                            // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
             });   
           
          
           // Funktion: Doppelte Einträge aus Array entfernen (für Räume) www.okco.de (c) codemaster
          function deleteDuplicates(arr) { 
             var temp = {}; 
             for (var i = 0; i < arr.length; i++) temp[arr[i]] = true; 
             var r = []; 
             for (var k in temp) r.push(k); 
             return r;
          }
          
             // Array mit Lichternamen sortieren
             textRaum = deleteDuplicates(textRaum);
             textRaum.sort();
             // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
             if (logging) log("Anzahl Heizung: " + anzahlHeizung + " # davon Heizung an: " + anzahlHeizungAn);
             // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
             setState(idAnzahlEin, anzahlHeizungAn);
             setState(idAnzahl, anzahlHeizung);                 // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
             setState(idRaum, textRaum.join(', '));         // Räume, in denen Heizung an ist
          }
          
          // Trigger
          cacheSelectorLevel.on(function(obj) {    // bei Zustandänderung *.LEVEL im Gewerk Licht
            if (logging) log('Auslösende Heizung: ' + 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
          
          
          

          sowie ein Script für telegram:

                 var cacheSelectorLevel = $('channel[state.id=*.SET_TEMPERATURE](functions="Heizung")');
                 var atext = [];
                 vText= "";
          
                 cacheSelectorLevel.each(function (id, i) { 
                     var name = getObject(id).common.name;
                     var devicename = name.substring(0, name.indexOf(".SET_TEMPERATURE")); //.set_temperature aus Text entfernen
                     var hm = id.substring(0, id.indexOf(".SET_TEMPERATURE"));   // Variablenname
                     var Temp_soll = getState(id).val;     
                     var Temp_akt =  getState(hm+ '.ACTUAL_TEMPERATURE').val;
                     vText = devicename + '; --> ' + Temp_soll + '°C; ' + Temp_akt + '°C';
                     vText = vText.replace(/Heizung: /g, '');      
                     atext.push(vText);  
                 });
                 atext.sort();
                 vText = "Heizung:       Temperatur: Soll; Ist" + "\n--------------------------------------------------------" + "\n";
                 for (x=0; x < atext.length; x=x+1){
                     vText = vText + atext[x] + '\n';
                 }
                 sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
          
          

          Auch solltest du die Suche nach "cachselector" benutzen.
          Es gibt hier zahlreiche Scripte die dies umsetzen.

          mfg

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

          Support us

          ioBroker
          Community Adapters
          Donate
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          850
          Online

          31.9k
          Users

          80.2k
          Topics

          1.3m
          Posts

          blockly javascript
          3
          3
          330
          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