Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Hargassner HV40 Daten über telnet abgreifen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Hargassner HV40 Daten über telnet abgreifen

    This topic has been deleted. Only users with topic management privileges can see it.
    • jpgorganizer
      jpgorganizer @Hogy last edited by

      @Hogy Danke, ich werde das mal vergleichen mit meinen Daten.
      Da die Heizung aber aktuell nicht mehr läuft - es ist Sommer 🙂 - muss ich mal schauen wie ich das mache

      Grüße
      jpgorganizer

      1 Reply Last reply Reply Quote 0
      • Hogy
        Hogy last edited by

        @jpgorganizer
        würde mich sehr freuen, wenn du deine Erkenntnisse teilen würdest. Solltest du weitere Wertzuordnungen finden, dann lass es mich bitte wissen.
        Hast du auch eine HV40 oder ist das eine Andere? Wenn eine Andere... welche?

        Grüße, Hogy

        jpgorganizer 1 Reply Last reply Reply Quote 0
        • jpgorganizer
          jpgorganizer @Hogy last edited by

          @Hogy sagte in Hargassner HV40 Daten über telnet abgreifen:

          Hast du auch eine HV40 oder ist das eine Andere? Wenn eine Andere... welche?

          Ich habe eine Pelletheizung Nano

          Und sei unbesorgt, ich teile meine Erkenntnisse

          VG
          jpgorganizer

          A 1 Reply Last reply Reply Quote 0
          • A
            acidsubway @jpgorganizer last edited by

            @jpgorganizer ich habe auch einen Nano.

            @SBorg ich gebe dir Recht, je einfacher deste besser.
            aber ein Adapter wäre echt hilfreich, weil ich nach lannger zeit aus dem TelNET net schlau geworden bin, Stundenlange beobachtung meines Kessels.
            Wenn jemand den Hargassner Gateway hat, ist es einfacher. Da man direkt auf das WEBIF von Hargassner die Werte verändern könnte, ohne TelNet Rätseln.

            hier meine Erkenntnisse:

            	
            0	"pm"
            1	"1"		Kessel 1=AUS, 7=Leistungsbrand, 5=Brauchwasser WW ?
            2	"21.0"	O² IST	
            3	"7.5"	O² SOLL
            4	"65"	Kessel IST Temperatur
            5	"0"		Kessel SOLL Temperatur
            6	"77"	Kessel Abgastemperatur
            7	"0"
            8	"0.0"	Saugzug IST
            9	"0"
            10	"0.0"	Fördermenge
            11	"0"
            12	"0"
            13	"0"
            14	"0"
            15	"0"
            16	"2"		Außentemperatur
            17	"1"		Außentemperatur GEMITTELT
            18	"60"
            19	"-20.0"
            20	"-20"
            21	"-20.0"
            22	"37"	Puffer/Boiler Temperatur UNTEN
            23	"60"	Puffer/Boiler Temperatur MITTE
            24	"63"	Rücklaufanhebung SOLL
            25	"35"	Rücklaufanhebung IST
            26	"34"	
            27	"118.6"
            28	"84.3"
            29	"78"
            30	"73"
            31	"0"
            32	"0"
            33	"55136"
            34	"0"		Laufzeit Einschub seit Entaschung		
            35	"1"
            36	"1246"	Selbst Reinigung Anzahl der Bewegungen
            37	"7.98"
            38	"13.13"
            39	"609"
            40	"-7"
            41	"2"
            42	"0"
            43	"92"	Befüllgrad Puffer
            44	"100.0"
            45	"13.0"
            46	"0.0"
            47	"0"
            48	"4058"	Pelletverbrauch
            49	"1"
            50	"0"
            51	"-20"
            52	"0"
            53	"20.0"
            54	"20"
            55	"0"
            56	"1"
            57	"45"	HK1 Vorlauf IST
            58	"34"	HK1 Vorlauf SOLL
            59	"20.0"
            60	"22"
            61	"1"		HK1 1 AN, 4 Nachtabsenkung oder Aus ?
            62	"1"
            63	"24"	HK2 Vorlauf IST
            64	"0"		HK2 Vorlauf SOLL
            65	"20.0"
            66	"22"
            67	"4"		HK2 1 AN, 4 Nachtabsenkung oder Aus ?
            68	"1"
            69	"-20"
            70	"0"
            71	"20.0"
            72	"20"
            73	"0"
            74	"1"
            75	"-20"
            76	"0"
            77	"20.0"
            78	"20"
            79	"0"
            80	"1"
            81	"-20"
            82	"0"
            83	"20.0"
            84	"20"
            85	"0"
            86	"1"
            87	"-20"
            88	"0"
            89	"20.0"
            90	"20"
            91	"0"
            92	"1"
            93	"-20"
            94	"0"
            95	"0"
            96	"66"	Puffer/Boiler Temperatur OBEN
            97	"0"		Geforderte Temperatur Puffer WW
            98	"0"		BW Anforderung 1= AN,0= AUS
            99	"-20"
            100	"0"
            101	"0"
            102	"-20"
            103	"0"
            104	"0"
            105	"0"
            106	"0"
            107	"0"
            108	"34"
            109	"0"
            110	"0"
            111	"0"
            112	"0"
            113	"0"
            114	"0"
            115	"0"
            116	"0"
            117	"0"
            118	"0"
            119	"0"
            120	"0"
            121	"0"
            122	"0"
            123	"0"
            124	"0"
            125	"0"
            126	"0"
            127	"0"
            128	"0"
            129	"0"
            130	"0"
            131	"0"
            132	"0"
            133	"-20.0"
            134	"-20.0"
            135	"-20.0"
            136	"-20.0"
            137	"-1.0"
            138	"-1.0"
            139	"-1.0"
            140	"-1.0"
            141	"-1.0"
            142	"-1.0"
            143	"-1.0"
            144	"-1.0"
            145	"-1.0"
            146	"-1.0"
            147	"-1.0"
            148	"-1.0"
            149	"-1.0"
            150	"-1.0"
            151	"-1.0"
            152	"-1.0"
            153	"-1.0"
            154	"-1.0"
            155	"-1.0"
            156	"-1.0"
            157	"-1.0"
            158	"-1.0"
            159	"-1.0"
            160	"-1.0"
            161	"028B"
            162	"0001"
            163	"0000"
            164	"0000"
            165	"4000"
            166	"0160"
            167	"0000"
            168	"0000"
            169	"\r\n"
            
            G 1 Reply Last reply Reply Quote 0
            • G
              göschi @acidsubway last edited by

              @Hogy
              Hallo, Ich habe einen HV20. Ich nehme an, das die daten ähnlich sind. Welches Modul bzw. welche Erweiterugn wird für die Steuerung des HV benötigt oder geht das direkt über den RJ45 Stecker? Danke mal.

              Hogy 1 Reply Last reply Reply Quote 0
              • Hogy
                Hogy @göschi last edited by

                @göschi
                Ich nehme an, dass es beim HV20 die gleiche Steuerung ist, wie beim HV40.
                Meine Steuerung hat an dem Display innenliegend noch einen eigenen RJ45 Anschluss. Den habe ich verwendet.
                Dann noch die IP fest definieren und fertig sind die Vorbereitungen von Seitens Heizung.

                Bezüglich der Kanalbelegung... Ich konnte diese an der Heizung auf eine SD-Karte schreiben. Hier die Datei wie sie 1:1 von der Heizung kommt.
                DAQ00140.txt

                Grüße, Hogy

                R 1 Reply Last reply Reply Quote 0
                • R
                  Riddy64 @Hogy last edited by

                  @hogy

                  Hallo zusammen,

                  ich hab das ganze schon mal gemacht, erstellt aber nur ne Datei zum Logging im csv Format die dann mit gnuplot zur pdf gemacht wird. die Zuordnung der einzelnen Werte stammt aus dem Microkontroller Net.
                  https://www.mikrocontroller.net/topic/134331?page=single
                  mein Eintag ist vom 16.12.2017 10:11
                  da hängt auch mein script als Datei dran allerdings ohne Gnupot

                  Gruß Karsten

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Mike.G. @Riddy64 last edited by

                    Hallo,

                    ich weiß nicht ob das hier noch jemand liest. Aber ich hab doch eine Frage zu dem ganzen.
                    Ich besitze einen HV30 mit Internet Gateway. Wird das darüber realisiert, oder über einen direkten Netzwerkanschluss

                    Gruß Mike

                    SBorg 1 Reply Last reply Reply Quote 0
                    • SBorg
                      SBorg Forum Testing Most Active @Mike.G. last edited by

                      @mike-g

                      @hogy sagte in Hargassner HV40 Daten über telnet abgreifen:

                      Meine Steuerung hat an dem Display innenliegend noch einen eigenen RJ45 Anschluss. Den habe ich verwendet.

                      ...und da das Skript von mir stammt: ich greife die Daten im Netzwerk ab. Das Skript ist ein WEB-Server der auf den Datenverkehr einer bestimmten IP (=die Heizung/Steuerung) im Netzwerk lauscht, die Daten aufbereitet und an den ioB schickt 🙂

                      M G 2 Replies Last reply Reply Quote 0
                      • M
                        Mike.G. @SBorg last edited by

                        @sborg

                        Danke für die Info. Das werde ich die Tage mal ausprobieren

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

                          Hallo,
                          ich habe auch eine Hargassner mit Nano-pk-Steuerung, welche ich mit Hilfe von reinen JS-Skripten auslese.
                          Der iobroker muss dazu per IP und Port 23 (Telnet) auf die Nano-pk zugreifen können.

                          Zusätzlich sollte einmal auf einer SD-Karte an der Nano-pk ein Log erstellt werden. Auf der SD-Karte sollte sich danach im Verzeichnis "DAQ" die Log-Datei "DAQ00000.DAQ" (oder ähnlich) liegen. Aus dieser Log-Datei kopieren wir den XML-Code "<DAQPRJ><ANALOG><CHAN [...] /></DIGITAL></DAQPRJ>", da wir ihn im folgenden Skript benötigen

                          Auf dem iobroker führen wir nun das folgende JS-Skript zum Erstellen der States einmal aus:

                          //get XML-Code from Hargassner heater (use SD card)
                          var nanopk = `<DAQPRJ><ANALOG>
                          <CHANNEL id='0' name='ZK' unit=''/>
                          <CHANNEL id='1' name='O2' unit='%'/>
                          <CHANNEL id='2' name='O2soll' unit='%'/>
                          <CHANNEL id='3' name='TK' unit='°C'/>
                          ...
                          <CHANNEL id='7' bit='21' name='DReg3 P3'/>
                          <CHANNEL id='7' bit='22' name='DReg3 Mi auf'/>
                          <CHANNEL id='7' bit='23' name='DReg3 Mi zu'/>
                          </DIGITAL></DAQPRJ>`;
                          
                          let DP="javascript.0.Hargassner" // object-id
                          
                          var xml2js = require('xml2js');  // please activate npm-module
                          var parser = new xml2js.Parser();
                          
                          // translate XML data into states
                          parser.parseString(nanopk, (err, result) => {
                             if (err) {
                                 console.error(err);
                                 return;
                             }
                             // analog channels
                             const channelsA = result.DAQPRJ.ANALOG[0].CHANNEL;
                             channelsA.forEach(channel => {
                                 const id = channel.$.id;
                                 const bit = channel.$.bit;
                                 const name = channel.$.name;
                                 const unit = channel.$.unit;
                                 console.log(`Channel ID: ${id}, Bit: ${bit}, Name: ${name}`);
                                 createState(DP+".analog."+("00" + id).slice(-3),"",{name: name, type: "number", role: "state", unit: unit, read: true, write: false});
                             });
                          
                             // digital channels
                             const channelsD = result.DAQPRJ.DIGITAL[0].CHANNEL;
                                 channelsD.forEach(channel => {
                                 const id = channel.$.id;
                                 const bit = channel.$.bit;
                                 const name = channel.$.name;
                                 console.log(`Channel ID: ${id}, Bit: ${bit}, Name: ${name}`);
                                 createState(DP+".digital."+("00" + id).slice(-3)+"."+("0" + bit).slice(-2),"",{name: name, type: "boolean", role: "state", read: true, write: false});
                             });
                          });
                          

                          Den XML-Code habe ich der Übersicht wegen gekürzt. Da es verschiedene Nano-pk-Steuerungen mit wiederum verschiedenen Firmwares gibt, empfehle ich sehr den XML-Code immer selber zu erstellen.
                          Die Objekt-ID unter welcher die ganzen States erstellt werden, kann im Skript geändert werden.
                          Das NPM-Modul xml2js muss in der javascript-Instanz noch aktiviert werden.

                          Danach das folgende Skript aktivieren:

                          let DP = "javascript.0.Hargassner"; // object-id
                          let ip = '192.168.0.99';  // ip of Nano-pk
                          let port = 23;  // port of Nano-pk (Telnet)
                          
                          var net = require('net');  // please activate npm-module
                          
                          // run script every 5 sec
                          schedule("*/5 * * * * *", function () {
                              
                              // connect to Nano-pk
                              var client = new net.Socket();
                              client.connect(port, ip, function() {
                                  console.debug('Connected');
                              });
                          
                              // get data
                              client.on('data', function(data) {
                                  const values = data.subarray(3,-3).toString('utf8').split(" "); // split received values into array
                                  console.debug('Received: ' + values);
                                  client.destroy(); // kill client after server's response
                                  
                                  // set analog states
                                  let DPA = `${DP}.analog.`;
                                  const idAna = $(`state[id=${DPA}*]`);
                                  const valAna = values.slice(0, idAna.length);
                          
                                  idAna.each( function( id, i){
                                      const idSub = id.substring(DPA.length);
                                      const ch = Number(idSub.substring(0,3));
                                      setState(id, Number(valAna[ch]), true);
                                      console.debug(id+`: `+ valAna[i]);
                                  });
                          
                                  // set digital states
                                  let DPD = `${DP}.digital.`;
                                  const idDig = $(`state[id=${DPD}*]`);
                                  const valDig = values.slice(idAna.length);
                          
                                  idDig.each( function( id, i){
                                      const idSub = id.substring(DPD.length);
                                      const ch = Number(idSub.substring(0,3));
                                      const bit = Number(idSub.substring(4));
                                      const bits = parseInt(valDig[ch],16);
                                      const bitMask = 1 << bit;
                                      const value = ((bits & bitMask) > 0);
                                      setState(id, value, true);
                                      console.debug(id+`: `+ value);
                                  });
                              });
                          
                              // Closed connection
                              client.on('close', function() {
                                  console.debug('Closed connection');
                              });
                          });
                          

                          Die Objekt-ID sollte hier die gleiche sein, wie im ersten Skript.
                          Dann noch die IP (und ggf. bei Bedarf den Port) ändern.
                          Für dieses Skript noch das NPM-Modul net aktivieren.
                          Der Scheduler sorgt in diesem Fall dafür, dass der Code alle 5 Sekunden ausgeführt wird und das Skript entsprechend die Werte bei der Nano-pk holt und in die Objekte schreibt.

                          Und sobald das zweite Skript läuft, sollten die Werte einlaufen:
                          Unbenannt.png

                          A 1 Reply Last reply Reply Quote -1
                          • A
                            acidsubway @gerha last edited by

                            @gerha

                            Ich habe ja die Modbuskarte von Harrgassner in meinem Nano PK, die hatte immerhin 380€ gekostet.
                            Muss aber sagen das ist diese nicht Wert da viele dinge nicht gehen.
                            Das ist meine Modbus File, hier gehen nur die alternative Adressen.

                            MODBUS.CSV

                            Meine Frage wäre, ist es möglich mit deinem Script die Adresse

                            KNX Raumtemp HK1 Vorgabe Raumtemp. HK1 DAQ-ANA lesen/schreiben 11002 11003 °C
                            lesen und zu schreiben?

                            Ich will meinem Kessel nur die Raumtemperatur ohne Raumfüher mitteilen, laut Harrgassner soll das dort funktionieren.

                            MfG

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            774
                            Online

                            31.7k
                            Users

                            79.7k
                            Topics

                            1.3m
                            Posts

                            heating javascript monitoring
                            9
                            30
                            6238
                            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