]> git.basschouten.com Git - openhab-addons.git/blob
2359d2a42985609f7e8ea71f2f767c64b64bb15d
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 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     CHANNEL_MANUAL_FAN_SPEED("manual_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getManualFanSpeed,
32             DanfossAirUnit::setManualFanSpeed),
33     CHANNEL_EXTRACT_FAN_SPEED("extract_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanSpeed),
34     CHANNEL_SUPPLY_FAN_SPEED("supply_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanSpeed),
35     CHANNEL_EXTRACT_FAN_STEP("extract_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanStep),
36     CHANNEL_SUPPLY_FAN_STEP("supply_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanStep),
37
38     CHANNEL_BOOST("boost", ChannelGroup.MAIN, DanfossAirUnit::getBoost, DanfossAirUnit::setBoost),
39     CHANNEL_NIGHT_COOLING("night_cooling", ChannelGroup.MAIN, DanfossAirUnit::getNightCooling,
40             DanfossAirUnit::setNightCooling),
41
42     // Main Temperature Channels
43     CHANNEL_ROOM_TEMP("room_temp", ChannelGroup.TEMPS, DanfossAirUnit::getRoomTemperature),
44     CHANNEL_ROOM_TEMP_CALCULATED("room_temp_calculated", ChannelGroup.TEMPS,
45             DanfossAirUnit::getRoomTemperatureCalculated),
46     CHANNEL_OUTDOOR_TEMP("outdoor_temp", ChannelGroup.TEMPS, DanfossAirUnit::getOutdoorTemperature),
47
48     // Humidity Channel
49     CHANNEL_HUMIDITY("humidity", ChannelGroup.HUMIDITY, DanfossAirUnit::getHumidity),
50
51     // recuperator channels
52     CHANNEL_BYPASS("bypass", ChannelGroup.RECUPERATOR, DanfossAirUnit::getBypass, DanfossAirUnit::setBypass),
53     CHANNEL_SUPPLY_TEMP("supply_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getSupplyTemperature),
54     CHANNEL_EXTRACT_TEMP("extract_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExtractTemperature),
55     CHANNEL_EXHAUST_TEMP("exhaust_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExhaustTemperature),
56
57     // service channels
58     CHANNEL_BATTERY_LIFE("battery_life", ChannelGroup.SERVICE, DanfossAirUnit::getBatteryLife),
59     CHANNEL_FILTER_LIFE("filter_life", ChannelGroup.SERVICE, DanfossAirUnit::getFilterLife);
60
61     private final String channelName;
62     private final ChannelGroup group;
63     private final DanfossAirUnitReadAccessor readAccessor;
64     @Nullable
65     private final DanfossAirUnitWriteAccessor writeAccessor;
66
67     static Channel getByName(String name) {
68         for (Channel channel : values()) {
69             if (channel.getChannelName().equals(name)) {
70                 return channel;
71             }
72         }
73         throw new IllegalArgumentException(String.format("Unknown channel name: %s", name));
74     }
75
76     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor) {
77         this(channelName, group, readAccessor, null);
78     }
79
80     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor,
81             @Nullable DanfossAirUnitWriteAccessor writeAccessor) {
82         this.channelName = channelName;
83         this.group = group;
84         this.readAccessor = readAccessor;
85         this.writeAccessor = writeAccessor;
86     }
87
88     public String getChannelName() {
89         return channelName;
90     }
91
92     public ChannelGroup getGroup() {
93         return group;
94     }
95
96     public DanfossAirUnitReadAccessor getReadAccessor() {
97         return readAccessor;
98     }
99
100     @Nullable
101     public DanfossAirUnitWriteAccessor getWriteAccessor() {
102         return writeAccessor;
103     }
104 }