]> git.basschouten.com Git - openhab-addons.git/blob
1c88448ad3765a724d211b200daa2cc8e07ca8d4
[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.knx.internal;
14
15 import java.io.IOException;
16 import java.io.InputStream;
17 import java.util.Map;
18 import java.util.Properties;
19 import java.util.Set;
20 import java.util.stream.Collectors;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.core.thing.ThingTypeUID;
24 import org.openhab.core.thing.type.ChannelTypeUID;
25
26 /**
27  * The {@link KNXBindingConstants} class defines common constants, which are
28  * used across the whole binding.
29  *
30  * @author Karel Goderis - Initial contribution
31  */
32 @NonNullByDefault
33 public class KNXBindingConstants {
34
35     public static final String BINDING_ID = "knx";
36
37     // Global config
38     public static final String CONFIG_DISABLE_UOM = "disableUoM";
39     public static boolean disableUoM = false;
40
41     // Thing Type UIDs
42     public static final ThingTypeUID THING_TYPE_IP_BRIDGE = new ThingTypeUID(BINDING_ID, "ip");
43     public static final ThingTypeUID THING_TYPE_SERIAL_BRIDGE = new ThingTypeUID(BINDING_ID, "serial");
44     public static final ThingTypeUID THING_TYPE_DEVICE = new ThingTypeUID(BINDING_ID, "device");
45
46     // Property IDs
47     public static final String DEVICE_MASK_VERSION = "deviceMaskVersion";
48     public static final String DEVICE_PROFILE = "deviceProfile";
49     public static final String DEVICE_MEDIUM_TYPE = "deviceMediumType";
50     public static final String FRIENDLY_NAME = "deviceName";
51     public static final String MANUFACTURER_NAME = "manufacturerName";
52     public static final String MANUFACTURER_SERIAL_NO = "manufacturerSerialNumber";
53     public static final String MANUFACTURER_HARDWARE_TYPE = "manufacturerHardwareType";
54     public static final String MANUFACTURER_FIRMWARE_REVISION = "manufacturerFirmwareRevision";
55     public static final String MANUFACTURER_ORDER_INFO = "manufacturerOrderInfo";
56     public static final String MAX_APDU_LENGTH = "maxApduLength";
57
58     // Thing Configuration parameters
59     public static final String IP_ADDRESS = "ipAddress";
60     public static final String IP_CONNECTION_TYPE = "type";
61     public static final String LOCAL_IP = "localIp";
62     public static final String LOCAL_SOURCE_ADDRESS = "localSourceAddr";
63     public static final String PORT_NUMBER = "portNumber";
64     public static final String SERIAL_PORT = "serialPort";
65     public static final String USE_CEMI = "useCemi";
66     public static final String ROUTER_BACKBONE_GROUP_KEY = "routerBackboneGroupKey";
67     public static final String TUNNEL_USER_ID = "tunnelUserId";
68     public static final String TUNNEL_USER_PASSWORD = "tunnelUserPassword";
69     public static final String TUNNEL_DEVICE_AUTHENTICATION = "tunnelDeviceAuthentication";
70
71     // The default multicast ip address (see <a
72     // href="http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml">iana</a> EIBnet/IP
73     public static final String DEFAULT_MULTICAST_IP = "224.0.23.12";
74
75     // Channel Type IDs
76     public static final String CHANNEL_COLOR = "color";
77     public static final String CHANNEL_COLOR_CONTROL = "color-control";
78     public static final String CHANNEL_CONTACT = "contact";
79     public static final String CHANNEL_CONTACT_CONTROL = "contact-control";
80     public static final String CHANNEL_DATETIME = "datetime";
81     public static final String CHANNEL_DATETIME_CONTROL = "datetime-control";
82     public static final String CHANNEL_DIMMER = "dimmer";
83     public static final String CHANNEL_DIMMER_CONTROL = "dimmer-control";
84     public static final String CHANNEL_NUMBER = "number";
85     public static final String CHANNEL_NUMBER_CONTROL = "number-control";
86     public static final String CHANNEL_ROLLERSHUTTER = "rollershutter";
87     public static final String CHANNEL_ROLLERSHUTTER_CONTROL = "rollershutter-control";
88     public static final String CHANNEL_STRING = "string";
89     public static final String CHANNEL_STRING_CONTROL = "string-control";
90     public static final String CHANNEL_SWITCH = "switch";
91     public static final String CHANNEL_SWITCH_CONTROL = "switch-control";
92
93     public static final ChannelTypeUID CHANNEL_CONTACT_CONTROL_UID = new ChannelTypeUID(BINDING_ID,
94             CHANNEL_CONTACT_CONTROL);
95
96     public static final Set<String> CONTROL_CHANNEL_TYPES = Set.of( //
97             CHANNEL_COLOR_CONTROL, //
98             CHANNEL_CONTACT_CONTROL, //
99             CHANNEL_DATETIME_CONTROL, //
100             CHANNEL_DIMMER_CONTROL, //
101             CHANNEL_NUMBER_CONTROL, //
102             CHANNEL_ROLLERSHUTTER_CONTROL, //
103             CHANNEL_STRING_CONTROL, //
104             CHANNEL_SWITCH_CONTROL //
105     );
106
107     public static final String CHANNEL_RESET = "reset";
108
109     // Channel Configuration parameters
110     public static final String GA = "ga";
111     public static final String HSB_GA = "hsb";
112     public static final String INCREASE_DECREASE_GA = "increaseDecrease";
113     public static final String POSITION_GA = "position";
114     public static final String REPEAT_FREQUENCY = "frequency";
115     public static final String STOP_MOVE_GA = "stopMove";
116     public static final String SWITCH_GA = "switch";
117     public static final String UP_DOWN_GA = "upDown";
118
119     public static final Map<Integer, String> MANUFACTURER_MAP = readManufacturerMap();
120
121     private static Map<Integer, String> readManufacturerMap() {
122         ClassLoader classLoader = KNXBindingConstants.class.getClassLoader();
123         if (classLoader == null) {
124             return Map.of();
125         }
126
127         try (InputStream is = classLoader.getResourceAsStream("manufacturer.properties")) {
128             if (is == null) {
129                 return Map.of();
130             }
131
132             Properties properties = new Properties();
133             properties.load(is);
134             return properties.entrySet().stream()
135                     .collect(Collectors.toMap(e -> Integer.parseInt((String) e.getKey()), e -> (String) e.getValue()));
136         } catch (IOException e) {
137             return Map.of();
138         }
139     }
140 }