Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Hargassner HV40 Daten über telnet abgreifen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    13
    1
    201

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    12
    1
    574

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.8k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
heatingjavascriptmonitoring
32 Beiträge 10 Kommentatoren 8.1k Aufrufe 11 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A acidsubway

    @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 Offline
    G Offline
    göschi
    schrieb am zuletzt editiert von
    #23

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

    HogyH 1 Antwort Letzte Antwort
    0
    • G göschi

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

      HogyH Offline
      HogyH Offline
      Hogy
      schrieb am zuletzt editiert von
      #24

      @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 Antwort Letzte Antwort
      0
      • HogyH Hogy

        @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 Offline
        R Offline
        Riddy64
        schrieb am zuletzt editiert von
        #25

        @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 Antwort Letzte Antwort
        0
        • R Riddy64

          @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 Offline
          M Offline
          Mike.G.
          schrieb am zuletzt editiert von
          #26

          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

          SBorgS 1 Antwort Letzte Antwort
          0
          • M Mike.G.

            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

            SBorgS Offline
            SBorgS Offline
            SBorg
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #27

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

            LG SBorg ( SBorg auf GitHub)
            Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

            M G 2 Antworten Letzte Antwort
            0
            • SBorgS SBorg

              @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 Offline
              M Offline
              Mike.G.
              schrieb am zuletzt editiert von
              #28

              @sborg

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

              1 Antwort Letzte Antwort
              0
              • SBorgS SBorg

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

                G Offline
                G Offline
                gerha
                schrieb am zuletzt editiert von
                #29

                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 Antwort Letzte Antwort
                -1
                • G gerha

                  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 Offline
                  A Offline
                  acidsubway
                  schrieb am zuletzt editiert von
                  #30

                  @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 Antwort Letzte Antwort
                  0
                  • SBorgS SBorg

                    @Hogy Sieht so aus :sunglasses:
                    Bild 1.png

                    Wirst aber "enttäuscht" sein wenn du siehst wie wenig Programmcode das tatsächlich ist.

                    Zuerst ioBroker:

                    • Simple-RESTful-Adapter installieren (keine Einstellungen notwendig)
                    • neues Javascript "Typ Javascript" anlegen, Name und Ordner beliebig

                    Dort mittels C&P einfügen:

                    //Datenobjekte Hargassner anlegen
                     let DP="javascript.0.HV40.value"
                     let ANZ=228
                    
                     for(let i=0; i<ANZ; i++) {
                         createState(DP+("00" + i).slice(-3),"",{name: "Value "+("00" + i).slice(-3), type: "number", role: "state"});  
                     }
                    

                    GGf. #2 anpassen, "javascript.x" muss, HV40 wäre der Ordner, value dann der Datenpunkt (siehe meine Hardcopy oben)
                    Speichern und starten (dauert bei mir 2-3 Sekunden; auf dem PI ev. länger). Wenn dann in den Objekten unter "HV40" der letzte Eintrag "value227" ist, kannst du das Script wieder stoppen.

                    PI:
                    Ich gehe mal von /home/pi aus.
                    Per Terminal auf den PI, dann

                    • cd /home/pi
                    • nano hv40.sh (oder wie du es nennen magst)
                    • per C&P einfügen
                    #!/bin/bash
                    
                     DP=javascript.0.HV40.value
                     IPP=192.168.1.3:8087
                    
                     declare -a MESSWERTE
                    
                     DATA=$(timeout 3 bash -c "nc -v xxx.xxx.xxx.xxx yy")
                     MESSWERTE=($(echo $DATA|cut -d"p" -f2|cut -c2-))
                    
                     ANZAHL=${#MESSWERTE[@]}
                    
                     #echo Anzahl Datensätze: ${ANZAHL}
                     #echo ${MESSWERTE[*]}
                    
                     for ((i=0; i<${ANZAHL}-1; i++))
                      do
                       NUM=$(printf "%03d" $i)
                       IOB="${IOB}${DP}${NUM}=${MESSWERTE[$i]}&"
                      done
                    
                     IOB="${IOB}prettyPrint"
                     #echo $IOB
                    
                     curl --data "$IOB" http://${IPP}/setBulk
                    

                    #3 ggf. anpassen, identisch mit Einstellungen im Javascript
                    #4 IP und Port des ioBroker (8087 ist der Standard-Port des RESTful-Adapters)
                    #8 xxx=IP der Heizung / yy=Port der Heizung

                    Speichern und mittels sudo chmod +x hv40.sh ausführbar machen.
                    Dann mal testen: ./hv40.sh
                    ca. 3 Sekunden später sollten die Messwerte im ioB verfügbar sein...

                    Wenn alles geklappt hat noch einen cronjob anlegen:
                    sudo crontab -e
                    z.B. für ein 5-Minutenintervall:

                    */5 * * * * /home/pi/hv40.sh
                    

                    Letzte Zeile muss immer eine Leerzeile sein!

                    7 Offline
                    7 Offline
                    70sman
                    schrieb am zuletzt editiert von
                    #31

                    @sborg
                    Habe selbst eine NanoPK15-Plus, wenn man einen Datenexport auf SD-Karte direkt an der Heizung macht bekommt man die Zuordnung zu den Datenpunkten (identisch mit der telnet Geschichte) (in Datei "DAQ00000.DAQ"). Bei mir sind es 135 Werte (127 Analogwerte + 8 Hexadezimal Werte). Die Hex-werte zeigen Schaltzustände an. (Siehe auch Excel). Durch Aufspielen einer neuen Firmware hat sich bei mir übrigens auch was an den Datenpunkten verändert.

                    Messwerte_Telnet.xlsx

                    A 1 Antwort Letzte Antwort
                    0
                    • 7 70sman

                      @sborg
                      Habe selbst eine NanoPK15-Plus, wenn man einen Datenexport auf SD-Karte direkt an der Heizung macht bekommt man die Zuordnung zu den Datenpunkten (identisch mit der telnet Geschichte) (in Datei "DAQ00000.DAQ"). Bei mir sind es 135 Werte (127 Analogwerte + 8 Hexadezimal Werte). Die Hex-werte zeigen Schaltzustände an. (Siehe auch Excel). Durch Aufspielen einer neuen Firmware hat sich bei mir übrigens auch was an den Datenpunkten verändert.

                      Messwerte_Telnet.xlsx

                      A Offline
                      A Offline
                      acidsubway
                      schrieb am zuletzt editiert von
                      #32

                      @70sman

                      ja bei mir auch, die haben seit Juli eine neue FW, seit dem ist das alles gefixt :) es geht mit dem normalen Adapter von ioBroker.

                      Aber wie fragst du alle Adressen ab, die Digitalen DAQ?

                      MfG

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      970

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe