Hargassner via Telnet auslesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Stephen1997
    Azubi
    • vor einer Woche
    • 3

    #1

    Hargassner via Telnet auslesen

    Hallo liebe Community!

    Ich neu hier und möchte gerne eine Idee umsetzen.

    Zu meinen Umständen:

    Wir renovieren gerade unsere Wohnung auf einem Bauernhof. Die Heizung ist eine alte Hargassner mit einer neuen Puffersteuerung HK Touch.
    Wir haben in unserer Wohnung eine Nahwärmeleitung zur Heizung gezogen, damit wir da die Heizung mitnutzen können.

    Zu meiner Idee:

    Die Heizungssteuerung der neuen Wohnung soll Loxone übernehmen, da brauch ich aber am besten die Temperaturen und werte der Heizung. Die Modbus Lösung scheidet vorerst aus da die zu Teuer ist und ich nicht vorhab die Heizung zu steuern via Loxone.

    Man kann alle werte bereits per Telnet vom Netzwerk ablesen, und Interpretieren.

    Jetzt bräuchte ich eine Schnittstelle die mir alle paar sekunden die Werte ins Loxone überträgt.

    Danke für eure Hilfe!
  • Noschvie
    LoxBus Spammer
    • 24.09.2018
    • 471

    #2
    Hast du dazu eine Spec oder Docu?

    Kommentar

    • Stephen1997
      Azubi
      • vor einer Woche
      • 3

      #3


      ​​​​​Das wäre die Anleitung zum Hargassner Regler.

      Mein Bruder hat sich mit der Windows Console und der Ip des Heizkreisreglers (mit unserem Netzwerk verbunden) alle Daten auslesen, wie in einem anderen Forum:

      Hallo Zusammen, Ich hoffe, ich platziere die Anfrage richtig. Wenn nicht, bitte entsprechend verschieben. Wie der Titel schon her gibt, habe ich einen Holzvergaser von Hargassner (HV40) im Einsatz. Diese Heizung spuckt alle Sekunde seine Mess- und Zustand...


      Ich bräuchte da eine Möglichkeit die Daten auslesen zu lassen sodass ich die Werte dann in Loxone benutzen kann.

      Vielen Dank!

      Kommentar


      • Noschvie
        Noschvie kommentierte
        Kommentar bearbeiten
        Das ist aber keine offizielle Schnittstelle, oder?
    • Noschvie
      LoxBus Spammer
      • 24.09.2018
      • 471

      #4
      Du bräuchtest zb ein Python Script, das die Werte absaugt, aufbereitet (Json) und über MQTT oder UDP weiterleitet.

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11232

        #5
        Du kannst das TCP2UDP Plugin probieren:



        Wenn da was zurückkommt, kannst Du per Befehlserkennung die Werte zerlegen.

        lg Christian
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • Stephen1997
          Azubi
          • vor einer Woche
          • 3

          #6
          Werd ich ausprobieren ob da was zurückkommt! Danke für die Antworten!

          Kommentar

          • banjo01
            Azubi
            • vor einem Tag
            • 1

            #7
            Um die Daten auszulesen Bedarf es keiner eigenen Hardware.
            Programm Baustein einfügen. Folgendes Skritpt habe ich im Einsatz.
            Du müsstest nur deine IP Adresse der HK einsetzen.
            An den Ausgängen kannst du dann die Werte abgreifen.

            Code:
            //Stand 03.05.2015
            //Made by Torox
            //Pico-C Programm
            //In ein Programmbaustein mit 16 Eingängen kopieren
            
            //exit();
            //Strings
            char* p,*pS;
            char szBuffer[1200];
            
            //Variablenlänge
            int nLen;
            int nLenB;
            int varLen;
            
            //Anzahl der Variablen die gepharst werden sollen
            //Immer größer als die grösste Variablennummer aus der Zuordnung (hier z.B. 27)
            int varcount=149;
            
            //Ausgangszuordnung: Welche Variable soll auf welchem Ausgang ausgeben werden (Siehe Variablenzuordnung)
            int aq[13];
            // Standard 0 basierend
            // Loxone 1 basierend (also id + 1 verwenden)
            aq[0] = 1;     //Ausgang AQ1 = Status
            aq[1] = 71;     //Ausgang AQ2 = Außentemp
            //     26=Außentemp gemittelt
            aq[2] = 4;     //Ausgang AQ3 = Kesseltemperatur IST vorher 4
            aq[3] = 29;     //Ausgang AQ4 = Abgas  Temp vorher 6
            aq[4] = 6;     //Ausgang AQ5 = Rücklauf IST
            aq[5] = 146;     //Ausgang AQ6 = Lagerstand*
            aq[6] = 66;     //Ausgang AQ7 = Wasserdruck bar*
            aq[7] = 65;    //Ausgang AQ8 = Leistung Vorgabe V*
            aq[8] = 13;    //Ausgang AQ9 = Leistung %
            aq[9] = 54;    //Ausgang AQ10 = Betriebsminuten Einschub
            aq[10] = 52;   //Ausgang AQ11 = Laufzeit LB seit Entaschung
            aq[11] = 1;    //Ausgang AQ12 = O2 Ist
            aq[12] = 1;    //Ausgang AQ13 = O2 Ist
            
            //Zaeler
            int varindex,ausindex;
            
            //Ergebniswert
            double dLoad;
            
            
            printf("Start Hargassner watch");
            while(TRUE)
                {
                //Hier die IP-Adresse der Hargassnersteuerung einstellen . Port 23 fuer Telnet bleibt
                //Die heizung holt sich die IP über DHCP. Also beim Airport Extreme oder DHCP-Server einen festen lease einstellen.
                STREAM* stream = stream_create("/dev/tcp/IP_ADDRESSE_HARGASSNER/23",0,0);
                if (stream != NULL)
                    {
                    //printf("Verbindung hergestellt");
                    
                    //Stream auslesen und die Daten in den Puffer schreiben. Timeout 1000ms, weil die Hargassner alle 500ms eine Datenreihe schickt
                    nLen = stream_read(stream,szBuffer,sizeof(szBuffer) - 1,2000);
                    stream_close(stream);
                    varindex=1;
                    pS = szBuffer;
                       while(*pS)
                       {
                         //Beginn der Datenreihe Suchen und abschneiden
                         p = strstrskip(pS,"pm");
                        
                         //Schleife für Variablen in der Datenreihe
                         varindex=1;
                         while(varindex<=varcount)
                         {
                           //Schleife für die Ausgänge
                           ausindex=0;
                           while(ausindex<=12)
                           {
                               //Wenn der aktuelle Ausgang die Zuordnung für die aktuelle Variablennummer hat
                               //wird mit der Auswertung der Variable begonnen
                               if (aq[ausindex]==varindex)
                               {
                                  //Fuer Debugausgabe
                                  //printf("****Ausgang AQ%d",ausindex+1);
                  
                                  if (p != NULL)
                                  {
                                   //Länge des Teilstrings inkl. Variable
                                   nLen=strlen(p);
                                  
                                   //Laenge des Teilstrings ohne Variable
                                   nLenB=strlen(strstr(p," "));
            
                                   //Variablenlaenge berechnen aus Differenz
                                   varLen=nLen-nLenB;
            
                                   //Variable auslesen und als Double speichern
                                   dLoad = batof(p + varLen);
            
                                   //Fuer Debugausgabe
                                  // printf("Wert=%f", dLoad);
            
                                   //Variablenwert auf den aktuellen Ausgang schreiben
                                   setoutput(ausindex,dLoad);
                                  }
                            
                               }
                               //Naechster Ausgang
                               ausindex=ausindex+1;
                            }
                            //Naechste Variable
                            varindex=varindex+1;
            
                            //Bis zum naechsten Leerzeichen springen und String bis dort abschneiden
                            p = strstrskip(p," ");
                         }
                         pS += (strlen(pS) + 1);
                       }
                    }
                else
                {
                    //Keine Verbindung moeglich
                    printf("No connection");
                }
            
                //Auswertungshäufigkeit (hier 60 Sekunden)
                sleeps(10);
                }
            // write program here in PicoC

            Wenn du eine Datensicherung am HK Touch auf die SD Karte machst, dann erhältst du unter anderem ein XML File, welche die ID - Namen Zuordnung enthält.
            evtl. musst du dann den Code anpassen. Bei mir gabs mal ein FW Update und danach musste ich anpassen.

            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 277,3 KB ID: 455725
            Angehängte Dateien

            Kommentar

            Lädt...