Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. The state contains the forbidden properties notExist!

    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

    The state contains the forbidden properties notExist!

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      ADB-83 last edited by

      Hallo Leute.

      Ich möchte aus dem Unifi-Adapter den Namen eines Clients auslesen und in eine Variable schreiben. Beim nachfolgenden Code wird die darauffolgende Fehlermeldung ausgegeben.

      Code:

      setState("0_userdata.0.Datenpunkt", getState("unifi.0.default.clients.00:xx:22:xx:a3xx.name"))
      

      Fehlermeldung:
      setForeignState: Error: The state contains the forbidden properties notExist!

      Mit dem gleichen Code für den Hostnamen funktioniert alles wunderbar:

      setState("0_userdata.0.Datenpunkt", getState("unifi.0.default.clients.00:xx:22:xx:a3xx.hostname"))
      

      Wer kann mir hier einen Tipp geben?

      Danke bereits im Voraus.

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @ADB-83 last edited by

        @adb-83 sagte in The state contains the forbidden properties notExist!:

        setState("0_userdata.0.Datenpunkt", getState("unifi.0.default.clients.00:xx:22:xx:a3xx.name"))

        setState("0_userdata.0.Datenpunkt", getState("unifi.0.default.clients.00:xx:22:xx:a3xx.name").val)
        

        .val fehlt

        A 1 Reply Last reply Reply Quote 0
        • A
          ADB-83 @MCU last edited by

          @mcu

          Danke für deinen Hinweis.
          Leider scheint es auch mit dem .val nicht zu funktionieren.

          setState("0_userdata.0.Test2", getState("unifi.0.default.clients.00:1a:xx:29:xx:a9.name").val)
          
          

          Seltsam ist, dass es mit demselben Code, jedoch statt "name" mit "hostname" einwandfrei funktioniert.

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @ADB-83 last edited by

            @adb-83
            Funktioniert problemlos.
            43309d4f-8c57-4d76-b87b-bb71e56df666-grafik.png
            Kann es sein, dass bei Dir in ".name" nur (null) drinsteht?

            A 1 Reply Last reply Reply Quote 0
            • A
              ADB-83 @Codierknecht last edited by ADB-83

              @codierknecht

              Leider nein...
              532d104b-695d-4e2e-af6e-8190caf59070-image.png

              Ich habe den Pfad im Javascript kopiert und bei den Objekten eingefügt. Gemäss dem Printscreen ist hier ein Name (Homematic Access Point) vorhanden.

              Kann es sein, dass .name nicht verwendet werden darf? Oder wie kann man sich erklären, dass es bei .hostname normal durch läuft...?

              Edit:
              @codierknecht
              Wurde bei deinem Test der Wert von .name in den Datenpunkt gesetzt??

              M Codierknecht 2 Replies Last reply Reply Quote 0
              • M
                MCU @ADB-83 last edited by

                @adb-83 Welche javascript-Version hast du im Einsatz?

                A 1 Reply Last reply Reply Quote 0
                • A
                  ADB-83 @MCU last edited by

                  @mcu

                  d7473873-59d4-433d-bcea-eb149da0d3cd-image.png

                  Passt das?

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    MCU @ADB-83 last edited by

                    @adb-83 Sollte passen. Warum es nicht funktioniert keine Ahnung.
                    Versuch mal den DP mit name als Alias anzulegen.
                    also

                    createAlias("unifi.namevomGerät","unifi.0.default.clients.00:xx:22:xx:a3xx.name");
                    
                    A 1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @ADB-83 last edited by

                      @adb-83 sagte in The state contains the forbidden properties notExist!:

                      Wurde bei deinem Test der Wert von .name in den Datenpunkt gesetzt??

                      Narürlich. Sonst würde ich ja nicht schreiben "funktioniert" 😉

                      1 Reply Last reply Reply Quote 0
                      • A
                        ADB-83 @MCU last edited by

                        @mcu

                        Vielleicht muss noch kurz meinen eigentlichen Code zeigen:

                        Der Code wurde aus einem Forum kopiert und für mein Vorhaben angepasst. Es soll mir eine Push-Nachricht senden, sobald ein neues Gerät im Netzwerk erkannt wird.

                        const wlanids = Array.prototype.slice.apply($('unifi.0.default.clients.*.mac'));
                        var client_hostname
                        var client_name
                        var client_ip
                        
                        
                        
                        on({id: /^unifi\.0\.default\.clients\..+\.mac$/}, function(dp) {
                        getState("unifi.0.default.clients.00:1a:22:19:a3:a7.name").val)
                            client_hostname = getState("unifi.0.default.clients." + dp.state.val + ".hostname").val
                            client_name = getState("unifi.0.default.clients." + dp.state.val + ".name").val
                            client_ip = getState("unifi.0.default.clients." + dp.state.val + ".ip").val
                            
                        
                        
                            if(!wlanids.includes(dp.id)) {
                                wlanids.push(dp.id);
                                sendTo("pushover.0", { message: 'Neues Netzwerk-Gerät gefunden: \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name + '\n IP: ' + client_ip, sound: "vibrateonly", title: 'Neues Netzwerk-Gerät gefunden:  \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name  + client_name + '\n IP: ' + client_ip, priority: 1});
                            }
                        });
                        
                        

                        Wie müsste ich denn nun mit "Alias" genau hantieren?

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          MCU @ADB-83 last edited by MCU

                          @adb-83 Mit dem createAlias wäre nur ein Versuch, um zu schauen, ob man dann den Wert lesen kann.
                          Hat nichts mit dem eigentlichen Programm zu tun.

                          Hier mal ein anderer Test um zu schauen, ob er die DPs lesen kann

                          /* in dem mac-DP steht die MAC-Adresse ? */
                          const wlanids = $('unifi.0.default.clients.*.mac')
                          for(let i=0;i<wlanIds.length;i++){
                              let macAdress =getState(wlanIds[i]).val
                              client_hostname = getState("unifi.0.default.clients." + macAdress + ".hostname").val
                              client_name = getState("unifi.0.default.clients." +macAdress+ ".name").val
                              client_ip = getState("unifi.0.default.clients." + macAdress + ".ip").val
                              console.log(client_hostname + ' '+ client_name +' ' + client_ip)
                          }
                          
                          
                          A 2 Replies Last reply Reply Quote 0
                          • A
                            ADB-83 @MCU last edited by

                            @mcu

                            schon wieder seltsam... 😑

                            Wieso wird mit deinem Beispiel der korrekte Namen ausgegeben??

                            2c79eca4-7690-4eb1-a811-29790344ee8e-image.png

                            1 Reply Last reply Reply Quote 0
                            • A
                              ADB-83 @MCU last edited by

                              @mcu

                              Der Versuch, mit deinem Code herumzuspielen scheiterte mit demselben Resultat:

                              const wlanids = Array.prototype.slice.apply($('unifi.0.default.clients.*.mac'));
                              
                              var client_hostname
                              var client_name
                              var client_ip
                              var client_mac
                              
                              
                              on({id: /^unifi\.0\.default\.clients\..+\.mac$/}, function(dp) {
                                  
                                  const wlanIds1 = $('unifi.0.default.clients.*.mac')
                                  for(let i=0;i<wlanIds1.length;i++){
                                          client_mac = getState("unifi.0.default.clients." + getState(wlanIds1[i]).val + ".mac").val
                                          client_name = getState("unifi.0.default.clients." +getState(wlanIds1[i]).val+ ".name").val
                                          client_hostname = getState("unifi.0.default.clients." + getState(wlanIds1[i]).val + ".hostname").val
                                          client_ip = getState("unifi.0.default.clients." + getState(wlanIds1[i]).val + ".ip").val
                                          
                                          if (client_mac == dp.state.val){
                                              if(!wlanids.includes(dp.id)) {
                                              wlanids.push(dp.id);
                                              sendTo("pushover.0", { message: 'Neues Netzwerk-Gerät gefunden: \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name + '\n IP: ' + client_ip, sound: "vibrateonly", title: 'Neues Netzwerk-Gerät gefunden:  \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name  + client_name + '\n IP: ' + client_ip, priority: 1});
                                              console.log(client_mac + ' '+ client_hostname + ' '+ client_name +' ' + client_ip)
                                              }
                              
                                          }
                                  }
                              });
                              
                              
                              
                              

                              Fehlermeldung:
                              088df3c6-5b19-4ef6-aade-7bf3853f61cb-image.png

                              Beim .name zeigt es immer "null" an, obwohl hier ein Name hinterlegt ist.
                              Wir komme ich trotzdem zum Ziel? 😳

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                MCU @ADB-83 last edited by

                                @adb-83 Ich vermute ein Zeit-Problem?

                                const wlanids = Array.prototype.slice.apply($('unifi.0.default.clients.*.mac'));
                                var client_hostname
                                var client_name
                                var client_ip
                                 
                                 
                                 
                                on({id: /^unifi\.0\.default\.clients\..+\.mac$/}, function(dp) {
                                   setTimeout(function(){
                                    client_hostname = getState("unifi.0.default.clients." + dp.state.val + ".hostname").val
                                    client_name = getState("unifi.0.default.clients." + dp.state.val + ".name").val
                                    client_ip = getState("unifi.0.default.clients." + dp.state.val + ".ip").val
                                    
                                 
                                 
                                    if(!wlanids.includes(dp.id)) {
                                        wlanids.push(dp.id);
                                        sendTo("pushover.0", { message: 'Neues Netzwerk-Gerät gefunden: \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name + '\n IP: ' + client_ip, sound: "vibrateonly", title: 'Neues Netzwerk-Gerät gefunden:  \n MAC: '+ dp.state.val + '\n Hostname: ' + client_hostname + '\n Name: ' + client_name  + client_name + '\n IP: ' + client_ip, priority: 1});
                                    }
                                },1000);
                                });
                                 
                                
                                
                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  ADB-83 @MCU last edited by

                                  @mcu

                                  Gute Arbeit! Das scheint es gewesen zu sein! 😉

                                  Herzlichen Dank für eure Bemühungen!

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    ADB-83 @ADB-83 last edited by

                                    Guten Morgen.

                                    Als ich heute Morgen die Sache nochmals getestet habe, musste ich feststellen, dass es doch nicht bei allen Geräten den Namen auslesen kann (weshalb auch immer).

                                    Zum Test habe ich jeden Schritt um eine Sekunde verzögert ausführen lassen -> ohne Erfolg. Auch die Verzögerung auf 10 Sekunden zu setzen brachte nicht den gewünschten Effekt.

                                    Falls von euch niemand weitere Ideen hat, werde ich das Script wohl so belassen, obwohl ich dies wirklich gerne angezeigt bekommen hätte... 🙁

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    933
                                    Online

                                    31.8k
                                    Users

                                    80.0k
                                    Topics

                                    1.3m
                                    Posts

                                    3
                                    16
                                    477
                                    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