Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Parser Adapter Werte Zeilenweise auslesen (Guntamatic)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Parser Adapter Werte Zeilenweise auslesen (Guntamatic)

Scheduled Pinned Locked Moved ioBroker Allgemein
parser guntamatic regex
77 Posts 8 Posters 13.3k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Homoran

    @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 Offline
    G Offline
    glitzi
    wrote on last edited by
    #15

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

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

    HomoranH 2 Replies Last reply
    0
    • G glitzi

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

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

      HomoranH Offline
      HomoranH Offline
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #16

      @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

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      0
      • G glitzi

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

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

        HomoranH Offline
        HomoranH Offline
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #17

        @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

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Reply Last reply
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          wrote on last edited by AlCalzone
          #18

          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?

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          G HomoranH 2 Replies Last reply
          0
          • AlCalzoneA 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 Offline
            G Offline
            glitzi
            wrote on last edited by
            #19

            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);
              }
            }); 
             
            }
            )
            
            HomoranH 1 Reply Last reply
            0
            • AlCalzoneA 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?

              HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #20

              @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

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              • G glitzi

                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);
                  }
                }); 
                 
                }
                )
                
                HomoranH Offline
                HomoranH Offline
                Homoran
                Global Moderator Administrators
                wrote on last edited by Homoran
                #21

                @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

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                G 1 Reply Last reply
                1
                • HomoranH 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 Offline
                  G Offline
                  glitzi
                  wrote on last edited by
                  #22

                  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);  
                  }
                  
                  
                  }); 
                   
                  }
                  )
                  
                  AlCalzoneA HomoranH A 3 Replies Last reply
                  0
                  • G glitzi

                    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);  
                    }
                    
                    
                    }); 
                     
                    }
                    )
                    
                    AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    wrote on last edited by
                    #23

                    @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);
                    
                        ...
                    

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    G 2 Replies Last reply
                    1
                    • G glitzi

                      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);  
                      }
                      
                      
                      }); 
                       
                      }
                      )
                      
                      HomoranH Offline
                      HomoranH Offline
                      Homoran
                      Global Moderator Administrators
                      wrote on last edited by
                      #24

                      @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)?

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      G 1 Reply Last reply
                      0
                      • HomoranH Homoran

                        @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 Offline
                        G Offline
                        glitzi
                        wrote on last edited by
                        #25

                        @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
                        0
                        • AlCalzoneA AlCalzone

                          @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 Offline
                          G Offline
                          glitzi
                          wrote on last edited by
                          #26

                          @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
                          0
                          • G glitzi

                            @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 Offline
                            G Offline
                            glitzi
                            wrote on last edited by
                            #27

                            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);  
                            }
                            
                            
                            AlCalzoneA 1 Reply Last reply
                            0
                            • G glitzi

                              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);  
                              }
                              
                              
                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              wrote on last edited by
                              #28

                              @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)
                              }

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              G 3 Replies Last reply
                              1
                              • AlCalzoneA AlCalzone

                                @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 Offline
                                G Offline
                                glitzi
                                wrote on last edited by
                                #29

                                @AlCalzone

                                Perfekt !!!

                                1 Reply Last reply
                                0
                                • AlCalzoneA AlCalzone

                                  @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 Offline
                                  G Offline
                                  glitzi
                                  wrote on last edited by
                                  #30

                                  @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
                                  0
                                  • AlCalzoneA AlCalzone

                                    @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 Offline
                                    G Offline
                                    glitzi
                                    wrote on last edited by glitzi
                                    #31

                                    @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

                                    AlCalzoneA 1 Reply Last reply
                                    0
                                    • G 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

                                      AlCalzoneA Offline
                                      AlCalzoneA Offline
                                      AlCalzone
                                      Developer
                                      wrote on last edited by AlCalzone
                                      #32

                                      @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

                                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                      G 1 Reply Last reply
                                      1
                                      • AlCalzoneA 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 Offline
                                        G Offline
                                        glitzi
                                        wrote on last edited by
                                        #33

                                        @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?

                                        AlCalzoneA 1 Reply Last reply
                                        0
                                        • G glitzi

                                          @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?

                                          AlCalzoneA Offline
                                          AlCalzoneA Offline
                                          AlCalzone
                                          Developer
                                          wrote on last edited by
                                          #34

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

                                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                          G 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          375

                                          Online

                                          32.7k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe