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 @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

                        709
                        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