Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Script] Geräte zählen/Namen auslesen - Problem mit if/else

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

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

Scheduled Pinned Locked Moved JavaScript
javascript
7 Posts 2 Posters 483 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Mrs-BM Offline
    Mrs-BM Offline
    Mrs-B
    wrote on last edited by Mrs-B
    #1

    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
    
    }
    
    paul53P 1 Reply Last reply
    0
    • Mrs-BM 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
      
      }
      
      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @Mrs-B sagte:

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

      Ein einfaches = ist eine Zuweisung, kein Vergleich.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Mrs-BM 1 Reply Last reply
      0
      • paul53P paul53

        @Mrs-B sagte:

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

        Ein einfaches = ist eine Zuweisung, kein Vergleich.

        Mrs-BM Offline
        Mrs-BM Offline
        Mrs-B
        wrote on last edited by
        #3

        @paul53
        Ah ok :)
        Wieder was gelernt...

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

        paul53P 1 Reply Last reply
        0
        • Mrs-BM Mrs-B

          @paul53
          Ah ok :)
          Wieder was gelernt...

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

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @Mrs-B sagte:

          wie dann ein Vergleich aussehen muss?

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

          oder mit Typprüfung:

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

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Reply Last reply
          0
          • Mrs-BM Offline
            Mrs-BM Offline
            Mrs-B
            wrote on last edited by
            #5

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

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

            paul53P 1 Reply Last reply
            0
            • Mrs-BM Mrs-B

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

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

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by paul53
              #6

              @Mrs-B sagte:

              Was bedeutet Typprüfung in dieser Hinsicht?

              Siehe hier und hier.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              Mrs-BM 1 Reply Last reply
              0
              • paul53P paul53

                @Mrs-B sagte:

                Was bedeutet Typprüfung in dieser Hinsicht?

                Siehe hier und hier.

                Mrs-BM Offline
                Mrs-BM Offline
                Mrs-B
                wrote on last edited by
                #7

                @paul53

                Nochmal ganz lieben Dank!!!

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                848

                Online

                32.4k

                Users

                81.5k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe