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.
    • 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
        • AlCalzone
          AlCalzone Developer @glitzi last edited by

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

          body.split('\n')

          Kleiner Tip: Speicher das in einer Variablen und nutze diese (anstatt die Split-Aktion 90x auszuführen)

                var parts = body.split('\n');
                var parts_Guntamatic = parts[0];
                setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
          
                var parts_Guntamatic = parts[1];
                setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
          
              ...
          
          G 2 Replies Last reply Reply Quote 1
          • Homoran
            Homoran Global Moderator Administrators @glitzi last edited by

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

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

            Das ist gut!

            Aber da ich neugierig bin würde mich interessieren ob mein letztes RegEx wirklich funktioniert (hätte)?

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

              @Homoran said in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):

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

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

              Das ist gut!

              Aber da ich neugierig bin würde mich interessieren ob mein letztes RegEx wirklich funktioniert (hätte)?

              Leider hat er nicht funktioniert... Trotzdem Danke für die viele Arbeit!

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

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

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

                body.split('\n')

                Kleiner Tip: Speicher das in einer Variablen und nutze diese (anstatt die Split-Aktion 90x auszuführen)

                      var parts = body.split('\n');
                      var parts_Guntamatic = parts[0];
                      setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[1];
                      setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
                
                    ...
                

                Super werde ich gleich mal umsetzen.

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

                  Einer eine Idee warum in der Objektübersicht der Korrigierte Wert meisten dem Original etwas hinterherhinkt?

                  ...
                  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, true);  
                  }
                  
                  
                  AlCalzone 1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer @glitzi last edited by

                    @glitzi setState ist asynchron - der Code läuft weiter, bevor der Wert in der Datenbank angekommen und per getState verfügbar ist.
                    Diese Korrekturen solltest du beim Auslesen auf Basis des geparsten Wertes schon machen, ohne den Umweg über die Datenbank.

                    also z.B. so:

                    if (parts[5] == 0) {
                      // setState...
                    } else {
                      setState("Guntamatic_CO2_Gehalt_korrigiert", parts[8], true)
                    }
                    G 3 Replies Last reply Reply Quote 1
                    • G
                      glitzi @AlCalzone last edited by

                      @AlCalzone

                      Perfekt !!!

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

                        @AlCalzone @Homoran

                        kann mir eventuell einer von euch bei meinem nächsten Problem helfen 😉

                        String seriell einlesen, Anfang finden und dann splitten und von HEX konvertieren

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

                          @AlCalzone

                          Hallo,

                          ich lese die Daten ja wie folgt erfolgreich ein...

                          
                          function()
                          {
                          
                          var request= require('request');
                          request.post({
                            url:     'http://10.10.10.7/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxxxxxx'
                          }, function(error, response, body){
                            if (body) {
                                
                                var parts = body.split('\n');
                          
                                var parts_Guntamatic = parts[0];
                                setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
                          .................
                          

                          jetzt werde leider keine Sonderzeichen, insbesondere Umlaute dargestellt, kann man da noch den Zeichensatz beim importieren vorgeben/wandeln?

                          Gruß Glitzi

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

                            @glitzi

                            request.post({
                              url:     'http://10.10.10.7/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
                              encoding: 'HIER DAS KORREKTE ENCODING'
                            }, ...
                            

                            Mögliche Werte findest du in https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings

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

                              @AlCalzone
                              noch zwei sachen,

                              da kommt leider

                              error	javascript.0 (11434) script.js.Guntamatic_Daten_aus_Http_Seite_Parsen compile failed: at script.js.Guntamatic_Daten_aus_Http_Seite_Parsen:29
                              

                              und könntest du noch den Key im vorigen Post löschen?

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

                                @glitzi getan. Da fehlt ein Komma am Ende der url: ... Zeile

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

                                  @AlCalzone

                                  DANKE

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    alex303 @glitzi last edited by

                                    Hallo zusammen,

                                    @glitzi
                                    70eece0f-9847-4835-99f8-5ceab38783e6-image.png
                                    woher bekommt man den Key?

                                    Ich habe Version 3.1b, woher bekommt man ein update?

                                    Sind die Werte mit der aktuellen Software Version immer noch im Klartext aus zu lesen?
                                    Ich habe gelesen das Guntamatic die mittlerweile Verschlüsselt hat.

                                    Kann man auch die Heizung über die Visu steuern?
                                    Z.B. Pumpen EIN oder AUS schalten.

                                    Gruß
                                    Alexander

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

                                      @alex303

                                      Hallo,

                                      • Software gibt es nur beim Heizungsbauer

                                      • Den Key bekommt man auch nur über Guntamatic
                                        Siehe Formular
                                        Kundendaten_Schnittstellen_DE.doc

                                      Beschreibung zur Schnittstelle, geht auch über Modbus TCP (Da gibt es nur keinen Störtext und der KEY wird benötigt)
                                      WEB_MODBUS-Schnittstelle_DE-V03-0316.pdf

                                      Modbus Mapping:
                                      http://IP.IP.IP.IP/mbmap.cgi?key=xxxxx

                                      Werte:
                                      http://IP.IP.IP.IP/daqdata.cgi

                                      Beschreibung:
                                      http://IP.IP.IP.IP/daqdesc.cgi

                                      Der unterschied (mit/ohne Key) ist folgender

                                      e8cec26d-167f-4ac1-a0ae-c65508a7cb21-image.png

                                      A 1 Reply Last reply Reply Quote 0
                                      • A
                                        alex303 @glitzi last edited by

                                        @glitzi

                                        Hallo,

                                        bei mir sieht die Beschreibung so aus:

                                        Betrieb;
                                        Aussentemperatur;°C
                                        reserved;
                                        Kesseltemperatur;°C
                                        reserved;
                                        Leistung;%
                                        reserved;
                                        reserved;
                                        CO2 Gehalt;%
                                        reserved;
                                        reserved;
                                        reserved;
                                        reserved;
                                        Saugzuggebläse;%
                                        reserved;
                                        Austragungsgebläse;%
                                        G1 soll;%
                                        Puffer oben;°C
                                        Puffer mitte;°C
                                        Puffer unten;°C
                                        Pumpe HP0;
                                        Warmwasser 0;°C
                                        P Warmwasser 0;
                                        Warmwasser 1;°C
                                        P Warmwasser 1;
                                        Warmwasser 2;°C
                                        P Warmwasser 2;
                                        Raumtemp. HK 0;°C
                                        Heizkreis 0;
                                        Raumtemp. HK 1;°C
                                        reserved;
                                        Vorlauf Ist 1;°C
                                        reserved;
                                        reserved;
                                        Raumtemp. HK 2;°C
                                        reserved;
                                        Vorlauf Ist 2;°C
                                        reserved;
                                        Heizkreis 2;
                                        Raumtemp. HK 3;°C
                                        Heizkreis 3;
                                        Raumtemp. HK 4;°C
                                        reserved;
                                        Vorlauf Ist 4;°C
                                        reserved;
                                        Heizkreis 4;
                                        Raumtemp. HK 5;°C
                                        reserved;
                                        Vorlauf Ist 5;°C
                                        reserved;
                                        Heizkreis 5;
                                        Raumtemp. HK 6;°C
                                        Heizkreis 6;
                                        Raumtemp. HK 7;°C
                                        reserved;
                                        Vorlauf Ist 7;°C
                                        reserved;
                                        Heizkreis 7;
                                        Raumtemp. HK 8;°C
                                        reserved;
                                        Vorlauf Ist 8;°C
                                        reserved;
                                        Heizkreis 8;
                                        reserved;
                                        reserved;
                                        reserved;
                                        reserved;
                                        reserved;
                                        reserved;
                                        Programm;
                                        Progamm HK0;
                                        Progamm HK1;
                                        Progamm HK2;
                                        Progamm HK3;
                                        Progamm HK4;
                                        Progamm HK5;
                                        Progamm HK6;
                                        Progamm HK7;
                                        Progamm HK8;
                                        Störung 0;
                                        Störung 1;
                                        Serial;
                                        Version;
                                        Betriebszeit;h
                                        Servicezeit;d
                                        Asche leeren in;h
                                        Vorlauf Ist 0;°C
                                        Vorlauf Ist 3;°C
                                        Vorlauf Ist 6;°C

                                        Das heißt über daqdata kann man nur die Werte für die Visu auslesen, um die Heizung zu steuern muss man über Modbus gehen.

                                        Welchen Unterschied gibt es vom Software Stand von 3.1b zu dem Aktuellen?
                                        Macht es sinn ein Update zu machen?

                                        Woher weis Du die ganzen Sachen?

                                        Vielen Dank für die Infos.

                                        Gruß
                                        Alexander

                                        O G 2 Replies Last reply Reply Quote 1
                                        • O
                                          orfix @alex303 last edited by

                                          servus,

                                          ich hab die sw 32c
                                          mit key, sehe aber keinen unterschied bei der ausgabe?
                                          xxx.xxx.2.15/daqdata.cgi?key=xxxxxxxxxxxxxxxxxx

                                          was mache ich falsch?

                                          mfg

                                          orfix

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

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

                                            servus,

                                            ich hab die sw 32c
                                            mit key, sehe aber keinen unterschied bei der ausgabe?
                                            xxx.xxx.2.15/daqdata.cgi?key=xxxxxxxxxxxxxxxxxx

                                            was mache ich falsch?

                                            mfg

                                            orfix

                                            Hast Du abhängig von deinem Kessel einen Code bei Guntamatic angefordert?

                                            Ohne oder mit falschen Code kommen keine anderen Daten.

                                            G O 2 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

                                            836
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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