2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.avmfritz.internal;
16 import java.util.stream.Collectors;
17 import java.util.stream.Stream;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.library.types.StringType;
21 import org.openhab.core.thing.ThingTypeUID;
24 * This class defines common constants, which are used across the whole binding.
26 * @author Robert Bausdorf - Initial contribution
27 * @author Christoph Weitkamp - Added support for AVM FRITZ!DECT 300 and Comet DECT
28 * @author Christoph Weitkamp - Added support for groups
29 * @author Christoph Weitkamp - Added channels 'voltage' and 'battery_level'
30 * @author Ulrich Mertin - Added support for HAN-FUN blinds
33 public class AVMFritzBindingConstants {
35 public static final String INVALID_PATTERN = "[^a-zA-Z0-9_]";
37 public static final String BINDING_ID = "avmfritz";
38 public static final String BRIDGE_FRITZBOX = "fritzbox";
39 public static final String BOX_MODEL_NAME = "FRITZ!Box";
40 public static final String POWERLINE546E_MODEL_NAME = "FRITZ!Powerline 546E";
42 // List of main device types
43 public static final String DEVICE_DECT500 = "FRITZ_DECT_500";
44 public static final String DEVICE_DECT400 = "FRITZ_DECT_400";
45 public static final String DEVICE_DECT440 = "FRITZ_DECT_440";
46 public static final String DEVICE_DECT302 = "FRITZ_DECT_302";
47 public static final String DEVICE_DECT301 = "FRITZ_DECT_301";
48 public static final String DEVICE_DECT300 = "FRITZ_DECT_300";
49 public static final String DEVICE_DECT210 = "FRITZ_DECT_210";
50 public static final String DEVICE_DECT200 = "FRITZ_DECT_200";
51 public static final String DEVICE_DECT100 = "FRITZ_DECT_Repeater_100";
52 public static final String DEVICE_POWERLINE546E = "FRITZ_Powerline_546E";
53 public static final String DEVICE_POWERLINE546E_STANDALONE = "FRITZ_Powerline_546E_Solo";
54 public static final String DEVICE_COMETDECT = "Comet_DECT";
55 public static final String DEVICE_HAN_FUN_CONTACT = "HAN_FUN_CONTACT";
56 public static final String DEVICE_HAN_FUN_SWITCH = "HAN_FUN_SWITCH";
57 public static final String DEVICE_HAN_FUN_ON_OFF = "HAN_FUN_ON_OFF";
58 public static final String DEVICE_HAN_FUN_BLINDS = "HAN_FUN_BLINDS";
59 public static final String DEVICE_HAN_FUN_COLOR_BULB = "HAN_FUN_COLOR_BULB";
60 public static final String DEVICE_HAN_FUN_DIMMABLE_BULB = "HAN_FUN_DIMMABLE_BULB";
62 // List of main group types
63 public static final String GROUP_HEATING = "FRITZ_GROUP_HEATING";
64 public static final String GROUP_SWITCH = "FRITZ_GROUP_SWITCH";
66 // List of all Thing Type UIDs
67 public static final ThingTypeUID BRIDGE_THING_TYPE = new ThingTypeUID(BINDING_ID, BRIDGE_FRITZBOX);
68 public static final ThingTypeUID DECT500_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT500);
69 public static final ThingTypeUID DECT400_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT400);
70 public static final ThingTypeUID DECT440_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT440);
71 public static final ThingTypeUID DECT302_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT302);
72 public static final ThingTypeUID DECT301_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT301);
73 public static final ThingTypeUID DECT300_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT300);
74 public static final ThingTypeUID DECT210_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT210);
75 public static final ThingTypeUID DECT200_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT200);
76 public static final ThingTypeUID DECT100_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_DECT100);
77 public static final ThingTypeUID POWERLINE546E_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_POWERLINE546E);
78 public static final ThingTypeUID POWERLINE546E_STANDALONE_THING_TYPE = new ThingTypeUID(BINDING_ID,
79 DEVICE_POWERLINE546E_STANDALONE);
80 public static final ThingTypeUID COMETDECT_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_COMETDECT);
81 public static final ThingTypeUID HAN_FUN_CONTACT_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_HAN_FUN_CONTACT);
82 public static final ThingTypeUID HAN_FUN_SWITCH_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_HAN_FUN_SWITCH);
83 public static final ThingTypeUID HAN_FUN_ON_OFF_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_HAN_FUN_ON_OFF);
84 public static final ThingTypeUID HAN_FUN_BLINDS_THING_TYPE = new ThingTypeUID(BINDING_ID, DEVICE_HAN_FUN_BLINDS);
85 public static final ThingTypeUID HAN_FUN_COLOR_BULB_THING_TYPE = new ThingTypeUID(BINDING_ID,
86 DEVICE_HAN_FUN_COLOR_BULB);
87 public static final ThingTypeUID HAN_FUN_DIMMABLE_BULB_THING_TYPE = new ThingTypeUID(BINDING_ID,
88 DEVICE_HAN_FUN_DIMMABLE_BULB);
89 public static final ThingTypeUID GROUP_HEATING_THING_TYPE = new ThingTypeUID(BINDING_ID, GROUP_HEATING);
90 public static final ThingTypeUID GROUP_SWITCH_THING_TYPE = new ThingTypeUID(BINDING_ID, GROUP_SWITCH);
92 // List of all Thing config ids
93 public static final String CONFIG_IP_ADDRESS = "ipAddress";
94 public static final String CONFIG_PROTOCOL = "protocol";
95 public static final String CONFIG_USER = "user";
96 public static final String CONFIG_PASSWORD = "password";
97 public static final String CONFIG_POLLING_INTERVAL = "pollingInterval";
98 public static final String CONFIG_SYNC_TIMEOUT = "syncTimeout";
99 public static final String CONFIG_AIN = "ain";
101 // List of all Properties
102 public static final String PROPERTY_MASTER = "master";
103 public static final String PROPERTY_MEMBERS = "members";
104 public static final String PRODUCT_NAME = "productName";
106 // List of all channel groups
107 public static final String CHANNEL_GROUP_DEVICE = "device";
108 public static final String CHANNEL_GROUP_SENSORS = "sensors";
109 public static final String CHANNEL_GROUP_TOP_LEFT = "top-left";
110 public static final String CHANNEL_GROUP_BOTTOM_LEFT = "bottom-left";
111 public static final String CHANNEL_GROUP_TOP_RIGHT = "top-right";
112 public static final String CHANNEL_GROUP_BOTTOM_RIGHT = "bottom-right";
114 // List of all Channel ids
115 public static final String CHANNEL_CALL_INCOMING = "incoming_call";
116 public static final String CHANNEL_CALL_OUTGOING = "outgoing_call";
117 public static final String CHANNEL_CALL_ACTIVE = "active_call";
118 public static final String CHANNEL_CALL_STATE = "call_state";
120 public static final String CHANNEL_MODE = "mode";
121 public static final String CHANNEL_LOCKED = "locked";
122 public static final String CHANNEL_DEVICE_LOCKED = "device_locked";
123 public static final String CHANNEL_APPLY_TEMPLATE = "apply_template";
124 public static final String CHANNEL_TEMPERATURE = "temperature";
125 public static final String CHANNEL_HUMIDITY = "humidity";
126 public static final String CHANNEL_ENERGY = "energy";
127 public static final String CHANNEL_POWER = "power";
128 public static final String CHANNEL_VOLTAGE = "voltage";
129 public static final String CHANNEL_OUTLET = "outlet";
130 public static final String CHANNEL_ACTUALTEMP = "actual_temp";
131 public static final String CHANNEL_SETTEMP = "set_temp";
132 public static final String CHANNEL_ECOTEMP = "eco_temp";
133 public static final String CHANNEL_COMFORTTEMP = "comfort_temp";
134 public static final String CHANNEL_RADIATOR_MODE = "radiator_mode";
135 public static final String CHANNEL_NEXT_CHANGE = "next_change";
136 public static final String CHANNEL_NEXTTEMP = "next_temp";
137 public static final String CHANNEL_BATTERY_LOW = "battery_low";
138 public static final String CHANNEL_BATTERY = "battery_level";
139 public static final String CHANNEL_OBSTRUCTION_ALARM = "obstruction_alarm";
140 public static final String CHANNEL_TEMPERATURE_ALARM = "temperature_alarm";
141 public static final String CHANNEL_CONTACT_STATE = "contact_state";
142 public static final String CHANNEL_PRESS = "press";
143 public static final String CHANNEL_LAST_CHANGE = "last_change";
144 public static final String CHANNEL_ROLLERSHUTTER = "rollershutter";
145 public static final String CHANNEL_COLOR = "color";
146 public static final String CHANNEL_BRIGHTNESS = "brightness";
147 public static final String CHANNEL_ON_OFF = "on_off";
149 // List of all Channel config ids
150 public static final String CONFIG_CHANNEL_TEMP_OFFSET = "offset";
152 // List of all Input tags
153 public static final String INPUT_PRESENT = "present";
154 public static final String INPUT_ACTUALTEMP = "tist";
155 public static final String INPUT_SETTEMP = "tsoll";
156 public static final String INPUT_ECOTEMP = "absenk";
157 public static final String INPUT_COMFORTTEMP = "komfort";
158 public static final String INPUT_NEXTCHANGE = "endperiod";
159 public static final String INPUT_NEXTTEMP = "tchange";
160 public static final String INPUT_BATTERY = "batterylow";
162 // List of all call states
163 public static final StringType CALL_STATE_IDLE = new StringType("IDLE");
164 public static final StringType CALL_STATE_RINGING = new StringType("RINGING");
165 public static final StringType CALL_STATE_DIALING = new StringType("DIALING");
166 public static final StringType CALL_STATE_ACTIVE = new StringType("ACTIVE");
168 // List of all Mode types
169 public static final String MODE_AUTO = "AUTOMATIC";
170 public static final String MODE_MANUAL = "MANUAL";
171 public static final String MODE_VACATION = "VACATION";
172 public static final String MODE_ON = "ON";
173 public static final String MODE_OFF = "OFF";
174 public static final String MODE_COMFORT = "COMFORT";
175 public static final String MODE_ECO = "ECO";
176 public static final String MODE_BOOST = "BOOST";
177 public static final String MODE_WINDOW_OPEN = "WINDOW_OPEN";
178 public static final String MODE_UNKNOWN = "UNKNOWN";
180 public static final Set<ThingTypeUID> SUPPORTED_LIGHTING_THING_TYPES = Set.of(DECT500_THING_TYPE,
181 HAN_FUN_COLOR_BULB_THING_TYPE, HAN_FUN_DIMMABLE_BULB_THING_TYPE);
183 public static final Set<ThingTypeUID> SUPPORTED_BUTTON_THING_TYPES_UIDS = Set.of(DECT400_THING_TYPE,
184 DECT440_THING_TYPE, HAN_FUN_SWITCH_THING_TYPE);
186 public static final Set<ThingTypeUID> SUPPORTED_HEATING_THING_TYPES = Set.of(DECT300_THING_TYPE, DECT302_THING_TYPE,
187 DECT301_THING_TYPE, COMETDECT_THING_TYPE);
189 public static final Set<ThingTypeUID> SUPPORTED_DEVICE_THING_TYPES_UIDS = Set.of(DECT100_THING_TYPE,
190 DECT200_THING_TYPE, DECT210_THING_TYPE, POWERLINE546E_THING_TYPE, HAN_FUN_CONTACT_THING_TYPE,
191 HAN_FUN_ON_OFF_THING_TYPE, HAN_FUN_BLINDS_THING_TYPE);
193 public static final Set<ThingTypeUID> SUPPORTED_GROUP_THING_TYPES_UIDS = Set.of(GROUP_HEATING_THING_TYPE,
194 GROUP_SWITCH_THING_TYPE);
196 public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_THING_TYPES_UIDS = Set.of(BRIDGE_THING_TYPE,
197 POWERLINE546E_STANDALONE_THING_TYPE);
199 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Stream.of(SUPPORTED_LIGHTING_THING_TYPES,
200 SUPPORTED_BUTTON_THING_TYPES_UIDS, SUPPORTED_HEATING_THING_TYPES, SUPPORTED_DEVICE_THING_TYPES_UIDS,
201 SUPPORTED_GROUP_THING_TYPES_UIDS, SUPPORTED_BRIDGE_THING_TYPES_UIDS).flatMap(Set::stream)
202 .collect(Collectors.toUnmodifiableSet());