Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Script] Geräte zählen/Namen auslesen - Problem mit if/else

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Script] Geräte zählen/Namen auslesen - Problem mit if/else

    This topic has been deleted. Only users with topic management privileges can see it.
    • Mrs-B
      Mrs-B last edited by Mrs-B

      Hallo,

      ich habe aus einigen Beispielen hier im Forum ein Script gebastelt was meine Steckdosen zählt.
      Es funktioniert auch soweit 🙂

      Ich möchte das Script allerdings noch etwas erweitern...
      Generell liest mir das Script als Namen der Steckdose den Namen des übergeordneten Datenpunkts aus (sonst würde die alle switch_1 heißen). Soweit gut 🙂

      Ich habe aber noch eine Steckdosenleiste im Einsatz. Für dieses Device möchte ich das als Name der Steckdose nicht der Name des übergeordneten Datenpunkts ausgelesen wird, sondern der Name des Datenpunkts selbst.

      Ich dachte mir ich könnte das ganz schlicht mit If und else lösen...
      Aber bekomme das nicht so richtig hin..
      Jetzt nimmt er immer den Namen des Datenpunktes selbst (also meine if Anweisung funktioniert nicht, oder besser gesagt das else) und nicht nur wenn die angegebene DeviceID übereinstimmt...

      Mag mir da jemand helfen bitte?

      function checkSteckdosenOst(id,i) {
      
      	var obj = getObject(id);
      	
      	var idDev = id.substring(0, id.lastIndexOf('.'));  // Zugriff auf übergeordneten Datenpunkt da der Name des Datenpunkts sonst "switch_1" heißen würde
      	
      	//var name = getObject(idDev).common.name; // liest den Namen des übergeordneten Datenpunkts aus
      	
      	var status = getState(id).val; // liest den Zustand aus (true / false)
      
          var raum = getObject(id, "rooms").enumNames[0]; 
      	
      log ('idDev: ' + idDev)	
      	
      	
      
          if (status) { // wenn Zustand = true, dann wird die Anzahl der Steckdosen hochgezählt
      	
      	
      	    ++anzahlSteckdosenOstOn;
      		
      		// Name des Device bei "Steckdosenleiste"
      		
      		if (idDev = "meross.0.1909200726645190802148e1e9524b5f") {
      			
      			var name = getObject(id).common.name;  // Name des Datenpunktes
      								
      		}
      
      		else {
      			var name = getObject(idDev).common.name; // Name des übergeordneten Datenpunkts
      			
      		}
      
      
              NameSteckdoseOstOn.push(name); // Zu Array hinzufügen
      
              if(textRaumOst.indexOf(raum) == -1) textRaumOst.push(raum); // zu Array hinzu, wenn noch nicht vorhanden
      
          }
      
          ++anzahlSteckdosenOst; // Zählt die Anzahl der vorhandenen Steckdosen im Ostflügel unabhängig vom Status
      
      }
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Mrs-B last edited by

        @Mrs-B sagte:

          if (idDev = "meross.0.1909200726645190802148e1e9524b5f") {                                                                                                                                                                            
        

        Ein einfaches = ist eine Zuweisung, kein Vergleich.

        Mrs-B 1 Reply Last reply Reply Quote 0
        • Mrs-B
          Mrs-B @paul53 last edited by

          @paul53
          Ah ok 🙂
          Wieder was gelernt...

          Kannst du mir auch sagen wie dann ein Vergleich aussehen muss?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Mrs-B last edited by paul53

            @Mrs-B sagte:

            wie dann ein Vergleich aussehen muss?

            if (idDev == "meross.0.1909200726645190802148e1e9524b5f") {
            

            oder mit Typprüfung:

            if (idDev === "meross.0.1909200726645190802148e1e9524b5f") {
            
            1 Reply Last reply Reply Quote 0
            • Mrs-B
              Mrs-B last edited by

              Ganz lieben Dank!! Das == hat mir das gewünschte Ergebnis gebracht 🙂

              Noch ne blöde Frage - Was bedeutet Typprüfung in dieser Hinsicht?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Mrs-B last edited by paul53

                @Mrs-B sagte:

                Was bedeutet Typprüfung in dieser Hinsicht?

                Siehe hier und hier.

                Mrs-B 1 Reply Last reply Reply Quote 0
                • Mrs-B
                  Mrs-B @paul53 last edited by

                  @paul53

                  Nochmal ganz lieben Dank!!!

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  770
                  Online

                  31.6k
                  Users

                  79.5k
                  Topics

                  1.3m
                  Posts

                  javascript
                  2
                  7
                  348
                  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