Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser Adapter Werte Zeilenweise auslesen (Guntamatic)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Parser Adapter Werte Zeilenweise auslesen (Guntamatic)

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      glitzi @Homoran last edited by

      Hallo,

      anbei die gespeicherte Webseite... daraus möchte ich Zeilenweise die Werte Parsen.

      daqdata.cgi.txt

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

        @glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

        daraus möchte ich Zeilenweise die Werte Parsen.

        Jede Zeile???
        oder nur ausgewählte?

        ([\d\.\w\-]+)
        gibt dir als Match den Wert jeder Zeile in einer anderen Gruppe (= NUM)

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

          Super, das funktioniert schon mal perfekt.

          Ist es auch möglich leere Zeilen zu berücksichtigen?

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

            @glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

            Ist es auch möglich leere Zeilen zu berücksichtigen?

            vielleicht?
            aber wonach soll man da suchen?

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

              In Openhab habe ich es mit String Split gemacht, da hat er die leeren Zeilen berücksichtigt.

              eventuell nach dem CR und LF? am ende jeder Zeile?

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

                @glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

                eventuell nach dem CR und LF? am ende jeder Zeile?

                Das geht ohne Probleme aber er hat nichts auszugeben 😉

                Selbst das Leerzeichen (es ist nämlich keine wirklich leere Zeile) bekomme ich nicht als Ausgabe 😞

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

                  Hintergrund ist wenn da mal was von der Heizung eingetragen wird, bekomme ich einen Versatz in der ganzen Auswertung. z.B. in Zeile 3 kommt mal was, denn würden sich die folgenden um eins versetzen.

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

                    @glitzi ich fürchte, dann musst du das auch mit split machen, aber eben mit javascript

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

                      Das ist echt blöd...

                      gerade in Zeile 79 und 80 schreibt die Heizung die Störungstexte in Klartext, das würde dann den Rest um zwei Zeilen verschieben.

                      Also muss ich mich jetzt in javascript einarbeiten 😖

                      Trotzdem Danke für die super Unterstützung!!!

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

                        @glitzi Hab noch mal ein wenig getestet, versuch mal :^([\d\-\.\w]+|\s)\n

                        aber keine Garantie, dass Zeile 79 und 80 (=NUM78 oder 79) wahlweise nix oder den Klartext anzeigen
                        steht da jetzt AUS???

                        RegEx_Heizung.png

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

                          Hallo,

                          so funktioniert es generell nicht mehr (die Richtigen Zeilen sind NUM79 und 80)

                          MfG

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

                            @glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

                            so funktioniert es generell nicht mehr

                            die NUM müssten sich jetzt verschoben haben und für JEDE Zeile ein Match vorhanden sein - jedoch OHNE Group!
                            Kann sein, dass es deswegen gar nicht mehr klappt.

                            kannst du mal das Editorfenster von dem Parser-Adapter mit dem neuen RegEx zeigen?

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

                              Da müsste ja jetzt auch AUS stehen und mit NUM 2 NIX

                              c34a4505-5340-4688-a296-2493405a093d-image.png

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

                                @glitzi sehe ich gerade auch.
                                Habe mir den Text in einer Testumgebung in das Fenster kopiert.

                                Der ioBroker parser tickt manchmal etwas anders.
                                Suche noch nach der Ursache

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

                                  @glitzi
                                  Mit ([\d\-\.\w]+|\s) kommt wenigstens wieder etwas, aber die NUMs sind jetzt fast doppelt so hoch, weil anscheinend da immer noch ein Leerzeichen vor dem Zeilenumruch ist

                                  1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer last edited by AlCalzone

                                    Mal ganz dämlich, habt ihr es mal einfach nur mit (.+) als Regex probiert? Das sollte jeweils die ganze Zeile matchen (in der obigen Textdatei enthalten alle "leeren" Zeilen ein Leerzeichen).
                                    Oder tickt da der ioBroker-Parser auch anders?

                                    G Homoran 2 Replies Last reply Reply Quote 0
                                    • G
                                      glitzi @AlCalzone last edited by

                                      Puhhhh irgendwie alles sehr schwierig,

                                      wie wäre es denn mit so einem Script, das habe ich mir eben mal zusammengegoogelt.

                                      würde das so funktionieren?

                                      function()
                                      {
                                      createState('Guntamatic_Test1');
                                      createState('Guntamatic_Test2'); 
                                      
                                      var request= require('request');
                                      request.post({
                                        url:     'http://10.10.10.7/daqdata.cgi'
                                      }, function(error, response, body){
                                        if (body) {
                                            var parts_Guntamatic = body.split('\n')[0];
                                            setState('Guntamatic_Test2', parts_Guntamatic, true);
                                      
                                            var parts_Guntamatic = body.split('\n')[1];
                                            setState('Guntamatic_Test2', parts_Guntamatic, true);
                                        }
                                      }); 
                                       
                                      }
                                      )
                                      
                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @AlCalzone last edited by

                                        @AlCalzone sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

                                        Oder tickt da der ioBroker-Parser auch anders?

                                        das Problem scheinen beim ioBroker Parser die Zeilenumbrüche zu sein.
                                        RegExes mit \n funktionieren z.B. nicht 😞

                                        So ist das Problem auch mit diesem Text. das ^ als Anfang der Zeile führt dann immer nur zum ersten Eintrag, und das (.+) führt zu einem Ergebnis, das den gesamten Quelltext enthält

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

                                          @glitzi
                                          Ich glaube ich habe es jetzt: ([\w\.\d\-]+|\s)\s

                                          EDIT:
                                          Zeile 115 wird nicht ausgelesen, weil danach kein LF mehr kommt
                                          Das funktioniert dann mit ([\w\.\d\-]+|\s)\s?

                                          Ob das jetzt wieder andere Nebenwirkungen hat weiß ich nicht

                                          G 1 Reply Last reply Reply Quote 1
                                          • G
                                            glitzi @Homoran last edited by

                                            Hallo,

                                            meine Finale Lösung ist jetzt doch ein Skript geworden...

                                            
                                            createState('Guntamatic_Betrieb_0');
                                            createState('Guntamatic_Aussentemperatur_1');
                                            createState('Guntamatic_Kesseltemperatur_3');
                                            createState('Guntamatic_Leistung_5');
                                            createState('Guntamatic_CO2_Gehalt_8');
                                            createState('Guntamatic_Puffer_oben_17');
                                            createState('Guntamatic_Puffer_unten_19');
                                            createState('Guntamatic_Pumpe_HP0_20');
                                            createState('Guntamatic_Warmwasser_21');
                                            createState('Guntamatic_Vorlauf_31');
                                            createState('Guntamatic_Kesselfreigabe_68');
                                            createState('Guntamatic_Programm_69');
                                            createState('Guntamatic_Programm_HK1_71');
                                            createState('Guntamatic_Stoer0_79');
                                            createState('Guntamatic_Stoer1_80');
                                            createState('Guntamatic_Asche_entleeren_85');
                                            createState('Guntamatic_Brenstoffzähler_89');
                                            createState('Guntamatic_Pufferladung_90');
                                            createState('Guntamatic_CO2_Gehalt_korrigiert');
                                            
                                            var request= require('request');
                                             
                                            schedule("*/10 * * * * *",
                                              
                                            function()
                                            {
                                            
                                            /*
                                            für einige Werte wie Brennstoffverbrauch benötigt mein einen Key von Guntamatic
                                              url:     'http://10.10.10.7/daqdata.cgi?key=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
                                            */
                                            
                                            var request= require('request');
                                            request.post({
                                              url:     'http://10.10.10.7/daqdata.cgi'
                                            }, function(error, response, body){
                                              if (body) {
                                                  
                                                  var parts_Guntamatic = body.split('\n')[0];
                                                  setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[1];
                                                  setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[3];
                                                  setState('Guntamatic_Kesseltemperatur_3', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[5];
                                                  setState('Guntamatic_Leistung_5', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[8];
                                                  setState('Guntamatic_CO2_Gehalt_8', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[17];
                                                  setState('Guntamatic_Puffer_oben_17', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[19];
                                                  setState('Guntamatic_Puffer_unten_19', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[20];
                                                  setState('Guntamatic_Pumpe_HP0_20', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[21];
                                                  setState('Guntamatic_Warmwasser_21', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[31];
                                                  setState('Guntamatic_Vorlauf_31', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[68];
                                                  setState('Guntamatic_Kesselfreigabe_68', parts_Guntamatic, true);
                                                  
                                                  var parts_Guntamatic = body.split('\n')[69];
                                                  setState('Guntamatic_Programm_69', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[71];
                                                  setState('Guntamatic_Programm_HK1_71', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[79];
                                                  setState('Guntamatic_Stoer0_79', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[80];
                                                  setState('Guntamatic_Stoer1_80', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[85];
                                                  setState('Guntamatic_Asche_entleeren_85', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[89];
                                                  setState('Guntamatic_Brenstoffzähler_89', parts_Guntamatic, true);
                                            
                                                  var parts_Guntamatic = body.split('\n')[90];
                                                  setState('Guntamatic_Pufferladung_90', parts_Guntamatic, true);
                                              }
                                            
                                            
                                            if (getState("Guntamatic_Leistung_5").val == 0)
                                            {
                                                setState("Guntamatic_CO2_Gehalt_korrigiert" , 0, true);
                                            }
                                            else
                                            {
                                                setState("Guntamatic_CO2_Gehalt_korrigiert",getState("Guntamatic_CO2_Gehalt_8").val);  
                                            }
                                            
                                            
                                            }); 
                                             
                                            }
                                            )
                                            
                                            AlCalzone Homoran A 3 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            508
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            parser guntamatic regex
                                            8
                                            75
                                            7170
                                            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