]> git.basschouten.com Git - openhab-addons.git/commitdiff
[LuxtronikHeatpump] Adds additional channels (#11860)
authorStefan Giehl <stefangiehl@gmail.com>
Wed, 29 Dec 2021 17:25:16 +0000 (18:25 +0100)
committerGitHub <noreply@github.com>
Wed, 29 Dec 2021 17:25:16 +0000 (18:25 +0100)
* Adds channels available on newer heatpumps

Signed-off-by: Stefan Giehl <stefangiehl@gmail.com>
Signed-off-by: Jamie Townsend <jamie_townsend@hotmail.com>
bundles/org.openhab.binding.luxtronikheatpump/README.md
bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/ChannelUpdaterJob.java
bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpChannel.java
bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/i18n/luxtronikheatpump.properties
bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/channels.xml
bundles/org.openhab.binding.luxtronikheatpump/src/main/resources/OH-INF/thing/thing-types.xml

index f2cf8e735f93157584c2ec33693de36602a6235f..0dbcafb362cb5ff52aa31926c3bdd17b782ee67e 100644 (file)
@@ -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                  |
index 9af167988dffec7916aebf07092218056bad853d..5f168308a7e5d28302cebf7f47b2ab71bf42aff5 100644 (file)
@@ -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);
index 7413423be699a489c5b4943e670adf5b582ecc20..a7846c1c1467f9f0510bb16a16fe00132c0c3317 100644 (file)
@@ -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
 
index 8068c59b5de4b980efc6ceb3d8f4c240c2389338..32a1a59385a7b1d8ca99f9e8f42341e9a24f6f6f 100644 (file)
@@ -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
index 6f2b38bbdaaecf535d983b483fa2f2da09322c2b..02b0d0dc04a11dbfe582c67c417d0e7fc515ae57 100644 (file)
                <state pattern="%.1f %unit%" readOnly="true"/>
        </channel-type>
 
+       <channel-type id="frequencyCompressorTarget" advanced="true">
+               <item-type>Number:Frequency</item-type>
+               <label>Compressor Target Frequency</label>
+               <state pattern="%.1f %unit%" readOnly="true"/>
+       </channel-type>
+
+       <channel-type id="flowRateHeatSource2" advanced="true">
+               <item-type>Number:VolumetricFlowRate</item-type>
+               <label>Flow Rate Heat Source</label>
+               <state pattern="%.1f %unit%" readOnly="true"/>
+       </channel-type>
+
+       <channel-type id="heatingPowerActualValue" advanced="true">
+               <item-type>Number:Power</item-type>
+               <label>Heating Power Actual Value</label>
+               <state pattern="%.1f %unit%" readOnly="true"/>
+       </channel-type>
+
+       <channel-type id="unknown" advanced="true">
+               <item-type>Number</item-type>
+               <label>Unknown Channel</label>
+               <state readOnly="true"/>
+       </channel-type>
+
 
        <channel-type id="temperatureHeatingParallelShift">
                <item-type>Number:Temperature</item-type>
                <item-type>Number:Time</item-type>
                <label>AT Excess</label>
                <category>Time</category>
-               <state pattern="%.1f %unit%" step="1"></state>
+               <state pattern="%.1f %unit%" step="0.5" min="0" max="12"></state>
        </channel-type>
 
        <channel-type id="comfortCoolingATUndercut">
                <item-type>Number:Time</item-type>
                <label>AT Undercut</label>
                <category>Time</category>
-               <state pattern="%.1f %unit%" step="1"></state>
+               <state pattern="%.1f %unit%" step="0.5" min="0" max="12"></state>
        </channel-type>
 
 </thing:thing-descriptions>
index 145858409c3e2d4b0afc71335854f6a823033bee..bc722e3d4f6e0c289259aa7b508c69cd53aa8967 100644 (file)
                        <channel id="temperatureRoomTarget" typeId="temperatureRoomTarget"/>
                        <channel id="temperatureHotWaterTop" typeId="temperatureHotWaterTop"/>
                        <channel id="frequencyCompressor" typeId="frequencyCompressor"/>
+                       <channel id="channel232" typeId="unknown">
+                               <label>Channel 232</label>
+                       </channel>
+                       <channel id="channel233" typeId="unknown">
+                               <label>Channel 233</label>
+                       </channel>
+                       <channel id="channel234" typeId="unknown">
+                               <label>Channel 234</label>
+                       </channel>
+                       <channel id="channel235" typeId="unknown">
+                               <label>Channel 235</label>
+                       </channel>
+                       <channel id="frequencyCompressorTarget" typeId="frequencyCompressorTarget"/>
+                       <channel id="channel237" typeId="unknown">
+                               <label>Channel 237</label>
+                       </channel>
+                       <channel id="channel238" typeId="unknown">
+                               <label>Channel 238</label>
+                       </channel>
+                       <channel id="channel239" typeId="unknown">
+                               <label>Channel 239</label>
+                       </channel>
+                       <channel id="channel240" typeId="unknown">
+                               <label>Channel 240</label>
+                       </channel>
+                       <channel id="channel241" typeId="unknown">
+                               <label>Channel 241</label>
+                       </channel>
+                       <channel id="channel242" typeId="unknown">
+                               <label>Channel 242</label>
+                       </channel>
+                       <channel id="channel243" typeId="unknown">
+                               <label>Channel 243</label>
+                       </channel>
+                       <channel id="channel244" typeId="unknown">
+                               <label>Channel 244</label>
+                       </channel>
+                       <channel id="channel245" typeId="unknown">
+                               <label>Channel 245</label>
+                       </channel>
+                       <channel id="channel246" typeId="unknown">
+                               <label>Channel 246</label>
+                       </channel>
+                       <channel id="channel247" typeId="unknown">
+                               <label>Channel 247</label>
+                       </channel>
+                       <channel id="channel248" typeId="unknown">
+                               <label>Channel 248</label>
+                       </channel>
+                       <channel id="channel249" typeId="unknown">
+                               <label>Channel 249</label>
+                       </channel>
+                       <channel id="channel250" typeId="unknown">
+                               <label>Channel 250</label>
+                       </channel>
+                       <channel id="channel251" typeId="unknown">
+                               <label>Channel 251</label>
+                       </channel>
+                       <channel id="channel252" typeId="unknown">
+                               <label>Channel 252</label>
+                       </channel>
+                       <channel id="channel253" typeId="unknown">
+                               <label>Channel 253</label>
+                       </channel>
+                       <channel id="flowRateHeatSource2" typeId="flowRateHeatSource2"/>
+                       <channel id="channel255" typeId="unknown">
+                               <label>Channel 255</label>
+                       </channel>
+                       <channel id="channel256" typeId="unknown">
+                               <label>Channel 256</label>
+                       </channel>
+                       <channel id="heatingPowerActualValue" typeId="heatingPowerActualValue"/>
+                       <channel id="channel258" typeId="unknown">
+                               <label>Channel 258</label>
+                       </channel>
+                       <channel id="channel259" typeId="unknown">
+                               <label>Channel 259</label>
+                       </channel>
+                       <channel id="channel260" typeId="unknown">
+                               <label>Channel 260</label>
+                       </channel>
 
                        <channel id="temperatureHeatingParallelShift" typeId="temperatureHeatingParallelShift"/>
                        <channel id="heatingMode" typeId="heatingMode"/>