Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Firmware NanoPK V14.0HAR.p1 (new msgformat inside) #34

Open
anderl78 opened this issue Sep 2, 2024 · 10 comments
Open

New Firmware NanoPK V14.0HAR.p1 (new msgformat inside) #34

anderl78 opened this issue Sep 2, 2024 · 10 comments

Comments

@anderl78
Copy link

anderl78 commented Sep 2, 2024

Hello!

I think I figured something out. I compared the heater's TELNET output with the number of expected values ​​according to (from SD-Card). It happens (at least for me) that two additional values ​​are transferred via TELNET, (expected by the system = 127 vs 129) - and that's why it crashes. That's why I added two (analog) dummies at the end of the msgformat - Channel 119 and 120. If this is the correct position for the dummies is questionable. Please heck this and report it here.

Interesting at this point: The length of the messages seems to be quite different, see the pull request from @apaqd (which, however, did not work for me due to its different length. I could imagine that this is due to different versions of the heater?!

Here is the working msgformat (at least for me for my NANO PK 25) with inserted dummys:

"<DAQPRJ><ANALOG><CHANNEL id='0' name='ZK' dop='0'/><CHANNEL id='1' name='O2' unit='%'/><CHANNEL id='2' name='O2soll' unit='%'/><CHANNEL id='3' name='TK' unit='°C'/><CHANNEL id='4' name='TKsoll' unit='°C'/><CHANNEL id='5' name='TRL' unit='°C'/><CHANNEL id='6' name='TRLsoll' unit='°C' dop='0'/><CHANNEL id='7' name='Spreizung' unit='°C'/><CHANNEL id='8' name='TRG' unit='°C'/><CHANNEL id='9' name='SZist' unit='%' dop='0'/><CHANNEL id='10' name='SZsoll' unit='%'/><CHANNEL id='11' name='TPo' unit='°C'/><CHANNEL id='12' name='TPm' unit='°C'/><CHANNEL id='13' name='TPu' unit='°C'/><CHANNEL id='14' name='Puff Füllgrad' unit='%' dop='0'/><CHANNEL id='15' name='Puffer_soll oben' unit='°C' dop='0'/><CHANNEL id='16' name='Puffer_soll unten' unit='°C' dop='0'/><CHANNEL id='17' name='PuffZustand' dop='0'/><CHANNEL id='18' name='Max Anf Kessel' dop='0'/><CHANNEL id='19' name='TFW' unit='°C' dop='0'/><CHANNEL id='20' name='Leistung' unit='%' dop='0'/><CHANNEL id='21' name='ESsoll' unit='%'/><CHANNEL id='22' name='min.Leist.TRG' unit='%'/><CHANNEL id='23' name='max.Leist.TRG' unit='%'/><CHANNEL id='24' name='max.Leist.Fuell' unit='%'/><CHANNEL id='25' name='max.Leist.TPO' unit='%'/><CHANNEL id='26' name='ESRegler' unit='%' dop='0'/><CHANNEL id='27' name='Regler K'/><CHANNEL id='28' name='KeBrstScale' unit='%' dop='0'/><CHANNEL id='29' name='Programm' dop='0'/><CHANNEL id='30' name='Störungs Nr' dop='0'/><CHANNEL id='31' name='Max Anf ZenPuf' unit='°C' dop='0'/><CHANNEL id='32' name='I Es' unit='mA' dop='0'/><CHANNEL id='33' name='I Ra' unit='mA' dop='0'/><CHANNEL id='34' name='I Aa' unit='mA' dop='0'/><CHANNEL id='35' name='I Sr' unit='mA' dop='0'/><CHANNEL id='36' name='I Rein' unit='mA' dop='0'/><CHANNEL id='37' name='BLDC_ES ist' unit='rpm' dop='0'/><CHANNEL id='38' name='BLDC_ES soll' unit='rpm' dop='0'/><CHANNEL id='39' name='LZ ES seit Füll.' unit='Min' dop='0'/><CHANNEL id='40' name='LZ ES seit Ent.' unit='Min' dop='0'/><CHANNEL id='41' name='Anzahl Entasch.' dop='0'/><CHANNEL id='42' name='Anzahl SR Beweg.' dop='0'/><CHANNEL id='43' name='Lagerstand' unit='kg' dop='0'/><CHANNEL id='44' name='Verbrauchszähler' unit='kg' dop='0'/><CHANNEL id='45' name='Heiz P Lambda' unit='W' dop='2'/><CHANNEL id='46' name='Heiz U Lambda' unit='V' dop='2'/><CHANNEL id='47' name='Heiz I Lambda' unit='mA' dop='0'/><CHANNEL id='48' name='U_Lambda' unit='mV'/><CHANNEL id='49' name='U Netzteil' unit='mV' dop='0'/><CHANNEL id='50' name='T Spülung' unit='°C'/><CHANNEL id='51' name='BRT' unit='°C'/><CHANNEL id='52' name='Tplat' unit='°C' dop='0'/><CHANNEL id='53' name='TVG' unit='°C'/><CHANNEL id='54' name='TVG2' unit='°C'/><CHANNEL id='55' name='AIN17' unit='V'/><CHANNEL id='56' name='Taus' unit='°C'/><CHANNEL id='57' name='TA Gem.' unit='°C'/><CHANNEL id='58' name='ExtHK Solltmp.' unit='°C' dop='0'/><CHANNEL id='59' name='TVL_A' unit='°C'/><CHANNEL id='60' name='TVLs_A' unit='°C' dop='0'/><CHANNEL id='61' name='TRA_A' unit='°C'/><CHANNEL id='62' name='TRs_A' unit='°C'/><CHANNEL id='63' name='HKZustand_A' dop='0'/><CHANNEL id='64' name='FRA Zustand' dop='0'/><CHANNEL id='65' name='TVL_1' unit='°C'/><CHANNEL id='66' name='TVLs_1' unit='°C' dop='0'/><CHANNEL id='67' name='TRA_1' unit='°C'/><CHANNEL id='68' name='TRs_1' unit='°C'/><CHANNEL id='69' name='HKZustand_1' dop='0'/><CHANNEL id='70' name='FR1 Zustand' dop='0'/><CHANNEL id='71' name='TVL_2' unit='°C'/><CHANNEL id='72' name='TVLs_2' unit='°C' dop='0'/><CHANNEL id='73' name='TRA_2' unit='°C'/><CHANNEL id='74' name='TRs_2' unit='°C'/><CHANNEL id='75' name='HKZustand_2' dop='0'/><CHANNEL id='76' name='FR2 Zustand' dop='0'/><CHANNEL id='77' name='TVL_B' unit='°C'/><CHANNEL id='78' name='TVLs_B' unit='°C' dop='0'/><CHANNEL id='79' name='TRA_B' unit='°C'/><CHANNEL id='80' name='TRs_B' unit='°C'/><CHANNEL id='81' name='HKZustand_B' dop='0'/><CHANNEL id='82' name='FRB Zustand' dop='0'/><CHANNEL id='83' name='TBA' unit='°C'/><CHANNEL id='84' name='TBs_A' unit='°C' dop='0'/><CHANNEL id='85' name='TB1' unit='°C'/><CHANNEL id='86' name='TBs_1' unit='°C' dop='0'/><CHANNEL id='87' name='BoiZustand_1' dop='0'/><CHANNEL id='88' name='TBB' unit='°C'/><CHANNEL id='89' name='TBs_B' unit='°C' dop='0'/><CHANNEL id='90' name='HKR Anf' unit='°C'/><CHANNEL id='91' name='Anf. HKR0' unit='°C' dop='0'/><CHANNEL id='92' name='Anf. HKR1' unit='°C' dop='0'/><CHANNEL id='93' name='Anf. HKR2' unit='°C' dop='0'/><CHANNEL id='94' name='Anf. HKR3' unit='°C' dop='0'/><CHANNEL id='95' name='Anf. HKR4' unit='°C' dop='0'/><CHANNEL id='96' name='Anf. HKR5' unit='°C' dop='0'/><CHANNEL id='97' name='Anf. HKR6' unit='°C' dop='0'/><CHANNEL id='98' name='Anf. HKR7' unit='°C' dop='0'/><CHANNEL id='99' name='Anf. HKR8' unit='°C' dop='0'/><CHANNEL id='100' name='Anf. HKR9' unit='°C' dop='0'/><CHANNEL id='101' name='Anf. HKR10' unit='°C' dop='0'/><CHANNEL id='102' name='Anf. HKR11' unit='°C' dop='0'/><CHANNEL id='103' name='Anf. HKR12' unit='°C' dop='0'/><CHANNEL id='104' name='Anf. HKR13' unit='°C' dop='0'/><CHANNEL id='105' name='Anf. HKR14' unit='°C' dop='0'/><CHANNEL id='106' name='Anf. HKR15' unit='°C' dop='0'/><CHANNEL id='107' name='DiffR3TWq' unit='°C'/><CHANNEL id='108' name='DiffR3 K1' dop='0'/><CHANNEL id='109' name='DiffR3 K2' dop='0'/><CHANNEL id='110' name='DiffR3TDiff1' unit='°C'/><CHANNEL id='111' name='DiffR3TDiff2' unit='°C'/><CHANNEL id='112' name='DiffR3 P1' unit='%' dop='0'/><CHANNEL id='113' name='DiffR3 P2' unit='%' dop='0'/><CHANNEL id='114' name='DiffR3 P3' unit='%' dop='0'/><CHANNEL id='115' name='DiffR3 WMZ_Ges' unit='kWh'/><CHANNEL id='116' name='DiffR3 WMZ_Tag' unit='kWh'/><CHANNEL id='117' name='DiffR3 WMZ_Moment' unit='kW'/><CHANNEL id='118' name='Wasserdruck' unit='bar' dop='2'/><CHANNEL id='119' name='Dummy' unit='bar' dop='2'/><CHANNEL id='120' name='Dummy2' unit='bar' dop='2'/></ANALOG><DIGITAL><CHANNEL id='0' bit='0' name='Störung'/><CHANNEL id='0' bit='1' name='Stb'/><CHANNEL id='0' bit='2' name='Fuellstand'/><CHANNEL id='0' bit='3' name='RLP/PuffP'/><CHANNEL id='0' bit='4' name='RLm_auf'/><CHANNEL id='0' bit='5' name='RLm_zu'/><CHANNEL id='0' bit='10' name='WS freig.'/><CHANNEL id='0' bit='11' name='Akt. Code'/><CHANNEL id='0' bit='14' name='FW Freig.'/><CHANNEL id='0' bit='15' name='gFlP'/><CHANNEL id='0' bit='16' name='gFlM auf'/><CHANNEL id='0' bit='17' name='gFlM zu'/><CHANNEL id='0' bit='18' name='gFl2P'/><CHANNEL id='0' bit='19' name='gFl2M auf'/><CHANNEL id='0' bit='20' name='gFl2M zu'/><CHANNEL id='1' bit='0' name='L Heiz.'/><CHANNEL id='1' bit='1' name='Z Heiz.'/><CHANNEL id='1' bit='2' name='Z Geb.'/><CHANNEL id='1' bit='3' name='AA Run'/><CHANNEL id='1' bit='4' name='AA Dir'/><CHANNEL id='1' bit='5' name='ES Run'/><CHANNEL id='1' bit='6' name='ES Dir'/><CHANNEL id='1' bit='7' name='AS Saug'/><CHANNEL id='1' bit='8' name='AS RA Run'/><CHANNEL id='1' bit='9' name='AS RA Dir'/><CHANNEL id='1' bit='10' name='Rein En'/><CHANNEL id='1' bit='11' name='Rein Run'/><CHANNEL id='1' bit='12' name='Es Rein Endl'/><CHANNEL id='1' bit='13' name='sAS Anf Füll'/><CHANNEL id='2' bit='0' name='HKPA'/><CHANNEL id='2' bit='1' name='MAA'/><CHANNEL id='2' bit='2' name='MAZ'/><CHANNEL id='2' bit='3' name='HKP1'/><CHANNEL id='2' bit='4' name='M1A'/><CHANNEL id='2' bit='5' name='M1Z'/><CHANNEL id='2' bit='6' name='HKP2'/><CHANNEL id='2' bit='7' name='M2A'/><CHANNEL id='2' bit='8' name='M2Z'/><CHANNEL id='2' bit='9' name='HKP3'/><CHANNEL id='2' bit='10' name='M3A'/><CHANNEL id='2' bit='11' name='M3Z'/><CHANNEL id='2' bit='12' name='HKP4'/><CHANNEL id='2' bit='13' name='M4A'/><CHANNEL id='2' bit='14' name='M4Z'/><CHANNEL id='2' bit='15' name='HKP5'/><CHANNEL id='2' bit='16' name='M5A'/><CHANNEL id='2' bit='17' name='M5Z'/><CHANNEL id='2' bit='18' name='HKP6'/><CHANNEL id='2' bit='19' name='M6A'/><CHANNEL id='2' bit='20' name='M6Z'/><CHANNEL id='2' bit='21' name='HKPB'/><CHANNEL id='2' bit='22' name='MBA'/><CHANNEL id='2' bit='23' name='MBZ'/><CHANNEL id='3' bit='0' name='BPA'/><CHANNEL id='3' bit='1' name='BP1'/><CHANNEL id='3' bit='2' name='BP2'/><CHANNEL id='3' bit='3' name='BP3'/><CHANNEL id='3' bit='4' name='BPB'/><CHANNEL id='3' bit='5' name='BZPA'/><CHANNEL id='3' bit='6' name='BZP1'/><CHANNEL id='3' bit='7' name='BZP2'/><CHANNEL id='3' bit='8' name='BZP3'/><CHANNEL id='3' bit='9' name='BZPB'/><CHANNEL id='4' bit='0' name='Aschebox'/><CHANNEL id='4' bit='1' name='Netztrafo'/><CHANNEL id='4' bit='2' name='Netzrelais'/><CHANNEL id='4' bit='4' name='Lagerraum'/><CHANNEL id='4' bit='6' name='FLP'/><CHANNEL id='4' bit='8' name='ATW'/><CHANNEL id='4' bit='9' name='Entasch gesp.'/><CHANNEL id='4' bit='13' name='HKV'/><CHANNEL id='4' bit='14' name='Spülung Aktiv'/><CHANNEL id='4' bit='15' name='ExtHK vorh'/><CHANNEL id='4' bit='16' name='ExtHK_2 vorh'/><CHANNEL id='4' bit='17' name='ExtHK_3 vorh'/><CHANNEL id='6' bit='0' name='ExtHK Anf'/><CHANNEL id='6' bit='2' name='ExtHK_2 Anf'/><CHANNEL id='6' bit='3' name='ExtHK_3 Anf'/><CHANNEL id='6' bit='4' name='ExtHK Pumpe'/><CHANNEL id='6' bit='6' name='ExtHK_2 Pumpe'/><CHANNEL id='6' bit='7' name='ExtHK_3 Pumpe'/><CHANNEL id='6' bit='8' name='KASK1 MinLeist'/><CHANNEL id='6' bit='9' name='KASK2 MinLeist'/><CHANNEL id='6' bit='10' name='KASK3 MinLeist'/><CHANNEL id='6' bit='11' name='KASK4 MinLeist'/><CHANNEL id='6' bit='12' name='KASK1 MaxLeist'/><CHANNEL id='6' bit='13' name='KASK2 MaxLeist'/><CHANNEL id='6' bit='14' name='KASK3 MaxLeist'/><CHANNEL id='6' bit='15' name='KASK4 MaxLeist'/><CHANNEL id='6' bit='16' name='KASK1 Run'/><CHANNEL id='6' bit='17' name='KASK2 Run'/><CHANNEL id='6' bit='18' name='KASK3 Run'/><CHANNEL id='6' bit='19' name='KASK4 Run'/><CHANNEL id='6' bit='20' name='KASK1 OK'/><CHANNEL id='6' bit='21' name='KASK2 OK'/><CHANNEL id='6' bit='22' name='KASK3 OK'/><CHANNEL id='6' bit='23' name='KASK4 OK'/><CHANNEL id='6' bit='24' name='Kask KWK Out'/><CHANNEL id='6' bit='25' name='Kask FW Out'/><CHANNEL id='6' bit='26' name='KASK KWK OK'/><CHANNEL id='6' bit='27' name='KASK FW OK'/><CHANNEL id='7' bit='0' name='DReg P2'/><CHANNEL id='7' bit='1' name='DReg P3'/><CHANNEL id='7' bit='2' name='DReg Mi auf'/><CHANNEL id='7' bit='3' name='DReg Mi zu'/><CHANNEL id='7' bit='5' name='DReg2 P2'/><CHANNEL id='7' bit='6' name='DReg2 Mi auf'/><CHANNEL id='7' bit='7' name='DReg2 Mi zu'/><CHANNEL id='7' bit='9' name='DReg3 P2'/><CHANNEL id='7' bit='10' name='DReg3 P3'/><CHANNEL id='7' bit='11' name='DReg3 Mi auf'/><CHANNEL id='7' bit='12' name='DReg3 Mi zu'/></DIGITAL></DAQPRJ>"

One more thing:

Please edit your hargassner.py and add following (new) line 176:

self._errorLog += f"HargassnerBridge.async_update(): Unexpected message length. Expected: {self._expectedMsgLength}, Actual: {len(msg)}\n"

it should look like:

async def async_update(self):
    if self._connectionOK:
        try:
            msgReceived = False
            data = await asyncio.wait_for(self._reader.read(64*1024), timeout=BRIDGE_TIMEOUT)   # read up to 64k
            lines = data.decode().strip().split("\n")
            for l in reversed(lines):
                msg = l.split()[1:] # remove first field "pm"
                if len(msg) != self._expectedMsgLength:
                    self._errorLog += f"HargassnerBridge.async_update(): Unexpected message length. Expected: {self._expectedMsgLength}, Actual: {len(msg)}\n"
                    continue
                for param in self._paramData.values():
                    param.initializeFromMessage(msg)
                self._latestUpdate = datetime.now()
                msgReceived = True
                self._missedMsgs = 0
                break

If it doesn't work, an error is reported in the HomeAssistant protocol, which shows the expected value according to msgformat and the actual value (from TELNET). It would be helpful if we basically found out this value together with the specific model of the heater. I will also send a pull request for this.

@Hellsbound
Copy link

Hellsbound commented Sep 4, 2024

Hello ,

Here is the working msgformat (at least for me for my NANO PK 15) with inserted dummys:

"<DAQPRJ><ANALOG><CHANNEL id='0' name='ZK' dop='0'/><CHANNEL id='1' name='O2' unit='%'/><CHANNEL id='2' name='O2soll' unit='%'/><CHANNEL id='3' name='TK' unit='°C'/><CHANNEL id='4' name='TKsoll' unit='°C'/><CHANNEL id='5' name='TRL' unit='°C'/><CHANNEL id='6' name='TRLsoll' unit='°C' dop='0'/><CHANNEL id='7' name='Spreizung' unit='°C'/><CHANNEL id='8' name='TRG' unit='°C'/><CHANNEL id='9' name='SZist' unit='%' dop='0'/><CHANNEL id='10' name='SZsoll' unit='%'/><CHANNEL id='11' name='TPo' unit='°C'/><CHANNEL id='12' name='TPm' unit='°C'/><CHANNEL id='13' name='TPu' unit='°C'/><CHANNEL id='14' name='Puff Füllgrad' unit='%' dop='0'/><CHANNEL id='15' name='Puffer_soll oben' unit='°C' dop='0'/><CHANNEL id='16' name='Puffer_soll unten' unit='°C' dop='0'/><CHANNEL id='17' name='PuffZustand' dop='0'/><CHANNEL id='18' name='Max Anf Kessel' dop='0'/><CHANNEL id='19' name='TFW' unit='°C' dop='0'/><CHANNEL id='20' name='Leistung' unit='%' dop='0'/><CHANNEL id='21' name='ESsoll' unit='%'/><CHANNEL id='22' name='min.Leist.TRG' unit='%'/><CHANNEL id='23' name='max.Leist.TRG' unit='%'/><CHANNEL id='24' name='max.Leist.Fuell' unit='%'/><CHANNEL id='25' name='max.Leist.TPO' unit='%'/><CHANNEL id='26' name='ESRegler' unit='%' dop='0'/><CHANNEL id='27' name='Regler K'/><CHANNEL id='28' name='KeBrstScale' unit='%' dop='0'/><CHANNEL id='29' name='Programm' dop='0'/><CHANNEL id='30' name='Störungs Nr' dop='0'/><CHANNEL id='31' name='Max Anf ZenPuf' unit='°C' dop='0'/><CHANNEL id='32' name='I Es' unit='mA' dop='0'/><CHANNEL id='33' name='I Ra' unit='mA' dop='0'/><CHANNEL id='34' name='I Aa' unit='mA' dop='0'/><CHANNEL id='35' name='I Sr' unit='mA' dop='0'/><CHANNEL id='36' name='I Rein' unit='mA' dop='0'/><CHANNEL id='37' name='LZ ES seit Füll.' unit='Min' dop='0'/><CHANNEL id='38' name='LZ ES seit Ent.' unit='Min' dop='0'/><CHANNEL id='39' name='Anzahl Entasch.' dop='0'/><CHANNEL id='40' name='Anzahl SR Beweg.' dop='0'/><CHANNEL id='41' name='Lagerstand' unit='kg' dop='0'/><CHANNEL id='42' name='Verbrauchszähler' unit='kg' dop='0'/><CHANNEL id='43' name='Heiz P Lambda' unit='W' dop='2'/><CHANNEL id='44' name='Heiz U Lambda' unit='V' dop='2'/><CHANNEL id='45' name='Heiz I Lambda' unit='mA' dop='0'/><CHANNEL id='46' name='U_Lambda' unit='mV'/><CHANNEL id='47' name='U Netzteil' unit='mV' dop='0'/><CHANNEL id='48' name='T Spülung' unit='°C'/><CHANNEL id='49' name='BRT' unit='°C'/><CHANNEL id='50' name='Tplat' unit='°C' dop='0'/><CHANNEL id='51' name='TVG' unit='°C'/><CHANNEL id='52' name='TVG2' unit='°C'/><CHANNEL id='53' name='AIN17' unit='V'/><CHANNEL id='54' name='Taus' unit='°C'/><CHANNEL id='55' name='TA Gem.' unit='°C'/><CHANNEL id='56' name='ExtHK Solltmp.' unit='°C' dop='0'/><CHANNEL id='57' name='TVL_A' unit='°C'/><CHANNEL id='58' name='TVLs_A' unit='°C' dop='0'/><CHANNEL id='59' name='TRA_A' unit='°C'/><CHANNEL id='60' name='TRs_A' unit='°C'/><CHANNEL id='61' name='HKZustand_A' dop='0'/><CHANNEL id='62' name='FRA Zustand' dop='0'/><CHANNEL id='63' name='TVL_1' unit='°C'/><CHANNEL id='64' name='TVLs_1' unit='°C' dop='0'/><CHANNEL id='65' name='TRA_1' unit='°C'/><CHANNEL id='66' name='TRs_1' unit='°C'/><CHANNEL id='67' name='HKZustand_1' dop='0'/><CHANNEL id='68' name='FR1 Zustand' dop='0'/><CHANNEL id='69' name='TVL_2' unit='°C'/><CHANNEL id='70' name='TVLs_2' unit='°C' dop='0'/><CHANNEL id='71' name='TRA_2' unit='°C'/><CHANNEL id='72' name='TRs_2' unit='°C'/><CHANNEL id='73' name='HKZustand_2' dop='0'/><CHANNEL id='74' name='FR2 Zustand' dop='0'/><CHANNEL id='75' name='TVL_B' unit='°C'/><CHANNEL id='76' name='TVLs_B' unit='°C' dop='0'/><CHANNEL id='77' name='TRA_B' unit='°C'/><CHANNEL id='78' name='TRs_B' unit='°C'/><CHANNEL id='79' name='HKZustand_B' dop='0'/><CHANNEL id='80' name='FRB Zustand' dop='0'/><CHANNEL id='81' name='TBA' unit='°C'/><CHANNEL id='82' name='TBs_A' unit='°C' dop='0'/><CHANNEL id='83' name='TB1' unit='°C'/><CHANNEL id='84' name='TBs_1' unit='°C' dop='0'/><CHANNEL id='85' name='BoiZustand_1' dop='0'/><CHANNEL id='86' name='TBB' unit='°C'/><CHANNEL id='87' name='TBs_B' unit='°C' dop='0'/><CHANNEL id='88' name='HKR Anf' unit='°C'/><CHANNEL id='89' name='Anf. HKR0' unit='°C' dop='0'/><CHANNEL id='90' name='Anf. HKR1' unit='°C' dop='0'/><CHANNEL id='91' name='Anf. HKR2' unit='°C' dop='0'/><CHANNEL id='92' name='Anf. HKR3' unit='°C' dop='0'/><CHANNEL id='93' name='Anf. HKR4' unit='°C' dop='0'/><CHANNEL id='94' name='Anf. HKR5' unit='°C' dop='0'/><CHANNEL id='95' name='Anf. HKR6' unit='°C' dop='0'/><CHANNEL id='96' name='Anf. HKR7' unit='°C' dop='0'/><CHANNEL id='97' name='Anf. HKR8' unit='°C' dop='0'/><CHANNEL id='98' name='Anf. HKR9' unit='°C' dop='0'/><CHANNEL id='99' name='Anf. HKR10' unit='°C' dop='0'/><CHANNEL id='100' name='Anf. HKR11' unit='°C' dop='0'/><CHANNEL id='101' name='Anf. HKR12' unit='°C' dop='0'/><CHANNEL id='102' name='Anf. HKR13' unit='°C' dop='0'/><CHANNEL id='103' name='Anf. HKR14' unit='°C' dop='0'/><CHANNEL id='104' name='Anf. HKR15' unit='°C' dop='0'/><CHANNEL id='105' name='Wasserdruck' unit='bar' dop='2'/><CHANNEL id='106' name='dummy' unit='bar' dop='2'/><CHANNEL id='107' name='dummy2' unit='bar' dop='2'/></ANALOG><DIGITAL><CHANNEL id='0' bit='0' name='Störung'/><CHANNEL id='0' bit='1' name='Stb'/><CHANNEL id='0' bit='2' name='Fuellstand'/><CHANNEL id='0' bit='3' name='RLP/PuffP'/><CHANNEL id='0' bit='4' name='RLm_auf'/><CHANNEL id='0' bit='5' name='RLm_zu'/><CHANNEL id='0' bit='10' name='WS freig.'/><CHANNEL id='0' bit='11' name='Akt. Code'/><CHANNEL id='0' bit='14' name='FW Freig.'/><CHANNEL id='0' bit='15' name='gFlP'/><CHANNEL id='0' bit='16' name='gFlM auf'/><CHANNEL id='0' bit='17' name='gFlM zu'/><CHANNEL id='0' bit='18' name='gFl2P'/><CHANNEL id='0' bit='19' name='gFl2M auf'/><CHANNEL id='0' bit='20' name='gFl2M zu'/><CHANNEL id='1' bit='0' name='L Heiz.'/><CHANNEL id='1' bit='1' name='Z Heiz.'/><CHANNEL id='1' bit='2' name='Z Geb.'/><CHANNEL id='1' bit='3' name='AA Run'/><CHANNEL id='1' bit='4' name='AA Dir'/><CHANNEL id='1' bit='5' name='ES Run'/><CHANNEL id='1' bit='6' name='ES Dir'/><CHANNEL id='1' bit='7' name='AS Saug'/><CHANNEL id='1' bit='8' name='AS RA Run'/><CHANNEL id='1' bit='9' name='AS RA Dir'/><CHANNEL id='1' bit='10' name='Rein En'/><CHANNEL id='1' bit='11' name='Rein Run'/><CHANNEL id='1' bit='12' name='Es Rein Endl'/><CHANNEL id='1' bit='13' name='sAS Anf Füll'/><CHANNEL id='2' bit='0' name='HKPA'/><CHANNEL id='2' bit='1' name='MAA'/><CHANNEL id='2' bit='2' name='MAZ'/><CHANNEL id='2' bit='3' name='HKP1'/><CHANNEL id='2' bit='4' name='M1A'/><CHANNEL id='2' bit='5' name='M1Z'/><CHANNEL id='2' bit='6' name='HKP2'/><CHANNEL id='2' bit='7' name='M2A'/><CHANNEL id='2' bit='8' name='M2Z'/><CHANNEL id='2' bit='9' name='HKP3'/><CHANNEL id='2' bit='10' name='M3A'/><CHANNEL id='2' bit='11' name='M3Z'/><CHANNEL id='2' bit='12' name='HKP4'/><CHANNEL id='2' bit='13' name='M4A'/><CHANNEL id='2' bit='14' name='M4Z'/><CHANNEL id='2' bit='15' name='HKP5'/><CHANNEL id='2' bit='16' name='M5A'/><CHANNEL id='2' bit='17' name='M5Z'/><CHANNEL id='2' bit='18' name='HKP6'/><CHANNEL id='2' bit='19' name='M6A'/><CHANNEL id='2' bit='20' name='M6Z'/><CHANNEL id='2' bit='21' name='HKPB'/><CHANNEL id='2' bit='22' name='MBA'/><CHANNEL id='2' bit='23' name='MBZ'/><CHANNEL id='3' bit='0' name='BPA'/><CHANNEL id='3' bit='1' name='BP1'/><CHANNEL id='3' bit='2' name='BP2'/><CHANNEL id='3' bit='3' name='BP3'/><CHANNEL id='3' bit='4' name='BPB'/><CHANNEL id='3' bit='5' name='BZPA'/><CHANNEL id='3' bit='6' name='BZP1'/><CHANNEL id='3' bit='7' name='BZP2'/><CHANNEL id='3' bit='8' name='BZP3'/><CHANNEL id='3' bit='9' name='BZPB'/><CHANNEL id='4' bit='0' name='Aschebox'/><CHANNEL id='4' bit='1' name='Netztrafo'/><CHANNEL id='4' bit='2' name='Netzrelais'/><CHANNEL id='4' bit='4' name='Lagerraum'/><CHANNEL id='4' bit='6' name='FLP'/><CHANNEL id='4' bit='8' name='ATW'/><CHANNEL id='4' bit='9' name='Entasch gesp.'/><CHANNEL id='4' bit='13' name='HKV'/><CHANNEL id='4' bit='14' name='Spülung Aktiv'/><CHANNEL id='4' bit='15' name='ExtHK vorh'/><CHANNEL id='4' bit='16' name='ExtHK_2 vorh'/><CHANNEL id='4' bit='17' name='ExtHK_3 vorh'/><CHANNEL id='6' bit='0' name='ExtHK Anf'/><CHANNEL id='6' bit='2' name='ExtHK_2 Anf'/><CHANNEL id='6' bit='3' name='ExtHK_3 Anf'/><CHANNEL id='6' bit='4' name='ExtHK Pumpe'/><CHANNEL id='6' bit='6' name='ExtHK_2 Pumpe'/><CHANNEL id='6' bit='7' name='ExtHK_3 Pumpe'/><CHANNEL id='6' bit='8' name='KASK1 MinLeist'/><CHANNEL id='6' bit='9' name='KASK2 MinLeist'/><CHANNEL id='6' bit='10' name='KASK3 MinLeist'/><CHANNEL id='6' bit='11' name='KASK4 MinLeist'/><CHANNEL id='6' bit='12' name='KASK1 MaxLeist'/><CHANNEL id='6' bit='13' name='KASK2 MaxLeist'/><CHANNEL id='6' bit='14' name='KASK3 MaxLeist'/><CHANNEL id='6' bit='15' name='KASK4 MaxLeist'/><CHANNEL id='6' bit='16' name='KASK1 Run'/><CHANNEL id='6' bit='17' name='KASK2 Run'/><CHANNEL id='6' bit='18' name='KASK3 Run'/><CHANNEL id='6' bit='19' name='KASK4 Run'/><CHANNEL id='6' bit='20' name='KASK1 OK'/><CHANNEL id='6' bit='21' name='KASK2 OK'/><CHANNEL id='6' bit='22' name='KASK3 OK'/><CHANNEL id='6' bit='23' name='KASK4 OK'/><CHANNEL id='6' bit='24' name='Kask KWK Out'/><CHANNEL id='6' bit='25' name='Kask FW Out'/><CHANNEL id='6' bit='26' name='KASK KWK OK'/><CHANNEL id='6' bit='27' name='KASK FW OK'/><CHANNEL id='7' bit='0' name='DReg P2'/><CHANNEL id='7' bit='1' name='DReg P3'/><CHANNEL id='7' bit='2' name='DReg Mi auf'/><CHANNEL id='7' bit='3' name='DReg Mi zu'/><CHANNEL id='7' bit='5' name='DReg2 P2'/><CHANNEL id='7' bit='6' name='DReg2 Mi auf'/><CHANNEL id='7' bit='7' name='DReg2 Mi zu'/><CHANNEL id='7' bit='9' name='DReg3 P2'/><CHANNEL id='7' bit='10' name='DReg3 P3'/><CHANNEL id='7' bit='11' name='DReg3 Mi auf'/><CHANNEL id='7' bit='12' name='DReg3 Mi zu'/></DIGITAL></DAQPRJ>"

@TheRealKillaruna
Copy link
Owner

@anderl78 , @Hellsbound , thanks for these reports. May I ask how you chose the selection for the dummy variables at the end of the analog section? And are you getting the correct values with this, both for analog and digital parameters? (You need to check the full parameter set for this, of course)

@apaqd
Copy link

apaqd commented Sep 4, 2024 via email

@anderl78
Copy link
Author

anderl78 commented Sep 5, 2024

@TheRealKillaruna good to see you! I was just looking for a quick fix. So I added a debugging code to hargassner.py (see pull request for this). At the same time, I compared the old channel list (from the p firmware) with the new channel list (from the p1 firmware). There are (in my case) only three changes at the end of the analog channels. So the simple fix is ​​to add two dummies here (two based on the results of the debugging). The values ​​I used seem to show the correct data. As far as I could see, the digital channels in the msg file are unchanged....

@anderl78
Copy link
Author

anderl78 commented Sep 5, 2024

What's also interesting is that different users have massively different lengths in the msg file and the telnet output. A uniform msg file therefore seems difficult...

I am currently working on adding an HA switch to the code that temporarily disables the length check (of course with a warning in the LOG and reactivated check every time HA is restarted) in order to at least be able to continue to use the plugin (even if with some error data) until an update...what do you think about this?

@skrue
Copy link

skrue commented Sep 9, 2024

As for many others, the integration stopped working for me after Hargassner updated the firmware to V14.0HAR.p1.

I now found some time to try the suggested workaround of adding dummy values to the msgformat string in my config (after pulling the latest msgformat from the heater via SD card, which also contained more values than my previous string).

It kind of worked, most values are available in HA again, but not all. For example the flow temperature (German "Vorlauftemperatur") is shown as 1°C while it should be 20-something (for both of my two heating circuits). The buffer0 temperature is now 0 while it should be 60-something.

So I suspect that the position of the dummy values might not be correct or something else weird is going on with my msgformat. I haven't tried going with an unmodified msgformat string and just disabling the length check however.

By the way, how do I prevent Hargassner from initiating firmware updates on their end? I am happy to update the FW myself when there's a new one, but I am kind of tired of these constant breaking changes they introduce to the message format, just because - frankly speaking - they don't give a sh*t about folks like us who want to grab the data locally.

@anderl78
Copy link
Author

anderl78 commented Sep 9, 2024

@skrue You are right. I had not enough time till now to look for a solution to the dummy-entries. Perhaps look into the provided values from the integration and check what the heater displays to locate the right one?

You can disable the automatic firmware update in the hargassner web-frontend. It's not available directly in the app. In the app press the three dots an select Web-Version, Login if necessary. Press the "i-Button" , go to settings. There is a checkbox named "automatic updates allowed"

@skrue
Copy link

skrue commented Sep 13, 2024

@anderl78 I have now also looked at the raw data that my heater spits out via telnet and compared it to the <DAQPRJ> string written to the SD card.

In my case one of the dummy channels needs to be at id=56 between TA Gem. and ExtHK Solltmp..
The second one would be either id=86 or id=87 between BoiZustand_1 and TBB OR between TBs_1'and BoiZustand_1. I still need to verify that second one when the heater turns on next time.

Due to the message length seemingly being different from heater to heater, these positions might as well be different ones. For example my Nano-PK 10 currently sends 107 analogue + 8 digital channels.

Here's my current msgformat string:

msgformat: "<DAQPRJ><ANALOG><CHANNEL id='0' name='ZK' dop='0'/><CHANNEL id='1' name='O2' unit='%'/><CHANNEL id='2' name='O2soll' unit='%'/><CHANNEL id='3' name='TK' unit='°C'/><CHANNEL id='4' name='TKsoll' unit='°C'/><CHANNEL id='5' name='TRL' unit='°C'/><CHANNEL id='6' name='TRLsoll' unit='°C' dop='0'/><CHANNEL id='7' name='Spreizung' unit='°C'/><CHANNEL id='8' name='TRG' unit='°C'/><CHANNEL id='9' name='SZist' unit='%' dop='0'/><CHANNEL id='10' name='SZsoll' unit='%'/><CHANNEL id='11' name='TPo' unit='°C'/><CHANNEL id='12' name='TPm' unit='°C'/><CHANNEL id='13' name='TPu' unit='°C'/><CHANNEL id='14' name='Puff Füllgrad' unit='%' dop='0'/><CHANNEL id='15' name='Puffer_soll oben' unit='°C' dop='0'/><CHANNEL id='16' name='Puffer_soll unten' unit='°C' dop='0'/><CHANNEL id='17' name='PuffZustand' dop='0'/><CHANNEL id='18' name='Max Anf Kessel' dop='0'/><CHANNEL id='19' name='TFW' unit='°C' dop='0'/><CHANNEL id='20' name='Leistung' unit='%' dop='0'/><CHANNEL id='21' name='ESsoll' unit='%'/><CHANNEL id='22' name='min.Leist.TRG' unit='%'/><CHANNEL id='23' name='max.Leist.TRG' unit='%'/><CHANNEL id='24' name='max.Leist.Fuell' unit='%'/><CHANNEL id='25' name='max.Leist.TPO' unit='%'/><CHANNEL id='26' name='ESRegler' unit='%' dop='0'/><CHANNEL id='27' name='Regler K'/><CHANNEL id='28' name='KeBrstScale' unit='%' dop='0'/><CHANNEL id='29' name='Programm' dop='0'/><CHANNEL id='30' name='Störungs Nr' dop='0'/><CHANNEL id='31' name='Max Anf ZenPuf' unit='°C' dop='0'/><CHANNEL id='32' name='I Es' unit='mA' dop='0'/><CHANNEL id='33' name='I Ra' unit='mA' dop='0'/><CHANNEL id='34' name='I Aa' unit='mA' dop='0'/><CHANNEL id='35' name='I Sr' unit='mA' dop='0'/><CHANNEL id='36' name='I Rein' unit='mA' dop='0'/><CHANNEL id='37' name='LZ ES seit Füll.' unit='Min' dop='0'/><CHANNEL id='38' name='LZ ES seit Ent.' unit='Min' dop='0'/><CHANNEL id='39' name='Anzahl Entasch.' dop='0'/><CHANNEL id='40' name='Anzahl SR Beweg.' dop='0'/><CHANNEL id='41' name='Lagerstand' unit='kg' dop='0'/><CHANNEL id='42' name='Verbrauchszähler' unit='kg' dop='0'/><CHANNEL id='43' name='Heiz P Lambda' unit='W' dop='2'/><CHANNEL id='44' name='Heiz U Lambda' unit='V' dop='2'/><CHANNEL id='45' name='Heiz I Lambda' unit='mA' dop='0'/><CHANNEL id='46' name='U_Lambda' unit='mV'/><CHANNEL id='47' name='U Netzteil' unit='mV' dop='0'/><CHANNEL id='48' name='T Spülung' unit='°C'/><CHANNEL id='49' name='BRT' unit='°C'/><CHANNEL id='50' name='Tplat' unit='°C' dop='0'/><CHANNEL id='51' name='TVG' unit='°C'/><CHANNEL id='52' name='TVG2' unit='°C'/><CHANNEL id='53' name='AIN17' unit='V'/><CHANNEL id='54' name='Taus' unit='°C'/><CHANNEL id='55' name='TA Gem.' unit='°C'/><CHANNEL id='56' name='Dummy 1' dop='0'/><CHANNEL id='57' name='ExtHK Solltmp.' unit='°C' dop='0'/><CHANNEL id='58' name='TVL_A' unit='°C'/><CHANNEL id='59' name='TVLs_A' unit='°C' dop='0'/><CHANNEL id='60' name='TRA_A' unit='°C'/><CHANNEL id='61' name='TRs_A' unit='°C'/><CHANNEL id='62' name='HKZustand_A' dop='0'/><CHANNEL id='63' name='FRA Zustand' dop='0'/><CHANNEL id='64' name='TVL_1' unit='°C'/><CHANNEL id='65' name='TVLs_1' unit='°C' dop='0'/><CHANNEL id='66' name='TRA_1' unit='°C'/><CHANNEL id='67' name='TRs_1' unit='°C'/><CHANNEL id='68' name='HKZustand_1' dop='0'/><CHANNEL id='69' name='FR1 Zustand' dop='0'/><CHANNEL id='70' name='TVL_2' unit='°C'/><CHANNEL id='71' name='TVLs_2' unit='°C' dop='0'/><CHANNEL id='72' name='TRA_2' unit='°C'/><CHANNEL id='73' name='TRs_2' unit='°C'/><CHANNEL id='74' name='HKZustand_2' dop='0'/><CHANNEL id='75' name='FR2 Zustand' dop='0'/><CHANNEL id='76' name='TVL_B' unit='°C'/><CHANNEL id='77' name='TVLs_B' unit='°C' dop='0'/><CHANNEL id='78' name='TRA_B' unit='°C'/><CHANNEL id='79' name='TRs_B' unit='°C'/><CHANNEL id='80' name='HKZustand_B' dop='0'/><CHANNEL id='81' name='FRB Zustand' dop='0'/><CHANNEL id='82' name='TBA' unit='°C'/><CHANNEL id='83' name='TBs_A' unit='°C' dop='0'/><CHANNEL id='84' name='TB1' unit='°C'/><CHANNEL id='85' name='TBs_1' unit='°C' dop='0'/><CHANNEL id='86' name='BoiZustand_1' dop='0'/><CHANNEL id='87' name='Dummy 2' dop='0'/><CHANNEL id='88' name='TBB' unit='°C'/><CHANNEL id='89' name='TBs_B' unit='°C' dop='0'/><CHANNEL id='90' name='HKR Anf' unit='°C'/><CHANNEL id='91' name='Anf. HKR0' unit='°C' dop='0'/><CHANNEL id='92' name='Anf. HKR1' unit='°C' dop='0'/><CHANNEL id='93' name='Anf. HKR2' unit='°C' dop='0'/><CHANNEL id='94' name='Anf. HKR3' unit='°C' dop='0'/><CHANNEL id='95' name='Anf. HKR4' unit='°C' dop='0'/><CHANNEL id='96' name='Anf. HKR5' unit='°C' dop='0'/><CHANNEL id='97' name='Anf. HKR6' unit='°C' dop='0'/><CHANNEL id='98' name='Anf. HKR7' unit='°C' dop='0'/><CHANNEL id='99' name='Anf. HKR8' unit='°C' dop='0'/><CHANNEL id='100' name='Anf. HKR9' unit='°C' dop='0'/><CHANNEL id='101' name='Anf. HKR10' unit='°C' dop='0'/><CHANNEL id='102' name='Anf. HKR11' unit='°C' dop='0'/><CHANNEL id='103' name='Anf. HKR12' unit='°C' dop='0'/><CHANNEL id='104' name='Anf. HKR13' unit='°C' dop='0'/><CHANNEL id='105' name='Anf. HKR14' unit='°C' dop='0'/><CHANNEL id='106' name='Anf. HKR15' unit='°C' dop='0'/><CHANNEL id='107' name='Wasserdruck' unit='bar' dop='2'/></ANALOG><DIGITAL><CHANNEL id='0' bit='0' name='Störung'/><CHANNEL id='0' bit='1' name='Stb'/><CHANNEL id='0' bit='2' name='Fuellstand'/><CHANNEL id='0' bit='3' name='RLP/PuffP'/><CHANNEL id='0' bit='4' name='RLm_auf'/><CHANNEL id='0' bit='5' name='RLm_zu'/><CHANNEL id='0' bit='10' name='WS freig.'/><CHANNEL id='0' bit='11' name='Akt. Code'/><CHANNEL id='0' bit='14' name='FW Freig.'/><CHANNEL id='0' bit='15' name='gFlP'/><CHANNEL id='0' bit='16' name='gFlM auf'/><CHANNEL id='0' bit='17' name='gFlM zu'/><CHANNEL id='0' bit='18' name='gFl2P'/><CHANNEL id='0' bit='19' name='gFl2M auf'/><CHANNEL id='0' bit='20' name='gFl2M zu'/><CHANNEL id='1' bit='0' name='L Heiz.'/><CHANNEL id='1' bit='1' name='Z Heiz.'/><CHANNEL id='1' bit='2' name='Z Geb.'/><CHANNEL id='1' bit='3' name='AA Run'/><CHANNEL id='1' bit='4' name='AA Dir'/><CHANNEL id='1' bit='5' name='ES Run'/><CHANNEL id='1' bit='6' name='ES Dir'/><CHANNEL id='1' bit='7' name='AS Saug'/><CHANNEL id='1' bit='8' name='AS RA Run'/><CHANNEL id='1' bit='9' name='AS RA Dir'/><CHANNEL id='1' bit='10' name='Rein En'/><CHANNEL id='1' bit='11' name='Rein Run'/><CHANNEL id='1' bit='12' name='Es Rein Endl'/><CHANNEL id='1' bit='13' name='sAS Anf Füll'/><CHANNEL id='2' bit='0' name='HKPA'/><CHANNEL id='2' bit='1' name='MAA'/><CHANNEL id='2' bit='2' name='MAZ'/><CHANNEL id='2' bit='3' name='HKP1'/><CHANNEL id='2' bit='4' name='M1A'/><CHANNEL id='2' bit='5' name='M1Z'/><CHANNEL id='2' bit='6' name='HKP2'/><CHANNEL id='2' bit='7' name='M2A'/><CHANNEL id='2' bit='8' name='M2Z'/><CHANNEL id='2' bit='9' name='HKP3'/><CHANNEL id='2' bit='10' name='M3A'/><CHANNEL id='2' bit='11' name='M3Z'/><CHANNEL id='2' bit='12' name='HKP4'/><CHANNEL id='2' bit='13' name='M4A'/><CHANNEL id='2' bit='14' name='M4Z'/><CHANNEL id='2' bit='15' name='HKP5'/><CHANNEL id='2' bit='16' name='M5A'/><CHANNEL id='2' bit='17' name='M5Z'/><CHANNEL id='2' bit='18' name='HKP6'/><CHANNEL id='2' bit='19' name='M6A'/><CHANNEL id='2' bit='20' name='M6Z'/><CHANNEL id='2' bit='21' name='HKPB'/><CHANNEL id='2' bit='22' name='MBA'/><CHANNEL id='2' bit='23' name='MBZ'/><CHANNEL id='3' bit='0' name='BPA'/><CHANNEL id='3' bit='1' name='BP1'/><CHANNEL id='3' bit='2' name='BP2'/><CHANNEL id='3' bit='3' name='BP3'/><CHANNEL id='3' bit='4' name='BPB'/><CHANNEL id='3' bit='5' name='BZPA'/><CHANNEL id='3' bit='6' name='BZP1'/><CHANNEL id='3' bit='7' name='BZP2'/><CHANNEL id='3' bit='8' name='BZP3'/><CHANNEL id='3' bit='9' name='BZPB'/><CHANNEL id='4' bit='0' name='Aschebox'/><CHANNEL id='4' bit='1' name='Netztrafo'/><CHANNEL id='4' bit='2' name='Netzrelais'/><CHANNEL id='4' bit='4' name='Lagerraum'/><CHANNEL id='4' bit='6' name='FLP'/><CHANNEL id='4' bit='8' name='ATW'/><CHANNEL id='4' bit='9' name='Entasch gesp.'/><CHANNEL id='4' bit='13' name='HKV'/><CHANNEL id='4' bit='14' name='Spülung Aktiv'/><CHANNEL id='4' bit='15' name='ExtHK vorh'/><CHANNEL id='4' bit='16' name='ExtHK_2 vorh'/><CHANNEL id='4' bit='17' name='ExtHK_3 vorh'/><CHANNEL id='6' bit='0' name='ExtHK Anf'/><CHANNEL id='6' bit='2' name='ExtHK_2 Anf'/><CHANNEL id='6' bit='3' name='ExtHK_3 Anf'/><CHANNEL id='6' bit='4' name='ExtHK Pumpe'/><CHANNEL id='6' bit='6' name='ExtHK_2 Pumpe'/><CHANNEL id='6' bit='7' name='ExtHK_3 Pumpe'/><CHANNEL id='6' bit='8' name='KASK1 MinLeist'/><CHANNEL id='6' bit='9' name='KASK2 MinLeist'/><CHANNEL id='6' bit='10' name='KASK3 MinLeist'/><CHANNEL id='6' bit='11' name='KASK4 MinLeist'/><CHANNEL id='6' bit='12' name='KASK1 MaxLeist'/><CHANNEL id='6' bit='13' name='KASK2 MaxLeist'/><CHANNEL id='6' bit='14' name='KASK3 MaxLeist'/><CHANNEL id='6' bit='15' name='KASK4 MaxLeist'/><CHANNEL id='6' bit='16' name='KASK1 Run'/><CHANNEL id='6' bit='17' name='KASK2 Run'/><CHANNEL id='6' bit='18' name='KASK3 Run'/><CHANNEL id='6' bit='19' name='KASK4 Run'/><CHANNEL id='6' bit='20' name='KASK1 OK'/><CHANNEL id='6' bit='21' name='KASK2 OK'/><CHANNEL id='6' bit='22' name='KASK3 OK'/><CHANNEL id='6' bit='23' name='KASK4 OK'/><CHANNEL id='6' bit='24' name='Kask KWK Out'/><CHANNEL id='6' bit='25' name='Kask FW Out'/><CHANNEL id='6' bit='26' name='KASK KWK OK'/><CHANNEL id='6' bit='27' name='KASK FW OK'/><CHANNEL id='7' bit='0' name='DReg P2'/><CHANNEL id='7' bit='1' name='DReg P3'/><CHANNEL id='7' bit='2' name='DReg Mi auf'/><CHANNEL id='7' bit='3' name='DReg Mi zu'/><CHANNEL id='7' bit='5' name='DReg2 P2'/><CHANNEL id='7' bit='6' name='DReg2 Mi auf'/><CHANNEL id='7' bit='7' name='DReg2 Mi zu'/><CHANNEL id='7' bit='9' name='DReg3 P2'/><CHANNEL id='7' bit='10' name='DReg3 P3'/><CHANNEL id='7' bit='11' name='DReg3 Mi auf'/><CHANNEL id='7' bit='12' name='DReg3 Mi zu'/></DIGITAL></DAQPRJ>"

@Spacey-Rat
Copy link

Hi!
I tried the trick with the 2 dummy ones at the end of ANALOG as well and - at least - it gives me some values again but unfortunately just the one that I'm interested in: The temperature from my solar thermal. That's

With the 2 dummies at the end of the analog section this currently gives me always 0°.
At least the channel number itself stayed the same since before the last update - 105.

Any idea where to look at?

Here's my current config direct from the unit, not working with my HA:
<DAQPRJ><ANALOG><CHANNEL id='0' name='ZK' dop='0'/><CHANNEL id='1' name='O2' unit='%'/><CHANNEL id='2' name='O2soll' unit='%'/><CHANNEL id='3' name='TK' unit='∞C'/><CHANNEL id='4' name='TKsoll' unit='∞C'/><CHANNEL id='5' name='TRL' unit='∞C'/><CHANNEL id='6' name='TRLsoll' unit='∞C' dop='0'/><CHANNEL id='7' name='Spreizung' unit='∞C'/><CHANNEL id='8' name='TRG' unit='∞C'/><CHANNEL id='9' name='SZist' unit='%' dop='0'/><CHANNEL id='10' name='SZsoll' unit='%'/><CHANNEL id='11' name='TPo' unit='∞C'/><CHANNEL id='12' name='TPm' unit='∞C'/><CHANNEL id='13' name='TPu' unit='∞C'/><CHANNEL id='14' name='Puff F¸llgrad' unit='%' dop='0'/><CHANNEL id='15' name='Puffer_soll oben' unit='∞C' dop='0'/><CHANNEL id='16' name='Puffer_soll unten' unit='∞C' dop='0'/><CHANNEL id='17' name='PuffZustand' dop='0'/><CHANNEL id='18' name='Max Anf Kessel' dop='0'/><CHANNEL id='19' name='TFW' unit='∞C' dop='0'/><CHANNEL id='20' name='Leistung' unit='%' dop='0'/><CHANNEL id='21' name='ESsoll' unit='%'/><CHANNEL id='22' name='min.Leist.TRG' unit='%'/><CHANNEL id='23' name='max.Leist.TRG' unit='%'/><CHANNEL id='24' name='max.Leist.Fuell' unit='%'/><CHANNEL id='25' name='max.Leist.TPO' unit='%'/><CHANNEL id='26' name='ESRegler' unit='%' dop='0'/><CHANNEL id='27' name='Regler K'/><CHANNEL id='28' name='KeBrstScale' unit='%' dop='0'/><CHANNEL id='29' name='Programm' dop='0'/><CHANNEL id='30' name='Stˆrungs Nr' dop='0'/><CHANNEL id='31' name='Max Anf ZenPuf' unit='∞C' dop='0'/><CHANNEL id='32' name='I Es' unit='mA' dop='0'/><CHANNEL id='33' name='I Ra' unit='mA' dop='0'/><CHANNEL id='34' name='I Aa' unit='mA' dop='0'/><CHANNEL id='35' name='I Sr' unit='mA' dop='0'/><CHANNEL id='36' name='I Rein' unit='mA' dop='0'/><CHANNEL id='37' name='LZ ES seit F¸ll.' unit='Min' dop='0'/><CHANNEL id='38' name='LZ ES seit Ent.' unit='Min' dop='0'/><CHANNEL id='39' name='Anzahl Entasch.' dop='0'/><CHANNEL id='40' name='Anzahl SR Beweg.' dop='0'/><CHANNEL id='41' name='Lagerstand' unit='kg' dop='0'/><CHANNEL id='42' name='Verbrauchsz‰hler' unit='kg' dop='0'/><CHANNEL id='43' name='Heiz P Lambda' unit='W' dop='2'/><CHANNEL id='44' name='Heiz U Lambda' unit='V' dop='2'/><CHANNEL id='45' name='Heiz I Lambda' unit='mA' dop='0'/><CHANNEL id='46' name='U_Lambda' unit='mV'/><CHANNEL id='47' name='U Netzteil' unit='mV' dop='0'/><CHANNEL id='48' name='T Sp¸lung' unit='∞C'/><CHANNEL id='49' name='BRT' unit='∞C'/><CHANNEL id='50' name='Tplat' unit='∞C' dop='0'/><CHANNEL id='51' name='TVG' unit='∞C'/><CHANNEL id='52' name='TVG2' unit='∞C'/><CHANNEL id='53' name='AIN17' unit='V'/><CHANNEL id='54' name='Taus' unit='∞C'/><CHANNEL id='55' name='TA Gem.' unit='∞C'/><CHANNEL id='56' name='ExtHK Solltmp.' unit='∞C' dop='0'/><CHANNEL id='57' name='TVL_A' unit='∞C'/><CHANNEL id='58' name='TVLs_A' unit='∞C' dop='0'/><CHANNEL id='59' name='TRA_A' unit='∞C'/><CHANNEL id='60' name='TRs_A' unit='∞C'/><CHANNEL id='61' name='HKZustand_A' dop='0'/><CHANNEL id='62' name='FRA Zustand' dop='0'/><CHANNEL id='63' name='TVL_1' unit='∞C'/><CHANNEL id='64' name='TVLs_1' unit='∞C' dop='0'/><CHANNEL id='65' name='TRA_1' unit='∞C'/><CHANNEL id='66' name='TRs_1' unit='∞C'/><CHANNEL id='67' name='HKZustand_1' dop='0'/><CHANNEL id='68' name='FR1 Zustand' dop='0'/><CHANNEL id='69' name='TVL_2' unit='∞C'/><CHANNEL id='70' name='TVLs_2' unit='∞C' dop='0'/><CHANNEL id='71' name='TRA_2' unit='∞C'/><CHANNEL id='72' name='TRs_2' unit='∞C'/><CHANNEL id='73' name='HKZustand_2' dop='0'/><CHANNEL id='74' name='FR2 Zustand' dop='0'/><CHANNEL id='75' name='TVL_B' unit='∞C'/><CHANNEL id='76' name='TVLs_B' unit='∞C' dop='0'/><CHANNEL id='77' name='TRA_B' unit='∞C'/><CHANNEL id='78' name='TRs_B' unit='∞C'/><CHANNEL id='79' name='HKZustand_B' dop='0'/><CHANNEL id='80' name='FRB Zustand' dop='0'/><CHANNEL id='81' name='TBA' unit='∞C'/><CHANNEL id='82' name='TBs_A' unit='∞C' dop='0'/><CHANNEL id='83' name='TB1' unit='∞C'/><CHANNEL id='84' name='TBs_1' unit='∞C' dop='0'/><CHANNEL id='85' name='BoiZustand_1' dop='0'/><CHANNEL id='86' name='TBB' unit='∞C'/><CHANNEL id='87' name='TBs_B' unit='∞C' dop='0'/><CHANNEL id='88' name='HKR Anf' unit='∞C'/><CHANNEL id='89' name='Anf. HKR0' unit='∞C' dop='0'/><CHANNEL id='90' name='Anf. HKR1' unit='∞C' dop='0'/><CHANNEL id='91' name='Anf. HKR2' unit='∞C' dop='0'/><CHANNEL id='92' name='Anf. HKR3' unit='∞C' dop='0'/><CHANNEL id='93' name='Anf. HKR4' unit='∞C' dop='0'/><CHANNEL id='94' name='Anf. HKR5' unit='∞C' dop='0'/><CHANNEL id='95' name='Anf. HKR6' unit='∞C' dop='0'/><CHANNEL id='96' name='Anf. HKR7' unit='∞C' dop='0'/><CHANNEL id='97' name='Anf. HKR8' unit='∞C' dop='0'/><CHANNEL id='98' name='Anf. HKR9' unit='∞C' dop='0'/><CHANNEL id='99' name='Anf. HKR10' unit='∞C' dop='0'/><CHANNEL id='100' name='Anf. HKR11' unit='∞C' dop='0'/><CHANNEL id='101' name='Anf. HKR12' unit='∞C' dop='0'/><CHANNEL id='102' name='Anf. HKR13' unit='∞C' dop='0'/><CHANNEL id='103' name='Anf. HKR14' unit='∞C' dop='0'/><CHANNEL id='104' name='Anf. HKR15' unit='∞C' dop='0'/><CHANNEL id='105' name='DReg Wq' unit='∞C'/><CHANNEL id='106' name='DReg K1' dop='0'/><CHANNEL id='107' name='DReg K2' dop='0'/><CHANNEL id='108' name='DiffReg TK1' unit='∞C'/><CHANNEL id='109' name='DiffReg TK2' unit='∞C'/><CHANNEL id='110' name='Wasserdruck' unit='bar' dop='2'/></ANALOG><DIGITAL><CHANNEL id='0' bit='0' name='Stˆrung'/><CHANNEL id='0' bit='1' name='Stb'/><CHANNEL id='0' bit='2' name='Fuellstand'/><CHANNEL id='0' bit='3' name='RLP/PuffP'/><CHANNEL id='0' bit='4' name='RLm_auf'/><CHANNEL id='0' bit='5' name='RLm_zu'/><CHANNEL id='0' bit='10' name='WS freig.'/><CHANNEL id='0' bit='11' name='Akt. Code'/><CHANNEL id='0' bit='14' name='FW Freig.'/><CHANNEL id='0' bit='15' name='gFlP'/><CHANNEL id='0' bit='16' name='gFlM auf'/><CHANNEL id='0' bit='17' name='gFlM zu'/><CHANNEL id='0' bit='18' name='gFl2P'/><CHANNEL id='0' bit='19' name='gFl2M auf'/><CHANNEL id='0' bit='20' name='gFl2M zu'/><CHANNEL id='1' bit='0' name='L Heiz.'/><CHANNEL id='1' bit='1' name='Z Heiz.'/><CHANNEL id='1' bit='2' name='Z Geb.'/><CHANNEL id='1' bit='3' name='AA Run'/><CHANNEL id='1' bit='4' name='AA Dir'/><CHANNEL id='1' bit='5' name='ES Run'/><CHANNEL id='1' bit='6' name='ES Dir'/><CHANNEL id='1' bit='7' name='AS Saug'/><CHANNEL id='1' bit='8' name='AS RA Run'/><CHANNEL id='1' bit='9' name='AS RA Dir'/><CHANNEL id='1' bit='10' name='Rein En'/><CHANNEL id='1' bit='11' name='Rein Run'/><CHANNEL id='1' bit='12' name='Es Rein Endl'/><CHANNEL id='1' bit='13' name='sAS Anf F¸ll'/><CHANNEL id='2' bit='0' name='HKPA'/><CHANNEL id='2' bit='1' name='MAA'/><CHANNEL id='2' bit='2' name='MAZ'/><CHANNEL id='2' bit='3' name='HKP1'/><CHANNEL id='2' bit='4' name='M1A'/><CHANNEL id='2' bit='5' name='M1Z'/><CHANNEL id='2' bit='6' name='HKP2'/><CHANNEL id='2' bit='7' name='M2A'/><CHANNEL id='2' bit='8' name='M2Z'/><CHANNEL id='2' bit='9' name='HKP3'/><CHANNEL id='2' bit='10' name='M3A'/><CHANNEL id='2' bit='11' name='M3Z'/><CHANNEL id='2' bit='12' name='HKP4'/><CHANNEL id='2' bit='13' name='M4A'/><CHANNEL id='2' bit='14' name='M4Z'/><CHANNEL id='2' bit='15' name='HKP5'/><CHANNEL id='2' bit='16' name='M5A'/><CHANNEL id='2' bit='17' name='M5Z'/><CHANNEL id='2' bit='18' name='HKP6'/><CHANNEL id='2' bit='19' name='M6A'/><CHANNEL id='2' bit='20' name='M6Z'/><CHANNEL id='2' bit='21' name='HKPB'/><CHANNEL id='2' bit='22' name='MBA'/><CHANNEL id='2' bit='23' name='MBZ'/><CHANNEL id='3' bit='0' name='BPA'/><CHANNEL id='3' bit='1' name='BP1'/><CHANNEL id='3' bit='2' name='BP2'/><CHANNEL id='3' bit='3' name='BP3'/><CHANNEL id='3' bit='4' name='BPB'/><CHANNEL id='3' bit='5' name='BZPA'/><CHANNEL id='3' bit='6' name='BZP1'/><CHANNEL id='3' bit='7' name='BZP2'/><CHANNEL id='3' bit='8' name='BZP3'/><CHANNEL id='3' bit='9' name='BZPB'/><CHANNEL id='4' bit='0' name='Aschebox'/><CHANNEL id='4' bit='1' name='Netztrafo'/><CHANNEL id='4' bit='2' name='Netzrelais'/><CHANNEL id='4' bit='4' name='Lagerraum'/><CHANNEL id='4' bit='6' name='FLP'/><CHANNEL id='4' bit='8' name='ATW'/><CHANNEL id='4' bit='9' name='Entasch gesp.'/><CHANNEL id='4' bit='13' name='HKV'/><CHANNEL id='4' bit='14' name='Sp¸lung Aktiv'/><CHANNEL id='4' bit='15' name='ExtHK vorh'/><CHANNEL id='4' bit='16' name='ExtHK_2 vorh'/><CHANNEL id='4' bit='17' name='ExtHK_3 vorh'/><CHANNEL id='6' bit='0' name='ExtHK Anf'/><CHANNEL id='6' bit='2' name='ExtHK_2 Anf'/><CHANNEL id='6' bit='3' name='ExtHK_3 Anf'/><CHANNEL id='6' bit='4' name='ExtHK Pumpe'/><CHANNEL id='6' bit='6' name='ExtHK_2 Pumpe'/><CHANNEL id='6' bit='7' name='ExtHK_3 Pumpe'/><CHANNEL id='6' bit='8' name='KASK1 MinLeist'/><CHANNEL id='6' bit='9' name='KASK2 MinLeist'/><CHANNEL id='6' bit='10' name='KASK3 MinLeist'/><CHANNEL id='6' bit='11' name='KASK4 MinLeist'/><CHANNEL id='6' bit='12' name='KASK1 MaxLeist'/><CHANNEL id='6' bit='13' name='KASK2 MaxLeist'/><CHANNEL id='6' bit='14' name='KASK3 MaxLeist'/><CHANNEL id='6' bit='15' name='KASK4 MaxLeist'/><CHANNEL id='6' bit='16' name='KASK1 Run'/><CHANNEL id='6' bit='17' name='KASK2 Run'/><CHANNEL id='6' bit='18' name='KASK3 Run'/><CHANNEL id='6' bit='19' name='KASK4 Run'/><CHANNEL id='6' bit='20' name='KASK1 OK'/><CHANNEL id='6' bit='21' name='KASK2 OK'/><CHANNEL id='6' bit='22' name='KASK3 OK'/><CHANNEL id='6' bit='23' name='KASK4 OK'/><CHANNEL id='6' bit='24' name='Kask KWK Out'/><CHANNEL id='6' bit='25' name='Kask FW Out'/><CHANNEL id='6' bit='26' name='KASK KWK OK'/><CHANNEL id='6' bit='27' name='KASK FW OK'/><CHANNEL id='7' bit='0' name='DReg P2'/><CHANNEL id='7' bit='1' name='DReg P3'/><CHANNEL id='7' bit='2' name='DReg Mi auf'/><CHANNEL id='7' bit='3' name='DReg Mi zu'/><CHANNEL id='7' bit='5' name='DReg2 P2'/><CHANNEL id='7' bit='6' name='DReg2 Mi auf'/><CHANNEL id='7' bit='7' name='DReg2 Mi zu'/><CHANNEL id='7' bit='9' name='DReg3 P2'/><CHANNEL id='7' bit='10' name='DReg3 P3'/><CHANNEL id='7' bit='11' name='DReg3 Mi auf'/><CHANNEL id='7' bit='12' name='DReg3 Mi zu'/></DIGITAL></DAQPRJ>

Thx!

@skrue
Copy link

skrue commented Sep 13, 2024

@Spacey-Rat as I wrote above, putting the dummy channels at the end of the analog section will get the integration working again, but it will give wrong values for about half of the sensors. This is because the extra values that come in the data via telnet are not really at the end of the analog section, but somewhere in between.
Here's how I approached it:

  1. Paste the <DAQPRJ> string into Notepad++, use find and replace, use extended search mode, replace all < characters with \r\n<, this will give you one channel per line.
  2. Copy and paste to Excel
  3. Connect to the heater with a telnet client such as Putty, data will be printed every second or so, separated by whitespace characters.
  4. Copy and paste this raw data into Notepad++, use find and replace, replace all whitespaces with \r\n, this will give you one value per line
  5. Copy and paste this data into Excel next to the channels you already have there.
  6. Look at the channel names and the data and figure out which data is plausible and which is not, insert dummy channels in a way that the other channels line up with plausible values.
  7. Finally, edit the channel IDs that follow after the first dummy channel so that they are all consecutive again.
  8. Copy the channel column back to Notepad++, use find and replace, replace all \r\n< strings with < to have it all in one line again, use that for the msgformat in your config.

With this method I could narrow down the location for my dummy channels as described above, but you have some more fields than I do, probably because my solar water heating is not integrated with the Nano-PK, so my string will not work for you. But you should start searching in similar locations.

I have now disabled automatic updates (should have done this way earlier), but let's hope Hargassner fixes this with the next release... It's really a shame, it was already cumbersome to read out the string from the SD card and put it into the config manually, but with this mismatch it becomes really annoying.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants