Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Erledigt] Skript Lichtzählen [..] angezeigt

    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] Skript Lichtzählen [..] angezeigt

    This topic has been deleted. Only users with topic management privileges can see it.
    • maloross
      maloross @Tictactoo last edited by

      @Tictactoo sagte in Skript Lichtzählen: Räume werden nicht angezeigt:

      Du könnntest btw auch die substring Methode durch ".replace(".STATE", "")"

      Danke für den Hinweis, damit ist Punkt 2 erledigt, denn alle Gerätenamen werden nun korrekt angezeigt.

      @CruziX Bin im Skripting noch in den Anfängen und lerne per trial and error. Habe es mit der von dir vorgeschlagenen Änderung versucht, aber ohne Erfolg.

      C 1 Reply Last reply Reply Quote 0
      • C
        CruziX @maloross last edited by CruziX

        @maloross Ja, bin da auch noch Anfänger, daher ist es schwierig wenn man nicht selbst rumprobieren kann 🙂
        Kannst du mal mit einem log prüfen ob aus raumArray[0] das korrekte ausgelesen wird?

        maloross 1 Reply Last reply Reply Quote 0
        • maloross
          maloross @CruziX last edited by maloross

          @CruziX sagte

          @maloross Ja, bin da auch noch Anfänger, daher ist es schwierig wenn man nicht selbst rumprobieren kann 🙂
          Kannst du mal mit einem log prüfen ob aus raumArray[0] das korrekte ausgelesen wird?

          Nein kommt ein Fehler.

          von meiner Logik her ist es doch so, dass Gerätename und Raumname innerhalb der Schleife in gleicher Weise abgerufen werden sollten

          var devicename = name.replace(".state", "");
          var raumname = getObject(id, "rooms"); 
          
          if (status) {
                      ++anzahlLichterAn;
                      textLichterAn.push(devicename);
                      textRaum.push(raumname);
                  }
                  ++anzahlLichter;
              });
          

          Wobei die Variable devicename die bereinigte ID des Gerätes enthält.
          Das Array hat für diese beiden Variablen folgenden Befehle:

          textLichterAn.sort();
          textRaum.sort();
          
          setState(pfad0 + 'Text', textLichterAn.join('<br>'));
          setState(pfad0 + 'Raum', textRaum.join(', '));
          
          

          Aber der Raum wird nicht angezeigt., im Log steht: raum: [object Object]

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

            @maloross sagte:

            var raumname = getObject(id, "rooms");

            Richtig:

            var raumname = getObject(id, "rooms").enumNames[0];
            
            maloross 1 Reply Last reply Reply Quote 0
            • maloross
              maloross @paul53 last edited by

              @paul53 hat auch keinen Erfolg....es gab Ende 2017 auf Github diesbezüglich ein Fehlermeldung, allerdings ohne konkreten Lösungsansatz.

              C paul53 2 Replies Last reply Reply Quote 0
              • C
                CruziX @maloross last edited by

                @maloross Ist ja auch so ziemlich das gleiche wie mein Code Schnipsel

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

                  @maloross sagte:

                  hat auch keinen Erfolg..

                  Wie hast Du die Räume zugeordnet ? Welche Javascript-Version ?

                  Testscript.JPG

                  T 1 Reply Last reply Reply Quote 0
                  • maloross
                    maloross @CruziX last edited by maloross

                    @CruziX ja, aber manchmal sind es Kleingkeiten, die Fehler verursachen...
                    ich habe die Räume erst mal rausgenommen.

                    @paul53 angelegt über Aufzählung, Zuordnung Objekte-Auswahl
                    Danke für eure Unterstützung..

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

                      @paul53
                      Ich hab die 4.3.4 am Laufen und bekomme es so auch nicht raus leider. Logge ich den Array enumNames, zeigt er mit zwar das JSON-Object darin an, wenn ich aber versuche mit .de auf den deutschen Namen zuzugreifen, sagt er das die Proberty nicht vorhanden wäre. Seltsam...

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

                        @Tictactoo sagte:

                        zeigt er mit zwar das JSON-Object darin an, wenn ich aber versuche mit .de auf den deutschen Namen zuzugreifen, sagt er das die Proberty nicht vorhanden wäre.

                        Du hast getObject so verwendet ?

                        getObject(id, "rooms").enumNames[0].de;
                        
                        T 1 Reply Last reply Reply Quote 0
                        • T
                          Tictactoo @paul53 last edited by

                          @paul53 Ja, hab ich. Wie gesagt, wenn ich "getObject(id, "rooms").enumNames[0]" logge, zeigt er mir auch den Inhalt.

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

                            @Tictactoo sagte:

                            zeigt er mir auch den Inhalt.

                            Wie sieht er aus ?

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

                              @paul53

                              javascript.0 (17215) script.js.Rhasspy.Slots: [{'en':'bath_room','de':'Bad'}]
                              
                              

                              Nehm ich die Variable und setzen "[0].de" dahinter bekomme ich nur das:

                              javascript.0	2020-01-30 15:44:21.547	error	(17215) at Script.runInContext (vm.js:133:20)
                              javascript.0	2020-01-30 15:44:21.546	error	(17215) at script.js.Rhasspy.Slots:9:84
                              javascript.0	2020-01-30 15:44:21.546	error	(17215) TypeError: Cannot read property 'de' of undefined
                              javascript.0	2020-01-30 15:44:21.546	error	(17215) ^
                              javascript.0	2020-01-30 15:44:21.545	error	(17215) var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0].de;
                              javascript.0	2020-01-30 15:44:21.545	error	(17215) script.js.Rhasspy.Slots: script.js.Rhasspy.Slots:9
                              

                              Hatte es auch schon mit array['de'] versucht, aber das schluckt er auch net...

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

                                @Tictactoo sagte:

                                bekomme ich nur das:

                                Sehr eigenartig. Was ergibt im Log?

                                 var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0];
                                
                                T 1 Reply Last reply Reply Quote 0
                                • C
                                  CruziX last edited by

                                  Schomal iobroker bzw Script Engine neugestartet?

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

                                    @paul53 Hatte es vorher oben reingeschrieben, vielleicht hatte sich das mit deiner Antwort überschnitten:

                                    javascript.0	2020-01-30 15:44:21.547	error	(17215) at Script.runInContext (vm.js:133:20)
                                    javascript.0	2020-01-30 15:44:21.546	error	(17215) at script.js.Rhasspy.Slots:9:84
                                    javascript.0	2020-01-30 15:44:21.546	error	(17215) TypeError: Cannot read property 'de' of undefined
                                    javascript.0	2020-01-30 15:44:21.546	error	(17215) ^
                                    javascript.0	2020-01-30 15:44:21.545	error	(17215) var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0].de;
                                    javascript.0	2020-01-30 15:44:21.545	error	(17215) script.js.Rhasspy.Slots: script.js.Rhasspy.Slots:9
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      ticaki Developer last edited by ticaki

                                      Gibt es schon eine Lösung für diesen Fehler?

                                        // auch mit  getObject(ab, 'rooms').enumNames[0].de durchprobiert
                                        var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0].de;// Fehler
                                      
                                        var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0];
                                        log(test.de); // Fehler
                                      
                                        var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0];
                                        test = JSON.stringify(test);
                                        test = JSON.parse(test); // Fehler 
                                      

                                      Was ich mir nicht erklären kann ist folgendes:

                                         var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0];
                                         if (test === undefined) log('yep');
                                         let t = JSON.stringify(test);
                                         //let x = JSON.parse(t);
                                      

                                      test ist nicht undefiniert und das Script läuft durch.
                                      Aktiviere ich die 4 Zeile, ist test in Zeile 2 undefiniert.

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

                                        @ticaki sagte:

                                        test = JSON.parse(test); // Fehler

                                        Es ist kein JSON.

                                        @ticaki sagte in [Erledigt] Skript Lichtzählen [..] angezeigt:

                                        var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0].de;// Fehler

                                        Wenn die Räume schon in einer früheren Version angelegt wurden, gibt es das Sprach-Objekt nicht. Bei selbst angelegten Räumen fehlt es wohl ebenso.

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          ticaki Developer @paul53 last edited by

                                          @paul53
                                          Danke für deine Antwort

                                          Ich war gestern abend zu müde, mein Fehler war, dass das erste Element in der Auflistung kein enumNames hatte.

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          444
                                          Online

                                          31.9k
                                          Users

                                          80.1k
                                          Topics

                                          1.3m
                                          Posts

                                          javascript
                                          5
                                          23
                                          1027
                                          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