]> git.basschouten.com Git - openhab-addons.git/blob
d912eb8b189aecc0f4d5b9a5bed247983ff7bac9
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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_STEP("manual_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getManualFanStep,
32             DanfossAirUnit::setManualFanStep),
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     CHANNEL_FILTER_PERIOD("filter_period", ChannelGroup.SERVICE, DanfossAirUnit::getFilterPeriod,
61             DanfossAirUnit::setFilterPeriod);
62
63     private final String channelName;
64     private final ChannelGroup group;
65     private final DanfossAirUnitReadAccessor readAccessor;
66     @Nullable
67     private final DanfossAirUnitWriteAccessor writeAccessor;
68
69     public static Channel getByName(String name) {
70         for (Channel channel : values()) {
71             if (channel.getChannelName().equals(name)) {
72                 return channel;
73             }
74         }
75         throw new IllegalArgumentException(String.format("Unknown channel name: %s", name));
76     }
77
78     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor) {
79         this(channelName, group, readAccessor, null);
80     }
81
82     Channel(String channelName, ChannelGroup group, DanfossAirUnitReadAccessor readAccessor,
83             @Nullable DanfossAirUnitWriteAccessor writeAccessor) {
84         this.channelName = channelName;
85         this.group = group;
86         this.readAccessor = readAccessor;
87         this.writeAccessor = writeAccessor;
88     }
89
90     public String getChannelName() {
91         return channelName;
92     }
93
94     public ChannelGroup getGroup() {
95         return group;
96     }
97
98     public DanfossAirUnitReadAccessor getReadAccessor() {
99         return readAccessor;
100     }
101
102     @Nullable
103     public DanfossAirUnitWriteAccessor getWriteAccessor() {
104         return writeAccessor;
105     }
106 }