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.
    • ?
      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
            • B
              blumfisch last edited by

              obj.val

              ohne das ganze JSON Gedöns ergibt übrigens auch nur "undefined".

              Ich komme irgendwie nicht an den Wert.

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

                Es gibt ein Beispiel auf github:

                ...
                servConn.getStates(function (err, _states) {
                  var count = 0;
                  for (var id in _states) {
                    count++;
                    // hier müsste deine Logik rein zum Auslesen
                  }
                  console.log('Received ' + count + ' states.');
                  states = _states;
                });
                ...
                

                Daraus erschließt sich, dass in dem result eine Liste an Objekten ist und nicht nur ein einzelnes Objekt.

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

                  Puh … Hm. Ok, ich probier mal damit weiter.

                  Ich hatte das mit dem Durchzählen auch schon getestet, dann aber auch nur eine Liste mit den Namen der Objekte bekommen und keine dazugehörigen Werte. Keine Ahnung, wo die waren.

                  So ganz erschließt es sich mir halt nicht:

                  1. frage ich ja ein einzelnes Objekt ab, sollte also nicht mehrere kriegen.

                  2. kann ich daraus ein JSON-String machen und sollte doch wenigstens aus diesem den Wert ziehen können, oder? ich meine: Der sieht zumindest ziemlich korrekt aus, wenn ich das stringifye oder wie man das nennt.

                  3. Weiß ich immer noch nicht, wie ich an "val" von meinem Objekt komme, selbst wenn ich die Liste nun Schritt für Schritt durchrattern lasse.

                  Ich werd aber weiter probieren. Der Code dafür wäre halt wirklich wertvoll, weil es bedeuten würde, dass man mit wenig Code aus einer simplen Webseite heraus sämtliche Datenpunkte von iobroker lesen und schreiben kann, wann immer man das will. Danach suche ich schon lange. Bisher hab ich das nur über Tricks hinbekommen.

                  Sollte ich was finden, werd ich's hier posten.

                  Ansonsten freu ich mich über Hilfe. Wie gesagt, ich bin kein Programmierer, und vielleicht blick ich das alles nicht und es ist eigentlich ganz einfach.

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

                    Ja, wie ich dachte, bringt leider nichts:

                    
                    			servConn.getStates(function (err, _states) {
                    			  var count = 0;
                    			  for (var id in _states) {
                    				count++;
                    				if (id == 'hm-rpc.0.NEQ1581960.1.STATE') {
                    					console.log('id gefunden, aber wo ist meine val?');
                    					console.log(id.val); //= undefined
                    					console.log(states); //= Liste aller States inkluseve Vals, aber wie komm ich da ran?
                    				}
                    
                    			  }
                    			  console.log('Received ' + count + ' states.');
                    			  states = _states;
                    			});
                    

                    Damit gehe ich jetzt nur die Liste aller IDs einzeln durch, bis ich meine gefunden habe.

                    Statt sie wie im vorigen Code einfach direkt abzufragen.

                    Wenn ich sie dann gefunden habe, bin ich aber genauso schlau wie vorher, weil meine Abfragen xyz.val immer undefined sind.

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

                      Ich hab's! :lol: :lol: :lol:

                      var id = 'hm-rpc.0.NEQ1581960.1.STATE';
                      servConn.getStates(id, function(error, obj) {
                      	console.log(JSON.stringify(obj));
                      	console.log(states[id].val);	// !!! gibt Wert von Val dieser ID zurück !!!
                      });
                      
                      

                      states[id].val war die Lösung.

                      Oh Mann.

                      Das hat ich jetzt den ganzen Tag gekostet.

                      Aber wenigstens fühl ich mich jetzt wie ein Held 😄

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

                        Geht das nicht vllt noch einfacher bzw. direkter?!
                        Ich möchte auch einfach nur den true/false Wert von einem Sonoff (in meinem Fall) haben...

                        Da ich selber ein eigenes Smarthome Interface gestalten möchte, wäre es sinnig wenn man die value direkt abfragen könnte, damit ich nicht X mal diese, meiner Meinung nach, umständlichen Aufrufe habe.

                        AlCalzone 1 Reply Last reply Reply Quote 1
                        • AlCalzone
                          AlCalzone Developer @soRai last edited by

                          @soRai simple-api oder socketio-Adapter

                          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

                          481
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

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