Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Dynamisch erstellte Variablen.

    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

    Dynamisch erstellte Variablen.

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @Homoran last edited by

      @homoran sagte in Dynamisch erstellte Variablen.:

      Idee gehört hier in den Thread

      Das könnte man aber doch mal zu Ende bringen.

      1 Reply Last reply Reply Quote 1
      • Homoran
        Homoran Global Moderator Administrators @Armilar last edited by

        @armilar sagte in Dynamisch erstellte Variablen.:

        @homoran sagte in Dynamisch erstellte Variablen.:

        Die Kernfrage ist erst einmal kann ich prinzipiell so Variablen erstellen

        Natürlich nicht... Aber du kannst jederzeit einer Variable ein Objekt unterjubeln...

        Der Titel ist definitiv nicht sinnvoll benannt, auch wenn es ein langersehnter Wunsch von dir ist 😂

        Danke!
        Auch wenn es nicht das ist was ich hören wollte. Immerhin erklärt es warum ich vergeblich versucht hatte "mein" Thema darin zu finden.

        Mit einer dynamisch benannten Variable hätte ich mich nur einfacher getan. Ich weiß ja nicht einmal wie man ein Objekt unterjubelt, geschweige denn wie ich relativ einfach prüfe in welche Variable ich schreiben müsste.

        Danke!

        Armilar 1 Reply Last reply Reply Quote 1
        • Armilar
          Armilar Most Active Forum Testing @Homoran last edited by Armilar

          @homoran

          Sehr gerne.

          Daher war mein Anliegen in diesem Topic ja auch, die Anforderungen zu finden um eine

          Ich würde dir gerne bei einer "Lösung" helfen, die wahrscheinlich komplett anders aussieht. Dazu brauchen wir aber die komplette Anforderung an die Lösung. Nicht das Problem...

          Lösung zu denken, die funktioniert 😉

          Edit: Evtl. Code der sich selbst schreibt, aber ich denke das geht jetzt doch etwas zu weit 😂

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Homoran last edited by paul53

            @homoran sagte: Die Kernfrage ist erst einmal kann ich prinzipiell so Variablen erstellen (und nach Benutzung wieder löschen)?

            Nein. Ausweg: Array mit Objekten

            const obj = {Flugnummer: 'LH123', weitere_Attribute: 'abc'}
            

            Dann in einer Schleife die Objekte einlesen und die Flugnummer vergleichen.

            Homoran Codierknecht 2 Replies Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @paul53 last edited by Homoran

              @paul53 sagte:

              @homoran sagte: Die Kernfrage ist erst einmal kann ich prinzipiell so Variablen erstellen (und nach Benutzung wieder löschen)?

              Nein. Ausweg: Array mit Objekten

              const obj = {Flugnummer: 'LH123', weitere_Attribute: 'abc'}
              

              Dann in einer Schleife die Objekte einlesen und die Flugnummer vergleichen.

              und genau solche komplexen Konstrukte wollte ich umgehen!

              weil:
              ich will es selber schaffen!
              ich weiß dass du immer gerne hilfst! Aber du hast keine Ahnung wie es mich ärgert dass ich es nicht (mehr) selber kann.

              Schleifen kommen noch genug.
              Dein Versuch mit dem speichern im Datenpunkt hatte nicht zuverlässig geklappt, daher muss alles über Variablen laufen und erst zum Schluss geschrieben werden.

              Im Moment habe ich den Beobachtunggsrahnen so klein wie möglich gestellt. Was aber andere "Probleme" mit sich bringt.

              Das sollten wir dann aber wieder im alten Thread fortsetzen

              ich würde diesen Teil dann rüberschieben.

              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @paul53 last edited by

                @paul53
                Nur mal so interessehalber, da ich ja von JS noch nicht so wirklich Plan habe:
                Die "Objekte" von denen ihr hier sprecht ... kann ich die mit recordoder struct vergleichen?
                Für ein lebendes "Objekt" fehlt mir hier igendwie die Instanziierung.

                Oder bin ich da (mal wieder) komplett auf dem Holzweg?

                Armilar paul53 2 Replies Last reply Reply Quote 0
                • OliverIO
                  OliverIO @Homoran last edited by OliverIO

                  @homoran sagte in Dynamisch erstellte Variablen.:

                  Die Kernfrage ist erst einmal kann ich prinzipiell so Variablen erstellen (und nach Benutzung wieder löschen)?

                  ja klar

                  var flights={}; //initialisieren der Hauptvariable, die alles enthält
                  var flightnumber1="ab1234"; //schlüssel1
                  var flightnumber2="cd5678";  //schlüssel2
                  //zuweisen von daten
                  flights[flightnumber1]="Meine Informationen 1"; // dies können einfache skalare Daten sein, aber auch wieder ein array oder ein Objekt. Eine Verschachtelung kann beliebig tief erfolgen
                  flights[flightnumber2]={name: "Ich bin ein Objekt"};
                  console.log(flights);  //ausgabe der daten auf der console zum prüfen
                  //löschen der daten
                  delete flights[flightnumber1];  //löschen der daten mit dem schlüssel flugnummer1
                  console.log(flights);
                  
                  

                  die flugnummer müssen eindeutig sein, da man ansonsten die alten daten wieder überschreiben würde.

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                    @oliverio neee,

                    Danke, aber nicht so rum.
                    der Variablenname soll dynamisch sein, also statt Flugnummer1 -> varRYR123
                    und der sollen dann die Liste mit den JSON (timestamp, flugnummer, lat, long, height) zu dem Flug zugeordnet werden.

                    die Variable wird eine Lebensdauer von wenigen Minuten (Überflugzeit) haben.

                    Deine Variante mit 2-3 vordefinierten Variablen hatte ichvauch schon überlegt, alletdings keine Ahnung, wie ich diese blocken kann während sie in Nutzung ist um so lange #2 oder #3 zu nutzen (rollierend)

                    efit: hast du was geändert?

                    Codierknecht OliverIO 2 Replies Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @Homoran last edited by

                      @homoran
                      In anderen Sprachen würde ich dafür eine Collection nehmen.
                      Aber in JS stehe ich mindestens genau so auf dem Schlauch wie Du 😉

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • Armilar
                        Armilar Most Active Forum Testing @Codierknecht last edited by

                        @codierknecht sagte in Dynamisch erstellte Variablen.:

                        kann ich die mit recordoder struct vergleichen?

                        Records und Tuples, wenn @Homoran denn mindestens eine Variable zuässt 😉

                        let myRecord = #{ a: 1, b: 2, c: 2};
                        let recordKeys = Object.keys(myRecord); // Returns ['a', 'b', 'c'];
                        
                        let myTuple = #[1, 2, 3, 4, 5];
                        for(const i of myTuple) {
                            console.log(i);
                        }
                        
                        1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @Homoran last edited by

                          @homoran
                          und woher kommt die information wie die flugnummer genau lautet? die musst du ja in eine variable speichern, die dann weiterverwendet wird.
                          die beiden flugnummern habe ich nur beispielhaft vordefiniert, damit es klarer wird.
                          wenn du wiederverwendbaren code hast, dann hast du da nur eine variable

                          hier ein bisschen besser strukturierter code

                          var flights={}; //initialisieren der Hauptvariable, die alles enthält
                          addData("ab1234","Meine Informationen 1");
                          addData("cd5678",{name: "Ich bin ein Objekt"});
                          console.log(flights);
                          deleteData("ab1234");
                          console.log(flights);
                          
                          function addData(flightnumber,data) {
                              flights[flightnumber] = data;
                          }
                          function deleteData(flightnumber) {
                              delete flights[flightnumber];
                          }
                          
                          
                          Homoran 1 Reply Last reply Reply Quote 1
                          • paul53
                            paul53 @Codierknecht last edited by

                            @codierknecht sagte: Die "Objekte" von denen ihr hier sprecht ... kann ich die mit record oder struct vergleichen?

                            Ja.

                            1 Reply Last reply Reply Quote 1
                            • Homoran
                              Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                              @oliverio sagte in Dynamisch erstellte Variablen.:

                              und woher kommt die information wie die flugnummer genau lautet? d

                              die sendet mir der Flieger über Funk zu 🙂

                              { "now" : 1668369287.4, "messages" : 4842861, "aircraft" : [ {"hex":"406b0a","mlat":[],"tisb":[],"messages":9,"seen":13.0,"rssi":-26.7}, {"hex":"3c49ee","flight":"CFG069 ","alt_baro":9075,"alt_geom":9375,"gs":307.0,"ias":250,"tas":286,"mach":0.444,"track":259.7,"track_rate":0.00,"roll":0.7,"mag_heading":257.2,"baro_rate":-1568,"geom_rate":-1600,"squawk":"1000","nav_qnh":1013.3,"nav_altitude_mcp":7008,"lat":51.176225,"lon":7.089844,"nic":6,"rc":926,"seen_pos":2.2,"version":0,"nac_p":6,"nac_v":0,"sil":2,"sil_type":"unknown","mlat":[],"tisb":[],"messages":155,"seen":0.1,"rssi":-24.7}, {"hex":"44006c","flight":"AUA3SV ","alt_baro":31575,"alt_geom":32575,"gs":433.0,"ias":291,"tas":466,"mach":0.792,"track":124.9,"track_rate":0.00,"roll":0.0,"mag_heading":122.5,"baro_rate":1216,"geom_rate":1184,"squawk":"1000","category":"A3","nav_qnh":1012.8,"nav_altitude_mcp":35008,"lat":51.361771,"lon":7.286979,"nic":8,"rc":186,"seen_pos":16.6,"version":2,"nic_baro":1,"nac_p":9,"nac_v":1,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":1705,"seen":12.9,"rssi":-26.0}, {"hex":"3c4d68","flight":"DLH2MT ","alt_baro":34200,"alt_geom":35250,"gs":425.0,"ias":275,"tas":462,"mach":0.792,"track":135.7,"track_rate":0.00,"roll":0.2,"mag_heading":132.9,"baro_rate":736,"geom_rate":832,"squawk":"1000","category":"A3","nav_qnh":1012.8,"nav_altitude_mcp":36992,"nav_heading":132.2,"lat":51.045319,"lon":7.311773,"nic":8,"rc":186,"seen_pos":0.4,"version":2,"nic_baro":1,"nac_p":9,"nac_v":1,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":1170,"seen":0.0,"rssi":-21.1}, {"hex":"4ca27f","version":0,"sil_type":"unknown","mlat":[],"tisb":[],"messages":48,"seen":129.3,"rssi":-26.8}, {"hex":"4aca69","flight":"SAS51B ","alt_baro":35000,"alt_geom":36025,"gs":438.2,"ias":265,"tas":452,"mach":0.780,"track":40.7,"track_rate":0.03,"roll":-0.2,"mag_heading":46.1,"baro_rate":-64,"geom_rate":-64,"squawk":"5515","emergency":"none","category":"A3","nav_qnh":1013.6,"nav_altitude_mcp":35008,"nav_altitude_fms":35008,"nav_modes":["autopilot","vnav","tcas"],"lat":51.066036,"lon":6.481018,"nic":8,"rc":186,"seen_pos":2.2,"version":2,"nic_baro":1,"nac_p":10,"nac_v":2,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":3819,"seen":0.5,"rssi":-24.9}, {"hex":"89610a","category":"A5","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":382,"seen":49.8,"rssi":-26.6}, {"hex":"4cad39","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":705,"seen":111.8,"rssi":-27.0}, {"hex":"4d22e7","mlat":[],"tisb":[],"messages":28,"seen":212.1,"rssi":-28.3}, {"hex":"44034b","alt_baro":38025,"ias":247,"mach":0.780,"mag_heading":333.8,"baro_rate":128,"geom_rate":160,"version":0,"nac_p":8,"sil":2,"sil_type":"unknown","mlat":[],"tisb":[],"messages":82,"seen":0.1,"rssi":-26.8}, {"hex":"407cd4","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":631,"seen":193.6,"rssi":-26.6}, {"hex":"3c65d9","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":826,"seen":106.4,"rssi":-26.7}, {"hex":"4a0661","version":0,"sil_type":"unknown","mlat":[],"tisb":[],"messages":220,"seen":263.1,"rssi":-27.5}, {"hex":"4072ea","version":0,"sil_type":"unknown","mlat":[],"tisb":[],"messages":74,"seen":107.2,"rssi":-26.4}, {"hex":"4b1807","flight":"SWR70T ","alt_baro":35000,"alt_geom":36000,"gs":423.3,"ias":268,"tas":456,"mach":0.788,"track":149.3,"track_rate":0.00,"roll":-0.7,"mag_heading":143.1,"baro_rate":32,"geom_rate":-64,"squawk":"1000","category":"A3","nav_qnh":1012.8,"nav_altitude_mcp":35008,"nav_heading":143.4,"lat":50.553030,"lon":7.289800,"nic":8,"rc":186,"seen_pos":0.3,"version":2,"nic_baro":1,"nac_p":11,"nac_v":1,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":4456,"seen":0.0,"rssi":-23.0}, {"hex":"3964ec","flight":"TVF7449 ","alt_baro":38000,"alt_geom":38950,"gs":459.3,"ias":247,"tas":444,"mach":0.780,"track":218.2,"track_rate":0.00,"roll":-0.4,"mag_heading":211.3,"baro_rate":0,"geom_rate":0,"squawk":"3527","category":"A3","nav_qnh":1013.6,"nav_altitude_mcp":36992,"nav_altitude_fms":38000,"nav_heading":210.9,"lat":50.559586,"lon":6.376696,"nic":8,"rc":186,"seen_pos":12.8,"version":2,"nic_baro":1,"nac_p":9,"nac_v":1,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":6761,"seen":10.5,"rssi":-26.2}, {"hex":"471fa2","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":279,"seen":51.8,"rssi":-27.2}, {"hex":"471f6c","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1540,"seen":201.5,"rssi":-26.6}, {"hex":"47c1f7","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":5932,"seen":83.6,"rssi":-25.8}, {"hex":"3c5ee1","alt_baro":14525,"alt_geom":15575,"gs":339.1,"track":150.1,"baro_rate":-960,"squawk":"3417","category":"A3","nav_qnh":1012.8,"nav_altitude_mcp":10016,"lat":50.638081,"lon":7.644332,"nic":8,"rc":186,"seen_pos":43.4,"version":2,"nic_baro":1,"nac_p":9,"nac_v":1,"sil":3,"sil_type":"perhour","mlat":[],"tisb":[],"messages":4361,"seen":10.3,"rssi":-26.9}, {"hex":"c027d1","flight":"ACA7211 ","alt_baro":30000,"alt_geom":30850,"gs":502.5,"ias":296,"tas":462,"mach":0.780,"track":292.0,"track_rate":0.00,"roll":-0.2,"mag_heading":290.7,"baro_rate":0,"geom_rate":0,"squawk":"2501","emergency":"none","category":"A5","nav_qnh":1013.6,"nav_altitude_mcp":30016,"nav_altitude_fms":30000,"nav_heading":291.1,"lat":51.033263,"lon":6.121445,"nic":8,"rc":186,"seen_pos":33.7,"version":2,"nic_baro":1,"nac_p":11,"nac_v":2,"sil":3,"sil_type":"perhour","gva":2,"sda":2,"mlat":[],"tisb":[],"messages":8930,"seen":0.9,"rssi":-26.5}, {"hex":"06a2e2","category":"A5","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1410,"seen":237.1,"rssi":-25.1}, {"hex":"471f51","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1032,"seen":287.4,"rssi":-22.6}, {"hex":"3c55c3","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1134,"seen":276.4,"rssi":-26.6}, {"hex":"471f96","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":3065,"seen":295.1,"rssi":-26.2}, {"hex":"400942","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1542,"seen":174.5,"rssi":-26.0}, {"hex":"4ca569","category":"A3","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":1605,"seen":126.2,"rssi":-26.5}, {"hex":"a826e9","category":"A5","version":2,"sil_type":"perhour","mlat":[],"tisb":[],"messages":3619,"seen":162.4,"rssi":-24.2} ] } 
                              

                              daraus extrahiere und berechne ich

                               },
                                {
                                  "Kennung": "BPO140  ",
                                  "Hoehe": 419,
                                  "Bodenabstand": 4397,
                                  "Entfernung": 4417,
                                  "Position": "50.xyz44,7.abc498"
                                },
                              
                              OliverIO 1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @Codierknecht last edited by

                                @codierknecht sagte in Dynamisch erstellte Variablen.:

                                In anderen Sprachen würde ich dafür eine Collection nehmen.

                                collection entspricht in js einem set
                                https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set?retiredLocale=de

                                1 Reply Last reply Reply Quote 1
                                • OliverIO
                                  OliverIO @Homoran last edited by

                                  @homoran sagte in Dynamisch erstellte Variablen.:

                                  {                                                                                                                                                                                "Kennung": "BPO140  ",                                                                                                                                                                                "Hoehe": 419,                                                                                                                                                                                "Bodenabstand": 4397,                                                                                                                                                                                "Entfernung": 4417,                                                                                                                                                                                "Position": "50.xyz44,7.abc498"                                                                                                                                                                              },
                                  

                                  ja, da liest man dann die kennung aus für den schlüssel und speichert genau das abgebildete wie oben gezeigt dem flights zu.
                                  dem ausschnitt nach sieht es so aus das es aus einem array of objects stammt.
                                  willst du die dann der reihe nach abarbeiten?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                                    @oliverio im Moment bekomme ich alle 10 Sekunden einen Datensatz (ggf. zwei oder drei, wenn sich z.b. noch so ein Polizeihubschrauber im Auswahlbereich befindet).
                                    diese logge und konseviere ich. Ist aber zu viel.
                                    Screenshot_20221113-211711_Firefox.jpg
                                    daher möchte ich nur den Datensatz (je Flug) in den DP schreiben, bei dem sich der Flieger am dichtesten bei mir befindet. um Flugnumner, Höhe und Timestamp zu dokumentieren.
                                    dafür schreibe ich (wollte ich schreiben) diese Datensätze in ein Array je Flug.
                                    Das kann dann nach der Auswertung verworfen werden.

                                    so mein Plan.

                                    OliverIO 1 Reply Last reply Reply Quote 1
                                    • OliverIO
                                      OliverIO @Homoran last edited by

                                      @homoran
                                      kannst du auch machen.
                                      der direktzugriff auf einen bestimmten datensatz
                                      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

                                      oder
                                      das entfernen eines bestimmten datensatzes ist dann ein wenig aufwändiger
                                      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice?retiredLocale=de

                                      Homoran 1 Reply Last reply Reply Quote 1
                                      • Homoran
                                        Homoran Global Moderator Administrators @OliverIO last edited by

                                        @oliverio danke! das sehe ich mir morgen mal an

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          ptr @OliverIO last edited by

                                          @oliverio @Armilar
                                          so, habe das Problem jetzt nochmal als übersichtliches Skript zusammengestellt. Das Skript funktioniert, puh.
                                          Die Vielzahl der "var"s bitte ignorieren, werden aktuell noch nicht verwendet.

                                          Die Frage ist nun: Ich habe 4 Lautsprecher mit denen das gleiche passieren soll (nur mit anderen Timerwerten, Lautstärkewerten).
                                          So wie das Skript das jetzt transparent macht. Wie kann ich das elegant zusammenfassen? Der Zweck ist: jede case-Ausführung wird noch deutlich länger werden. Da wird der Code dann sehr unübersichtlich wenn ich immer alles bei jedem case hinschreiben muss - wenn es ja eh gleich ist.
                                          sobald ich alles aus den cases per function rausziehe, klappt es nichtmehr. Wenn das hilft, kann ich das natürlich auch nochmal schicken.
                                          So das mal der Zwischenstand.

                                          var trigger, elemente_von_trigger, trig_raum, trig_raum_timer1, raum_timer_definition, trig_lautsprecher_pfad, trig_lautsprecher_volume_aktueller_wert, timeout, timeout2, timeout3, timeout4, trig_lautsprecher_volume, volume_standard;
                                          
                                          
                                          on({id: [].concat(Array.prototype.slice.apply($("channel[state.id=alias.0.*.Lautsprecher1.state]"))), change: "ne", ack: true}, async function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            console.log(obj.id);
                                          
                                            switch (obj.id) {
                                            	case 'alias.0.OG.Yunes_Zimmer.Lautsprecher1.state':
                                              if ((obj.state ? obj.state.val : "") == 'play') {
                                                setStateDelayed('alias.0.OG.Yunes_Zimmer.Lautsprecher1.volume', 14, false, parseInt(((0) || "").toString(), 10), true);
                                                (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
                                                timeout = setTimeout(async function () {
                                                  setStateDelayed(obj.id, 'stop', false, parseInt(((0) || "").toString(), 10), true);
                                                }, 1800000);
                                              }
                                          
                                            		break;
                                            	case 'alias.0.OG.Minas_Zimmer.Lautsprecher1.state':
                                              if ((obj.state ? obj.state.val : "") == 'play') {
                                                setStateDelayed('alias.0.OG.Minas_Zimmer.Lautsprecher1.volume', 14, false, parseInt(((0) || "").toString(), 10), true);
                                                (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})();
                                                timeout2 = setTimeout(async function () {
                                                  setStateDelayed(obj.id, 'stop', false, parseInt(((0) || "").toString(), 10), true);
                                                }, 1800000);
                                              }
                                          
                                            		break;
                                            	case 'alias.0.KG.Hobbyraum.Lautsprecher1.state':
                                              if ((obj.state ? obj.state.val : "") == 'play') {
                                                setStateDelayed('alias.0.KG.Hobbyraum.Lautsprecher1.volume', 14, false, parseInt(((0) || "").toString(), 10), true);
                                                (function () {if (timeout3) {clearTimeout(timeout3); timeout3 = null;}})();
                                                timeout3 = setTimeout(async function () {
                                                  setStateDelayed(obj.id, 'stop', false, parseInt(((0) || "").toString(), 10), true);
                                                }, 14400000);
                                              }
                                          
                                            		break;
                                            	case 'alias.0.EG.Wohnzimmer.Lautsprecher1.state':
                                              if ((obj.state ? obj.state.val : "") == 'play') {
                                                setStateDelayed('alias.0.EG.Wohnzimmer.Lautsprecher1.volume', 14, false, parseInt(((0) || "").toString(), 10), true);
                                                (function () {if (timeout4) {clearTimeout(timeout4); timeout4 = null;}})();
                                                timeout4 = setTimeout(async function () {
                                                  setStateDelayed(obj.id, 'stop', false, parseInt(((0) || "").toString(), 10), true);
                                                }, 14400000);
                                              }
                                          
                                            		break;
                                            }
                                          });
                                          
                                          Codierknecht OliverIO 2 Replies Last reply Reply Quote 0
                                          • Codierknecht
                                            Codierknecht Developer Most Active @ptr last edited by Codierknecht

                                            @ptr
                                            Grundregel: Don't repeat yourself!
                                            Alles was sich immer wieder wiederholt (copy & paste) ist ein Kandidat für das Auslagern in eine Funktion.

                                            Hab' gerade gesehen, dass Du da mit verschiedenen Timern arbeitest.
                                            Muss ich mir mal genauer anschauen ...

                                            P.S.: Ich will ja nicht meckern, aber bei der Einrückung kann man den Code fast nicht lesen 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            598
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            43
                                            1932
                                            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