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

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    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

        32.4k
        Users

        81.2k
        Topics

        1.3m
        Posts

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