From 352c171f9a2a5c0c81bb800ef350fe2330a769c4 Mon Sep 17 00:00:00 2001 From: Stefan Giehl Date: Wed, 29 Dec 2021 18:25:16 +0100 Subject: [PATCH] [LuxtronikHeatpump] Adds additional channels (#11860) * Adds channels available on newer heatpumps Signed-off-by: Stefan Giehl Signed-off-by: Jamie Townsend --- .../README.md | 32 ++++++++ .../internal/ChannelUpdaterJob.java | 2 +- .../internal/enums/HeatpumpChannel.java | 36 +++++++++ .../OH-INF/i18n/luxtronikheatpump.properties | 34 +++++++- .../main/resources/OH-INF/thing/channels.xml | 28 ++++++- .../resources/OH-INF/thing/thing-types.xml | 81 +++++++++++++++++++ 6 files changed, 208 insertions(+), 5 deletions(-) diff --git a/bundles/org.openhab.binding.luxtronikheatpump/README.md b/bundles/org.openhab.binding.luxtronikheatpump/README.md index f2cf8e735f..0dbcafb362 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/README.md +++ b/bundles/org.openhab.binding.luxtronikheatpump/README.md @@ -247,6 +247,38 @@ The following channels are holding read only values: | temperatureRoomTarget | Number:Temperature | x | Room temperature set point | | temperatureHotWaterTop | Number:Temperature | x | Temperature domestic water top | | frequencyCompressor | Number:Frequency | x | Compressor frequency | +| channel232 | Number | x | Channel 232 | +| channel233 | Number | x | Channel 233 | +| channel234 | Number | x | Channel 234 | +| channel235 | Number | x | Channel 235 | +| frequencyCompressorTarget | Number:Frequency | x | Compressor Target Frequency | +| channel237 | Number | x | Channel 237 | +| channel238 | Number | x | Channel 238 | +| channel239 | Number | x | Channel 239 | +| channel240 | Number | x | Channel 240 | +| channel241 | Number | x | Channel 241 | +| channel242 | Number | x | Channel 242 | +| channel243 | Number | x | Channel 243 | +| channel244 | Number | x | Channel 244 | +| channel245 | Number | x | Channel 245 | +| channel246 | Number | x | Channel 246 | +| channel247 | Number | x | Channel 247 | +| channel248 | Number | x | Channel 248 | +| channel249 | Number | x | Channel 249 | +| channel250 | Number | x | Channel 250 | +| channel251 | Number | x | Channel 251 | +| channel252 | Number | x | Channel 252 | +| channel253 | Number | x | Channel 253 | +| flowRateHeatSource2 | Number:VolumetricFlowRate | x | Flow Rate Heat Source | +| channel255 | Number | x | Channel 255 | +| channel256 | Number | x | Channel 256 | +| heatingPowerActualValue | Number:Power | x | Heating Power Actual Value | +| channel258 | Number | x | Channel 258 | +| channel259 | Number | x | Channel 259 | +| channel260 | Number | x | Channel 260 | + +The usage of the numbered channels above is currently unknown. If you are able to directly match one of the values to any value reported by your heat pump, feel free to report back on the forum, so we are able to give the channel a proper name instead. + The following channels are also writable: | channel | type | advanced | description | diff --git a/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/ChannelUpdaterJob.java b/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/ChannelUpdaterJob.java index 9af167988d..5f168308a7 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/ChannelUpdaterJob.java +++ b/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/ChannelUpdaterJob.java @@ -137,7 +137,7 @@ public class ChannelUpdaterJob implements SchedulerRunnable, Runnable { if (SIUnits.CELSIUS.equals(unit) || Units.KELVIN.equals(unit) || Units.KILOWATT_HOUR.equals(unit) || Units.PERCENT.equals(unit) || Units.HOUR.equals(unit)) { return new QuantityType<>((double) rawValue / 10, unit); - } else if (Units.HERTZ.equals(unit) || Units.SECOND.equals(unit)) { + } else if (Units.HERTZ.equals(unit) || Units.SECOND.equals(unit) || Units.WATT.equals(unit)) { return new QuantityType<>((double) rawValue, unit); } else if (Units.LITRE_PER_MINUTE.equals(unit)) { return new QuantityType<>((double) rawValue / 60, unit); diff --git a/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpChannel.java b/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpChannel.java index 7413423be6..a7846c1c14 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpChannel.java +++ b/bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpChannel.java @@ -1193,6 +1193,42 @@ public enum HeatpumpChannel { */ CHANNEL_CODE_FREQ_VD(231, "frequencyCompressor", NumberItem.class, Units.HERTZ, false, null), + // For Heatpumps with a software version > 3.X the socket serves up to 260 values + // As those heatpumps do no longer serve a java applet, but use a web ui, that uses + // a web socket connection instead it's not possible to look up the channels in the + // code. The following channels are determined based on their values and which value + // they match on a heat pump + + CHANNEL_232(232, "channel232", NumberItem.class, null, false, null), + CHANNEL_233(233, "channel233", NumberItem.class, null, false, null), + CHANNEL_234(234, "channel234", NumberItem.class, null, false, null), + CHANNEL_235(235, "channel235", NumberItem.class, null, false, null), + CHANNEL_236(236, "frequencyCompressorTarget", NumberItem.class, Units.HERTZ, false, null), + CHANNEL_237(237, "channel237", NumberItem.class, null, false, null), + CHANNEL_238(238, "channel238", NumberItem.class, null, false, null), + CHANNEL_239(239, "channel239", NumberItem.class, null, false, null), + CHANNEL_240(240, "channel240", NumberItem.class, null, false, null), + CHANNEL_241(241, "channel241", NumberItem.class, null, false, null), + CHANNEL_242(242, "channel242", NumberItem.class, null, false, null), + CHANNEL_243(243, "channel243", NumberItem.class, null, false, null), + CHANNEL_244(244, "channel244", NumberItem.class, null, false, null), + CHANNEL_245(245, "channel245", NumberItem.class, null, false, null), + CHANNEL_246(246, "channel246", NumberItem.class, null, false, null), + CHANNEL_247(247, "channel247", NumberItem.class, null, false, null), + CHANNEL_248(248, "channel248", NumberItem.class, null, false, null), + CHANNEL_249(249, "channel249", NumberItem.class, null, false, null), + CHANNEL_250(250, "channel250", NumberItem.class, null, false, null), + CHANNEL_251(251, "channel251", NumberItem.class, null, false, null), + CHANNEL_252(252, "channel252", NumberItem.class, null, false, null), + CHANNEL_253(253, "channel253", NumberItem.class, null, false, null), + CHANNEL_254(254, "flowRateHeatSource2", NumberItem.class, Units.LITRE_PER_MINUTE, false, null), + CHANNEL_255(255, "channel255", NumberItem.class, null, false, null), + CHANNEL_256(256, "channel256", NumberItem.class, null, false, null), + CHANNEL_257(257, "heatingPowerActualValue", NumberItem.class, Units.WATT, false, null), + CHANNEL_258(258, "channel258", NumberItem.class, null, false, null), + CHANNEL_259(259, "channel259", NumberItem.class, null, false, null), + CHANNEL_260(260, "channel260", NumberItem.class, null, false, null), + // Changeable Parameters // https://www.loxwiki.eu/display/LOX/Java+Webinterface?preview=/13306044/13307658/3003.txt diff --git a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/i18n/luxtronikheatpump.properties b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/i18n/luxtronikheatpump.properties index 8068c59b5d..32a1a59385 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/i18n/luxtronikheatpump.properties +++ b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/i18n/luxtronikheatpump.properties @@ -7,6 +7,32 @@ binding.luxtronikheatpump.description = This is the binding for a Heatpump with thing-type.luxtronikheatpump.heatpump.label = Heatpump with Luxtronik Control thing-type.luxtronikheatpump.heatpump.description = Integrates a heatpump with a Luxtronik control. +thing-type.luxtronikheatpump.heatpump.channel.channel232.label = Channel 232 +thing-type.luxtronikheatpump.heatpump.channel.channel233.label = Channel 233 +thing-type.luxtronikheatpump.heatpump.channel.channel234.label = Channel 234 +thing-type.luxtronikheatpump.heatpump.channel.channel235.label = Channel 235 +thing-type.luxtronikheatpump.heatpump.channel.channel237.label = Channel 237 +thing-type.luxtronikheatpump.heatpump.channel.channel238.label = Channel 238 +thing-type.luxtronikheatpump.heatpump.channel.channel239.label = Channel 239 +thing-type.luxtronikheatpump.heatpump.channel.channel240.label = Channel 240 +thing-type.luxtronikheatpump.heatpump.channel.channel241.label = Channel 241 +thing-type.luxtronikheatpump.heatpump.channel.channel242.label = Channel 242 +thing-type.luxtronikheatpump.heatpump.channel.channel243.label = Channel 243 +thing-type.luxtronikheatpump.heatpump.channel.channel244.label = Channel 244 +thing-type.luxtronikheatpump.heatpump.channel.channel245.label = Channel 245 +thing-type.luxtronikheatpump.heatpump.channel.channel246.label = Channel 246 +thing-type.luxtronikheatpump.heatpump.channel.channel247.label = Channel 247 +thing-type.luxtronikheatpump.heatpump.channel.channel248.label = Channel 248 +thing-type.luxtronikheatpump.heatpump.channel.channel249.label = Channel 249 +thing-type.luxtronikheatpump.heatpump.channel.channel250.label = Channel 250 +thing-type.luxtronikheatpump.heatpump.channel.channel251.label = Channel 251 +thing-type.luxtronikheatpump.heatpump.channel.channel252.label = Channel 252 +thing-type.luxtronikheatpump.heatpump.channel.channel253.label = Channel 253 +thing-type.luxtronikheatpump.heatpump.channel.channel255.label = Channel 255 +thing-type.luxtronikheatpump.heatpump.channel.channel256.label = Channel 256 +thing-type.luxtronikheatpump.heatpump.channel.channel258.label = Channel 258 +thing-type.luxtronikheatpump.heatpump.channel.channel259.label = Channel 259 +thing-type.luxtronikheatpump.heatpump.channel.channel260.label = Channel 260 # thing types config @@ -52,8 +78,10 @@ channel-type.luxtronikheatpump.errorTime3.label = Timestamp Error 3 channel-type.luxtronikheatpump.errorTime4.label = Timestamp Error 4 channel-type.luxtronikheatpump.fanSpeed.label = Fan Speed channel-type.luxtronikheatpump.flowRateHeatSource.label = Flow Rate Heat Source +channel-type.luxtronikheatpump.flowRateHeatSource2.label = Flow Rate Heat Source channel-type.luxtronikheatpump.fourWayValve.label = Four-way Valve channel-type.luxtronikheatpump.frequencyCompressor.label = Compressor Frequency +channel-type.luxtronikheatpump.frequencyCompressorTarget.label = Compressor Target Frequency channel-type.luxtronikheatpump.heatMeterFlowRate.label = Heat Meter Flow Rate channel-type.luxtronikheatpump.heatMeterHeating.label = Heat Meter Heating channel-type.luxtronikheatpump.heatMeterHotWater.label = Heat Meter Domestic Water @@ -62,6 +90,7 @@ channel-type.luxtronikheatpump.heatMeterTotalSinceReset.label = Total Heat Meter channel-type.luxtronikheatpump.heatingControllerLessTime.label = Heating Controller Less Time channel-type.luxtronikheatpump.heatingControllerMoreTime.label = Heating Controller More Time channel-type.luxtronikheatpump.heatingMode.label = Heating Mode +channel-type.luxtronikheatpump.heatingPowerActualValue.label = Heating Power Actual Value channel-type.luxtronikheatpump.highPressure.label = High Pressure channel-type.luxtronikheatpump.highPressure2.label = High Pressure 2 channel-type.luxtronikheatpump.hotWaterMode.label = Hot Water Operating Mode @@ -266,9 +295,12 @@ channel-type.luxtronikheatpump.thermalDisinfectionWednesday.label = Thermal Disi channel-type.luxtronikheatpump.timeHotWaterLock.label = Hot Water Lock channel-type.luxtronikheatpump.timeLockSecondHotGasCompressor.label = Lock 2nd Compressor Hot Gas channel-type.luxtronikheatpump.timeUntilDefrost.label = Time until Defrost +channel-type.luxtronikheatpump.unknown.label = Unknown Channel channel-type.luxtronikheatpump.ventilationBoardInstalled.label = Ventilation Board Installed channel-type.luxtronikheatpump.voltageInverter.label = Voltage Inverter +# channel types + channel-type.luxtronikheatpump.SwitchoffX_file_NrX.state.option.1 = Heat pump malfunction channel-type.luxtronikheatpump.SwitchoffX_file_NrX.state.option.2 = Facility malfunction channel-type.luxtronikheatpump.SwitchoffX_file_NrX.state.option.3 = Second heat generator operating mode @@ -366,7 +398,6 @@ channel-type.luxtronikheatpump.errorCodeX.state.option.802 = Switchbox fan channel-type.luxtronikheatpump.errorCodeX.state.option.803 = Switchbox fan channel-type.luxtronikheatpump.errorCodeX.state.option.806 = ModBus SEC channel-type.luxtronikheatpump.errorCodeX.state.option.807 = Lost ModBus communication - channel-type.luxtronikheatpump.menuStateLine1.state.option.0 = Heat pump runs channel-type.luxtronikheatpump.menuStateLine1.state.option.1 = Heat pump stopped channel-type.luxtronikheatpump.menuStateLine1.state.option.2 = Heat pump coming @@ -393,7 +424,6 @@ channel-type.luxtronikheatpump.menuStateLine3.state.option.13 = Heating ext. ene channel-type.luxtronikheatpump.menuStateLine3.state.option.14 = Service water ext. energy source channel-type.luxtronikheatpump.menuStateLine3.state.option.16 = Flow monitoring channel-type.luxtronikheatpump.menuStateLine3.state.option.17 = Second heat generator 1 operation - channel-type.luxtronikheatpump.operationMode.state.option.0 = Auto channel-type.luxtronikheatpump.operationMode.state.option.1 = Auxiliary heater channel-type.luxtronikheatpump.operationMode.state.option.2 = Party diff --git a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/channels.xml index 6f2b38bbda..02b0d0dc04 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/channels.xml @@ -1946,6 +1946,30 @@ + + Number:Frequency + + + + + + Number:VolumetricFlowRate + + + + + + Number:Power + + + + + + Number + + + + Number:Temperature @@ -2072,14 +2096,14 @@ Number:Time Time - + Number:Time Time - + diff --git a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/thing-types.xml index 145858409c..bc722e3d4f 100644 --- a/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/thing-types.xml @@ -211,6 +211,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.47.3