]> git.basschouten.com Git - openhab-addons.git/blob
0207a0d820e41c2aa042c6cea5d1c70af595256f
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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.danfossairunit.internal;
14
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.eclipse.jdt.annotation.Nullable;
17
18 /**
19  * This enum holds the available channels with their properties (name, ...) and read/write accessors to access
20  * the corresponding values on the air unit.
21  *
22  * @author Robert Bach - Initial contribution
23  */
24 @NonNullByDefault
25 public enum Channel {
26
27     // Main Channels
28
29     CHANNEL_CURRENT_TIME("current_time", ChannelGroup.MAIN, DanfossAirUnit::getCurrentTime),
30     CHANNEL_MODE("mode", ChannelGroup.MAIN, DanfossAirUnit::getMode, DanfossAirUnit::setMode),
31     // Backwards compatibility as channel was renamed from manual_fan_speed to manual_fan_step.
32     CHANNEL_MANUAL_FAN_SPEED("manual_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getManualFanStep,
33             DanfossAirUnit::setManualFanStep),
34     CHANNEL_MANUAL_FAN_STEP("manual_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getManualFanStep,
35             DanfossAirUnit::setManualFanStep),
36     CHANNEL_EXTRACT_FAN_SPEED("extract_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanSpeed),
37     CHANNEL_SUPPLY_FAN_SPEED("supply_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanSpeed),
38     CHANNEL_EXTRACT_FAN_STEP("extract_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanStep),
39     CHANNEL_SUPPLY_FAN_STEP("supply_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanStep),
40
41     CHANNEL_BOOST("boost", ChannelGroup.MAIN, DanfossAirUnit::getBoost, DanfossAirUnit::setBoost),
42     CHANNEL_NIGHT_COOLING("night_cooling", ChannelGroup.MAIN, DanfossAirUnit::getNightCooling,
43             DanfossAirUnit::setNightCooling),
44
45     // Main Temperature Channels
46     CHANNEL_ROOM_TEMP("room_temp", ChannelGroup.TEMPS, DanfossAirUnit::getRoomTemperature),
47     CHANNEL_ROOM_TEMP_CALCULATED("room_temp_calculated", ChannelGroup.TEMPS,
48             DanfossAirUnit::getRoomTemperatureCalculated),
49     CHANNEL_OUTDOOR_TEMP("outdoor_temp", ChannelGroup.TEMPS, DanfossAirUnit::getOutdoorTemperature),
50
51     // Humidity Channel
52     CHANNEL_HUMIDITY("humidity", ChannelGroup.HUMIDITY, DanfossAirUnit::getHumidity),
53
54     // recuperator channels
55     CHANNEL_BYPASS("bypass", ChannelGroup.RECUPERATOR, DanfossAirUnit::getBypass, DanfossAirUnit::setBypass),
56     CHANNEL_SUPPLY_TEMP("supply_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getSupplyTemperature),
57     CHANNEL_EXTRACT_TEMP("extract_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExtractTemperature),
58     CHANNEL_EXHAUST_TEMP("exhaust_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExhaustTemperature),
59
60     // service channels
61     CHANNEL_BATTERY_LIFE("battery_life", ChannelGroup.SERVICE, DanfossAirUnit::getBatteryLife),
62     CHANNEL_FILTER_LIFE("filter_life", ChannelGroup.SERVICE, DanfossAirUnit::getFilterLife),
63     CHANNEL_FILTER_PERIOD("filter_period", ChannelGroup.SERVICE, DanfossAirUnit::getFilterPeriod,
64             DanfossAirUnit::setFilterPeriod);
65
66     private final String channelName;
67     private final ChannelGroup group;
68     private final DanfossAirUnitReadAccessor readAccessor;
69     @Nullable
70     private final DanfossAirUnitWriteAccessor writeAccessor;
71
72     public static Channel getByName(String name) {
73         for (Channel channel : values()) {
74             if (channel.getChannelName().equals(name)) {
75                 return channel;
76             }
77         }
78         throw new IllegalArgumentException(String.format("Unknown channel name: %s", name));
79     }
80
81     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor) {
82         this(channelName, group, readAccessor, null);
83     }
84
85     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor,
86             @Nullable DanfossAirUnitWriteAccessor writeAccessor) {
87         this.channelName = channelName;
88         this.group = group;
89         this.readAccessor = readAccessor;
90         this.writeAccessor = writeAccessor;
91     }
92
93     public String getChannelName() {
94         return channelName;
95     }
96
97     public ChannelGroup getGroup() {
98         return group;
99     }
100
101     public DanfossAirUnitReadAccessor getReadAccessor() {
102         return readAccessor;
103     }
104
105     @Nullable
106     public DanfossAirUnitWriteAccessor getWriteAccessor() {
107         return writeAccessor;
108     }
109 }