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. NodeRed XML-Daten zerlegen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • 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

NodeRed XML-Daten zerlegen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
16 Beiträge 5 Kommentatoren 3.2k Aufrufe 2 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.
  • A Offline
    A Offline
    andreasploetz
    schrieb am zuletzt editiert von
    #6

    Hi,

    anbei meine hoffentlich konkreteren Punkte:

    Ich frage zyklisch über einen http request node meine Heizungssteuerung ab. Der http request Node liefert mir einen XML-String zurück aus welchem ich einen Wert (strValue) als Number benötige. Dieser Wert soll dann in influxDB geschrieben werden

    XML in Heizungssteuerung

     <eta xmlns="http://www.eta.co.at/rest/v1" version="1.0"><value uri="//user/var/120/10601/0/0/13434" strvalue="71" unit="°C" decplaces="0" scalefactor="10" advtextoffset="0">708</value></eta> 
    

    String aus http request node

     <eta version="1.0" xmlns="http://www.eta.co.at/rest/v1"><value uri="//user/var/120/10601/0/0/13434" strvalue="71" unit="°C" decplaces="0" scalefactor="10" advtextoffset="0">707</value></eta>
    

    Meine Problemstellung, welche ich nicht gelöst bekomme ist dass ich aus diesem String den Wert von strValue als Number zur Übergabe in influxDB benötige und keinen Plan habe wie ich da hinkommen soll. Eventuell ist mein Ansatz mit dem http request node auch schon nicht der richtige?!?
    9006_flow.txt
    9006_flow_mit_debug_output.png

    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #7

      Wie du die Daten aus dem Request bekommst, hat Dir ja Graf schon gezeigt.

      Was die Influxdb betrifft, kannst du die Daten zwar direkt per Node-red schreiben (hab ich auch lange so gemacht) aber wenn du nicht so fit mit NR bist, würde ich die Daten jeweils in States schreiben und den iobroker-Influxdb verwenden. Da gehts dann ganz easy.

      Bin grad für ein paar Tage im „Leben neben ioBroker“ deshalb kann ich nicht detaillierter helfen.

      Gesendet von iPhone mit Tapatalk

      1 Antwort Letzte Antwort
      0
      • G Offline
        G Offline
        Garf
        schrieb am zuletzt editiert von
        #8

        O.K. versuchen wir es weiter.

        Halten wir fest: wir haben als Rückmeldung mit einem Stringwert zu tun.

        3639_sc35_.png

        Bitte hänge an das http-Node entweder das function-Node, oder eins von den change-Nodes und dann ein debug-Node, damit wir uns die Ausgabe ansehen können. Das Node für die influx-DB kenne ich nicht, da müssen wir mal schauen wie und in welchem Format die Daten übergeben werden müssen. Ich benutze als DB phpMyAdmin und aus Erfahrung kann ich dir sagen, dass die Werteübergabe absolut fehlerfrei erfolgen muss.

        Daher bitte erst einmal ohne die Anbindung an die Datenbank testen. Da müssen wir sicher im function-Node noch etwas an der Ausgabe arbeiten.

        Ich sehe gerade rewenode hat sich gemeldet und kennt sich mit dieser DB offensichtlich aus. Dass ist schon einmal eine gute Sache.

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          andreasploetz
          schrieb am zuletzt editiert von
          #9

          Hallo ihr beiden,

          lustigerweise funktioniert nun der angehängte Flow. D.h. es werden Werte (strValue) als Number in influxDB geschrieben, trotzdem bekomme ich immer noch einen Fehler im Debug. Den Change Node habe ich von dir übernommen und nicht geändert.

          Aber warum bekomme ich da jetzt einen Fehler aber in der Datenbank kommt der Wert richtig als Number an?!?

          Edit:

          • Ist das Performancemäßig nun die richtige Methode oder gäbs zusätzlich zum Fehler noch Optimierungsbedarf?
          • Um auf den Beitrag von rewenode noch zu Antworten: Ich schreibe aktuell lieber direkt in die Datenbank um unnötige Schritte wenn möglich auszulassen - lasse mich aber gerne vom gegenteil überzeugen :)
            9006_flow_-_working.png
          1 Antwort Letzte Antwort
          0
          • G Offline
            G Offline
            Garf
            schrieb am zuletzt editiert von
            #10

            Du müsstest mal nachsehen von welchem Node die Fehlermeldung kommt.

            Die zweite Meldung kommt mit Sicherheit aus dem debug-Node.

            Dafür mal auf die Nummer hinter Node: in der Message klicken, dann erhält das fehlermeldende Node einen gestrichelten Rahmen.

            1 Antwort Letzte Antwort
            0
            • R Offline
              R Offline
              rewenode
              schrieb am zuletzt editiert von
              #11

              @andreasploetz:

              Ich schreibe aktuell lieber direkt in die Datenbank um unnötige Schritte wenn möglich auszulassen - lasse mich aber gerne vom gegenteil überzeugen `
              So habe ich auch ca. 1 Jahr zu meiner vollsten Zufriedenheit gearbeitet;-) Und wenn das bei dir ok ist brauchst du dich von nichts Anderem überzeugen lassen.

              Bei mir sind halt irgendwann Aktoren (zigbee/wlan(power) ) dazu gekommen, die ihre States ja direkt in ioBroker abbilden. Da ist es dann viel einfacher, die mit einem Klick direkt per influxdb-Adapter zu loggen, ohne note-red bemühen zu müssen.

              Und um die Aufbewahrungsfristen und Measurement-typen kümmert sich der Adapter auch selbstständig.

              Ich hab da lieber eine einheitliche Art, wie Daten in meine db kommen, als dass ich mehrere Wege bedenken und pflegen muss.

              Was bei mir ungünstig war, meine db-Struktur war anders, als ioBroker das tut. Deswegen hab ich der Einfachheit halber die db platt gemacht und mit ioBroker neu aufgebaut.

              Allerdings erst nachdem ich erkannt habe, dass die ioBroker-db-Struktur besser als meine Eigenkreation ist;-) Und so wichtig waren mir meine Altdaten nicht, als dass sich eine Konvertierung gelohnt hätte.

              Ich visualisiere meine Daten mit Grafana und das geht super einfach bei Aktor=Measurement.

              Und generell hat es auch noch Vorteile, zu loggende Daten über einen eigenen State zu loggen.

              Die lassen sich dann sehr einfach für eigene Trigger verwenden bzw. in andere Funktionalitäten einbinden.

              Und noch einen Vorteil möchte ich nicht mehr missen. Man kann mal eben temporär mit einem Mausklick einen State in der db loggen um die unkompliziert zu untersuchen.

              Nach dem die Batterie-Anzeige diverser zigbee Autoren mehrfach geändert wurden, logge ich die jetzt einfach mit und mach meine Auswertung direkt aus der db. Das ist für den Ladezustand viel genauer und man weis, das man von der Absolutwertanzeige zu halten hat, wenn man sieht, wie die Schwankungen sind.

              1 Antwort Letzte Antwort
              0
              • G Offline
                G Offline
                Garf
                schrieb am zuletzt editiert von
                #12

                Auch wenn wir ein wenig vom Thema abscheifen. Ich logge Daten direkt auf meine NAS in eine sql Datenbank. Gelesen von dort habe ich noch keine Daten. Die Pflege und auch die einmalige Einrichtung sollte man bei seiner Entscheidung mit berücksichtigen. Die von mir benutzte sql-Datenbank ist echt nicht ohne, die hat mich schon etliche Stunden an Zeit gekostet.

                1 Antwort Letzte Antwort
                0
                • C Offline
                  C Offline
                  catnipper
                  schrieb am zuletzt editiert von
                  #13

                  Hi, nur zur Info. Ich bin gerade dabei einen Adapter für ETA (ETA Touch mit aktivierter XML REST API) zu schreiben. Sobald eine erste funktionsfähige Version verfügbar ist werde ich den Link im Forum für Adapter posten…

                  A 1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    andreasploetz
                    schrieb am zuletzt editiert von andreasploetz
                    #14

                    Auch wenn das ganze Thema schon länger her ist - ich muss es noch einmal aufgreifen da ich zwar mittlerweile die Basics verstanden habe aber die Details noch nicht so gut klappen.

                    • Ich rufe in Node-Red über die Funktion http request als msg.payload einen String ab
                    <?xml version="1.0" encoding="utf-8"?>
                    <eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
                      <value uri="//user/var/120/10601/0/0/13434" strValue="72" unit="°C" decPlaces="0" scaleFactor="10" advTextOffset="0">724</value>
                    </eta>
                    
                    • Diesen lasse ich durch den XML-Node laufen und konnte dadurch in der Debug-Ausgabe den Pfad evaluieren in welchem der Wert steht
                    payload.eta.value[0].$.strValue
                    
                    • In der Debug Ausgabe erhalte ich dann mit dieser Payload den richtigen Wert für die Datenbank.

                    Leider bekomme ich es nicht hin diesen dann anstatt im Debug in iobroker zu schieben da ich ich im xml Node nicht msg.payload.eta.value[0].$.strValue nutzen kann.

                    Stehe ich hier irgendwo komplett auf dem Schlauch?

                    1 Antwort Letzte Antwort
                    0
                    • C catnipper

                      Hi, nur zur Info. Ich bin gerade dabei einen Adapter für ETA (ETA Touch mit aktivierter XML REST API) zu schreiben. Sobald eine erste funktionsfähige Version verfügbar ist werde ich den Link im Forum für Adapter posten…

                      A Offline
                      A Offline
                      andreasploetz
                      schrieb am zuletzt editiert von
                      #15

                      @catnipper Hi, das war mir bewusst - ich tracke aber heute schon seit gut 1 1/2 Jahrendie Daten per Parser und würde das aber gerne ändern da ich das Modul nicht mehr nutzen möchte.

                      Sobald das von dir fertig ist werde ich mir es gerne anschauen.

                      SBorgS 1 Antwort Letzte Antwort
                      0
                      • A andreasploetz

                        @catnipper Hi, das war mir bewusst - ich tracke aber heute schon seit gut 1 1/2 Jahrendie Daten per Parser und würde das aber gerne ändern da ich das Modul nicht mehr nutzen möchte.

                        Sobald das von dir fertig ist werde ich mir es gerne anschauen.

                        SBorgS Offline
                        SBorgS Offline
                        SBorg
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #16

                        @andreasploetz Ich nehme dafür eine functions node und übergebe das an eine ioBroker out node als JSON:

                        msg = msg.payload.eta.value[0].$
                        
                        var payload = "["+JSON.stringify(msg)+"]";
                        node.send({payload});
                        

                        oder "normal" (ungetestet):

                        var payload = msg.payload.eta.value[0].$.strValue 
                        
                        node.send(payload);
                        

                        LG SBorg ( SBorg auf GitHub)
                        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

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


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        768

                        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