Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. gelöst - xml Return in Blockly weiter verarbeiten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

gelöst - xml Return in Blockly weiter verarbeiten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
14 Beiträge 3 Kommentatoren 1.4k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • mac89mucM Offline
    mac89mucM Offline
    mac89muc
    schrieb am zuletzt editiert von mac89muc
    #1

    Hallo zusammen, ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
    Ich möchte gerne den Akkustand meines Sonos Move abfragen und diesen dann in ioBroker weiterverarbeiten.
    Durch den Request-Aufruf mit GET folgender Url - http://192.168.178.125:1400/status/batterystatus - erhalte ich als Return eine xml mit folgendem Inhalt

    <?xml version="1.0" ?>
    <?xml-stylesheet type="text/xsl" href="/xml/review.xsl"?><ZPSupportInfo><LocalBatteryStatus>
    <Data name="Health">GREEN</Data>
    <Data name="Level">100</Data>
    <Data name="Temperature">NORMAL</Data>
    <Data name="PowerSource">SONOS_CHARGING_RING</Data>
    </LocalBatteryStatus></ZPSupportInfo>
    

    Wie kann ich mir in Blockly den Wert für Level (in diesem Fall 100) rausfiltern?

    Alles was ich bereits versucht habe aus der Json Welt mit Parsen etc bekomme ich auf xml irgendwie nicht umgemünzt. Auch der bereits verlinkte ältere Thread hat leider nicht zur Lösung beigetragen.

    Alter Thread
    Re: [gelöst] xml Daten einer URL weiterverarbeiten

    Das hier war z.B. unter anderem ein Lösungsversuch von mir nach Vorlage des anderen Threads.

    xmlversuch.png

    Ich bin kein super Code- und js Experte, suche mir meist alles in Foren zusammen und bastel mir das dann auf meine Bedürfnisse zusammen.
    Daher wäre ich dankbar, wenn jemand von euch einen Tipp für mich hat, den auch ich als newbee umsetzen kann ;-)

    Vielen Dank auf jeden Fall schonmal im Voraus.

    OliverIOO 1 Antwort Letzte Antwort
    0
    • mac89mucM mac89muc

      Hallo zusammen, ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
      Ich möchte gerne den Akkustand meines Sonos Move abfragen und diesen dann in ioBroker weiterverarbeiten.
      Durch den Request-Aufruf mit GET folgender Url - http://192.168.178.125:1400/status/batterystatus - erhalte ich als Return eine xml mit folgendem Inhalt

      <?xml version="1.0" ?>
      <?xml-stylesheet type="text/xsl" href="/xml/review.xsl"?><ZPSupportInfo><LocalBatteryStatus>
      <Data name="Health">GREEN</Data>
      <Data name="Level">100</Data>
      <Data name="Temperature">NORMAL</Data>
      <Data name="PowerSource">SONOS_CHARGING_RING</Data>
      </LocalBatteryStatus></ZPSupportInfo>
      

      Wie kann ich mir in Blockly den Wert für Level (in diesem Fall 100) rausfiltern?

      Alles was ich bereits versucht habe aus der Json Welt mit Parsen etc bekomme ich auf xml irgendwie nicht umgemünzt. Auch der bereits verlinkte ältere Thread hat leider nicht zur Lösung beigetragen.

      Alter Thread
      Re: [gelöst] xml Daten einer URL weiterverarbeiten

      Das hier war z.B. unter anderem ein Lösungsversuch von mir nach Vorlage des anderen Threads.

      xmlversuch.png

      Ich bin kein super Code- und js Experte, suche mir meist alles in Foren zusammen und bastel mir das dann auf meine Bedürfnisse zusammen.
      Daher wäre ich dankbar, wenn jemand von euch einen Tipp für mich hat, den auch ich als newbee umsetzen kann ;-)

      Vielen Dank auf jeden Fall schonmal im Voraus.

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

      Hallo zusammen, ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
      Ich möchte gerne den Akkustand meines Sonos Move abfragen und diesen dann in ioBroker weiterverarbeiten.
      Durch den Request-Aufruf mit GET folgender Url - http://192.168.178.125:1400/status/batterystatus - erhalte ich als Return eine xml mit folgendem Inhalt

      <?xml version="1.0" ?>
      <?xml-stylesheet type="text/xsl" href="/xml/review.xsl"?><ZPSupportInfo><LocalBatteryStatus>
      <Data name="Health">GREEN</Data>
      <Data name="Level">100</Data>
      <Data name="Temperature">NORMAL</Data>
      <Data name="PowerSource">SONOS_CHARGING_RING</Data>
      </LocalBatteryStatus></ZPSupportInfo>
      

      Wie kann ich mir in Blockly den Wert für Level (in diesem Fall 100) rausfiltern?

      Alles was ich bereits versucht habe aus der Json Welt mit Parsen etc bekomme ich auf xml irgendwie nicht umgemünzt. Auch der bereits verlinkte ältere Thread hat leider nicht zur Lösung beigetragen.

      Alter Thread
      Re: [gelöst] xml Daten einer URL weiterverarbeiten

      Das hier war z.B. unter anderem ein Lösungsversuch von mir nach Vorlage des anderen Threads.

      xmlversuch.png

      Bin kein Code- und js Experte, suche mir meist alles in Foren zusammen und bastel mir das dann auf meine Bedürfnisse zusammen.
      Daher wäre ich dankbar, wenn jemand von euch einen Tipp für mich hat, den auch ich als newbee umsetzen kann ;-)

      Vielen Dank auf jeden Fall schonmal im Voraus.

      Bei dem kurzen xml und der extraktion von nur einem (bzw. wenigen werten) würde ich nicht mit einer xml bibliothek anfangen, sondern das mit regex direkt aus dem string auslesen.

      Auf Wunsch keine code beispiele :)

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      mac89mucM 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

        Hallo zusammen, ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
        Ich möchte gerne den Akkustand meines Sonos Move abfragen und diesen dann in ioBroker weiterverarbeiten.
        Durch den Request-Aufruf mit GET folgender Url - http://192.168.178.125:1400/status/batterystatus - erhalte ich als Return eine xml mit folgendem Inhalt

        <?xml version="1.0" ?>
        <?xml-stylesheet type="text/xsl" href="/xml/review.xsl"?><ZPSupportInfo><LocalBatteryStatus>
        <Data name="Health">GREEN</Data>
        <Data name="Level">100</Data>
        <Data name="Temperature">NORMAL</Data>
        <Data name="PowerSource">SONOS_CHARGING_RING</Data>
        </LocalBatteryStatus></ZPSupportInfo>
        

        Wie kann ich mir in Blockly den Wert für Level (in diesem Fall 100) rausfiltern?

        Alles was ich bereits versucht habe aus der Json Welt mit Parsen etc bekomme ich auf xml irgendwie nicht umgemünzt. Auch der bereits verlinkte ältere Thread hat leider nicht zur Lösung beigetragen.

        Alter Thread
        Re: [gelöst] xml Daten einer URL weiterverarbeiten

        Das hier war z.B. unter anderem ein Lösungsversuch von mir nach Vorlage des anderen Threads.

        xmlversuch.png

        Bin kein Code- und js Experte, suche mir meist alles in Foren zusammen und bastel mir das dann auf meine Bedürfnisse zusammen.
        Daher wäre ich dankbar, wenn jemand von euch einen Tipp für mich hat, den auch ich als newbee umsetzen kann ;-)

        Vielen Dank auf jeden Fall schonmal im Voraus.

        Bei dem kurzen xml und der extraktion von nur einem (bzw. wenigen werten) würde ich nicht mit einer xml bibliothek anfangen, sondern das mit regex direkt aus dem string auslesen.

        Auf Wunsch keine code beispiele :)

        mac89mucM Offline
        mac89mucM Offline
        mac89muc
        schrieb am zuletzt editiert von mac89muc
        #3

        @oliverio

        Vielen Dank für deine Antwort.
        Natürlich könnte das ganze auch simpel in blockly mit ein paar Blöcken (suche in Text „Level“ und extrahiere die folgenden 3 Ziffern dahinter) lösen.

        Allerdings lerne ich immer gerne dazu und bastle mir die Bestandteile dann immer so zusammen das es passt. Das nächste Mal habe ich evtl. eine komplexere xml und kann dann auf Erfahrungen aus dieser Problemstellung hier zurückgreifen.

        Von daher wäre ich an der Umsetzung Werte aus dieser XML zu filtern wie es auch bei einer json Rückgabe möglich ist interessiert.

        Viele Grüße

        TheBamT 1 Antwort Letzte Antwort
        0
        • mac89mucM mac89muc

          @oliverio

          Vielen Dank für deine Antwort.
          Natürlich könnte das ganze auch simpel in blockly mit ein paar Blöcken (suche in Text „Level“ und extrahiere die folgenden 3 Ziffern dahinter) lösen.

          Allerdings lerne ich immer gerne dazu und bastle mir die Bestandteile dann immer so zusammen das es passt. Das nächste Mal habe ich evtl. eine komplexere xml und kann dann auf Erfahrungen aus dieser Problemstellung hier zurückgreifen.

          Von daher wäre ich an der Umsetzung Werte aus dieser XML zu filtern wie es auch bei einer json Rückgabe möglich ist interessiert.

          Viele Grüße

          TheBamT Offline
          TheBamT Offline
          TheBam
          schrieb am zuletzt editiert von
          #4

          @mac89muc

          Das Problem hatte ich auch zuletzt bei meinem Adapter. Ich gehe da her und Wandel die XML in eine json um da gibt es ein npm Patch xml2json. Geht auch per JavaScript Adapter allerdings wahrscheinlich nicht mehr mit blockly.
          Ich kann dir da im js Code helfen wenn du magst

          mac89mucM 1 Antwort Letzte Antwort
          0
          • TheBamT TheBam

            @mac89muc

            Das Problem hatte ich auch zuletzt bei meinem Adapter. Ich gehe da her und Wandel die XML in eine json um da gibt es ein npm Patch xml2json. Geht auch per JavaScript Adapter allerdings wahrscheinlich nicht mehr mit blockly.
            Ich kann dir da im js Code helfen wenn du magst

            mac89mucM Offline
            mac89mucM Offline
            mac89muc
            schrieb am zuletzt editiert von
            #5

            @thabam

            Das wäre nett, vielen Dank.
            Den xml2json hatte ich im js Adapter auch schon bei den zusätzlichen npm Modulen hinzugefügt, hatte dann aber keine Ahnung wie ich dann damit weiter arbeite.

            Wenn Du mir da helfen könntest, wäre ich dankbar.

            Gruß

            OliverIOO 1 Antwort Letzte Antwort
            0
            • mac89mucM mac89muc

              @thabam

              Das wäre nett, vielen Dank.
              Den xml2json hatte ich im js Adapter auch schon bei den zusätzlichen npm Modulen hinzugefügt, hatte dann aber keine Ahnung wie ich dann damit weiter arbeite.

              Wenn Du mir da helfen könntest, wäre ich dankbar.

              Gruß

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von
              #6

              @mac89muc
              ja ich denke für die extra bibliotheken gibt es dann keine blockly befehle mehr der man muss im internet schauen
              auch blockly kann erweitert werden.
              in blockly kenn ich mich aber nicht sonderlich gut aus. nur javascript

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              1 Antwort Letzte Antwort
              0
              • TheBamT Offline
                TheBamT Offline
                TheBam
                schrieb am zuletzt editiert von
                #7

                @mac89muc

                Ok hier mal von meinem Adapter der Code:
                https://github.com/TheBam1990/ioBroker.trivum/blob/main/main.js

                In Zeile 305 ist der Teil der das XML in JSON umwandelt.

                Ansonsten kann ich dir anbieten heute abend 20.30uhr im discord

                mac89mucM 1 Antwort Letzte Antwort
                0
                • TheBamT TheBam

                  @mac89muc

                  Ok hier mal von meinem Adapter der Code:
                  https://github.com/TheBam1990/ioBroker.trivum/blob/main/main.js

                  In Zeile 305 ist der Teil der das XML in JSON umwandelt.

                  Ansonsten kann ich dir anbieten heute abend 20.30uhr im discord

                  mac89mucM Offline
                  mac89mucM Offline
                  mac89muc
                  schrieb am zuletzt editiert von
                  #8

                  @thebam

                  Vielen Dank für Deine Rückinfo. Habe einen Teilerfolg und es mittlerweile mit trail & error geschafft die xml in json zu wandeln mittels xml2json über js und das Ergebnis in einen Datenpunkt zu schreiben.

                  Der Code dazu sieht folgendermaßen aus

                  var parseString = require('xml2js').parseString;
                  var request = require('request');
                   
                  request('http://192.168.178.125:1400/status/batterystatus', function (error, response, body) {
                      if (!error && response.statusCode == 200) {
                  		log("Body: " + body);
                   
                  		parseString(body, {
                  				explicitArray: false,
                  				mergeAttrs: true
                  			}, 
                  			function (err, result) {
                  				if (err) {
                  					log("Fehler: " + err);
                  				} else {
                  					log("Result: " + JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data.name));
                                      setState("javascript.0.variables.Tests.String"/*String*/, (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data)), true);
                  				}
                  			});
                  	} else  {
                  	  log(error);
                  	}
                  });
                  

                  Das Ergebnis sieht dann wie folgt aus

                  [{"_":"GREEN","name":"Health"},{"_":"100","name":"Level"},{"_":"NORMAL","name":"Temperature"},{"_":"SONOS_CHARGING_RING","name":"PowerSource"}]
                  

                  Wie muss ich den Code oben erweitern, damit nur der zweite Werteblock {"_":"100","name":"Level"} und daraus der Wert 100 extrahiert wird um ihn dann in den Datenpunkt zu schreiben?

                  Viele Grüße

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • mac89mucM mac89muc

                    @thebam

                    Vielen Dank für Deine Rückinfo. Habe einen Teilerfolg und es mittlerweile mit trail & error geschafft die xml in json zu wandeln mittels xml2json über js und das Ergebnis in einen Datenpunkt zu schreiben.

                    Der Code dazu sieht folgendermaßen aus

                    var parseString = require('xml2js').parseString;
                    var request = require('request');
                     
                    request('http://192.168.178.125:1400/status/batterystatus', function (error, response, body) {
                        if (!error && response.statusCode == 200) {
                    		log("Body: " + body);
                     
                    		parseString(body, {
                    				explicitArray: false,
                    				mergeAttrs: true
                    			}, 
                    			function (err, result) {
                    				if (err) {
                    					log("Fehler: " + err);
                    				} else {
                    					log("Result: " + JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data.name));
                                        setState("javascript.0.variables.Tests.String"/*String*/, (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data)), true);
                    				}
                    			});
                    	} else  {
                    	  log(error);
                    	}
                    });
                    

                    Das Ergebnis sieht dann wie folgt aus

                    [{"_":"GREEN","name":"Health"},{"_":"100","name":"Level"},{"_":"NORMAL","name":"Temperature"},{"_":"SONOS_CHARGING_RING","name":"PowerSource"}]
                    

                    Wie muss ich den Code oben erweitern, damit nur der zweite Werteblock {"_":"100","name":"Level"} und daraus der Wert 100 extrahiert wird um ihn dann in den Datenpunkt zu schreiben?

                    Viele Grüße

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von OliverIO
                    #9

                    @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

                    Das Ergebnis ist ein Array
                    Wenn der Wert immer an der 2. stelle ist, dann geht das so

                    Für das ganze Element
                    JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]

                    Für den Wert
                    JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1][“_“]

                    Wenn nicht, muss man das Array durchsuchen und jedes Element mit dem Name Attribute vergleichen.
                    https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/find

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    mac89mucM 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

                      Das Ergebnis ist ein Array
                      Wenn der Wert immer an der 2. stelle ist, dann geht das so

                      Für das ganze Element
                      JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]

                      Für den Wert
                      JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1][“_“]

                      Wenn nicht, muss man das Array durchsuchen und jedes Element mit dem Name Attribute vergleichen.
                      https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/find

                      mac89mucM Offline
                      mac89mucM Offline
                      mac89muc
                      schrieb am zuletzt editiert von mac89muc
                      #10

                      @oliverio

                      Danke für die Hilfe - bin Dank Deiner Hilfe wieder etwas weiter.

                      Ausgabe in den Datenpunkt wäre dann "100" - kannst Du mir noch einen Tipp geben, wie ich den Code erweitern muss um die Anführungszeichen beim Ergebnis noch wegzubekommen?

                      Anscheinend sind die Anführungszeichen beim Wandel von xml zu json mittels der xml2json Erweiterung mit dazu gekommen.

                      Angepasst mit Deinem input sieht er aktuell wie folgt aus

                      var parseString = require('xml2js').parseString;
                      var request = require('request');
                       
                      request('http://192.168.178.125:1400/status/batterystatus', function (error, response, body) {
                          if (!error && response.statusCode == 200) {
                      		log("Body: " + body);
                       
                      		parseString(body, {
                      				explicitArray: false,
                      				mergeAttrs: true
                      			}, 
                      			function (err, result) {
                      				if (err) {
                      					log("Fehler: " + err);
                      				} else {
                      					log("Result: " + JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]));
                                          setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                      				}
                      			});
                      	} else  {
                      	  log(error);
                      	}
                      });
                      

                      Gruß

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • mac89mucM mac89muc

                        @oliverio

                        Danke für die Hilfe - bin Dank Deiner Hilfe wieder etwas weiter.

                        Ausgabe in den Datenpunkt wäre dann "100" - kannst Du mir noch einen Tipp geben, wie ich den Code erweitern muss um die Anführungszeichen beim Ergebnis noch wegzubekommen?

                        Anscheinend sind die Anführungszeichen beim Wandel von xml zu json mittels der xml2json Erweiterung mit dazu gekommen.

                        Angepasst mit Deinem input sieht er aktuell wie folgt aus

                        var parseString = require('xml2js').parseString;
                        var request = require('request');
                         
                        request('http://192.168.178.125:1400/status/batterystatus', function (error, response, body) {
                            if (!error && response.statusCode == 200) {
                        		log("Body: " + body);
                         
                        		parseString(body, {
                        				explicitArray: false,
                        				mergeAttrs: true
                        			}, 
                        			function (err, result) {
                        				if (err) {
                        					log("Fehler: " + err);
                        				} else {
                        					log("Result: " + JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]));
                                            setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                        				}
                        			});
                        	} else  {
                        	  log(error);
                        	}
                        });
                        

                        Gruß

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von OliverIO
                        #11

                        @mac89muc
                        Wahrscheinlich ist das Ergebnis dann keine Zahl sondern ein String oder der datenpunkt ist eine Zeichenkette

                        String in Zahl umwandeln geht mit parseInt oder parseFloat
                        Den datenpunkt kannst du in den Einstellungen dazu ändern

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        mac89mucM 1 Antwort Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @mac89muc
                          Wahrscheinlich ist das Ergebnis dann keine Zahl sondern ein String oder der datenpunkt ist eine Zeichenkette

                          String in Zahl umwandeln geht mit parseInt oder parseFloat
                          Den datenpunkt kannst du in den Einstellungen dazu ändern

                          mac89mucM Offline
                          mac89mucM Offline
                          mac89muc
                          schrieb am zuletzt editiert von mac89muc
                          #12

                          @oliverio

                          liegt das nicht eher an der json die aus der xml gewandelt wurde - hier taucht ja schon der Wert mit Anführungszeichen auf "100"

                          Aus dem Werteblock in der xml <Data name="Level">100</Data> wird nach dem Wandel mit xml2json {"_":"100","name":"Level"}

                          Wenn ich mich nicht täusche, müssten die Werte nach dem Doppelpunkt in json dann doch eigentlich ohne Anführungszeichen so stehen - {"_":100,"name":Level} oder?

                          Ich schaffe es nicht die Anführungszeichen direkt beim filtern des Arrays abzuschneiden. Hast Du hierfür evtl. noch den korrekten Code für die Zeile, dann kann ich mir den Umweg mit dem zweiten Datenpunkt etc sparen.

                          So läuft es jetzt wie gesagt über den Umweg bei mir mit folgendem Code

                          setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                          setState("javascript.0.variables.Tests.Zahl", ((getState("javascript.0.variables.Tests.String").val.slice(1, 4))));
                          

                          EDIT

                          Habe es nun hinbekommen ohne zweiten Datenpunkt - der Fehler beim Wandeln von xml nach json bleibt aber.
                          Wenn hier noch jemand einen Tipp hat wie man den Fehler beheben kann, gerne melden.

                          Ich löse es jetzt so lange mit diesem Code - vielen Dank für eure Hilfe

                          setState("javascript.0.variables.Tests.Zahl", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4)), true);
                          
                          OliverIOO 1 Antwort Letzte Antwort
                          0
                          • mac89mucM mac89muc

                            @oliverio

                            liegt das nicht eher an der json die aus der xml gewandelt wurde - hier taucht ja schon der Wert mit Anführungszeichen auf "100"

                            Aus dem Werteblock in der xml <Data name="Level">100</Data> wird nach dem Wandel mit xml2json {"_":"100","name":"Level"}

                            Wenn ich mich nicht täusche, müssten die Werte nach dem Doppelpunkt in json dann doch eigentlich ohne Anführungszeichen so stehen - {"_":100,"name":Level} oder?

                            Ich schaffe es nicht die Anführungszeichen direkt beim filtern des Arrays abzuschneiden. Hast Du hierfür evtl. noch den korrekten Code für die Zeile, dann kann ich mir den Umweg mit dem zweiten Datenpunkt etc sparen.

                            So läuft es jetzt wie gesagt über den Umweg bei mir mit folgendem Code

                            setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                            setState("javascript.0.variables.Tests.Zahl", ((getState("javascript.0.variables.Tests.String").val.slice(1, 4))));
                            

                            EDIT

                            Habe es nun hinbekommen ohne zweiten Datenpunkt - der Fehler beim Wandeln von xml nach json bleibt aber.
                            Wenn hier noch jemand einen Tipp hat wie man den Fehler beheben kann, gerne melden.

                            Ich löse es jetzt so lange mit diesem Code - vielen Dank für eure Hilfe

                            setState("javascript.0.variables.Tests.Zahl", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4)), true);
                            
                            OliverIOO Offline
                            OliverIOO Offline
                            OliverIO
                            schrieb am zuletzt editiert von OliverIO
                            #13

                            @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

                            @oliverio

                            liegt das nicht eher an der json die aus der xml gewandelt wurde - hier taucht ja schon der Wert mit Anführungszeichen auf "100"

                            Aus dem Werteblock in der xml <Data name="Level">100</Data> wird nach dem Wandel mit xml2json {"_":"100","name":"Level"}

                            Wenn ich mich nicht täusche, müssten die Werte nach dem Doppelpunkt in json dann doch eigentlich ohne Anführungszeichen so stehen - {"_":100,"name":Level} oder?

                            Ich schaffe es nicht die Anführungszeichen direkt beim filtern des Arrays abzuschneiden. Hast Du hierfür evtl. noch den korrekten Code für die Zeile, dann kann ich mir den Umweg mit dem zweiten Datenpunkt etc sparen.

                            So läuft es jetzt wie gesagt über den Umweg bei mir mit folgendem Code

                            setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                            setState("javascript.0.variables.Tests.Zahl", ((getState("javascript.0.variables.Tests.String").val.slice(1, 4))));
                            

                            EDIT

                            Habe es nun hinbekommen ohne zweiten Datenpunkt - der Fehler beim Wandeln von xml nach json bleibt aber.
                            Wenn hier noch jemand einen Tipp hat wie man den Fehler beheben kann, gerne melden.

                            Ich löse es jetzt so lange mit diesem Code - vielen Dank für eure Hilfe

                            setState("javascript.0.variables.Tests.Zahl", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4)), true);
                            

                            Die Funktion parseString der Bibliothek xml2js liefert dir direkt ein Javascript-Objekt zurück.
                            Daher kannst du über die Notation zur Objektreferenz auch auf die Detaildaten weiter tiefer in der Struktur zugreifen.
                            Da dieser Bibliothek die Information fehlt, welche Typen die xml-Felder haben, wird es die meisten Felder einfach in String umwandeln.
                            Daher musst du mit parseInt oder parseFloat diese Werte umwandeln. siehe unten

                            Ich glaube dir ist der Zweck der Befehle JSON.stringify und der gegenbefehl JSON.parse und noch nicht ganz geläufig.

                            JSON.stringify
                            https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

                            Dieser Befehl wandelt dir ein beliebiges javascript objekt (und die einfachen Objekte number,float,boolean und string gehören auch schon dazu) in ein, wie es der name schon sagt, String=Zeichenkette um.
                            Wenn du nun einen Zahlenwert in einen Datenpunk vom Typ Zahl schreiben willst, passiert das wie folgt.
                            man beachte parseInt, dieser Befehl wandelt dir eine Ganzzahl als Text in eine Variable vom Typ number um. Falls du Fließkommazahlen hast, musst du parseFloat nehmen und das Komma sollte ein Punkt sein.

                            setState("javascript.0.variables.Tests.String", (parseInt(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                            

                            Der folgende Befehl ist Unsinn

                            JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4))
                            

                            da du aus einem javascript wert einen string machst und dann die Zahl aus dem String herausschneidest.

                            Meine Adapter und Widgets
                            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                            Links im Profil

                            mac89mucM 1 Antwort Letzte Antwort
                            0
                            • OliverIOO OliverIO

                              @mac89muc sagte in xml Return in Blockly weiter verarbeiten:

                              @oliverio

                              liegt das nicht eher an der json die aus der xml gewandelt wurde - hier taucht ja schon der Wert mit Anführungszeichen auf "100"

                              Aus dem Werteblock in der xml <Data name="Level">100</Data> wird nach dem Wandel mit xml2json {"_":"100","name":"Level"}

                              Wenn ich mich nicht täusche, müssten die Werte nach dem Doppelpunkt in json dann doch eigentlich ohne Anführungszeichen so stehen - {"_":100,"name":Level} oder?

                              Ich schaffe es nicht die Anführungszeichen direkt beim filtern des Arrays abzuschneiden. Hast Du hierfür evtl. noch den korrekten Code für die Zeile, dann kann ich mir den Umweg mit dem zweiten Datenpunkt etc sparen.

                              So läuft es jetzt wie gesagt über den Umweg bei mir mit folgendem Code

                              setState("javascript.0.variables.Tests.String", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                              setState("javascript.0.variables.Tests.Zahl", ((getState("javascript.0.variables.Tests.String").val.slice(1, 4))));
                              

                              EDIT

                              Habe es nun hinbekommen ohne zweiten Datenpunkt - der Fehler beim Wandeln von xml nach json bleibt aber.
                              Wenn hier noch jemand einen Tipp hat wie man den Fehler beheben kann, gerne melden.

                              Ich löse es jetzt so lange mit diesem Code - vielen Dank für eure Hilfe

                              setState("javascript.0.variables.Tests.Zahl", (JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4)), true);
                              

                              Die Funktion parseString der Bibliothek xml2js liefert dir direkt ein Javascript-Objekt zurück.
                              Daher kannst du über die Notation zur Objektreferenz auch auf die Detaildaten weiter tiefer in der Struktur zugreifen.
                              Da dieser Bibliothek die Information fehlt, welche Typen die xml-Felder haben, wird es die meisten Felder einfach in String umwandeln.
                              Daher musst du mit parseInt oder parseFloat diese Werte umwandeln. siehe unten

                              Ich glaube dir ist der Zweck der Befehle JSON.stringify und der gegenbefehl JSON.parse und noch nicht ganz geläufig.

                              JSON.stringify
                              https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

                              Dieser Befehl wandelt dir ein beliebiges javascript objekt (und die einfachen Objekte number,float,boolean und string gehören auch schon dazu) in ein, wie es der name schon sagt, String=Zeichenkette um.
                              Wenn du nun einen Zahlenwert in einen Datenpunk vom Typ Zahl schreiben willst, passiert das wie folgt.
                              man beachte parseInt, dieser Befehl wandelt dir eine Ganzzahl als Text in eine Variable vom Typ number um. Falls du Fließkommazahlen hast, musst du parseFloat nehmen und das Komma sollte ein Punkt sein.

                              setState("javascript.0.variables.Tests.String", (parseInt(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"])), true);
                              

                              Der folgende Befehl ist Unsinn

                              JSON.stringify(result.ZPSupportInfo.LocalBatteryStatus.Data[1]["_"]).slice(1, 4))
                              

                              da du aus einem javascript wert einen string machst und dann die Zahl aus dem String herausschneidest.

                              mac89mucM Offline
                              mac89mucM Offline
                              mac89muc
                              schrieb am zuletzt editiert von
                              #14

                              @oliverio

                              Vielen Dank für die Erklärung, mit Deiner Hilfe habe ich es jetzt hinbekommen und wieder etwas gelernt, was ich für die nächste Sache nutzen kann.

                              1 Antwort Letzte Antwort
                              1
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              750

                              Online

                              32.5k

                              Benutzer

                              81.7k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe