Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Datenpunkt aus xml

    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

    Datenpunkt aus xml

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

      Hallo zusammen,

      ich bin bei IOBroker neu und leider wird mein Wechselrichter, SolarFrontier, nicht mittels Adapter ausgelesen.

      Ich kann aber mit dem link (http://10.68.0.85/measurements.xml) eine xml Datei auslesen. Wie bekomme ich diese in Datenpunkte.

      Ich hab schon was von xml2js gelesen, aber wo trag ich das ein und wie könnte ein Script ausschauen.

      <root>
      <Device Name="SF-WR-5503" Type="Inverter" Serial="752794Axxxxxxx" BusAddress="1" NetBiosName="INV005565810009" IpAddress="10.68.0.85" DateTime="2022-11-14T14:34:49">
      <Measurements>
      <Measurement Value="232.511" Unit="V" Type="AC_Voltage1"/>
      <Measurement Value="234.392" Unit="V" Type="AC_Voltage2"/>
      <Measurement Value="234.739" Unit="V" Type="AC_Voltage3"/>
      <Measurement Value="0.188" Unit="A" Type="AC_Current1"/>
      <Measurement Value="0.186" Unit="A" Type="AC_Current2"/>
      <Measurement Value="0.182" Unit="A" Type="AC_Current3"/>
      <Measurement Value="83.355" Unit="W" Type="AC_Power"/>
      <Measurement Value="30.510" Unit="W" Type="AC_Power1"/>
      <Measurement Value="28.707" Unit="W" Type="AC_Power2"/>
      <Measurement Value="27.966" Unit="W" Type="AC_Power3"/>
      <Measurement Value="49.997" Unit="Hz" Type="AC_Frequency1"/>
      <Measurement Value="50.005" Unit="Hz" Type="AC_Frequency2"/>
      <Measurement Value="50.001" Unit="Hz" Type="AC_Frequency3"/>
      <Measurement Value="435.600" Unit="V" Type="DC_Voltage"/>
      <Measurement Value="0.195" Unit="A" Type="DC_Current"/>
      <Measurement Value="84.942" Unit="W" Type="DC_Power"/>
      <Measurement Value="39.610" Unit="°C" Type="Temp"/>
      </Measurements>
      </Device>
      </root>
      

      Danke Euch!

      Homoran Codierknecht paul53 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @australien last edited by Homoran

        @australien geht bestimmt einfacher mit einem Skript.
        Ich würde das versuchen mit dem Parser Adapter auszulesen, auch wenn es dafür sehr unglücklich aufgebaut ist.

        Der erste Wert käme mit lue="([\d.]+)[^a]+age1

        die anderen gehen ähnlich.

        Warte nochmal, mir fällt gerade etwas ein!

        Edit:
        jepp! mit lue="([\d.]+) bekommst du jeden Wert, du musst nur die NUM für deine gewünschten Werte anpassen

        Screenshot_20221114-145219_Firefox.jpg

        1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @australien last edited by

          @australien
          In Plain-JavaScript mit dem DOMParser.
          Ich weiß aber leider nicht, wie der in den ioBroker eingebunden werden muss - falls das überhaupt geht.

          8109c333-0b8c-4bed-818a-e862fa0c0831-image.png

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @australien last edited by

            @australien sagte in Datenpunkt aus xml:

            xml2js gelesen, aber wo trag ich das ein

            In der JS-Instanz-Konfiguration eintragen:

            JS_NPM.JPG

            @australien sagte in Datenpunkt aus xml:

            wie könnte ein Script ausschauen.

            const parser = require('xml2js').parseString;
            const idXML = 'abc'; // anpassen!
            
            on(idXML, function(dp) {
                parser(dp.state.val, function(err, obj) {
                    if(!err) {
                        // Attribute von obj auswerten
                    }
                });
            });
            
            1 Reply Last reply Reply Quote 0
            • A
              australien last edited by australien

              danke für Eure inputs, leider stehe ich wie der Ochs vor dem Tor und verstehe nur Bahnhof.

              Wie kann ich mein http xml request in Datenpunkte bringen?
              in fhem hat das so ausgeschaut.

              TYPE HTTPMOD
              url http://10.68.0.85/measurements.xml
              
              reading01Name   AC_Current3
              reading01Regex   AC_Current3\'\/><Measurement Value=\'([\d]+)
              
              
              
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @australien last edited by paul53

                @australien
                Versuche es erst einmal so:

                const parser = require('xml2js').parseString;
                const url = 'http://10.68.0.85/measurements.xml';
                
                schedule('* * * * *', function() { 
                    request(url, function(error, response, result) {
                        if(!error) parser(result, function(err, obj) {
                            if(!err) {
                                log(obj); // Ausgabe posten!
                            }
                        });
                    });
                });
                
                A 1 Reply Last reply Reply Quote 0
                • A
                  australien @paul53 last edited by australien

                  @paul53
                  Unbenannt.JPG

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @australien last edited by

                    @australien hst du das modul in der Javascript-Instanz eingetragen?

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      australien @Homoran last edited by australien

                      @homoran
                      Ja

                      Unbenannt.JPG

                      Homoran paul53 3 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @australien last edited by

                        @australien sagte in Datenpunkt aus xml:

                        @homoran
                        Ja

                        Unbenannt.JPG

                        Nein , nicht da!

                        @paul53 sagte in Datenpunkt aus xml:

                        @australien sagte in Datenpunkt aus xml:

                        xml2js gelesen, aber wo trag ich das ein

                        In der JS-Instanz-Konfiguration eintragen:

                        JS_NPM.JPG

                        da!

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          australien @Homoran last edited by

                          @homoran
                          auch ja, soweit ich sehe.

                          Unbenannt.JPG

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @australien last edited by

                            @australien
                            Siehe Zeile 6: Tausche dp.state.val gegen result aus (hatte ich nach wenigen Sekunden korrigiert).

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @australien last edited by Homoran

                              @australien wieso steht bei dir dp in Zeile 13.
                              das ust nicht was Paul schrieb

                              edit: ok, hatte das "original " nicht gesehen

                              1 Reply Last reply Reply Quote 0
                              • A
                                australien last edited by australien

                                jetz kommt Leben ins Geschehen

                                20:19:52.202	info	javascript.0 (6486) Stop script script.js.common.PV
                                20:38:16.280	info	javascript.0 (6486) Stop script script.js.common.PV
                                20:38:17.819	info	javascript.0 (6486) Start javascript script.js.common.PV
                                20:38:17.856	info	javascript.0 (6486) script.js.common.PV: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
                                20:39:07.644	info	javascript.0 (6486) script.js.common.PV: {'root':{'Device':[{'$':{'Name':'SF-WR-5503','Type':'Inverter','Serial':'752794AB005565810009','BusAddress':'1','NetBiosName':'INV005565810009','IpAddress':'10.68.0.85','DateTime':'2022-11-14T20:38:18'},'Measurements':[{'Measurement':[{'$':{'Value':'233.046','Unit':'V','Type':'AC_Voltage1'}},{'$':{'Value':'235.306','Unit':'V','Type':'AC_Voltage2'}},{'$':{'Value':'234.911','Unit':'V','Type':'AC_Voltage3'}},{'$':{'Value':'50.002','Unit':'Hz','Type':'AC_Frequency1'}},{'$':{'Value':'50.006','Unit':'Hz','Type':'AC_Frequency2'}},{'$':{'Value':'50.003','Unit':'Hz','Type':'AC_Frequency3'}},{'$':{'Value':'0.000','Unit':'V','Type':'DC_Voltage'}},{'$':{'Value':'21.260','Unit':'°C','Type':'Temp'}}]}]}]}}
                                20:40:00.071	info	javascript.0 (6486) script.js.common.PV: {'root':{'Device':[{'$':{'Name':'SF-WR-5503','Type':'Inverter','Serial':'752794AB005565810009','BusAddress':'1','NetBiosName':'INV005565810009','IpAddress':'10.68.0.85','DateTime':'2022-11-14T20:39:10'},'Measurements':[{'Measurement':[{'$':{'Value':'233.334','Unit':'V','Type':'AC_Voltage1'}},{'$':{'Value':'235.452','Unit':'V','Type':'AC_Voltage2'}},{'$':{'Value':'235.217','Unit':'V','Type':'AC_Voltage3'}},{'$':{'Value':'50.015','Unit':'Hz','Type':'AC_Frequency1'}},{'$':{'Value':'50.024','Unit':'Hz','Type':'AC_Frequency2'}},{'$':{'Value':'50.008','Unit':'Hz','Type':'AC_Frequency3'}},{'$':{'Value':'0.000','Unit':'V','Type':'DC_Voltage'}},{'$':{'Value':'21.250','Unit':'°C','Type':'Temp'}}]}]}]}}
                                
                                

                                nur wir teile ich die Daten nun Datenpunkten zu?

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @australien last edited by paul53

                                  @australien sagte in Datenpunkt aus xml:

                                  die Daten nun Datenpunkten zu?

                                  Ersetze log(obj) durch

                                  const messung = obj.root.Device[0].Measurements[0].Measurement;
                                  for(let obj of messung) {
                                      log(obj.$.Type + ': ' + parseFloat(obj.$.Value) + ' ' + obj.$.Unit);
                                      // setState('0_userdata.0.SolarFrontier.' + obj.$.Type, parseFloat(obj.$.Value), true);
                                  }
                                  

                                  Erstelle vorher die 8 Datenpunkte vom Typ "number" unter "0_userdata.0".

                                  Log:

                                  20:59:41.099	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Voltage1: 233.046 V
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Voltage2: 235.306 V
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Voltage3: 234.911 V
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Frequency1: 50.002 Hz
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Frequency2: 50.006 Hz
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: AC_Frequency3: 50.003 Hz
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: DC_Voltage: 0 V
                                  20:59:41.100	info	javascript.1 (2579) script.js.common.Neuer_Test: Temp: 21.26 °C
                                  
                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @paul53 last edited by

                                    @paul53 wieso sind im obj nur 8 Werte?
                                    die xml enthält 17

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @Homoran last edited by paul53

                                      @homoran sagte: die xml enthält 17

                                      Dann müssen die übrigen wohl in einem anderen Array-Element enthalten sein. Ich schau mal.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                        @paul53

                                        alle in <Measurements>

                                        <root>
                                        
                                        <Device Name="SF-WR-5503" Type="Inverter" Serial="752794Axxxxxxx" BusAddress="1" NetBiosName="INV005565810009" IpAddress="10.68.0.85" DateTime="2022-11-14T14:34:49">
                                        
                                        <Measurements>
                                        
                                        <Measurement Value="232.511" Unit="V" Type="AC_Voltage1"/>
                                        
                                        <Measurement Value="234.392" Unit="V" Type="AC_Voltage2"/>
                                        
                                        <Measurement Value="234.739" Unit="V" Type="AC_Voltage3"/>
                                        
                                        <Measurement Value="0.188" Unit="A" Type="AC_Current1"/>
                                        
                                        <Measurement Value="0.186" Unit="A" Type="AC_Current2"/>
                                        
                                        <Measurement Value="0.182" Unit="A" Type="AC_Current3"/>
                                        
                                        <Measurement Value="83.355" Unit="W" Type="AC_Power"/>
                                        
                                        <Measurement Value="30.510" Unit="W" Type="AC_Power1"/>
                                        
                                        <Measurement Value="28.707" Unit="W" Type="AC_Power2"/>
                                        
                                        <Measurement Value="27.966" Unit="W" Type="AC_Power3"/>
                                        
                                        <Measurement Value="49.997" Unit="Hz" Type="AC_Frequency1"/>
                                        
                                        <Measurement Value="50.005" Unit="Hz" Type="AC_Frequency2"/>
                                        
                                        <Measurement Value="50.001" Unit="Hz" Type="AC_Frequency3"/>
                                        
                                        <Measurement Value="435.600" Unit="V" Type="DC_Voltage"/>
                                        
                                        <Measurement Value="0.195" Unit="A" Type="DC_Current"/>
                                        
                                        <Measurement Value="84.942" Unit="W" Type="DC_Power"/>
                                        
                                        <Measurement Value="39.610" Unit="°C" Type="Temp"/>
                                        
                                        </Measurements>
                                        
                                        </Device>
                                        
                                        </root>
                                        
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Homoran last edited by paul53

                                          @homoran
                                          Das Ergebnis (Log) von xml2js lieferte nur die 8 Werte.

                                          A Homoran 2 Replies Last reply Reply Quote 0
                                          • A
                                            australien @paul53 last edited by

                                            @paul53
                                            Unbenannt.JPG

                                            super, danke euch beiden!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            848
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            39
                                            1017
                                            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