Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Eigenes Webinterface

    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

    Eigenes Webinterface

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      TobStar last edited by

      Ich habe jetzt mal nen bisschen rumprobiert und die Verbindung anscheinend hinbekommen, konnte aber nicht wirklich Dinge auslesen / steuern. Nun habe ich mir mal die Beispiele aus dem GitHub rauskopiert und die Verbindung getestet, das herstellen der Verbindung ist wie gesagt anscheinend so in Ordnung … allerdings bekomme ich folgende Meldung:

      connected
      (index):26 Received 0 states.
      conn.js:414 socket.io not initialized
      

      Mich wundert hier das er 0 States anzeigt, ich denke er müsste hier alle Objekte anzeigen …

      Der Code hierzu sieht wie folgt aus:

      1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer last edited by

        Gibt es Objekte in dashboard.0 ?

        Ich denke es liegt am Namespace.

        Gesendet von meinem m8 mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • T
          TobStar last edited by

          Selbes Ergebnis wenn ich dort z.B. hm-rpc.0 oder hm-rega.0 eintrage. Der Namespace ist ja nur der Name der Verbindung … wenn ich das richtig verstanden habe.

          1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer last edited by

            Für mich ist der Namespace der Endpunkt in ioBroker. Wenn ich daheim bin schau ich mir das mal genauer an.

            Gesendet von meinem m8 mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • T
              TobStar last edited by

              Klasse, danke dir.

              1 Reply Last reply Reply Quote 0
              • T
                TobStar last edited by

                So, nun komme ich auch an die States und kann soweit alle Objekte auslesen.

                Nur die einzelnen Objekte abfragen gelingt mir noch nicht … ich probiere das per:

                id = 'hm-rpc.0.OEQ0885917.1.LEVEL';
                servConn.getObject(function (id, callback) {
                    console.log(callback);
                });
                
                

                Nur die Syntax ist falsch, wie müsste die korrekt lauten?

                1 Reply Last reply Reply Quote 0
                • Jey Cee
                  Jey Cee Developer last edited by

                  So müsste es Korrekt aussehen:

                  id = 'hm-rpc.0.OEQ0885917.1.LEVEL';
                  servConn.getObject(id, false, function (callback) {
                      console.log(callback);
                  });
                  

                  Bei mir wirft das aber immer einen Fehler:

                  ncaught TypeError: Cannot read property 'emit' of null
                      at Object.getObject (conn.js:908)
                      at Object.onConnChange (index.html:36)
                      at Object.init (conn.js:206)
                      at index.html:19
                  

                  @TobStar:

                  So, nun komme ich auch an die States und kann soweit alle Objekte auslesen. `
                  Verrätst du mir wie? Ich bekomme das nicht hin.

                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    Du versuchst, gleich nach dem du das Befehl zum Verbindungsaufbau gegeben hast, das getObject aufzurufen. Zu diesem Zeitpunkt gibt es keine Verbindung.

                    Du darfst aber erst getObject aufrufen wenn die Verbindung da ist:

                    servConn.init({
                            name:          'dashboard.0',
                            connLink:      ''
                        }, {
                            onConnChange: function (isConnected) {
                                if (isConnected) {
                                    console.log('connected');
                    
                                    servConn.getObjects(function (err, objs) {console.log(JSON.stringify(objs, null, 2);}); <========= Richtig
                    
                                    servConn.getStates(function (err, _states) {
                                        var count = 0;
                                        for (var id in _states) {
                                            count++;
                                        }
                                        console.log('Received ' + count + ' states.');
                                        states = _states;
                                    });
                                } else {
                                    console.log('disconnected');
                                }
                            },
                            onRefresh: function () {
                                window.location.reload();
                            },
                            onUpdate: function (id, state) {
                                setTimeout(function () {
                                    console.log('NEW VALUE of ' + id + ': ' + JSON.stringify(state));
                                    states[id] = state;
                                }, 0);
                            },
                            onError: function (err) {
                                window.alert(_('Cannot execute %s for %s, because of insufficient permissions', err.command, err.arg), _('Insufficient permissions'), 'alert', 600);
                            }        
                        });
                    
                        // servConn.getObjects(); <========= Falsch
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • Jey Cee
                      Jey Cee Developer last edited by

                      Bei mir sieht die Ausgabe in der Konsole so aus:

                      
                      index.html:21 connected
                      conn.js:414 socket.io not initialized
                      index.html:30 Received 0 states.
                      

                      Hier der Code den ich verwendet hab:

                      Wo ist hier der Fehler? Das ist doch 1:1 das Beispiel aus dem Repo.

                      1 Reply Last reply Reply Quote 0
                      • T
                        TobStar last edited by

                        Du musst zwingend folgendes beim Init mit angeben:

                        servConn.init({
                        
                                name:          'mobile.0',
                                connLink:      'http://IPZUMSERVER:8084',
                                socketSession: ''
                        
                            },
                        
                        

                        Danach hat es bei mir funktioniert. Also nicht localhost etc. sondern die IP-Adresse

                        Insgesamt sieht es nun so aus bei mir:

                        1 Reply Last reply Reply Quote 0
                        • Bluefox
                          Bluefox last edited by

                          @TobStar:

                          Du musst zwingend folgendes beim Init mit angeben:

                          servConn.init({
                                
                                  name:          'mobile.0',
                                  connLink:      'http://IPZUMSERVER:8084',
                                  socketSession: ''
                                
                              },
                          
                          

                          Danach hat es bei mir funktioniert. Also nicht localhost etc. sondern die IP-Adresse

                          Insgesamt sieht es nun so aus bei mir: `
                          Natürlich socket.io Instanz muss existieren und auf port 8084 eingestellt sein.

                          1 Reply Last reply Reply Quote 0
                          • T
                            TobStar last edited by

                            Was bei mir jetzt allerdings noch nicht ganz so will ist die Syntax um einzelne Objekte abzufragen.

                            id = 'hm-rpc.0.OEQ0885917.1.LEVEL';
                            servConn.getObject(id, false, function (callback) {
                                console.log(callback);
                            });
                            
                            

                            Gibt bei mir nur "null" zurück. In den States sehe ich das Objekt und die Inhalte allerdings.

                            2018-04-13T07:29:03.813Z Connected => authenticate
                            conn.js:264 2018-04-13T07:29:03.991Z Authenticated: true
                            (index):24 connected
                            (index):37 null
                            (index):30 Received 3000 states.
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • Jey Cee
                              Jey Cee Developer last edited by

                              @TobStar:

                              Du musst zwingend folgendes beim Init mit angeben:

                              servConn.init({
                                    
                                      name:          'mobile.0',
                                      connLink:      'http://IPZUMSERVER:8084',
                                      socketSession: ''
                                    
                                  },
                              ```` `  
                              

                              Das führt bei mir zu folgendem Fehler:

                              Failed to load http://192.168.0.50:8084/socket.io/?key=nokey&EIO=3&transport=polling&t=MAzvc7K: The 'Access-Control-Allow-Origin' header has a value 'null' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
                              conn.js:284 Uncaught ReferenceError: $ is not defined
                                  at n. <anonymous>(conn.js:284)
                                  at n.emit (universalModuleDefinition:2)
                                  at n.emit (universalModuleDefinition:3)
                                  at n.emitAll (universalModuleDefinition:1)
                                  at n. <anonymous>(universalModuleDefinition:1)
                                  at n.emit (universalModuleDefinition:2)
                                  at n.onError (universalModuleDefinition:2)
                                  at o. <anonymous>(universalModuleDefinition:2)
                                  at o.n.emit (universalModuleDefinition:2)
                                  at o.n.onError (universalModuleDefinition:2)
                              ​</anonymous></anonymous></anonymous>
                              

                              @Bluefox:

                              Natürlich socket.io Instanz muss existieren und auf port 8084 eingestellt sein. `
                              filename="socketio_log.PNG" index="0">~~ filename="socketio_instanz.PNG" index="1">~~ 282_socketio_conf.png

                              1 Reply Last reply Reply Quote 0
                              • T
                                TobStar last edited by

                                Das führt bei mir zu folgendem Fehler:

                                Failed to load http://192.168.0.50:8084/socket.io/?key=nokey&EIO=3&transport=polling&t=MAzvc7K: The 'Access-Control-Allow-Origin' header has a value 'null' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
                                conn.js:284 Uncaught ReferenceError: $ is not defined
                                    at n. <anonymous>(conn.js:284)
                                    at n.emit (universalModuleDefinition:2)
                                    at n.emit (universalModuleDefinition:3)
                                    at n.emitAll (universalModuleDefinition:1)
                                    at n. <anonymous>(universalModuleDefinition:1)
                                    at n.emit (universalModuleDefinition:2)
                                    at n.onError (universalModuleDefinition:2)
                                    at o. <anonymous>(universalModuleDefinition:2)
                                    at o.n.emit (universalModuleDefinition:2)
                                    at o.n.onError (universalModuleDefinition:2)
                                ​</anonymous></anonymous></anonymous>
                                

                                Kopiere dir mal das von mir und ersetze die IP-Adressen. Damit läuft es ja, die Fehlermeldung hatte ich zu Anfang auch …

                                Hier mal die korrekte Syntax um mit getObject das einzelne Objekt abzufragen:

                                id = 'hm-rpc.0.OEQ0885917';
                                servConn.getObject(id, false, function (error, obj) {
                                    console.log(JSON.stringify(obj));
                                });
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • B
                                  blumfisch last edited by

                                  Hallo, vielleicht eine dumme Frage, aber ich kriegs nicht hin:

                                  Ich versuche, in einer Webseite per Javascript + socketio + conn.js + bluefox' js-Beispiel zum socketio-Adapter den State z.B. einer hm-rpc Funksteckdose herauszufinden.

                                  Ich schaffe es, mit

                                  servConn.setState('hm-rpc.0.NEQ1581960.1.STATE', true); 
                                  
                                  

                                  den State zu setzen und sie an bzw. mit false auch wieder aus zu schalten.

                                  Aber wie lese ich so einen State aus?

                                  So dass ich sagen kann:

                                  Lese State von Funksteckdose Xyz. Wenn State = aus, schalte Steckdose ein. Ansonsten schalte sie aus.

                                  Sowas bräuchte ich.

                                  Mit:

                                  id = 'hm-rpc.0.NEQ1581960';
                                  servConn.getObject(id, false, function (error, obj) {
                                      console.log(JSON.stringify(obj));
                                  });
                                  
                                  

                                  bekomme ich leider anscheinend nur die Metadaten, aber eben nicht den Wert. Auch nicht mit id = "hm-rpc.0.NEQ1581960.1.STATE' oder ähnlichem.

                                  Ich habe zwar alles States in der Variable/dem Objekt(???) "states" aus dem zu conn.js gehörigen js-Schnipsel von Bluefox.

                                  Aber ich komme einfach nicht an die einzelnen Werte ran.

                                  Wahrscheinlich ganz einfach … Aber ich bin kein Programmierer.

                                  Ich verzweifle an Objekten und JSON und parse und stingify und blicke einfach nicht mehr durch.

                                  Kann mir bitte, bitte jemand helfen? Sitze jetzt schon den ganzen Tag daran.

                                  Wär voll nett. Danke.

                                  1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User last edited by

                                    Gibt es dafür nicht den Befehl getState()?

                                    Hast du den schon probiert.

                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User last edited by

                                      getStates(ID, callback)
                                      

                                      ist sogar in der Readme des Adapters beschrieben:

                                      https://github.com/ioBroker/ioBroker.socketio#getstates

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        blumfisch last edited by

                                        Oh nein!

                                        Ich dachte immer, GetStates wäre nur, um anfangs alle States einzulesen. Nicht nur einen einzelnen. Weil im Readme steht: "get the states of MORE THAN ONE state".

                                        Ja, so leicht lassen sich Anfänger in die Irre führen.

                                        Damit komme ich zumindest schonmal an die richtigen Datenstrukturen. Danke! 😄

                                        servConn.getStates('hm-rpc.0.NEQ1581960.1.STATE', function(error, obj) {
                                        console.log(JSON.stringify(obj));
                                        });
                                        
                                        

                                        Dummerweise weiß ich jetzt immer noch nicht, wie ich die Strukturen auslesen kann.

                                        Also wie ich aus var x = JSON.stringify(obj) oder direkt aus var x = obj an die einzelne "value" komme, die ich dann einfach in eine ganz normale Variable geben will, damit ich wieder auf BASIC-Niveau programmieren kann 🙂

                                        Bisher enden all meine Versuche mit "undefined" oder Fehlermeldungen.

                                        1 Reply Last reply Reply Quote 0
                                        • ?
                                          A Former User last edited by

                                          @blumfisch:

                                          Oh nein!

                                          Ich dachte immer, GetStates wäre nur, um anfangs alle States einzulesen. Nicht nur einen einzelnen. Weil im Readme steht: "get the states of MORE THAN ONE state".

                                          Ja, so leicht lassen sich Anfänger in die Irre führen.

                                          Damit komme ich zumindest schonmal an die richtigen Datenstrukturen. Danke! 😄

                                          servConn.getStates('hm-rpc.0.NEQ1581960.1.STATE', function(error, obj) {
                                          console.log(JSON.stringify(obj));
                                          });
                                          
                                          

                                          Dummerweise weiß ich jetzt immer noch nicht, wie ich die Strukturen auslesen kann.

                                          Also wie ich aus var x = JSON.stringify(obj) oder direkt aus var x = obj an die einzelne "value" komme, die ich dann einfach in eine ganz normale Variable geben will, damit ich wieder auf BASIC-Niveau programmieren kann 🙂

                                          Bisher enden all meine Versuche mit "undefined" oder Fehlermeldungen. `

                                          Wie sehen denn "deine Versuche" genau aus?

                                          du kannst auf alle Attribute des State direkt zugreifen

                                          if(obj.val > 1){
                                          machwas();
                                          };
                                          
                                          

                                          das sind die Attribute eines States:

                                          https://github.com/ioBroker/ioBroker/wi … e-of-state

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            blumfisch last edited by

                                            So sehen meine Experimente gerade aus:

                                            servConn.getStates('hm-rpc.0.NEQ1581960.1.STATE', function(error, obj) {
                                            	console.log(JSON.stringify(obj));
                                            	obj2 = JSON.stringify(obj);
                                            	obj3 = JSON.parse(obj2);  // Keine Ahnung, was hier was hier was für eine Art von Objekt ist, ich versuche es einfach.
                                            	console.log(obj2); // = JSON String oder Javascript Objekt. Eins von beiden.
                                            	console.log(obj3); // = JSON String oder Javascript Objekt. Das andere von beiden
                                            	console.log(obj2.val); // = undefined
                                            	console.log(obj3.val); // = undefined
                                            	console.log(obj3['val']); // = undefined
                                            
                                            		});
                                            
                                            

                                            Und so die Daten, aus denen ich gern den Wert von "val" extrahieren würde:

                                            {"hm-rpc.0.NEQ1581960.1.STATE":{"val":true,"ack":true,"ts":1543341704635,"q":0,"from":"system.adapter.hm-rpc.0","lc":1543341704635}}

                                            Ja, das ist ein wildes Gerate meinerseits , aber ich habe bei diesen Oavascript-Objekten und JSON inzwischen ein bisschen die Übersicht verloren und versuche jetzt einfach epr Trail & Error, irgendwas zu finden, das klappt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            883
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            30
                                            2790
                                            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