Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [erledigt] Javascript Erklärung erbeten (Codeschnipsel aus Lüftungsempfehlungsskript)

    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

    [erledigt] Javascript Erklärung erbeten (Codeschnipsel aus Lüftungsempfehlungsskript)

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

      Hallo zusammen,

      aus dem tollen Lüftungsskript stammt dieser Extrakt, den ich nicht vollständig durchdringe:

      // finde anhand der Sensor ID einen zugeordneten Raum
      
          function findRoom(sensor) {
              for (var raum in raeume) {
                  if (raeume[raum].Ist_TEMP == sensor) return raum;
                  if(debug) log("Ist Temperatur Raum "+raum +"geändert");
      
              }
              return null;
          }
      
      // Änderung triggered
      
          function valChange(obj) {
              var raumname = findRoom(obj.id);
      
              if (raumname) {
              if(debug) log('**Änderung:' + raumname + ": " + obj.id + ": " + obj.state.val + '**');
                  calcDelayed(raumname, delayRooms);
              }
          }
      
      

      Mein Verständnis bislang ist:

      Die Funktion "findRooms" iteriert durch die Properties des Objekts "raeume" und gibt so den Raumnamen aus, wenn er "Ist_Temp" des "sensors" gefunden hat.

      Der "sensor" wiederum wird aus der Triggerfunktion heraus bestimmt? hier: = findRoom(obj.id); korrekt?

      über= findRoom(obj.id); wirdfunction findRoom(sensor)quasi zu````
      function findRoom(obj.id aus valChange)

      
      Was ich absolut nicht verstehe: wie begreift die valChange Funktion, welches obj sich denn da ändert? In meinem Anfängerverständnis bin ich noch nicht über trigger die direkt zugewiesen sind oder auch über Array Trigger hinausgekommen. Woher "weiß" die valChange Funktion, was (obj) ist?
      
      Danke für eine Erklärung, ich beiße mir die Zähne aus. Irgendwie hakts im Kopf
      1 Reply Last reply Reply Quote 0
      • T
        tempestas last edited by

        Verzeihung, da fehlte noch etwas. Ich glaube, nun begreife ich es.

        Das Skript ist einfach so lang, da habe ich es wohl übersehen. Drauf gekommen, dass man das so machen kann wäre ich aber nie :shock:

        // Subscriptions für alle Räume anlegen; ohne dies wird nichts getriggerd
        function createOn() {
            var dpId    = "";
            var i = 0;
            log("Subscription Funktion gestartet");
        
            for (var raum in raeume) {
        
                if (raeume[raum].Ist_TEMP) {
                    dpId = raeume[raum].Ist_TEMP;
                    i++;
                    on({id: dpId ,change:'ne'}, function (obj) {
                        valChange(obj);
                    });
                   if(debug) log("on: " + dpId + " angelegt.");
                }
                /*if (raeume[raum].TEMP_SOLL) {
                    dpId = raeume[raum].TEMP_SOLL;
                    i++;
                    on({id: dpId ,change:'ne'}, function (obj) {
                        valChange(obj);
                    });
                   if(debug) log("on: " + dpId + " angelegt.");
                } */       
            } 
            log("Subscriptions angelegt: " + i);
        }
        
        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Die Funktion valChange wird ja von irgendwo aufgerufen, dabei bekommt sie ein Objekt mitgeteilt. Welches wiederum als obj innerhalb der Funktion zur Verfügung steht.

          Damit ruft sie wiederum die Funktion findRoom auf und bekommt den Raumnamen zurück geliefert.

          1 Reply Last reply Reply Quote 0
          • T
            tempestas last edited by

            Danke, ich setze mal auf gelöst. Habe den entscheidenden Teil gerade gefunden und bewundere nun die Eleganz der Programmierung.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            805
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            2
            4
            293
            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