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.
    • 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
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 das ist ja das Problem
                  ich habe so etwas auch bei meinem Kostal, allerdings muss ich da in derAPI due gewünschten Parameter abfragen. das ist anscheinend auf eine maximale Anzahl je Abfrage limitiert.
                  Vielleicht ist die Zeichenanzahl begrenzt

                  @australien wie bist du denn an das vollständige xml Dokument gekommen?

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

                    @australien
                    Kann es sein, dass nachts keine Stromstärke- und Leistungswerte geliefert werden?

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

                      @paul53 guter Ansatz!

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

                        mit Nachts ist mir klar, ich werd mir das morgen unter Tags noch anschauen, falls kein Nebel ist 😉

                        Danke Euch beiden nochmals!!

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

                          @paul53
                          @australien
                          was ist denn die DC Voltage, wenn nicht die Panel Spannung?

                          und

                          @homoran sagte in Datenpunkt aus xml:

                          @australien wie bist du denn an das vollständige xml Dokument gekommen?

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

                            Guten Morgen,
                            Nebel, aber liefert etwas, somit sind wieder alle 17 Datenpunkte vorhanden.

                            <Measurements>
                            <Measurement Value="234.225" Unit="V" Type="AC_Voltage1"/>
                            <Measurement Value="236.033" Unit="V" Type="AC_Voltage2"/>
                            <Measurement Value="235.065" Unit="V" Type="AC_Voltage3"/>
                            <Measurement Value="0.144" Unit="A" Type="AC_Current1"/>
                            <Measurement Value="0.155" Unit="A" Type="AC_Current2"/>
                            <Measurement Value="0.147" Unit="A" Type="AC_Current3"/>
                            <Measurement Value="6.654" Unit="W" Type="AC_Power"/>
                            <Measurement Value="6.163" Unit="W" Type="AC_Power1"/>
                            <Measurement Value="2.353" Unit="W" Type="AC_Power2"/>
                            <Measurement Value="2.135" Unit="W" Type="AC_Power3"/>
                            <Measurement Value="49.951" Unit="Hz" Type="AC_Frequency1"/>
                            <Measurement Value="49.957" Unit="Hz" Type="AC_Frequency2"/>
                            <Measurement Value="49.958" Unit="Hz" Type="AC_Frequency3"/>
                            <Measurement Value="382.300" Unit="V" Type="DC_Voltage"/>
                            <Measurement Value="0.017" Unit="A" Type="DC_Current"/>
                            <Measurement Value="6.499" Unit="W" Type="DC_Power"/>
                            <Measurement Value="36.550" Unit="°C" Type="Temp"/>
                            </Measurements>
                            

                            @Homoran hatte ich vor 6 Jahren bei der Installation der Anlage erfragt. Es waren sogar 3 xml Seiten, nur die anderen beiden waren nicht brauchbar, weiß die auch nicht mehr.

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

                              @australien sagte: alle 17 Datenpunkte vorhanden.

                              Dann erstelle die restlichen Datenpunkte und erweitere um eine Abfrage.

                              const messung = obj.root.Device[0].Measurements[0].Measurement;
                              if(messung.length == 17) {
                                  for(let obj of messung) {
                                      setState('0_userdata.0.SolarFrontier.' + obj.$.Type, parseFloat(obj.$.Value), true);
                                  }
                              }
                              
                              A 1 Reply Last reply Reply Quote 0
                              • A
                                australien @paul53 last edited by

                                @paul53
                                Datenpunkte hab ich bereits erstellt und werden auch geschrieben - mit dem alten script.
                                Worin besteht der unterschied?

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

                                  @australien sagte: Worin besteht der unterschied?

                                  Dass mit der zusätzlichen Abfrage nachts nichts geschrieben wird.

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

                                    @paul53
                                    Nachts sind die Werte der Leistung aber sowieso 0 und somit ist es doch auch egal.

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

                                      @australien sagte in Datenpunkt aus xml:

                                      @paul53
                                      Nachts sind die Werte der Leistung aber sowieso 0 und somit ist es doch auch egal.

                                      eben nicht!

                                      Nachts g7bt das xml gar nichts zum auswerten zurück

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

                                        @australien sagte: ist es doch auch egal.

                                        Ja, ist es, wenn die Werte nicht historisiert werden.

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

                                          @paul53
                                          Ok, das passiert ja noch nicht, will aber natürlich in naher Zukunft die Daten speichern.

                                          Sollte also die Abrage auf das ganze xml ausgeweitet werden, auch wenn weniger Daten vorhanden sind.
                                          Die letzten gültigen Datenpunkte der Leistung sind alle mit dem Wert 0 befüllt, was ja auch passen würde.

                                          Die ganze Abrage macht ja sowieso nur Sinn, solange Sonne scheint, also eigentlich ein CRON mit Astronomischer Tag würde das ganze einschränken.

                                          so in etwa

                                          const parser = require('xml2js').parseString;
                                          
                                          const url = 'http://10.68.0.85/measurements.xml';
                                          
                                           
                                          
                                          schedule('{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":1},"period":{"days":1}}', function() { 
                                            
                                          
                                              request(url, function(error, response, result) {
                                          
                                                  if(!error) parser(result, function(err, obj) {
                                          
                                                      if(!err) {
                                          
                                                          //log(obj); // Ausgabe posten!
                                                          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);
                                          
                                          }
                                                          }
                                          
                                                  });
                                          
                                              });
                                          
                                          });
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            australien last edited by australien

                                            @paul53

                                            Hallo paul53, ich bin es noch einmal.
                                            Mein Script schaut seit damals so aus, und lief ohne Probleme. Jetzt bekomme ich seit einiger Zeit diese Warnungen, es wurde aber an beiden Systemen nichts geändert. Ausser die standart updates am IOB bzw raspberry.
                                            Was sagen mir die Warnungen, bzw. wir bekomme ich diese wieder weg.
                                            In der besagten XML sind Daten vorhanden.

                                            const parser = require('xml2js').parseString;
                                            
                                            const url = 'http://10.68.0.85/measurements.xml';
                                            
                                             
                                            
                                            schedule('{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":1},"period":{"days":1}}', function() { 
                                            
                                                request(url, function(error, response, result) {
                                            
                                                    if(!error) parser(result, function(err, obj) {
                                            
                                                        if(!err) {
                                            
                                                            //log(obj); // Ausgabe posten!
                                                            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);
                                            
                                            }
                                                            }
                                            
                                                    });
                                            
                                                });
                                            
                                            });
                                            
                                            
                                            09:19:58.061	info	javascript.0 (93977) Stop script script.js.common.PV
                                            09:19:58.106	info	javascript.0 (93977) Start javascript script.js.common.PV
                                            09:19:58.186	info	javascript.0 (93977) script.js.common.PV: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
                                            09:20:00.040	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:20:00.043	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:21:36.990	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:21:36.992	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:22:00.038	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:22:00.040	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:23:00.043	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:23:00.044	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:23:00.093	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:23:00.101	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:24:00.063	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:24:00.066	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            09:25:00.052	warn	javascript.0 (93977) at script.js.common.PV:22:22
                                            09:25:00.055	warn	javascript.0 (93977) at script.js.common.PV:11:20
                                            
                                            <root>
                                            <Device Name="SF-WR-5503" Type="Inverter" Serial="752794xxxxxxxxx10009" BusAddress="1" NetBiosName="INV005565810009" IpAddress="10.68.0.85" DateTime="2023-05-08T09:38:36">
                                            <Measurements>
                                            <Measurement Value="235.405" Unit="V" Type="AC_Voltage1"/>
                                            <Measurement Value="236.821" Unit="V" Type="AC_Voltage2"/>
                                            <Measurement Value="236.344" Unit="V" Type="AC_Voltage3"/>
                                            <Measurement Value="3.397" Unit="A" Type="AC_Current1"/>
                                            <Measurement Value="3.356" Unit="A" Type="AC_Current2"/>
                                            <Measurement Value="3.354" Unit="A" Type="AC_Current3"/>
                                            <Measurement Value="2390.684" Unit="W" Type="AC_Power"/>
                                            <Measurement Value="798.457" Unit="W" Type="AC_Power1"/>
                                            <Measurement Value="794.152" Unit="W" Type="AC_Power2"/>
                                            <Measurement Value="792.340" Unit="W" Type="AC_Power3"/>
                                            <Measurement Value="50.013" Unit="Hz" Type="AC_Frequency1"/>
                                            <Measurement Value="50.008" Unit="Hz" Type="AC_Frequency2"/>
                                            <Measurement Value="50.016" Unit="Hz" Type="AC_Frequency3"/>
                                            <Measurement Value="512.000" Unit="V" Type="DC_Voltage"/>
                                            <Measurement Value="4.762" Unit="A" Type="DC_Current"/>
                                            <Measurement Value="2438.144" Unit="W" Type="DC_Power"/>
                                            <Measurement Value="38.340" Unit="°C" Type="Temp"/>
                                            </Measurements>
                                            </Device>
                                            </root>
                                            
                                            paul53 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            548
                                            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