]> git.basschouten.com Git - openhab-addons.git/blob
581c1ee2c2aab095ce01c34e4471d6cc1322bdd9
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.luxtronikheatpump.internal.enums;
14
15 import javax.measure.Unit;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.luxtronikheatpump.internal.exceptions.InvalidChannelException;
20 import org.openhab.core.items.Item;
21 import org.openhab.core.library.items.DateTimeItem;
22 import org.openhab.core.library.items.NumberItem;
23 import org.openhab.core.library.items.StringItem;
24 import org.openhab.core.library.items.SwitchItem;
25 import org.openhab.core.library.unit.SIUnits;
26 import org.openhab.core.library.unit.Units;
27
28 /**
29  * Represents all valid channels which could be processed by this binding
30  *
31  * @author Stefan Giehl - Initial contribution
32  */
33 @NonNullByDefault
34 public enum HeatpumpChannel {
35
36     // The constant names are currently based on the variable names used in the heat pumps internal JAVA applet
37     // for possible values see https://www.loxwiki.eu/display/LOX/Java+Webinterface
38     // or https://github.com/Bouni/Home-Assistant-Luxtronik/blob/master/data.txt
39
40     /**
41      * Flow temperature heating circuit
42      * (original: Vorlauftemperatur Heizkreis)
43      */
44     CHANNEL_TEMPERATUR_TVL(10, "temperatureHeatingCircuitFlow", NumberItem.class, SIUnits.CELSIUS, false,
45             HeatpumpVisibility.TEMP_VORLAUF),
46
47     /**
48      * Return temperature heating circuit
49      * (original: Rücklauftemperatur Heizkreis)
50      */
51     CHANNEL_TEMPERATUR_TRL(11, "temperatureHeatingCircuitReturn", NumberItem.class, SIUnits.CELSIUS, false,
52             HeatpumpVisibility.TEMP_RUCKLAUF),
53
54     /**
55      * Return set point heating circuit
56      * (original: Rücklauf-Soll Heizkreis)
57      */
58     CHANNEL_SOLLWERT_TRL_HZ(12, "temperatureHeatingCircuitReturnTarget", NumberItem.class, SIUnits.CELSIUS, false,
59             HeatpumpVisibility.TEMP_RL_SOLL),
60
61     /**
62      * Return temperature in buffer tank
63      * (original: Rücklauftemperatur im Trennspeicher)
64      */
65     CHANNEL_TEMPERATUR_TRL_EXT(13, "temperatureBufferTankReturn", NumberItem.class, SIUnits.CELSIUS, false,
66             HeatpumpVisibility.TEMP_RUECKLEXT),
67
68     /**
69      * Hot gas temperature
70      * (original: Heißgastemperatur)
71      */
72     CHANNEL_TEMPERATUR_THG(14, "temperatureHotGas", NumberItem.class, SIUnits.CELSIUS, false,
73             HeatpumpVisibility.TEMP_HEISSGAS),
74
75     /**
76      * Outside temperature
77      * (original: Außentemperatur)
78      */
79     CHANNEL_TEMPERATUR_TA(15, "temperatureOutside", NumberItem.class, SIUnits.CELSIUS, false,
80             HeatpumpVisibility.TEMP_AUSSENT),
81
82     /**
83      * Average temperature outside over 24 h (heating limit function)
84      * (original: Durchschnittstemperatur Außen über 24 h (Funktion Heizgrenze))
85      */
86     CHANNEL_MITTELTEMPERATUR(16, "temperatureOutsideMean", NumberItem.class, SIUnits.CELSIUS, false,
87             HeatpumpVisibility.TEMP_AUSSENT),
88
89     /**
90      * Hot water actual temperature
91      * (original: Warmwasser Ist-Temperatur)
92      */
93     CHANNEL_TEMPERATUR_TBW(17, "temperatureHotWater", NumberItem.class, SIUnits.CELSIUS, false,
94             HeatpumpVisibility.TEMP_BW_IST),
95
96     /**
97      * Hot water target temperature
98      * (original: Warmwasser Soll-Temperatur)
99      */
100     // Not needed as it duplicates writable param (2)
101     // CHANNEL_EINST_BWS_AKT(18, "temperatureHotWaterTarget", NumberItem.class, SIUnits.CELSIUS, false, null),
102
103     /**
104      * Heat source inlet temperature
105      * (original: Wärmequellen-Eintrittstemperatur)
106      */
107     CHANNEL_TEMPERATUR_TWE(19, "temperatureHeatSourceInlet", NumberItem.class, SIUnits.CELSIUS, false,
108             HeatpumpVisibility.TEMP_WQ_EIN),
109
110     /**
111      * Heat source outlet temperature
112      * (original: Wärmequellen-Austrittstemperatur)
113      */
114     CHANNEL_TEMPERATUR_TWA(20, "temperatureHeatSourceOutlet", NumberItem.class, SIUnits.CELSIUS, false,
115             HeatpumpVisibility.TEMP_WQ_EIN),
116
117     /**
118      * Mixing circuit 1 Flow temperature
119      * (original: Mischkreis 1 Vorlauftemperatur)
120      */
121     CHANNEL_TEMPERATUR_TFB1(21, "temperatureMixingCircuit1Flow", NumberItem.class, SIUnits.CELSIUS, false,
122             HeatpumpVisibility.TEMP_MK1_VORLAUF),
123
124     /**
125      * Mixing circuit 1 Flow target temperature
126      * (original: Mischkreis 1 Vorlauf-Soll-Temperatur)
127      */
128     CHANNEL_SOLLWERT_TVL_MK1(22, "temperatureMixingCircuit1FlowTarget", NumberItem.class, SIUnits.CELSIUS, false,
129             HeatpumpVisibility.TEMP_MK1VL_SOLL),
130
131     /**
132      * Room temperature room station 1
133      * (original: Raumtemperatur Raumstation 1)
134      */
135     CHANNEL_TEMPERATUR_RFV(23, "temperatureRoomStation", NumberItem.class, SIUnits.CELSIUS, false,
136             HeatpumpVisibility.TEMP_RAUMSTATION),
137
138     /**
139      * Mixing circuit 2 Flow temperature
140      * (original: Mischkreis 2 Vorlauftemperatur)
141      */
142     CHANNEL_TEMPERATUR_TFB2(24, "temperatureMixingCircuit2Flow", NumberItem.class, SIUnits.CELSIUS, false,
143             HeatpumpVisibility.TEMP_MK2_VORLAUF),
144
145     /**
146      * Mixing circuit 2 Flow target temperature
147      * (original: Mischkreis 2 Vorlauf-Soll-Temperatur)
148      */
149     CHANNEL_SOLLWERT_TVL_MK2(25, "temperatureMixingCircuit2FlowTarget", NumberItem.class, SIUnits.CELSIUS, false,
150             HeatpumpVisibility.TEMP_MK2VL_SOLL),
151
152     /**
153      * Solar collector sensor
154      * (original: Fühler Solarkollektor)
155      */
156     CHANNEL_TEMPERATUR_TSK(26, "temperatureSolarCollector", NumberItem.class, SIUnits.CELSIUS, false,
157             HeatpumpVisibility.TEMP_SOLARKOLL),
158
159     /**
160      * Solar tank sensor
161      * (original: Fühler Solarspeicher)
162      */
163     CHANNEL_TEMPERATUR_TSS(27, "temperatureSolarTank", NumberItem.class, SIUnits.CELSIUS, false,
164             HeatpumpVisibility.TEMP_SOLARSP),
165
166     /**
167      * Sensor external energy source
168      * (original: Fühler externe Energiequelle)
169      */
170     CHANNEL_TEMPERATUR_TEE(28, "temperatureExternalEnergySource", NumberItem.class, SIUnits.CELSIUS, false,
171             HeatpumpVisibility.TEMP_EXT_ENERG),
172
173     /**
174      * Input "Defrost end, brine pressure, flow rate"
175      * (original: Eingang "Abtauende, Soledruck, Durchfluss")
176      */
177     CHANNEL_ASDIN(29, "inputASD", SwitchItem.class, null, false, HeatpumpVisibility.IN_ASD),
178
179     /**
180      * Input "Domestic hot water thermostat"
181      * (original: Eingang "Brauchwarmwasserthermostat")
182      */
183     CHANNEL_BWTIN(30, "inputHotWaterThermostat", SwitchItem.class, null, false, HeatpumpVisibility.IN_BWT),
184
185     /**
186      * Input "EVU lock"
187      * (original: Eingang "EVU Sperre")
188      */
189     CHANNEL_EVUIN(31, "inputUtilityLock", SwitchItem.class, null, false, HeatpumpVisibility.IN_EVU),
190
191     /**
192      * Input "High pressure cooling circuit"
193      * (original: Eingang "Hochdruck Kältekreis")
194      */
195     CHANNEL_HDIN(32, "inputHighPressureCoolingCircuit", SwitchItem.class, null, false, HeatpumpVisibility.IN_HD),
196
197     /**
198      * Input "Motor protection OK"
199      * (original: Eingang "Motorschutz OK")
200      */
201     CHANNEL_MOTIN(33, "inputMotorProtectionOK", SwitchItem.class, null, false, HeatpumpVisibility.IN_MOT),
202
203     /**
204      * Input "Low pressure"
205      * (original: Eingang "Niederdruck")
206      */
207     CHANNEL_NDIN(34, "inputLowPressure", SwitchItem.class, null, false, HeatpumpVisibility.IN_ND),
208
209     /**
210      * Input "Monitoring contact for potentiostat"
211      * (original: Eingang "Überwachungskontakt für Potentiostat")
212      */
213     CHANNEL_PEXIN(35, "inputPEX", SwitchItem.class, null, false, HeatpumpVisibility.IN_PEX),
214
215     /**
216      * Input "Swimming pool thermostat"
217      * (original: Eingang "Schwimmbadthermostat")
218      */
219     CHANNEL_SWTIN(36, "inputSwimmingPoolThermostat", SwitchItem.class, null, false, HeatpumpVisibility.IN_SWT),
220
221     /**
222      * Output "Defrost valve"
223      * (original: Ausgang "Abtauventil")
224      */
225     CHANNEL_AVOUT(37, "outputDefrostValve", SwitchItem.class, null, false, HeatpumpVisibility.OUT_ABTAUVENTIL),
226
227     /**
228      * Output "Domestic hot water pump/changeover valve"
229      * (original: Ausgang "Brauchwasserpumpe/Umstellventil")
230      */
231     CHANNEL_BUPOUT(38, "outputBUP", SwitchItem.class, null, false, HeatpumpVisibility.OUT_BUP),
232
233     /**
234      * Output "Heating circulation pump"
235      * (original: Ausgang "Heizungsumwälzpumpe")
236      */
237     CHANNEL_HUPOUT(39, "outputHeatingCirculationPump", SwitchItem.class, null, false, HeatpumpVisibility.OUT_HUP),
238
239     /**
240      * Output "Mixing circuit 1 Open"
241      * (original: Ausgang "Mischkreis 1 Auf")
242      */
243     CHANNEL_MA1OUT(40, "outputMixingCircuit1Open", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER1AUF),
244
245     /**
246      * Output "Mixing circuit 1 Closed"
247      * (original: Ausgang "Mischkreis 1 Zu")
248      */
249     CHANNEL_MZ1OUT(41, "outputMixingCircuit1Closed", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER1ZU),
250
251     /**
252      * Output "Ventilation"
253      * (original: Ausgang "Ventilation (Lüftung)")
254      */
255     CHANNEL_VENOUT(42, "outputVentilation", SwitchItem.class, null, false, HeatpumpVisibility.OUT_VENTILATION),
256
257     /**
258      * Output "Brine pump/fan"
259      * (original: Ausgang "Solepumpe/Ventilator")
260      */
261     CHANNEL_VBOOUT(43, "outputVBO", SwitchItem.class, null, false, null),
262
263     /**
264      * Output "Compressor 1"
265      * (original: Ausgang "Verdichter 1")
266      */
267     CHANNEL_VD1OUT(44, "outputCompressor1", SwitchItem.class, null, false, HeatpumpVisibility.OUT_VERDICHTER1),
268
269     /**
270      * Output "Compressor 2"
271      * (original: Ausgang "Verdichter 2")
272      */
273     CHANNEL_VD2OUT(45, "outputCompressor2", SwitchItem.class, null, false, HeatpumpVisibility.OUT_VERDICHTER2),
274
275     /**
276      * Output "Circulation pump"
277      * (original: Ausgang "Zirkulationspumpe")
278      */
279     CHANNEL_ZIPOUT(46, "outputCirculationPump", SwitchItem.class, null, false, HeatpumpVisibility.OUT_ZIP),
280
281     /**
282      * Output "Auxiliary circulation pump"
283      * (original: Ausgang "Zusatzumwälzpumpe")
284      */
285     CHANNEL_ZUPOUT(47, "outputZUP", SwitchItem.class, null, false, HeatpumpVisibility.OUT_ZUP),
286
287     /**
288      * Output "Control signal additional heating"
289      * (original: Ausgang "Steuersignal Zusatzheizung v. Heizung")
290      */
291     CHANNEL_ZW1OUT(48, "outputControlSignalAdditionalHeating", SwitchItem.class, null, false,
292             HeatpumpVisibility.OUT_ZWE1),
293
294     /**
295      * Output "Control signal additional heating/fault signal"
296      * (original: Ausgang "Steuersignal Zusatzheizung/Störsignal")
297      */
298     CHANNEL_ZW2SSTOUT(49, "outputFaultSignalAdditionalHeating", SwitchItem.class, null, false,
299             HeatpumpVisibility.OUT_ZWE2_SST),
300
301     /**
302      * Output "Auxiliary heater 3"
303      * (original: Ausgang "Zusatzheizung 3")
304      */
305     CHANNEL_ZW3SSTOUT(50, "outputAuxiliaryHeater3", SwitchItem.class, null, false, HeatpumpVisibility.OUT_ZWE3),
306
307     /**
308      * Output "Pump mixing circuit 2"
309      * (original: Ausgang "Pumpe Mischkreis 2")
310      */
311     CHANNEL_FP2OUT(51, "outputMixingCircuitPump2", SwitchItem.class, null, false, HeatpumpVisibility.OUT_FUP2),
312
313     /**
314      * Output "Solar charge pump"
315      * (original: Ausgang "Solarladepumpe")
316      */
317     CHANNEL_SLPOUT(52, "outputSolarChargePump", SwitchItem.class, null, false, HeatpumpVisibility.OUT_SLP),
318
319     /**
320      * Output "Swimming pool pump"
321      * (original: Ausgang "Schwimmbadpumpe")
322      */
323     CHANNEL_OUTPUT_SUP(53, "outputSwimmingPoolPump", SwitchItem.class, null, false, HeatpumpVisibility.OUT_SUP),
324
325     /**
326      * Output "Mixing circuit 2 Closed"
327      * (original: Ausgang "Mischkreis 2 Zu")
328      */
329     CHANNEL_MZ2OUT(54, "outputMixingCircuit2Closed", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER2ZU),
330
331     /**
332      * Output "Mixing circuit 2 Open"
333      * (original: Ausgang "Mischkreis 2 Auf")
334      */
335     CHANNEL_MA2OUT(55, "outputMixingCircuit2Open", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER2AUF),
336
337     /**
338      * Operating hours compressor 1
339      * (original: Betriebsstunden Verdichter 1)
340      */
341     CHANNEL_ZAEHLER_BETRZEITVD1(56, "runtimeTotalCompressor1", NumberItem.class, Units.SECOND, false,
342             HeatpumpVisibility.BST_BSTDVD1),
343
344     /**
345      * Pulses compressor 1
346      * (original: Impulse Verdichter 1)
347      */
348     CHANNEL_ZAEHLER_BETRZEITIMPVD1(57, "pulsesCompressor1", NumberItem.class, null, false,
349             HeatpumpVisibility.BST_IMPVD1),
350
351     /**
352      * Operating hours compressor 2
353      * (original: Betriebsstunden Verdichter 2)
354      */
355     CHANNEL_ZAEHLER_BETRZEITVD2(58, "runtimeTotalCompressor2", NumberItem.class, Units.SECOND, false,
356             HeatpumpVisibility.BST_BSTDVD2),
357
358     /**
359      * Pulses compressor 2
360      * (original: Impulse Verdichter 2)
361      */
362     CHANNEL_ZAEHLER_BETRZEITIMPVD2(59, "pulsesCompressor2", NumberItem.class, null, false,
363             HeatpumpVisibility.BST_IMPVD2),
364
365     /**
366      * Operating hours Second heat generator 1
367      * (original: Betriebsstunden Zweiter Wärmeerzeuger 1)
368      */
369     CHANNEL_ZAEHLER_BETRZEITZWE1(60, "runtimeTotalSecondHeatGenerator1", NumberItem.class, Units.SECOND, false,
370             HeatpumpVisibility.BST_BSTDZWE1),
371
372     /**
373      * Operating hours Second heat generator 2
374      * (original: Betriebsstunden Zweiter Wärmeerzeuger 2)
375      */
376     CHANNEL_ZAEHLER_BETRZEITZWE2(61, "runtimeTotalSecondHeatGenerator2", NumberItem.class, Units.SECOND, false,
377             HeatpumpVisibility.BST_BSTDZWE2),
378
379     /**
380      * Operating hours Second heat generator 3
381      * (original: Betriebsstunden Zweiter Wärmeerzeuger 3)
382      */
383     CHANNEL_ZAEHLER_BETRZEITZWE3(62, "runtimeTotalSecondHeatGenerator3", NumberItem.class, Units.SECOND, false,
384             HeatpumpVisibility.BST_BSTDZWE3),
385
386     /**
387      * Operating hours heat pump
388      * (original: Betriebsstunden Wärmepumpe)
389      */
390     CHANNEL_ZAEHLER_BETRZEITWP(63, "runtimeTotalHeatPump", NumberItem.class, Units.SECOND, false,
391             HeatpumpVisibility.BST_BSTDWP),
392
393     /**
394      * Operating hours heating
395      * (original: Betriebsstunden Heizung)
396      */
397     CHANNEL_ZAEHLER_BETRZEITHZ(64, "runtimeTotalHeating", NumberItem.class, Units.SECOND, false,
398             HeatpumpVisibility.BST_BSTDHZ),
399
400     /**
401      * Operating hours hot water
402      * (original: Betriebsstunden Warmwasser)
403      */
404     CHANNEL_ZAEHLER_BETRZEITBW(65, "runtimeTotalHotWater", NumberItem.class, Units.SECOND, false,
405             HeatpumpVisibility.BST_BSTDBW),
406
407     /**
408      * Operating hours cooling
409      * (original: Betriebsstunden Kühlung)
410      */
411     CHANNEL_ZAEHLER_BETRZEITKUE(66, "runtimeTotalCooling", NumberItem.class, Units.SECOND, false,
412             HeatpumpVisibility.BST_BSTDKUE),
413
414     /**
415      * Heat pump running since
416      * (original: Wärmepumpe läuft seit)
417      */
418     CHANNEL_TIME_WPEIN_AKT(67, "runtimeCurrentHeatPump", NumberItem.class, Units.SECOND, false,
419             HeatpumpVisibility.ABLAUFZ_WP_SEIT),
420
421     /**
422      * Second heat generator 1 running since
423      * (original: Zweiter Wärmeerzeuger 1 läuft seit)
424      */
425     CHANNEL_TIME_ZWE1_AKT(68, "runtimeCurrentSecondHeatGenerator1", NumberItem.class, Units.SECOND, false,
426             HeatpumpVisibility.ABLAUFZ_ZWE1_SEIT),
427
428     /**
429      * Second heat generator 2 running since
430      * (original: Zweiter Wärmeerzeuger 2 läuft seit)
431      */
432     CHANNEL_TIME_ZWE2_AKT(69, "runtimeCurrentSecondHeatGenerator2", NumberItem.class, Units.SECOND, false,
433             HeatpumpVisibility.ABLAUFZ_ZWE2_SEIT),
434
435     /**
436      * Mains on delay
437      * (original: Netzeinschaltverzögerung)
438      */
439     CHANNEL_TIMER_EINSCHVERZ(70, "mainsOnDelay", NumberItem.class, Units.SECOND, false,
440             HeatpumpVisibility.ABLAUFZ_NETZEINV),
441
442     /**
443      * Switching cycle lock off
444      * (original: Schaltspielsperre Aus)
445      */
446     CHANNEL_TIME_SSPAUS_AKT(71, "switchingCycleLockOff", NumberItem.class, Units.SECOND, false,
447             HeatpumpVisibility.ABLAUFZ_SSP_ZEIT1),
448
449     /**
450      * Switching cycle lock on
451      * (original: Schaltspielsperre Ein)
452      */
453     CHANNEL_TIME_SSPEIN_AKT(72, "switchingCycleLockOn", NumberItem.class, Units.SECOND, false,
454             HeatpumpVisibility.ABLAUFZ_SSP_ZEIT1),
455
456     /**
457      * Compressor Idle time
458      * (original: Verdichter-Standzeit)
459      */
460     CHANNEL_TIME_VDSTD_AKT(73, "compressorIdleTime", NumberItem.class, Units.SECOND, false,
461             HeatpumpVisibility.ABLAUFZ_VD_STAND),
462
463     /**
464      * Heating controller More time
465      * (original: Heizungsregler Mehr-Zeit)
466      */
467     CHANNEL_TIME_HRM_AKT(74, "heatingControllerMoreTime", NumberItem.class, Units.SECOND, false,
468             HeatpumpVisibility.ABLAUFZ_HRM_ZEIT),
469
470     /**
471      * Heating controller Less time
472      * (original: Heizungsregler Weniger-Zeit)
473      */
474     CHANNEL_TIME_HRW_AKT(75, "heatingControllerLessTime", NumberItem.class, Units.SECOND, false,
475             HeatpumpVisibility.ABLAUFZ_HRW_ZEIT),
476
477     /**
478      * Thermal disinfection running since
479      * (original: Thermische Desinfektion läuft seit)
480      */
481     CHANNEL_TIME_LGS_AKT(76, "runtimeCurrentThermalDisinfection", NumberItem.class, Units.SECOND, false,
482             HeatpumpVisibility.ABLAUFZ_TDI_SEIT),
483
484     /**
485      * Hot water lock
486      * (original: Sperre Warmwasser)
487      */
488     CHANNEL_TIME_SBW_AKT(77, "timeHotWaterLock", NumberItem.class, Units.SECOND, false,
489             HeatpumpVisibility.ABLAUFZ_SPERRE_BW),
490
491     // Channel 78 (Code_WP_akt_2) represents the heatpump type, will be handeled as property
492
493     /**
494      * Bivalence stage
495      * (original: Bivalenzstufe)
496      */
497     CHANNEL_BIV_STUFE_AKT(79, "bivalenceStage", NumberItem.class, null, false, null),
498
499     /**
500      * Operating status
501      * (original: Betriebszustand)
502      */
503     CHANNEL_WP_BZ_AKT(80, "operatingStatus", NumberItem.class, null, false, null),
504
505     // channel 81 - 90 represents the firmware version, will be handeled as property
506     // channel 91 represents the IP address, will be handeled as property
507     // channel 92 represents the Subnet mask, will be handeled as property
508     // channel 93 represents the Broadcast address, will be handeled as property
509     // channel 94 represents the Gateway, will be handeled as property
510
511     /**
512      * Timestamp error X in memory
513      * (original: Zeitstempel Fehler X im Speicher)
514      */
515     CHANNEL_HEATPUMP_ERROR_TIME0(95, "errorTime0", DateTimeItem.class, Units.SECOND, false, null),
516     CHANNEL_HEATPUMP_ERROR_TIME1(96, "errorTime1", DateTimeItem.class, Units.SECOND, false, null),
517     CHANNEL_HEATPUMP_ERROR_TIME2(97, "errorTime2", DateTimeItem.class, Units.SECOND, false, null),
518     CHANNEL_HEATPUMP_ERROR_TIME3(98, "errorTime3", DateTimeItem.class, Units.SECOND, false, null),
519     CHANNEL_HEATPUMP_ERROR_TIME4(99, "errorTime4", DateTimeItem.class, Units.SECOND, false, null),
520
521     /**
522      * Error code Error X in memory
523      * (original: Fehlercode Fehler X im Speicher)
524      */
525     CHANNEL_HEATPUMP_ERROR_NR0(100, "errorCode0", NumberItem.class, null, false, null),
526     CHANNEL_HEATPUMP_ERROR_NR1(101, "errorCode1", NumberItem.class, null, false, null),
527     CHANNEL_HEATPUMP_ERROR_NR2(102, "errorCode2", NumberItem.class, null, false, null),
528     CHANNEL_HEATPUMP_ERROR_NR3(103, "errorCode3", NumberItem.class, null, false, null),
529     CHANNEL_HEATPUMP_ERROR_NR4(104, "errorCode4", NumberItem.class, null, false, null),
530
531     /**
532      * Number of errors in memory
533      * (original: Anzahl der Fehler im Speicher)
534      */
535     CHANNEL_ANZAHLFEHLERINSPEICHER(105, "errorCountInMemory", NumberItem.class, null, false, null),
536
537     /**
538      * Reason shutdown X in memory
539      * (original: Grund Abschaltung X im Speicher)
540      */
541     CHANNEL_HEATPUMP_SWITCHOFF_FILE_NR0(106, "shutdownReason0", NumberItem.class, null, false, null),
542     CHANNEL_HEATPUMP_SWITCHOFF_FILE_NR1(107, "shutdownReason1", NumberItem.class, null, false, null),
543     CHANNEL_HEATPUMP_SWITCHOFF_FILE_NR2(108, "shutdownReason2", NumberItem.class, null, false, null),
544     CHANNEL_HEATPUMP_SWITCHOFF_FILE_NR3(109, "shutdownReason3", NumberItem.class, null, false, null),
545     CHANNEL_HEATPUMP_SWITCHOFF_FILE_NR4(110, "shutdownReason4", NumberItem.class, null, false, null),
546
547     /**
548      * Timestamp shutdown X in memory
549      * (original: Zeitstempel Abschaltung X im Speicher)
550      */
551     CHANNEL_HEATPUMP_SWITCHOFF_FILE_TIME0(111, "shutdownTime0", DateTimeItem.class, Units.SECOND, false, null),
552     CHANNEL_HEATPUMP_SWITCHOFF_FILE_TIME1(112, "shutdownTime1", DateTimeItem.class, Units.SECOND, false, null),
553     CHANNEL_HEATPUMP_SWITCHOFF_FILE_TIME2(113, "shutdownTime2", DateTimeItem.class, Units.SECOND, false, null),
554     CHANNEL_HEATPUMP_SWITCHOFF_FILE_TIME3(114, "shutdownTime3", DateTimeItem.class, Units.SECOND, false, null),
555     CHANNEL_HEATPUMP_SWITCHOFF_FILE_TIME4(115, "shutdownTime4", DateTimeItem.class, Units.SECOND, false, null),
556
557     /**
558      * Comfort board installed
559      * (original: Comfort Platine installiert)
560      */
561     CHANNEL_HEATPUMP_COMFORT_EXISTS(116, "comfortBoardInstalled", SwitchItem.class, null, false, null),
562
563     /**
564      * Status
565      * (original: Status)
566      */
567     CHANNEL_HEATPUMP_HAUPTMENUSTATUS_ZEILE1(117, "menuStateLine1", NumberItem.class, null, false, null),
568     CHANNEL_HEATPUMP_HAUPTMENUSTATUS_ZEILE2(118, "menuStateLine2", NumberItem.class, null, false, null),
569     CHANNEL_HEATPUMP_HAUPTMENUSTATUS_ZEILE3(119, "menuStateLine3", NumberItem.class, null, false, null),
570     CHANNEL_HEATPUMP_HAUPTMENUSTATUS_ZEIT(120, "menuStateTime", NumberItem.class, Units.SECOND, false, null),
571
572     /**
573      * Stage bakeout program
574      * (original: Stufe Ausheizprogramm)
575      */
576     CHANNEL_HAUPTMENUAHP_STUFE(121, "bakeoutProgramStage", NumberItem.class, null, false,
577             HeatpumpVisibility.SERVICE_AUSHEIZ),
578
579     /**
580      * Temperature bakeout program
581      * (original: Temperatur Ausheizprogramm)
582      */
583     CHANNEL_HAUPTMENUAHP_TEMP(122, "bakeoutProgramTemperature", NumberItem.class, SIUnits.CELSIUS, false,
584             HeatpumpVisibility.SERVICE_AUSHEIZ),
585
586     /**
587      * Runtime bakeout program
588      * (original: Laufzeit Ausheizprogramm)
589      */
590     CHANNEL_HAUPTMENUAHP_ZEIT(123, "bakeoutProgramTime", NumberItem.class, Units.SECOND, false,
591             HeatpumpVisibility.SERVICE_AUSHEIZ),
592
593     /**
594      * DHW active/inactive icon
595      * (original: Brauchwasser aktiv/inaktiv Symbol)
596      */
597     CHANNEL_SH_BWW(124, "iconHotWater", SwitchItem.class, null, false, HeatpumpVisibility.BRAUWASSER),
598
599     /**
600      * Heater icon
601      * (original: Heizung Symbol)
602      */
603     CHANNEL_SH_HZ(125, "iconHeater", NumberItem.class, null, false, HeatpumpVisibility.HEIZUNG),
604
605     /**
606      * Mixing circuit 1 icon
607      * (original: Mischkreis 1 Symbol)
608      */
609     CHANNEL_SH_MK1(126, "iconMixingCircuit1", NumberItem.class, null, false, HeatpumpVisibility.MK1),
610
611     /**
612      * Mixing circuit 2 icon
613      * (original: Mischkreis 2 Symbol)
614      */
615     CHANNEL_SH_MK2(127, "iconMixingCircuit2", NumberItem.class, null, false, HeatpumpVisibility.MK2),
616
617     /**
618      * Short program setting
619      * (original: Einstellung Kurzprogramm)
620      */
621     CHANNEL_EINST_KURZPROGRAMM(128, "shortProgramSetting", NumberItem.class, null, false, null),
622
623     /**
624      * Status Slave X
625      * (original: Status Slave X)
626      */
627     CHANNEL_STATUSSLAVE1(129, "statusSlave1", NumberItem.class, null, false, null),
628     CHANNEL_STATUSSLAVE2(130, "statusSlave2", NumberItem.class, null, false, null),
629     CHANNEL_STATUSSLAVE3(131, "statusSlave3", NumberItem.class, null, false, null),
630     CHANNEL_STATUSSLAVE4(132, "statusSlave4", NumberItem.class, null, false, null),
631     CHANNEL_STATUSSLAVE5(133, "statusSlave5", NumberItem.class, null, false, null),
632
633     /**
634      * Current time of the heat pump
635      * (original: Aktuelle Zeit der Wärmepumpe)
636      */
637     CHANNEL_AKTUELLETIMESTAMP(134, "currentTimestamp", DateTimeItem.class, Units.SECOND, false,
638             HeatpumpVisibility.SERVICE_DATUMUHRZEIT),
639
640     /**
641      * Mixing circuit 3 icon
642      * (original: Mischkreis 3 Symbol)
643      */
644     CHANNEL_SH_MK3(135, "iconMixingCircuit3", NumberItem.class, null, false, HeatpumpVisibility.MK3),
645
646     /**
647      * Mixing circuit 3 Flow set temperature
648      * (original: Mischkreis 3 Vorlauf-Soll-Temperatur)
649      */
650     CHANNEL_SOLLWERT_TVL_MK3(136, "temperatureMixingCircuit3FlowTarget", NumberItem.class, SIUnits.CELSIUS, false,
651             HeatpumpVisibility.TEMP_MK3VL_SOLL),
652
653     /**
654      * Mixing circuit 3 Flow temperature
655      * (original: Mischkreis 3 Vorlauftemperatur)
656      */
657     CHANNEL_TEMPERATUR_TFB3(137, "temperatureMixingCircuit3Flow", NumberItem.class, SIUnits.CELSIUS, false,
658             HeatpumpVisibility.TEMP_MK3_VORLAUF),
659
660     /**
661      * Output "Mixing circuit 3 close"
662      * (original: Ausgang "Mischkreis 3 Zu")
663      */
664     CHANNEL_MZ3OUT(138, "outputMixingCircuit3Close", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER3ZU),
665
666     /**
667      * Output "Mixing circuit 3 open"
668      * (original: Ausgang "Mischkreis 3 Auf")
669      */
670     CHANNEL_MA3OUT(139, "outputMixingCircuit3Open", SwitchItem.class, null, false, HeatpumpVisibility.OUT_MISCHER3AUF),
671
672     /**
673      * Pump mixing circuit 3
674      * (original: Pumpe Mischkreis 3)
675      */
676     CHANNEL_FP3OUT(140, "outputMixingCircuitPump3", SwitchItem.class, null, false, HeatpumpVisibility.OUT_FUP3),
677
678     /**
679      * Time until defrost
680      * (original: Zeit bis Abtauen)
681      */
682     CHANNEL_TIME_ABTIN(141, "timeUntilDefrost", NumberItem.class, Units.SECOND, false,
683             HeatpumpVisibility.ABLAUFZ_ABTAUIN),
684
685     /**
686      * Room temperature room station 2
687      * (original: Raumtemperatur Raumstation 2)
688      */
689     CHANNEL_TEMPERATUR_RFV2(142, "temperatureRoomStation2", NumberItem.class, SIUnits.CELSIUS, false,
690             HeatpumpVisibility.TEMP_RAUMSTATION2),
691
692     /**
693      * Room temperature room station 3
694      * (original: Raumtemperatur Raumstation 3)
695      */
696     CHANNEL_TEMPERATUR_RFV3(143, "temperatureRoomStation3", NumberItem.class, SIUnits.CELSIUS, false,
697             HeatpumpVisibility.TEMP_RAUMSTATION3),
698
699     /**
700      * Time switch swimming pool icon
701      * (original: Schaltuhr Schwimmbad Symbol)
702      */
703     CHANNEL_SH_SW(144, "iconTimeSwitchSwimmingPool", NumberItem.class, null, false, HeatpumpVisibility.SCHWIMMBAD),
704
705     /**
706      * Swimming pool operating hours
707      * (original: Betriebsstunden Schwimmbad)
708      */
709     CHANNEL_ZAEHLER_BETRZEITSW(145, "runtimeTotalSwimmingPool", NumberItem.class, Units.SECOND, false,
710             HeatpumpVisibility.BST_BSTDSW),
711
712     /**
713      * Release cooling
714      * (original: Freigabe Kühlung)
715      */
716     CHANNEL_FREIGABKUEHL(146, "coolingRelease", SwitchItem.class, null, false, HeatpumpVisibility.KUHLUNG),
717
718     /**
719      * Analog input signal
720      * (original: Analoges Eingangssignal)
721      */
722     CHANNEL_ANALOGIN(147, "inputAnalog", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.IN_ANALOGIN),
723
724     // CHANNEL_SONDERZEICHEN(148, "SonderZeichen", NumberItem.class, null, false, null),
725
726     /**
727      * Circulation pumps icon
728      * (original: Zirkulationspumpen Symbol)
729      */
730     CHANNEL_SH_ZIP(149, "iconCirculationPump", NumberItem.class, null, false, null),
731
732     // CHANNEL_WEBSRVPROGRAMMWERTEBEOBARTEN(150, "WebsrvProgrammWerteBeobarten", NumberItem.class, null, false, null),
733
734     /**
735      * Heat meter heating
736      * (original: Wärmemengenzähler Heizung)
737      */
738     CHANNEL_WMZ_HEIZUNG(151, "heatMeterHeating", NumberItem.class, Units.KILOWATT_HOUR, false,
739             HeatpumpVisibility.HEIZUNG),
740
741     /**
742      * Heat meter domestic water
743      * (original: Wärmemengenzähler Brauchwasser)
744      */
745     CHANNEL_WMZ_BRAUCHWASSER(152, "heatMeterHotWater", NumberItem.class, Units.KILOWATT_HOUR, false,
746             HeatpumpVisibility.BRAUWASSER),
747
748     /**
749      * Heat meter swimming pool
750      * (original: Wärmemengenzähler Schwimmbad)
751      */
752     CHANNEL_WMZ_SCHWIMMBAD(153, "heatMeterSwimmingPool", NumberItem.class, Units.KILOWATT_HOUR, false,
753             HeatpumpVisibility.SCHWIMMBAD),
754
755     /**
756      * Total heat meter (since reset)
757      * (original: Wärmemengenzähler seit Reset)
758      */
759     CHANNEL_WMZ_SEIT(154, "heatMeterTotalSinceReset", NumberItem.class, Units.KILOWATT_HOUR, false, null),
760
761     /**
762      * Heat meter flow rate
763      * (original: Wärmemengenzähler Durchfluss)
764      */
765     CHANNEL_WMZ_DURCHFLUSS(155, "heatMeterFlowRate", NumberItem.class, Units.LITRE_PER_MINUTE, false, null),
766
767     /**
768      * Analog output 1
769      * (original: Analog Ausgang 1)
770      */
771     CHANNEL_ANALOGOUT1(156, "outputAnalog1", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_ANALOG_1),
772
773     /**
774      * Analog output 2
775      * (original: Analog Ausgang 2)
776      */
777     CHANNEL_ANALOGOUT2(157, "outputAnalog2", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_ANALOG_2),
778
779     /**
780      * Lock second compressor hot gas
781      * (original: Sperre zweiter Verdichter Heissgas)
782      */
783     CHANNEL_TIME_HEISSGAS(158, "timeLockSecondHotGasCompressor", NumberItem.class, Units.SECOND, false,
784             HeatpumpVisibility.ABLAUFZ_HG_SPERRE),
785
786     /**
787      * Supply air temperature
788      * (original: Zulufttemperatur)
789      */
790     CHANNEL_TEMP_LUEFTUNG_ZULUFT(159, "temperatureSupplyAir", NumberItem.class, SIUnits.CELSIUS, false,
791             HeatpumpVisibility.TEMPERATUR_LUEFTUNG_ZULUFT),
792
793     /**
794      * Exhaust air temperature
795      * (original: Ablufttemperatur)
796      */
797     CHANNEL_TEMP_LUEFTUNG_ABLUFT(160, "temperatureExhaustAir", NumberItem.class, SIUnits.CELSIUS, false,
798             HeatpumpVisibility.TEMPERATUR_LUEFTUNG_ABLUFT),
799
800     /**
801      * Operating hours solar
802      * (original: Betriebstundenzähler Solar)
803      */
804     CHANNEL_ZAEHLER_BETRZEITSOLAR(161, "runtimeTotalSolar", NumberItem.class, Units.SECOND, false,
805             HeatpumpVisibility.SOLAR),
806
807     /**
808      * Analog output 3
809      * (original: Analog Ausgang 3)
810      */
811     CHANNEL_ANALOGOUT3(162, "outputAnalog3", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_ANALOG_3),
812
813     /**
814      * Analog output 4
815      * (original: Analog Ausgang 4)
816      */
817     CHANNEL_ANALOGOUT4(163, "outputAnalog4", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_ANALOG_4),
818
819     /**
820      * Supply air fan (defrost function)
821      * (original: Zuluft Ventilator (Abtaufunktion))
822      */
823     CHANNEL_OUT_VZU(164, "outputSupplyAirFan", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_VZU),
824
825     /**
826      * Exhaust fan
827      * (original: Abluft Ventilator)
828      */
829     CHANNEL_OUT_VAB(165, "outputExhaustFan", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.OUT_VAB),
830
831     /**
832      * Output VSK
833      * (original: Ausgang VSK)
834      */
835     CHANNEL_OUT_VSK(166, "outputVSK", SwitchItem.class, null, false, HeatpumpVisibility.OUT_VSK),
836
837     /**
838      * Output FRH
839      * (original: Ausgang FRH)
840      */
841     CHANNEL_OUT_FRH(167, "outputFRH", SwitchItem.class, null, false, HeatpumpVisibility.OUT_FRH),
842
843     /**
844      * Analog input 2
845      * (original: Analog Eingang 2)
846      */
847     CHANNEL_ANALOGIN2(168, "inputAnalog2", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.IN_ANALOG_2),
848
849     /**
850      * Analog input 3
851      * (original: Analog Eingang 3)
852      */
853     CHANNEL_ANALOGIN3(169, "inputAnalog3", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.IN_ANALOG_3),
854
855     /**
856      * Input SAX
857      * (original: Eingang SAX)
858      */
859     CHANNEL_SAXIN(170, "inputSAX", SwitchItem.class, null, false, HeatpumpVisibility.IN_SAX),
860
861     /**
862      * Input SPL
863      * (original: Eingang SPL)
864      */
865     CHANNEL_SPLIN(171, "inputSPL", SwitchItem.class, null, false, HeatpumpVisibility.IN_SPL),
866
867     /**
868      * Ventilation board installed
869      * (original: Lüftungsplatine verbaut)
870      */
871     CHANNEL_COMPACT_EXISTS(172, "ventilationBoardInstalled", SwitchItem.class, null, false, null),
872
873     /**
874      * Flow rate heat source
875      * (original: Durchfluss Wärmequelle)
876      */
877     CHANNEL_DURCHFLUSS_WQ(173, "flowRateHeatSource", NumberItem.class, Units.LITRE_PER_MINUTE, false, null),
878
879     /**
880      * LIN BUS installed
881      * (original: LIN BUS verbaut)
882      */
883     CHANNEL_LIN_EXISTS(174, "linBusInstalled", SwitchItem.class, null, false, null),
884
885     /**
886      * Temperature suction evaporator
887      * (original: Temperatur Ansaug Verdampfer)
888      */
889     CHANNEL_LIN_ANSAUG_VERDAMPFER(175, "temperatureSuctionEvaporator", NumberItem.class, SIUnits.CELSIUS, false,
890             HeatpumpVisibility.LIN_ANSAUG_VERDAMPFER),
891
892     /**
893      * Temperature suction compressor
894      * (original: Temperatur Ansaug Verdichter)
895      */
896     CHANNEL_LIN_ANSAUG_VERDICHTER(176, "temperatureSuctionCompressor", NumberItem.class, SIUnits.CELSIUS, false,
897             HeatpumpVisibility.LIN_ANSAUG_VERDICHTER),
898
899     /**
900      * Temperature compressor heating
901      * (original: Temperatur Verdichter Heizung)
902      */
903     CHANNEL_LIN_VDH(177, "temperatureCompressorHeating", NumberItem.class, SIUnits.CELSIUS, false,
904             HeatpumpVisibility.LIN_VDH),
905
906     /**
907      * Overheating
908      * (original: Überhitzung)
909      */
910     CHANNEL_LIN_UH(178, "temperatureOverheating", NumberItem.class, Units.KELVIN, false, HeatpumpVisibility.LIN_UH),
911
912     /**
913      * Overheating target
914      * (original: Überhitzung Soll)
915      */
916     CHANNEL_LIN_UH_SOLL(179, "temperatureOverheatingTarget", NumberItem.class, Units.KELVIN, false,
917             HeatpumpVisibility.LIN_UH),
918
919     /**
920      * High pressure
921      * (original: Hochdruck)
922      */
923     CHANNEL_LIN_HD(180, "highPressure", NumberItem.class, Units.BAR, false, HeatpumpVisibility.LIN_DRUCK),
924
925     /**
926      * Low pressure
927      * (original: Niederdruck)
928      */
929     CHANNEL_LIN_ND(181, "lowPressure", NumberItem.class, Units.BAR, false, HeatpumpVisibility.LIN_DRUCK),
930
931     /**
932      * Output compressor heating
933      * (original: Ausgang Verdichterheizung)
934      */
935     CHANNEL_LIN_VDH_OUT(182, "outputCompressorHeating", SwitchItem.class, null, false, null),
936
937     /**
938      * Control signal circulating pump
939      * (original: Steuersignal Umwälzpumpe)
940      */
941     CHANNEL_HZIO_PWM(183, "controlSignalCirculatingPump", NumberItem.class, Units.PERCENT, false, null),
942
943     /**
944      * Fan speed
945      * (original: Ventilator Drehzahl)
946      */
947     CHANNEL_HZIO_VEN(184, "fanSpeed", NumberItem.class, null, false, null),
948
949     /**
950      * EVU 2
951      * (original: EVU 2)
952      */
953     // CHANNEL_HZIO_EVU2(185, "HZIO_EVU2", NumberItem.class, null, false, null),
954
955     /**
956      * Safety tempearture limiter floor heating
957      * (original: Sicherheits-Tempeartur-Begrenzer Fussbodenheizung)
958      */
959     CHANNEL_HZIO_STB(186, "temperatureSafetyLimitFloorHeating", SwitchItem.class, null, false, null),
960
961     /**
962      * Power target value
963      * (original: Leistung Sollwert)
964      */
965     CHANNEL_SEC_QH_SOLL(187, "powerTargetValue", NumberItem.class, Units.KILOWATT_HOUR, false, null),
966
967     /**
968      * Power actual value
969      * (original: Leistung Istwert)
970      */
971     CHANNEL_SEC_QH_IST(188, "powerActualValue", NumberItem.class, Units.KILOWATT_HOUR, false, null),
972
973     /**
974      * Temperature flow set point
975      * (original: Temperatur Vorlauf Soll)
976      */
977     CHANNEL_SEC_TVL_SOLL(189, "temperatureFlowTarget", NumberItem.class, SIUnits.CELSIUS, false, null),
978
979     /**
980      * Software version SEC Board
981      * (original: Software Stand SEC Board)
982      */
983     // CHANNEL_SEC_SOFTWARE(190, "SEC_Software", NumberItem.class, null, false, null),
984
985     /**
986      * SEC Board operating status
987      * (original: Betriebszustand SEC Board)
988      */
989     CHANNEL_SEC_BZ(191, "operatingStatusSECBoard", NumberItem.class, null, false, HeatpumpVisibility.SEC),
990
991     /**
992      * Four-way valve
993      * (original: Vierwegeventil)
994      */
995     CHANNEL_SEC_VWV(192, "fourWayValve", NumberItem.class, null, false, HeatpumpVisibility.SEC),
996
997     /**
998      * Compressor speed
999      * (original: Verdichterdrehzahl)
1000      */
1001     CHANNEL_SEC_VD(193, "compressorSpeed", NumberItem.class, null, false, HeatpumpVisibility.SEC),
1002
1003     /**
1004      * Compressor temperature EVI (Enhanced Vapour Injection)
1005      * (original: Verdichtertemperatur EVI)
1006      */
1007     CHANNEL_SEC_VERDEVI(194, "temperatureCompressorEVI", NumberItem.class, SIUnits.CELSIUS, false,
1008             HeatpumpVisibility.SEC),
1009
1010     /**
1011      * Intake temperature EVI
1012      * (original: Ansaugtemperatur EVI)
1013      */
1014     CHANNEL_SEC_ANSEVI(195, "temperatureIntakeEVI", NumberItem.class, SIUnits.CELSIUS, false, HeatpumpVisibility.SEC),
1015
1016     /**
1017      * Overheating EVI
1018      * (original: Überhitzung EVI)
1019      */
1020     CHANNEL_SEC_UEH_EVI(196, "temperatureOverheatingEVI", NumberItem.class, Units.KELVIN, false,
1021             HeatpumpVisibility.SEC),
1022
1023     /**
1024      * Overheating EVI target
1025      * (original: Überhitzung EVI Sollwert)
1026      */
1027     CHANNEL_SEC_UEH_EVI_S(197, "temperatureOverheatingTargetEVI", NumberItem.class, Units.KELVIN, false,
1028             HeatpumpVisibility.SEC),
1029
1030     /**
1031      * Condensation temperature
1032      * (original: Kondensationstemperatur)
1033      */
1034     CHANNEL_SEC_KONDTEMP(198, "temperatureCondensation", NumberItem.class, SIUnits.CELSIUS, false,
1035             HeatpumpVisibility.SEC),
1036
1037     /**
1038      * Liquid temperature EEV (electronic expansion valve)
1039      * (original: Flüssigtemperatur EEV (elektronisches Expansionsventil))
1040      */
1041     CHANNEL_SEC_FLUSSIGEX(199, "temperatureLiquidEEV", NumberItem.class, SIUnits.CELSIUS, false,
1042             HeatpumpVisibility.SEC),
1043
1044     /**
1045      * Hypothermia EEV
1046      * (original: Unterkühlung EEV)
1047      */
1048     CHANNEL_SEC_UK_EEV(200, "temperatureHypothermiaEEV", NumberItem.class, SIUnits.CELSIUS, false,
1049             HeatpumpVisibility.SEC),
1050
1051     /**
1052      * Pressure EVI
1053      * (original: Druck EVI)
1054      */
1055     CHANNEL_SEC_EVI_DRUCK(201, "pressureEVI", NumberItem.class, Units.BAR, false, HeatpumpVisibility.SEC),
1056
1057     /**
1058      * Voltage inverter
1059      * (original: Spannung Inverter)
1060      */
1061     CHANNEL_SEC_U_INV(202, "voltageInverter", NumberItem.class, Units.VOLT, false, HeatpumpVisibility.SEC),
1062
1063     /**
1064      * Hot gas temperature sensor 2
1065      * (original: Temperarturfühler Heissgas 2)
1066      */
1067     CHANNEL_TEMPERATUR_THG_2(203, "temperatureHotGas2", NumberItem.class, SIUnits.CELSIUS, false, null),
1068
1069     /**
1070      * Temperature sensor heat source inlet 2
1071      * (original: Temperaturfühler Wärmequelleneintritt 2)
1072      */
1073     CHANNEL_TEMPERATUR_TWE_2(204, "temperatureHeatSourceInlet2", NumberItem.class, SIUnits.CELSIUS, false, null),
1074
1075     /**
1076      * Intake temperature evaporator 2
1077      * (original: Ansaugtemperatur Verdampfer 2)
1078      */
1079     CHANNEL_LIN_ANSAUG_VERDAMPFER_2(205, "temperatureIntakeEvaporator2", NumberItem.class, SIUnits.CELSIUS, false,
1080             null),
1081
1082     /**
1083      * Intake temperature compressor 2
1084      * (original: Ansaugtemperatur Verdichter 2)
1085      */
1086     CHANNEL_LIN_ANSAUG_VERDICHTER_2(206, "temperatureIntakeCompressor2", NumberItem.class, SIUnits.CELSIUS, false,
1087             null),
1088
1089     /**
1090      * Temperature compressor 2 heating
1091      * (original: Temperatur Verdichter 2 Heizung)
1092      */
1093     CHANNEL_LIN_VDH_2(207, "temperatureCompressor2Heating", NumberItem.class, SIUnits.CELSIUS, false, null),
1094
1095     /**
1096      * Overheating 2
1097      * (original: Überhitzung 2)
1098      */
1099     CHANNEL_LIN_UH_2(208, "temperatureOverheating2", NumberItem.class, Units.KELVIN, false, HeatpumpVisibility.LIN_UH),
1100
1101     /**
1102      * Overheating target 2
1103      * (original: Überhitzung Soll 2)
1104      */
1105     CHANNEL_LIN_UH_SOLL_2(209, "temperatureOverheatingTarget2", NumberItem.class, Units.KELVIN, false,
1106             HeatpumpVisibility.LIN_UH),
1107
1108     /**
1109      * High pressure 2
1110      * (original: Hochdruck 2)
1111      */
1112     CHANNEL_LIN_HD_2(210, "highPressure2", NumberItem.class, Units.BAR, false, HeatpumpVisibility.LIN_DRUCK),
1113
1114     /**
1115      * Low pressure 2
1116      * (original: Niederdruck 2)
1117      */
1118     CHANNEL_LIN_ND_2(211, "lowPressure2", NumberItem.class, Units.BAR, false, HeatpumpVisibility.LIN_DRUCK),
1119
1120     /**
1121      * Input pressure switch high pressure 2
1122      * (original: Eingang Druckschalter Hochdruck 2)
1123      */
1124     CHANNEL_HDIN_2(212, "inputSwitchHighPressure2", SwitchItem.class, null, false, HeatpumpVisibility.IN_HD),
1125
1126     /**
1127      * Output defrost valve 2
1128      * (original: Ausgang Abtauventil 2)
1129      */
1130     CHANNEL_AVOUT_2(213, "outputDefrostValve2", SwitchItem.class, null, false, HeatpumpVisibility.OUT_ABTAUVENTIL),
1131
1132     /**
1133      * Output brine pump/fan 2
1134      * (original: Ausgang Solepumpe/Ventilator 2)
1135      */
1136     CHANNEL_VBOOUT_2(214, "outputVBO2", SwitchItem.class, null, false, null),
1137
1138     /**
1139      * Compressor output 1 / 2
1140      * (original: Ausgang Verdichter 1 / 2)
1141      */
1142     CHANNEL_VD1OUT_2(215, "outputCompressor1_2", SwitchItem.class, null, false, null),
1143
1144     /**
1145      * Compressor output heating 2
1146      * (original: Ausgang Verdichter Heizung 2)
1147      */
1148     CHANNEL_LIN_VDH_OUT_2(216, "outputCompressorHeating2", SwitchItem.class, null, false, null),
1149
1150     /**
1151      * Reason shutdown X in memory 2
1152      * (original: Grund Abschaltung X im Speicher 2)
1153      */
1154     CHANNEL_SWITCHOFF2_FILE_NR0(217, "secondShutdownReason0", NumberItem.class, null, false, null),
1155     CHANNEL_SWITCHOFF2_FILE_NR1(218, "secondShutdownReason1", NumberItem.class, null, false, null),
1156     CHANNEL_SWITCHOFF2_FILE_NR2(219, "secondShutdownReason2", NumberItem.class, null, false, null),
1157     CHANNEL_SWITCHOFF2_FILE_NR3(220, "secondShutdownReason3", NumberItem.class, null, false, null),
1158     CHANNEL_SWITCHOFF2_FILE_NR4(221, "secondShutdownReason4", NumberItem.class, null, false, null),
1159
1160     /**
1161      * Timestamp shutdown X in memory 2
1162      * (original: Zeitstempel Abschaltung X im Speicher 2)
1163      */
1164     CHANNEL_SWITCHOFF2_FILE_TIME0(222, "secondShutdownTime0", DateTimeItem.class, Units.SECOND, false, null),
1165     CHANNEL_SWITCHOFF2_FILE_TIME1(223, "secondShutdownTime1", DateTimeItem.class, Units.SECOND, false, null),
1166     CHANNEL_SWITCHOFF2_FILE_TIME2(224, "secondShutdownTime2", DateTimeItem.class, Units.SECOND, false, null),
1167     CHANNEL_SWITCHOFF2_FILE_TIME3(225, "secondShutdownTime3", DateTimeItem.class, Units.SECOND, false, null),
1168     CHANNEL_SWITCHOFF2_FILE_TIME4(226, "secondShutdownTime4", DateTimeItem.class, Units.SECOND, false, null),
1169
1170     /**
1171      * Room temperature actual value
1172      * (original: Raumtemperatur Istwert)
1173      */
1174     CHANNEL_RBE_RT_IST(227, "temperatureRoom", NumberItem.class, SIUnits.CELSIUS, false, null),
1175
1176     /**
1177      * Room temperature set point
1178      * (original: Raumtemperatur Sollwert)
1179      */
1180     CHANNEL_RBE_RT_SOLL(228, "temperatureRoomTarget", NumberItem.class, SIUnits.CELSIUS, false, null),
1181
1182     /**
1183      * Temperature domestic water top
1184      * (original: Temperatur Brauchwasser Oben)
1185      */
1186     CHANNEL_TEMPERATUR_BW_OBEN(229, "temperatureHotWaterTop", NumberItem.class, SIUnits.CELSIUS, false, null),
1187
1188     // DE: Channel 230 (Code_WP_akt_2) represent the heatpump type 2
1189
1190     /**
1191      * Compressor frequency
1192      * (original: Verdichterfrequenz)
1193      */
1194     CHANNEL_CODE_FREQ_VD(231, "frequencyCompressor", NumberItem.class, Units.HERTZ, false, null),
1195
1196     // For Heatpumps with a software version > 3.X the socket serves up to 260 values
1197     // As those heatpumps do no longer serve a java applet, but use a web ui, that uses
1198     // a web socket connection instead it's not possible to look up the channels in the
1199     // code. The following channels are determined based on their values and which value
1200     // they match on a heat pump
1201
1202     CHANNEL_232(232, "channel232", NumberItem.class, null, false, null),
1203     CHANNEL_233(233, "channel233", NumberItem.class, null, false, null),
1204     CHANNEL_234(234, "channel234", NumberItem.class, null, false, null),
1205     CHANNEL_235(235, "channel235", NumberItem.class, null, false, null),
1206     CHANNEL_236(236, "frequencyCompressorTarget", NumberItem.class, Units.HERTZ, false, null),
1207     CHANNEL_237(237, "channel237", NumberItem.class, null, false, null),
1208     CHANNEL_238(238, "channel238", NumberItem.class, null, false, null),
1209     CHANNEL_239(239, "channel239", NumberItem.class, null, false, null),
1210     CHANNEL_240(240, "channel240", NumberItem.class, null, false, null),
1211     CHANNEL_241(241, "channel241", NumberItem.class, null, false, null),
1212     CHANNEL_242(242, "channel242", NumberItem.class, null, false, null),
1213     CHANNEL_243(243, "channel243", NumberItem.class, null, false, null),
1214     CHANNEL_244(244, "channel244", NumberItem.class, null, false, null),
1215     CHANNEL_245(245, "channel245", NumberItem.class, null, false, null),
1216     CHANNEL_246(246, "channel246", NumberItem.class, null, false, null),
1217     CHANNEL_247(247, "channel247", NumberItem.class, null, false, null),
1218     CHANNEL_248(248, "channel248", NumberItem.class, null, false, null),
1219     CHANNEL_249(249, "channel249", NumberItem.class, null, false, null),
1220     CHANNEL_250(250, "channel250", NumberItem.class, null, false, null),
1221     CHANNEL_251(251, "channel251", NumberItem.class, null, false, null),
1222     CHANNEL_252(252, "channel252", NumberItem.class, null, false, null),
1223     CHANNEL_253(253, "channel253", NumberItem.class, null, false, null),
1224     CHANNEL_254(254, "flowRateHeatSource2", NumberItem.class, Units.LITRE_PER_MINUTE, false, null),
1225     CHANNEL_255(255, "channel255", NumberItem.class, null, false, null),
1226     CHANNEL_256(256, "channel256", NumberItem.class, null, false, null),
1227     CHANNEL_257(257, "heatingPowerActualValue", NumberItem.class, Units.WATT, false, null),
1228     CHANNEL_258(258, "channel258", NumberItem.class, null, false, null),
1229     CHANNEL_259(259, "channel259", NumberItem.class, null, false, null),
1230     CHANNEL_260(260, "channel260", NumberItem.class, null, false, null),
1231
1232     // Changeable Parameters
1233     // https://www.loxwiki.eu/display/LOX/Java+Webinterface?preview=/13306044/13307658/3003.txt
1234
1235     /**
1236      * Heating temperature (parallel shift)
1237      * (original: Heizung Temperatur (Parallelverschiebung))
1238      */
1239     CHANNEL_EINST_WK_AKT(1, "temperatureHeatingParallelShift", NumberItem.class, SIUnits.CELSIUS, true,
1240             HeatpumpVisibility.HEIZUNG),
1241
1242     /**
1243      * Coverage Heat pump (Hot Water)
1244      * (original: Deckung Wärmepumpe)
1245      */
1246     CHANNEL_EINST_BWS_AKT(2, "temperatureHotWaterCoverage", NumberItem.class, SIUnits.CELSIUS, true,
1247             HeatpumpVisibility.BRAUWASSER),
1248
1249     /**
1250      * Heating mode
1251      * (original: Heizung Betriebsart)
1252      */
1253     CHANNEL_BA_HZ_AKT(3, "heatingMode", NumberItem.class, null, true, HeatpumpVisibility.HEIZUNG),
1254
1255     /**
1256      * Hot water operating mode
1257      * (original: Warmwasser Betriebsart)
1258      */
1259     CHANNEL_BA_BW_AKT(4, "hotWaterMode", NumberItem.class, null, true, HeatpumpVisibility.BRAUWASSER),
1260
1261     /**
1262      * Thermal disinfection (Monday)
1263      * (original: Thermische Desinfektion (Montag))
1264      */
1265     CHANNEL_EINST_BWTDI_AKT_MO(20, "thermalDisinfectionMonday", SwitchItem.class, null, true,
1266             HeatpumpVisibility.THERMDESINFEKT),
1267     /**
1268      * Thermal disinfection (Tuesday)
1269      * (original: Thermische Desinfektion (Dienstag))
1270      */
1271     CHANNEL_EINST_BWTDI_AKT_DI(21, "thermalDisinfectionTuesday", SwitchItem.class, null, true,
1272             HeatpumpVisibility.THERMDESINFEKT),
1273     /**
1274      * Thermal disinfection (Wednesday)
1275      * (original: Thermische Desinfektion (Mittwoch))
1276      */
1277     CHANNEL_EINST_BWTDI_AKT_MI(22, "thermalDisinfectionWednesday", SwitchItem.class, null, true,
1278             HeatpumpVisibility.THERMDESINFEKT),
1279     /**
1280      * Thermal disinfection (Thursday)
1281      * (original: Thermische Desinfektion (Donnerstag))
1282      */
1283     CHANNEL_EINST_BWTDI_AKT_DO(23, "thermalDisinfectionThursday", SwitchItem.class, null, true,
1284             HeatpumpVisibility.THERMDESINFEKT),
1285     /**
1286      * Thermal disinfection (Friday)
1287      * (original: Thermische Desinfektion (Freitag))
1288      */
1289     CHANNEL_EINST_BWTDI_AKT_FR(24, "thermalDisinfectionFriday", SwitchItem.class, null, true,
1290             HeatpumpVisibility.THERMDESINFEKT),
1291     /**
1292      * Thermal disinfection (Saturday)
1293      * (original: Thermische Desinfektion (Samstag))
1294      */
1295     CHANNEL_EINST_BWTDI_AKT_SA(25, "thermalDisinfectionSaturday", SwitchItem.class, null, true,
1296             HeatpumpVisibility.THERMDESINFEKT),
1297     /**
1298      * Thermal disinfection (Sunday)
1299      * (original: Thermische Desinfektion (Sonntag))
1300      */
1301     CHANNEL_EINST_BWTDI_AKT_SO(26, "thermalDisinfectionSunday", SwitchItem.class, null, true,
1302             HeatpumpVisibility.THERMDESINFEKT),
1303     /**
1304      * Thermal disinfection (Permanent)
1305      * (original: Thermische Desinfektion (Dauerbetrieb))
1306      */
1307     CHANNEL_EINST_BWTDI_AKT_AL(27, "thermalDisinfectionPermanent", SwitchItem.class, null, true,
1308             HeatpumpVisibility.THERMDESINFEKT),
1309
1310     /**
1311      * Hot water target temperature
1312      * (original: Warmwasser Soll Temperatur)
1313      */
1314     CHANNEL_SOLL_BWS_AKT(105, "temperatureHotWaterTarget", NumberItem.class, SIUnits.CELSIUS, true,
1315             HeatpumpVisibility.BRAUWASSER),
1316
1317     /**
1318      * Comfort cooling mode
1319      * (original: Comfort Kühlung Betriebsart)
1320      */
1321     CHANNEL_EINST_BWSTYP_AKT(108, "comfortCoolingMode", NumberItem.class, null, true, HeatpumpVisibility.KUHLUNG),
1322
1323     /**
1324      * Comfort cooling AT release
1325      * (original: Comfort Kühlung AT-Freigabe)
1326      */
1327     CHANNEL_EINST_KUCFTL_AKT(110, "temperatureComfortCoolingATRelease", NumberItem.class, SIUnits.CELSIUS, true,
1328             HeatpumpVisibility.KUHLUNG),
1329
1330     /**
1331      * Comfort cooling AT release target
1332      * (original: Comfort Kühlung AT-Freigabe Sollwert)
1333      */
1334     CHANNEL_SOLLWERT_KUCFTL_AKT(132, "temperatureComfortCoolingATReleaseTarget", NumberItem.class, SIUnits.CELSIUS,
1335             true, HeatpumpVisibility.KUHLUNG),
1336
1337     /**
1338      * Temperature heating limit
1339      * (original: Temperatur Heizgrenze)
1340      */
1341     CHANNEL_EINST_HEIZGRENZE_TEMP(700, "temperatureHeatingLimit", NumberItem.class, SIUnits.CELSIUS, true,
1342             HeatpumpVisibility.HEIZUNG),
1343
1344     /**
1345      * AT Excess
1346      * (original: AT-Überschreitung)
1347      */
1348     CHANNEL_EINST_KUHL_ZEIT_EIN_AKT(850, "comfortCoolingATExcess", NumberItem.class, Units.HOUR, true,
1349             HeatpumpVisibility.KUHLUNG),
1350
1351     /**
1352      * AT undercut
1353      * (original: AT-Unterschreitung)
1354      */
1355     CHANNEL_EINST_KUHL_ZEIT_AUS_AKT(851, "comfortCoolingATUndercut", NumberItem.class, Units.HOUR, true,
1356             HeatpumpVisibility.KUHLUNG),
1357
1358     /**
1359      * Channel holding complete (localized) status message
1360      */
1361     CHANNEL_HEATPUMP_STATUS(null, "menuStateFull", StringItem.class, null, false, null);
1362
1363     private @Nullable Integer channelId;
1364     private String command;
1365     private Class<? extends Item> itemClass;
1366     private @Nullable Unit<?> unit;
1367     private boolean isParameter;
1368     private @Nullable HeatpumpVisibility requiredVisibility;
1369
1370     private HeatpumpChannel(@Nullable Integer channelId, String command, Class<? extends Item> itemClass,
1371             @Nullable Unit<?> unit, boolean isParameter, @Nullable HeatpumpVisibility requiredVisibility) {
1372         this.channelId = channelId;
1373         this.command = command;
1374         this.itemClass = itemClass;
1375         this.unit = unit;
1376         this.isParameter = isParameter;
1377         this.requiredVisibility = requiredVisibility;
1378     }
1379
1380     public @Nullable Integer getChannelId() {
1381         return channelId;
1382     }
1383
1384     public String getCommand() {
1385         return command;
1386     }
1387
1388     public Class<? extends Item> getItemClass() {
1389         return itemClass;
1390     }
1391
1392     public @Nullable Unit<?> getUnit() {
1393         return unit;
1394     }
1395
1396     public boolean isWritable() {
1397         return isParameter == Boolean.TRUE;
1398     }
1399
1400     protected @Nullable HeatpumpVisibility getVisibility() {
1401         return requiredVisibility;
1402     }
1403
1404     public boolean isVisible(Integer[] visibilityValues) {
1405         HeatpumpVisibility visiblity = getVisibility();
1406
1407         if (visiblity == null) {
1408             return true;
1409         }
1410
1411         int code = visiblity.getCode();
1412
1413         return (visibilityValues.length < code || visibilityValues[code] == 1);
1414     }
1415
1416     public static HeatpumpChannel fromString(String heatpumpCommand) throws InvalidChannelException {
1417         for (HeatpumpChannel c : HeatpumpChannel.values()) {
1418
1419             if (c.getCommand().equals(heatpumpCommand)) {
1420                 return c;
1421             }
1422         }
1423
1424         throw new InvalidChannelException("cannot find LuxtronikHeatpump channel for '" + heatpumpCommand + "'");
1425     }
1426
1427     @Override
1428     public String toString() {
1429         return getCommand();
1430     }
1431 }