Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. XML Daten auslesen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    XML Daten auslesen

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

      Hi,

      im Allgemeinen kenne ich mich gut mit XQuery und XPath Abfragen aus, weiß aber nicht wie ich dies in Javascript erledigen kann. Ziel ist es von einer URL eines OWS Servers XML auszulesen und dieses dann zu parsen. Im Endeffekt interessieren mich nur die Temperaturwerte für bestimmte Sensoren, Das XML dazu sieht so aus:

      
      - <devices-detail-response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.embeddeddatasystems.com/schema/owserver"><pollcount>71</pollcount>
      
      <devicesconnected>2</devicesconnected>
      
      <looptime>2.048</looptime>
      
      <devicesconnectedchannel1>2</devicesconnectedchannel1>
      
      <devicesconnectedchannel2>0</devicesconnectedchannel2>
      
      <devicesconnectedchannel3>0</devicesconnectedchannel3>
      
      <dataerrorschannel1>0</dataerrorschannel1>
      
      <dataerrorschannel2>0</dataerrorschannel2>
      
      <dataerrorschannel3>0</dataerrorschannel3>
      
      <voltagechannel1>4.81</voltagechannel1>
      
      <voltagechannel2>4.81</voltagechannel2>
      
      <voltagechannel3>4.80</voltagechannel3>
      
      <voltagepower>5.05</voltagepower>
      
      <devicename>OWServer_v2-Enet</devicename>
      
      <hostname>EDSOWSERVER2</hostname>
      
      <macaddress>00:04:A3:BE:A9:F2</macaddress>
      
      <datetime>2017-03-10 23:18:40</datetime>
      
      - <owd_ds18b20 description="Programmable resolution thermometer"><name>DS18B20</name>
      
      <family>28</family>
      
      <romid>690516B3FC14FF28</romid>
      
      <health>7</health>
      
      <channel>1</channel>
      
      <rawdata>54014B467FFF0C10FDFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</rawdata>
      
      <primaryvalue>21.2500 Deg C</primaryvalue>
      
      <temperature units="Centigrade">21.2500</temperature>
      
      <userbyte1 writable="True">75</userbyte1>
      
      <userbyte2 writable="True">70</userbyte2>
      
      <resolution>12</resolution>
      
      <powersource>255</powersource></owd_ds18b20> 
      
      - <owd_ds18b20 description="Programmable resolution thermometer"><name>DS18B20</name>
      
      <family>28</family>
      
      <romid>020316B4A6C3FF28</romid>
      
      <health>7</health>
      
      <channel>1</channel>
      
      <rawdata>55014B467FFF0C10BEFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</rawdata>
      
      <primaryvalue>21.3125 Deg C</primaryvalue>
      
      <temperature units="Centigrade">21.3125</temperature>
      
      <userbyte1 writable="True">75</userbyte1>
      
      <userbyte2 writable="True">70</userbyte2>
      
      <resolution>12</resolution>
      
      <powersource>255</powersource></owd_ds18b20></devices-detail-response> 
      

      Dabei brauche ich dann den Wert dieses Nodes

      <temperature units="Centigrade">21.3125</temperature>
      

      Kann mir jemand auf die Sprünge helfen?

      Danke und Grüße, Jens.

      1 Reply Last reply Reply Quote 0
      • Y
        ykuendig last edited by

        Das könnte mit dem Parser Adapter gemacht werden.

        Haben wir hier schon gemacht: http://forum.iobroker.net/viewtopic.php … =60#p57065

        Dazu den Parser Adapter und eine Instanz davon installieren. Im Adapter sinngemäss dem Drucker-Beispiel eine Regel hinzufügen (+)

        Da Deine URL eingeben und folgende regex-Regel probieren:````
        <rawdata>54014B467FFF0C10FDFF00+</RawData>\n\n<primaryvalue>(\d+.\d+)</primaryvalue></rawdata>

        Das liest den ersten Sensor-Wert ein (hoffentlich).
        
        Für den zweiten Sensor eine zweite Regel erfassen und die RAW Sektion anpassen:````
        <rawdata>55014B467FFF0C10BEFF00+<\/RawData>\n\n<primaryvalue>(\d+.\d+)</primaryvalue></rawdata>
        

        Hier kannst Du testen: https://regex101.com/r/lmXtPE/1

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

        Support us

        ioBroker
        Community Adapters
        Donate

        1.0k
        Online

        31.7k
        Users

        79.8k
        Topics

        1.3m
        Posts

        2
        2
        1113
        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