Coder Social home page Coder Social logo

luxtronik2's People

Contributors

bakito avatar coolchip avatar dependabot[bot] avatar filipgolonka avatar illegalduke avatar mnemo70 avatar mwittig avatar sofa74surfer avatar unclesamswiss avatar waldbaer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

luxtronik2's Issues

Default parameter not valid ECMAScript prior to version ES6

The default parameter used in the function declaration luxtronik is not valid ECMAScript prior to version ES6. As coffee-script currently only supports ES5 your library cannot be used as part of coffee-script projects. It would nice if this could be changed by removing the default parameter value from the declaration and adding some code instead like the following:

if (typeof this._port === 'undefined')  {
        this._port = 8888;
}

Error in data request

Hi,

thanks for your module. I tried it on my AIT WZS82K3M (software version 3.84.3 on port 8889), but the module threw an exception:

RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 and <= 0. Received 4
    at boundsError (internal/buffer.js:81:9)
    at Buffer.readInt32BE (internal/buffer.js:477:5)
    at Luxtronik.<anonymous> (/Users/tm/Documents/Dev/luxtronik/node_modules/luxtronik2/luxtronik.js:406:37)

This is caused by the "data" event function only receiving 4 bytes at first, but it expects and tries to evaluate the complete response.

I implemented a crude workaround. It fills a "dataBuffer" with the received data (in 2 events) and only processes the data when more than 4 bytes were received. This makes the module work with my heatpump.

The same applies to writing data (first data event receives 4 bytes, second event then receives the final 4 bytes), but strangely this only works for me when not reading all data before.

Luxtronik.prototype._nextJob = function () {
    if (this.receivy.jobs.length > 0) {
        this.receivy.activeCommand = 0;
// NEXT LINE ADDED:
        this.dataBuffer = undefined;
        sendData(this.client, [this.receivy.jobs.shift(), 0]);

        if(this.dataBuffer === undefined) {
            this.dataBuffer = data;
        }
        else {
            this.dataBuffer = Buffer.concat([this.dataBuffer, data]);
        }
        if(data.length > 4) {
            data = this.dataBuffer;
            if (this.receivy.activeCommand === 0) {
                const commandEcho = data.readInt32BE(0);
                ...
        }
    }.bind(this));

    this.client.on('close', function () {});
};

warmwater_target_temperature bug

The write parameter "warmwater_target_temperature" does not update (german) "Wunschtemperatur" but "Deckung WP".
"Deckung WP" is not even settable on the heappump display itself.

Or do I have some misunderstanding?

Crash with Node 16

I yesterday upgraded to Node 16 b/c of an other plugin, and instantly, the luxtronix plugin threw the following errors in the logs, leading node red to restart:

11 Apr 07:53:44 - [red] Uncaught Exception:
11 Apr 07:53:44 - [error] TypeError: Cannot read properties of null (reading 'end')
at Luxtronik. (/home/pi/.node-red/node_modules/luxtronik2/luxtronik.js:598:26)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:315:12)
at readableAddChunk (node:internal/streams/readable:289:9)
at Socket.Readable.push (node:internal/streams/readable:228:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)

Request for write parameters

Hello,

in the issue: [ "Mischkreis1" (MK1) missing #26 ] you implemented the MK1 values. -> Thank you for that!

Is it possible to write the MK1 values?
Especially these values are very interesting for me to better pre-heat my MK1 - Fußbodenheizung during the day with Photovoltaik-Power:
mk1_curve_end_point: 26
mk1_curve_parallel_offset: 26
deltaMk1Reduction: 0

And this value for the heating would also help much:
deltaHeatingReduction: 0

Can you please implement this?

Thank you very much!

Best Regards and greetings from Germany ;-)
Daniel

parameter-set heatpumpVisibility and it's usage

Hi @coolchip,

I just checked your code because I want to create a PR with some additional parameters (de-aerate) - I currently have the issue, that at least one of my pumps get stuck every summer and needs to run regularly.
To my question: I found this mysterious byte-block 3005, what’s called “visibility”. It’s used for reading some values, like the “heating_curve_end_point”, which is checking the value “207”. The only “documentation” about this values I found here https://github.com/Bouni/Luxtronik-2/blob/master/documentation.md
But looking at 207, the related identifier of this is “ID_Visi_Sprachen_DANSK“ what doesn’t make any sense.
Can you elaborate, for what this visibility is used and what “207” stays for?
Happy to provide you a PR with some additional stuff.

The de-aerate props I have already in, just wondering, If I have anything to do with the visibility.

All Values NaN / undefined while parameters are correctly

using the current master branch, with an Alpha-Innotec installation running version 1.76
If I run the read-only part of your test example.js I get the output below:

  • Notice the values are all NaN, default or undefined.
  • Firmware is also not visible
  • But the Parameters are correct.

If I use a python component (https://github.com/Bouni/Luxtronik-2) I do get the values returned correctly. (i have included that output at the bottom).

{ values: { temperature_supply: NaN, temperature_return: NaN, temperature_target_return: NaN, temperature_extern_return: 'no', temperature_hot_gas: NaN, temperature_outside: NaN, temperature_outside_avg: NaN, temperature_hot_water: NaN, temperature_hot_water_target: NaN, temperature_heat_source_in: NaN, temperature_heat_source_out: NaN, temperature_mixer1_flow: 'no', temperature_mixer1_target: 'no', temperaturw_RFV: 'no', temperature_mixer2_flow: NaN, temperature_mixer2_target: NaN, temperature_solar_collector: NaN, temperature_solar_storage: NaN, temperature_external_source: NaN, ASDin: undefined, BWTin: undefined, EVUin: undefined, HDin: undefined, MOTin: undefined, NDin: undefined, PEXin: undefined, SWTin: undefined, AVout: undefined, BUPout: undefined, HUPout: undefined, MA1out: undefined, MZ1out: undefined, VENout: undefined, VBOout: undefined, VD1out: undefined, VD2out: undefined, ZIPout: undefined, ZUPout: undefined, ZW1out: undefined, ZW2SSTout: undefined, ZW3SSTout: undefined, FP2out: undefined, SLPout: undefined, SUPout: undefined, MZ2out: undefined, MA2out: undefined, defrostValve: 'no', hotWaterBoilerValve: undefined, heatingSystemCircPump: 'off', heatSourceMotor: undefined, compressor1: undefined, hotWaterCircPumpExtern: undefined, hours_compressor1: NaN, starts_compressor1: undefined, hours_compressor2: NaN, starts_compressor2: undefined, hours_2nd_heat_source1: NaN, hours_2nd_heat_source2: 'no', hours_2nd_heat_source3: 'no', hours_heatpump: NaN, hours_heating: NaN, hours_warmwater: NaN, hours_cooling: NaN, Time_WPein_akt: undefined, Time_ZWE1_akt: undefined, Time_ZWE2_akt: undefined, Timer_EinschVerz: undefined, Time_SSPAUS_akt: undefined, Time_SSPEIN_akt: undefined, Time_VDStd_akt: undefined, Time_HRM_akt: undefined, Time_HRW_akt: undefined, Time_LGS_akt: undefined, Time_SBW_akt: undefined, typeHeatpump: 'Unbekannter Typ', bivalentLevel: undefined, WP_BZ_akt: undefined, firmware: '', AdresseIP_akt: '0.0.0.0', SubNetMask_akt: '0.0.0.0', Add_Broadcast: '0.0.0.0', Add_StdGateway: '0.0.0.0', errors: [], error_count: undefined, switch_off: [], Comfort_exists: undefined, heatpump_state1: undefined, heatpump_state2: undefined, heatpump_state3: undefined, heatpump_duration: undefined, heatpump_state_string: 'Unknown [undefined]', heatpump_extendet_state_string: 'Unknown [undefined]', ahp_Stufe: undefined, ahp_Temp: undefined, ahp_Zeit: undefined, opStateHotWater: undefined, opStateHotWaterString: 'Unknown [undefined/undefined]', opStateHeating: undefined, opStateMixer1: undefined, opStateMixer2: undefined, Einst_Kurzprogramm: undefined, StatusSlave_1: undefined, StatusSlave_2: undefined, StatusSlave_3: undefined, StatusSlave_4: undefined, StatusSlave_5: undefined, rawDeviceTimeCalc: 'Invalid Date', opStateMixer3: undefined, temperature_mixer3_target: 'no', temperature_mixer3_flow: 'no', MZ3out: undefined, MA3out: undefined, FP3out: undefined, heatSourceDefrostTimer: 'no', Temperatur_RFV2: NaN, Temperatur_RFV3: NaN, SH_SW: undefined, Zaehler_BetrZeitSW: NaN, FreigabKuehl: undefined, AnalogIn: undefined, SonderZeichen: undefined, SH_ZIP: undefined, WebsrvProgrammWerteBeobarten: undefined, thermalenergy_heating: NaN, thermalenergy_warmwater: NaN, thermalenergy_pool: 'no', thermalenergy_total: NaN, analogOut1: undefined, analogOut2: undefined, Time_Heissgas: undefined, Temp_Lueftung_Zuluft: NaN, Temp_Lueftung_Abluft: NaN, hours_solar: 'no', analogOut3: undefined, analogOut4: 'no', Out_VZU: undefined, Out_VAB: undefined, Out_VSK: undefined, Out_FRH: undefined, AnalogIn2: undefined, AnalogIn3: undefined, SAXin: undefined, SPLin: undefined, Compact_exists: undefined, Durchfluss_WQ: undefined, LIN_exists: undefined, LIN_TUE: undefined, LIN_TUE1: undefined, LIN_VDH: undefined, LIN_UH: undefined, LIN_UH_Soll: undefined, LIN_HD: undefined, LIN_ND: undefined, LIN_VDH_out: undefined, flowRate: 'no', opStateHeatingString: 'unbekannt (undefined)' }, parameters: { heating_temperature: 0, warmwater_temperature: 54, heating_operation_mode: 0, warmwater_operation_mode: 0, heating_operation_mode_string: 'Automatik', warmwater_operation_mode_string: 'Automatik', heating_curve_end_point: 32, heating_curve_parallel_offset: 19.5, deltaHeatingReduction: 0, heatSourcedefrostAirThreshold: 'no', hotWaterTemperatureHysterese: 4, returnTempHyst: 2, heatSourcedefrostAirEnd: 'no', temperature_hot_water_target: 54, cooling_operation_mode: 1, cooling_release_temperature: 20, thresholdTemperatureSetBack: -20, cooling_inlet_temp: 18, hotWaterCircPumpDeaerate: 'off', heatingLimit: 1, thresholdHeatingLimit: 18, cooling_start_after_hours: 5, cooling_stop_after_hours: 40, typeSerial: '2208/28-59', returnTemperatureTargetMin: 15 }, additional: { reading_calculated_time_ms: 97 } }

2018-12-31 10:08:01,716: INFO - Connected to Heatpump 2018-12-31 10:08:01,723: INFO - Sucessfully read 232 calculations with status 0 2018-12-31 10:08:01,724: INFO - ------------------------------ 2018-12-31 10:08:01,725: INFO - ------------------------------ 2018-12-31 10:08:01,725: INFO - 0 : 1073766448 2018-12-31 10:08:01,727: INFO - 1 : -1 2018-12-31 10:08:01,728: INFO - 2 : 1746728 2018-12-31 10:08:01,729: INFO - 3 : 1750824 2018-12-31 10:08:01,730: INFO - 4 : 1746728 2018-12-31 10:08:01,731: INFO - 5 : 1746728 2018-12-31 10:08:01,732: INFO - 6 : 1746728 2018-12-31 10:08:01,733: INFO - 7 : 1746728 2018-12-31 10:08:01,734: INFO - 8 : 1075008240 2018-12-31 10:08:01,735: INFO - 9 : 1746628 2018-12-31 10:08:01,736: INFO - 10 : 266 2018-12-31 10:08:01,737: INFO - 11 : 279 2018-12-31 10:08:01,737: INFO - 12 : 247 2018-12-31 10:08:01,737: INFO - 13 : 50 2018-12-31 10:08:01,739: INFO - 14 : 337 2018-12-31 10:08:01,739: INFO - 15 : 82 2018-12-31 10:08:01,741: INFO - 16 : 65 2018-12-31 10:08:01,743: INFO - 17 : 551 2018-12-31 10:08:01,744: INFO - 18 : 540 2018-12-31 10:08:01,744: INFO - 19 : 134 2018-12-31 10:08:01,744: INFO - 20 : 143 2018-12-31 10:08:01,745: INFO - 21 : 750 2018-12-31 10:08:01,745: INFO - 22 : 0 2018-12-31 10:08:01,746: INFO - 23 : 0 2018-12-31 10:08:01,746: INFO - 24 : 258 2018-12-31 10:08:01,747: INFO - 25 : 180 2018-12-31 10:08:01,747: INFO - 26 : 50 2018-12-31 10:08:01,748: INFO - 27 : 1500 2018-12-31 10:08:01,748: INFO - 28 : 50 2018-12-31 10:08:01,749: INFO - 29 : 1 2018-12-31 10:08:01,749: INFO - 30 : 0 2018-12-31 10:08:01,750: INFO - 31 : 1 2018-12-31 10:08:01,750: INFO - 32 : 0 2018-12-31 10:08:01,751: INFO - 33 : 1 2018-12-31 10:08:01,751: INFO - 34 : 1 2018-12-31 10:08:01,752: INFO - 35 : 0 2018-12-31 10:08:01,752: INFO - 36 : 0 2018-12-31 10:08:01,752: INFO - 37 : 0 2018-12-31 10:08:01,753: INFO - 38 : 0 2018-12-31 10:08:01,753: INFO - 39 : 0 2018-12-31 10:08:01,754: INFO - 40 : 0 2018-12-31 10:08:01,754: INFO - 41 : 1 2018-12-31 10:08:01,755: INFO - 42 : 0 2018-12-31 10:08:01,755: INFO - 43 : 0 2018-12-31 10:08:01,755: INFO - 44 : 0 2018-12-31 10:08:01,756: INFO - 45 : 0 2018-12-31 10:08:01,756: INFO - 46 : 0 2018-12-31 10:08:01,757: INFO - 47 : 0 2018-12-31 10:08:01,757: INFO - 48 : 0 2018-12-31 10:08:01,758: INFO - 49 : 0 2018-12-31 10:08:01,758: INFO - 50 : 0 2018-12-31 10:08:01,758: INFO - 51 : 0 2018-12-31 10:08:01,758: INFO - 52 : 0 2018-12-31 10:08:01,759: INFO - 53 : 0 2018-12-31 10:08:01,759: INFO - 54 : 1 2018-12-31 10:08:01,759: INFO - 55 : 0 2018-12-31 10:08:01,759: INFO - 56 : 22364682 2018-12-31 10:08:01,759: INFO - 57 : 56901 2018-12-31 10:08:01,759: INFO - 58 : 0 2018-12-31 10:08:01,760: INFO - 59 : 0 2018-12-31 10:08:01,760: INFO - 60 : 745799 2018-12-31 10:08:01,761: INFO - 61 : 0 2018-12-31 10:08:01,761: INFO - 62 : 0 2018-12-31 10:08:01,762: INFO - 63 : 22364682 2018-12-31 10:08:01,762: INFO - 64 : 15933991 2018-12-31 10:08:01,762: INFO - 65 : 6299754 2018-12-31 10:08:01,762: INFO - 66 : 38945438 2018-12-31 10:08:01,762: INFO - 67 : 0 2018-12-31 10:08:01,763: INFO - 68 : 0 2018-12-31 10:08:01,763: INFO - 69 : 0 2018-12-31 10:08:01,763: INFO - 70 : 0 2018-12-31 10:08:01,763: INFO - 71 : 0 2018-12-31 10:08:01,764: INFO - 72 : 0 2018-12-31 10:08:01,764: INFO - 73 : 1883 2018-12-31 10:08:01,764: INFO - 74 : 0 2018-12-31 10:08:01,764: INFO - 75 : 2758 2018-12-31 10:08:01,764: INFO - 76 : 0 2018-12-31 10:08:01,764: INFO - 77 : 0 2018-12-31 10:08:01,765: INFO - 78 : 11 2018-12-31 10:08:01,765: INFO - 79 : 1 2018-12-31 10:08:01,765: INFO - 80 : 5 2018-12-31 10:08:01,765: INFO - 81 : 86 2018-12-31 10:08:01,765: INFO - 82 : 49 2018-12-31 10:08:01,766: INFO - 83 : 46 2018-12-31 10:08:01,766: INFO - 84 : 55 2018-12-31 10:08:01,768: INFO - 85 : 54 2018-12-31 10:08:01,769: INFO - 86 : 0 2018-12-31 10:08:01,769: INFO - 87 : 0 2018-12-31 10:08:01,769: INFO - 88 : 0 2018-12-31 10:08:01,769: INFO - 89 : 0 2018-12-31 10:08:01,769: INFO - 90 : 0 2018-12-31 10:08:01,769: INFO - 91 : -1062686170 2018-12-31 10:08:01,770: INFO - 92 : -256 2018-12-31 10:08:01,770: INFO - 93 : -1062685953 2018-12-31 10:08:01,771: INFO - 94 : -1062686207 2018-12-31 10:08:01,772: INFO - 95 : 1382136035 2018-12-31 10:08:01,772: INFO - 96 : 1373710190 2018-12-31 10:08:01,773: INFO - 97 : 1373666866 2018-12-31 10:08:01,774: INFO - 98 : 1359997238 2018-12-31 10:08:01,775: INFO - 99 : 1356713048 2018-12-31 10:08:01,776: INFO - 100 : 751 2018-12-31 10:08:01,776: INFO - 101 : 751 2018-12-31 10:08:01,777: INFO - 102 : 751 2018-12-31 10:08:01,777: INFO - 103 : 751 2018-12-31 10:08:01,778: INFO - 104 : 751 2018-12-31 10:08:01,778: INFO - 105 : 5 2018-12-31 10:08:01,778: INFO - 106 : 9 2018-12-31 10:08:01,778: INFO - 107 : 9 2018-12-31 10:08:01,778: INFO - 108 : 9 2018-12-31 10:08:01,778: INFO - 109 : 9 2018-12-31 10:08:01,778: INFO - 110 : 9 2018-12-31 10:08:01,778: INFO - 111 : 1546245154 2018-12-31 10:08:01,779: INFO - 112 : 1546236447 2018-12-31 10:08:01,779: INFO - 113 : 1546238176 2018-12-31 10:08:01,779: INFO - 114 : 1546240111 2018-12-31 10:08:01,779: INFO - 115 : 1546241886 2018-12-31 10:08:01,780: INFO - 116 : 1 2018-12-31 10:08:01,780: INFO - 117 : 1 2018-12-31 10:08:01,780: INFO - 118 : 0 2018-12-31 10:08:01,780: INFO - 119 : 1 2018-12-31 10:08:01,780: INFO - 120 : 1883 2018-12-31 10:08:01,780: INFO - 121 : 0 2018-12-31 10:08:01,781: INFO - 122 : 0 2018-12-31 10:08:01,781: INFO - 123 : 0 2018-12-31 10:08:01,781: INFO - 124 : 1 2018-12-31 10:08:01,782: INFO - 125 : 0 2018-12-31 10:08:01,782: INFO - 126 : 0 2018-12-31 10:08:01,782: INFO - 127 : 0 2018-12-31 10:08:01,782: INFO - 128 : 0 2018-12-31 10:08:01,783: INFO - 129 : 0 2018-12-31 10:08:01,783: INFO - 130 : 0 2018-12-31 10:08:01,783: INFO - 131 : 0 2018-12-31 10:08:01,783: INFO - 132 : 0 2018-12-31 10:08:01,783: INFO - 133 : 0 2018-12-31 10:08:01,783: INFO - 134 : 1546247036 2018-12-31 10:08:01,783: INFO - 135 : 0 2018-12-31 10:08:01,784: INFO - 136 : 200 2018-12-31 10:08:01,784: INFO - 137 : 750 2018-12-31 10:08:01,784: INFO - 138 : 0 2018-12-31 10:08:01,784: INFO - 139 : 0 2018-12-31 10:08:01,785: INFO - 140 : 0 2018-12-31 10:08:01,785: INFO - 141 : 0 2018-12-31 10:08:01,785: INFO - 142 : 0 2018-12-31 10:08:01,786: INFO - 143 : 0 2018-12-31 10:08:01,786: INFO - 144 : 3 2018-12-31 10:08:01,786: INFO - 145 : 0 2018-12-31 10:08:01,786: INFO - 146 : 0 2018-12-31 10:08:01,786: INFO - 147 : 2 2018-12-31 10:08:01,786: INFO - 148 : 0 2018-12-31 10:08:01,786: INFO - 149 : 0 2018-12-31 10:08:01,787: INFO - 150 : 0 2018-12-31 10:08:01,787: INFO - 151 : 0 2018-12-31 10:08:01,788: INFO - 152 : 0 2018-12-31 10:08:01,788: INFO - 153 : 0 2018-12-31 10:08:01,788: INFO - 154 : 0 2018-12-31 10:08:01,788: INFO - 155 : 0 2018-12-31 10:08:01,789: INFO - 156 : 0 2018-12-31 10:08:01,789: INFO - 157 : 0 2018-12-31 10:08:01,790: INFO - 158 : 0 2018-12-31 10:08:01,790: INFO - 159 : 0 2018-12-31 10:08:01,791: INFO - 160 : 0 2018-12-31 10:08:01,791: INFO - 161 : 0 2018-12-31 10:08:01,791: INFO - 162 : 0 2018-12-31 10:08:01,791: INFO - 163 : 0 2018-12-31 10:08:01,791: INFO - 164 : 0 2018-12-31 10:08:01,792: INFO - 165 : 0 2018-12-31 10:08:01,792: INFO - 166 : 0 2018-12-31 10:08:01,792: INFO - 167 : 0 2018-12-31 10:08:01,792: INFO - 168 : 0 2018-12-31 10:08:01,792: INFO - 169 : 0 2018-12-31 10:08:01,792: INFO - 170 : 0 2018-12-31 10:08:01,793: INFO - 171 : 0 2018-12-31 10:08:01,793: INFO - 172 : 0 2018-12-31 10:08:01,794: INFO - 173 : 0 2018-12-31 10:08:01,794: INFO - 174 : 0 2018-12-31 10:08:01,794: INFO - 175 : 0 2018-12-31 10:08:01,794: INFO - 176 : 0 2018-12-31 10:08:01,794: INFO - 177 : 0 2018-12-31 10:08:01,794: INFO - 178 : 0 2018-12-31 10:08:01,794: INFO - 179 : 0 2018-12-31 10:08:01,794: INFO - 180 : 0 2018-12-31 10:08:01,794: INFO - 181 : 0 2018-12-31 10:08:01,795: INFO - 182 : 0 2018-12-31 10:08:01,795: INFO - 183 : 0 2018-12-31 10:08:01,796: INFO - 184 : 0 2018-12-31 10:08:01,796: INFO - 185 : 0 2018-12-31 10:08:01,797: INFO - 186 : 0 2018-12-31 10:08:01,797: INFO - 187 : 0 2018-12-31 10:08:01,797: INFO - 188 : 0 2018-12-31 10:08:01,797: INFO - 189 : 0 2018-12-31 10:08:01,798: INFO - 190 : 0 2018-12-31 10:08:01,798: INFO - 191 : 0 2018-12-31 10:08:01,798: INFO - 192 : 0 2018-12-31 10:08:01,798: INFO - 193 : 0 2018-12-31 10:08:01,799: INFO - 194 : 0 2018-12-31 10:08:01,799: INFO - 195 : 0 2018-12-31 10:08:01,799: INFO - 196 : 0 2018-12-31 10:08:01,800: INFO - 197 : 0 2018-12-31 10:08:01,801: INFO - 198 : 0 2018-12-31 10:08:01,802: INFO - 199 : 0 2018-12-31 10:08:01,803: INFO - 200 : 0 2018-12-31 10:08:01,803: INFO - 201 : 0 2018-12-31 10:08:01,804: INFO - 202 : 0 2018-12-31 10:08:01,805: INFO - 203 : 0 2018-12-31 10:08:01,805: INFO - 204 : 0 2018-12-31 10:08:01,806: INFO - 205 : 0 2018-12-31 10:08:01,807: INFO - 206 : 0 2018-12-31 10:08:01,808: INFO - 207 : 0 2018-12-31 10:08:01,808: INFO - 208 : 0 2018-12-31 10:08:01,809: INFO - 209 : 0 2018-12-31 10:08:01,809: INFO - 210 : 0 2018-12-31 10:08:01,810: INFO - 211 : 0 2018-12-31 10:08:01,810: INFO - 212 : 0 2018-12-31 10:08:01,810: INFO - 213 : 0 2018-12-31 10:08:01,811: INFO - 214 : 0 2018-12-31 10:08:01,811: INFO - 215 : 0 2018-12-31 10:08:01,812: INFO - 216 : 0 2018-12-31 10:08:01,812: INFO - 217 : 0 2018-12-31 10:08:01,813: INFO - 218 : 0 2018-12-31 10:08:01,813: INFO - 219 : 0 2018-12-31 10:08:01,814: INFO - 220 : 0 2018-12-31 10:08:01,815: INFO - 221 : 0 2018-12-31 10:08:01,815: INFO - 222 : 0 2018-12-31 10:08:01,816: INFO - 223 : 0 2018-12-31 10:08:01,816: INFO - 224 : 0 2018-12-31 10:08:01,816: INFO - 225 : 0 2018-12-31 10:08:01,817: INFO - 226 : 0 2018-12-31 10:08:01,818: INFO - 227 : 0 2018-12-31 10:08:01,818: INFO - 228 : 0 2018-12-31 10:08:01,818: INFO - 229 : 0 2018-12-31 10:08:01,818: INFO - 230 : 0 2018-12-31 10:08:01,818: INFO - 231 : 0 2018-12-31 10:08:01,818: INFO - ------------------------------

"Mischkreis1" (MK1) missing

For my ioBroker Adapter which is based on your library, I got the following request:
UncleSamSwiss/ioBroker.luxtronik2#123

Ich habe die Heizkurve für den MK1 nicht gefunden. Die Heizkurve für den Heizkreis ist vorhanden und kann man auch erfolgreich setzen (heating_curve_end_point und heating_curve_parallel_offset).

Nach Recherche müssten es diese Parameter sein:
14 - ID_Einst_HzMK1E_akt <-- Endpunkt Heizkurve MK1
15 - ID_Einst_HzMK1ANH_akt <-- Anhebung Heizkurve MK1
16 - ID_Einst_HzMK1ABS_akt <-- Nachtabsenkung Heizkurve MK1

Would you please be so kind to add these three variables?

Uncaught exception: The value of "offset" is out of range

Unfortunately I still have cases where we try to read more data than is available. In this case, the problem seems to be that we received 4 bytes of data but already want to read the first 8 bytes:

RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 and <= 4. Received 8
at boundsError (internal/buffer.js:83:9)
at Buffer.readInt32BE (internal/buffer.js:479:5)
at Luxtronik.<anonymous> (/opt/iobroker/node_modules/luxtronik2/luxtronik.js:480:41)
at Socket.emit (events.js:375:28)at Socket.emit (domain.js:470:12)
at addChunk (internal/streams/readable.js:290:12)
at readableAddChunk (internal/streams/readable.js:265:9)
at Socket.Readable.push (internal/streams/readable.js:204:10)
at TCP.onStreamRead (internal/stream_base_commons.js:188:23)

Can't set temperature_hot_water_target

When I set the value of warmwater_target_temperature (write id=2), my heat pump display doesn't update the hot water target temperature.

When I change the hot water target temperature on the heat pump, it is not only warmwater_temperature (id=2) that changes, but also temperature_hot_water_target (id=105). My guess would be, one should set temperature_hot_water_target instead of warmwater_target_temperature.

Write raw timetables

How to use "Support RAW write operations #20"
How can i change the timer tables for circpump?

Example has no effect
const circPumpTimerTable = [ {on: "07:30", off: "11:00"}, {on: "14:00", off: "22:00"} ];
pump.write("hotWaterCircPumpTimerTableWeek", circPumpTimerTable);

Parameter / Attribute for "Laufzeit Ø VD1"

Hello,

I just reworked my heatpump monitoring system back from websocket API to this library.

After identifying almost all parameters I am just left with the following parameter available in the websocket / web UI but not in this library: "Laufzeit Ø VD1". I also did not find any related RAW parameter in the docu.

Does anybody know which is the related parameter provided by this library or alt. the underlying RAW parameter?

Thanks!
Sebastian

Request for Energy Consumption

Hi guys,

I recently discovered that my Webserver UI also displays the consumed energy in kWh ("Eingesetzte Energie"). I'm posting the xml response I get after login below.

I was not able to find anything resembling the values when dumping all calculations and parameters (also tried the bouni python version). Was anyone able to find it and could we add it here? Are they maybe encoded in any other way?

It also would be great to have the current power consumption, if anyone can find it. I know I could also take the time derivative of the energy in kWh, but that is quite slow/delayed. Instantaneous power would be amazing!

Thanks for any help, love what you've done so far!

<Navigation id="0x7cb050">
   <item id="0x7cd740">
      <name>Informationen</name>
      <item id="0x7ca200">
         <name>Temperaturen</name>
      </item>
      <item id="0x7ccf70">
         <name>Eingänge</name>
      </item>
      <item id="0x7c8ea0">
         <name>Ausgänge</name>
      </item>
      <item id="0x7ccf28">
         <name>Ablaufzeiten</name>
      </item>
      <item id="0x7c8f30">
         <name>Betriebsstunden</name>
      </item>
      <item id="0x7ccba0">
         <name>Fehlerspeicher</name>
      </item>
      <item id="0x7ccbe8">
         <name>Abschaltungen</name>
      </item>
      <item id="0x7cc6a8">
         <name>Anlagenstatus</name>
      </item>
      <item id="0x7cc6e0">
         <name>Energiemonitor</name>
         <item id="0x7c7d20">
            <name>Wärmemenge</name>
         </item>
         <item id="0x7caa50">
            <name>Eingesetzte Energie</name>
         </item>
      </item>
      <item id="0x7cc728">
         <name>GLT</name>
      </item>
   </item>
   <item id="0x7cc770">
      <name>Einstellungen</name>
      <item id="0x7cb1c8">
         <name>Betriebsart</name>
      </item>
      <item id="0x7cc298">
         <name>Temperaturen</name>
      </item>
      <item id="0x7ce928">
         <name>System Einstellung</name>
      </item>
   </item>
   <item id="0x7ca498">
      <name>Zeitschaltprogramm</name>
      <readOnly>true</readOnly>
      <item id="0x7cb290">
         <name>Heizung</name>
         <readOnly>true</readOnly>
         <item id="0x7ce480">
            <name>Woche</name>
         </item>
         <item id="0x7ce2e0">
            <name>5+2</name>
         </item>
         <item id="0x7cdd58">
            <name>Tage (Mo, Di...)</name>
         </item>
      </item>
      <item id="0x7cdb48">
         <name>Warmwasser</name>
         <readOnly>true</readOnly>
         <item id="0x7cdae0">
            <name>Woche</name>
         </item>
         <item id="0x7cda78">
            <name>5+2</name>
         </item>
         <item id="0x7cd958">
            <name>Tage (Mo, Di...)</name>
         </item>
      </item>
   </item>
   <item id="0x7cd648">
      <name>Zugang: Benutzer</name>
   </item>
   <item id="0x7ce348">
      <name>Fernsteuerung</name>
   </item>
</Navigation>

Missing Parameter: cooling_system_circ_pump_voltage_nominal

My AIT heat pump is equipped with passive cooling. In the Luxtronik setup menu there is a parameter Lstg. Kühlung (German) which ist the equivalent of heating_system_circ_pump_voltage_nominal but is used only when the heat pump is in cooling mode. It defines the power of the internal HUP when the heat pump is in cooling mode.

Would be nice, if you could add this to your library.

If you need more info, please tell me what you need.

I18n - translation

Hi,
First thank's for your work, really appreciate it and use your module on my apps. Just one think is currently terrible for me, German language for whole messages.

Looking at your code I see that you created the file type.js to manage these messages and wrote all of these in German.

Just thinking if we can replace this file by the node module i18n, create the json file for German which while be the default one, then we could start any other translations from their (I need Fr or En).

What do you think? I could help to implement this if needed from your side.

Regards

Cedric

TypeError: Cannot read property 'payload' of undefined

Hello,

I get this error nearly every day and sometimes even up to five times.

2 Jan 02:00:23 - [red] Uncaught Exception:
2 Jan 02:00:23 - TypeError: Cannot read property 'payload' of undefined
at Luxtronik._processData (/home/pi/.node-red/node_modules/luxtronik2/luxtronik.js:332:74)
at processTicksAndRejections (internal/process/task_queues.js:77:11)
nodered.service: Main process exited, code=exited, status=1/FAILURE
pam_unix(sudo:session): session closed for user root
nodered.service: Failed with result 'exit-code'.

Closed heatingSystemCircPumpVoltage 2

Sorry, I named the wrong entries.
157 outputs only the current value of AO2.
The values 867 (voltage minimum) and 868 (voltage maximum) must be changed.

image

luxtronik.js
Line 210
'Einst_Effizienzpumpe_Nominal_akt': heatpumpValues[867],
'Einst_Effizienzpumpe_Minimal_akt': heatpumpValues[868]

Line 537
'Einst_Effizienzpumpe_Nominal_akt': {
setParameter: 867,
setValue: utils.value2LuxtronikSetHundrethValue(realValue)
},
'Einst_Effizienzpumpe_Minimal_akt': {
setParameter: 868,
setValue: utils.value2LuxtronikSetHundrethValue(realValue)
},

Originally posted by @TbsJah in #14 (comment)

Add heatingCurveEndPoint to _handleWriteCommand

luxtronik2/luxtronik.js

Lines 479 to 528 in 7e6dc94

Luxtronik.prototype._handleWriteCommand = function (parameterName, realValue, callback) {
const writeParameters = Object.freeze({
'heating_target_temperature': {
setParameter: 1,
setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, -10, 10))
},
'warmwater_target_temperature': {
setParameter: 2,
setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, 30, 65))
},
'heating_operation_mode': {
setParameter: utils.isValidOperationMode(realValue) ? 3 : undefined,
setValue: realValue
},
'warmwater_operation_mode': {
setParameter: utils.isValidOperationMode(realValue) ? 4 : undefined,
setValue: realValue
},
'hotwater_temperature_hysteresis': {
setParameter: 74,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'return_temperature_hysteresis': {
setParameter: 88,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_operation_mode': {
setParameter: 108,
setValue: realValue
},
'cooling_release_temp': {
setParameter: 110,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_inlet_temp': {
setParameter: 132,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_start': {
setParameter: 850,
setValue: realValue
},
'cooling_stop': {
setParameter: 851,
setValue: realValue
},
'wrongName': {
//setParameter: undefined,
}
});

heatingCurveEndPoint should also be made configurable (get | set)

'heating_return_temperature':{
 setParameter: 11, 
 setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, 20, 55)) 
 }

Add heatingCurveOffset to _handleWriteCommand

luxtronik2/luxtronik.js

Lines 479 to 528 in 7e6dc94

Luxtronik.prototype._handleWriteCommand = function (parameterName, realValue, callback) {
const writeParameters = Object.freeze({
'heating_target_temperature': {
setParameter: 1,
setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, -10, 10))
},
'warmwater_target_temperature': {
setParameter: 2,
setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, 30, 65))
},
'heating_operation_mode': {
setParameter: utils.isValidOperationMode(realValue) ? 3 : undefined,
setValue: realValue
},
'warmwater_operation_mode': {
setParameter: utils.isValidOperationMode(realValue) ? 4 : undefined,
setValue: realValue
},
'hotwater_temperature_hysteresis': {
setParameter: 74,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'return_temperature_hysteresis': {
setParameter: 88,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_operation_mode': {
setParameter: 108,
setValue: realValue
},
'cooling_release_temp': {
setParameter: 110,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_inlet_temp': {
setParameter: 132,
setValue: utils.value2LuxtronikSetValue(realValue)
},
'cooling_start': {
setParameter: 850,
setValue: realValue
},
'cooling_stop': {
setParameter: 851,
setValue: realValue
},
'wrongName': {
//setParameter: undefined,
}
});

heatingCurveOffset should also be made configurable (get | set)

'heating_return_temperature':{
 setParameter: 12, 
 setValue: utils.value2LuxtronikSetValue(utils.limitRange(realValue, 15, 45)) 
 }

Error: Could not handle config_flow.async_step_dhcp

I've been using this integration happily for quite some time now. However, I often (one to a few times per day) find log errors referring to this component, and I don't know what this means. The integration seems to work fine otherwise. I want to know if this is something that I can fix. The error is below:

2024-01-20 11:10:11.552 INFO (MainThread) [custom_components.luxtronik2] Found device with hostname '' IP 'X.X.X.X'
2024-01-20 11:10:15.556 ERROR (MainThread) [custom_components.luxtronik2] Could not handle config_flow.async_step_dhcp DhcpServiceInfo(ip='X.X.X.X', hostname='', macaddress='XXXXXXXXXXXX')
Traceback (most recent call last):
  File "/config/custom_components/luxtronik2/config_flow.py", line 256, in async_step_dhcp
    broadcast_discover_ip, broadcast_discover_port = discover()[0]
                                                     ~~~~~~~~~~^^^
IndexError: list index out of range
2024-01-20 11:10:15.654 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/discovery_flow.py", line 96, in _async_start
    await gather_with_limited_concurrency(
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 187, in gather_with_limited_concurrency
    return await gather(
           ^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 185, in sem_task
    return await task
           ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 880, in async_init
    flow, result = await task
                   ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 908, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 396, in _async_handle_step
    if result.get("preview") is not None:
       ^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get'

Again, the integration seems to work fine for the most part. If there are hiccups or glitches, I am unaware of them. I'm just trying to find out if I can fix this error reporting.

Exception in socket.emit

I just had the following exception in my NodeRED setup which actually caused about 10 NodeRED reboots in a row.

Used version (node-red-contrib-luxtronik2): 0.5.3

Exception Backtrace:

an 02 22:19:25 rpi0 Node-RED[449]: 2 Jan 22:19:25 - [red] Uncaught Exception:
Jan 02 22:19:25 rpi0 Node-RED[449]: 2 Jan 22:19:25 - [error] TypeError: Cannot read property 'end' of null
Jan 02 22:19:25 rpi0 Node-RED[449]:     at Luxtronik.<anonymous> (/home/pi/.node-red/node_modules/node-red-contrib-luxtronik2/node_modules/luxtronik2/luxtronik.js:567:26)
Jan 02 22:19:25 rpi0 Node-RED[449]:     at Socket.emit (events.js:400:28)
Jan 02 22:19:25 rpi0 Node-RED[449]:     at emitErrorNT (internal/streams/destroy.js:106:8)
Jan 02 22:19:25 rpi0 Node-RED[449]:     at emitErrorCloseNT (internal/streams/destroy.js:74:3)
Jan 02 22:19:25 rpi0 Node-RED[449]:     at processTicksAndRejections (internal/process/task_queues.js:82:21)
Jan 02 22:19:25 rpi0 systemd[1]: nodered.service: Main process exited, code=exited, status=1/FAILURE
Jan 02 22:19:25 rpi0 systemd[1]: nodered.service: Failed with result 'exit-code'.
Jan 02 22:19:45 rpi0 systemd[1]: nodered.service: Service RestartSec=20s expired, scheduling restart.
Jan 02 22:19:46 rpi0 systemd[1]: nodered.service: Scheduled restart job, restart counter is at 1.
Jan 02 22:19:46 rpi0 systemd[1]: Stopped Node-RED graphical event wiring tool.

So far I did not further analyze the affected code. But these 10 reboots just happened without any modification in NodeRED.
Maybe the heatpump had a problem or any of the involved network hardward.
But suddenly the system somehow recovered and NodeRED was working again without any exceptions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.