2 * Copyright (c) 2010-2024 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.knx.internal;
15 import java.io.IOException;
16 import java.io.InputStream;
18 import java.util.Properties;
20 import java.util.stream.Collectors;
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.core.thing.ThingTypeUID;
24 import org.openhab.core.thing.type.ChannelTypeUID;
27 * The {@link KNXBindingConstants} class defines common constants, which are
28 * used across the whole binding.
30 * @author Karel Goderis - Initial contribution
33 public class KNXBindingConstants {
35 public static final String BINDING_ID = "knx";
38 public static final String CONFIG_DISABLE_UOM = "disableUoM";
39 public static boolean disableUoM = false;
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");
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";
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";
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";
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";
93 public static final ChannelTypeUID CHANNEL_CONTACT_CONTROL_UID = new ChannelTypeUID(BINDING_ID,
94 CHANNEL_CONTACT_CONTROL);
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 //
107 public static final String CHANNEL_RESET = "reset";
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";
119 public static final Map<Integer, String> MANUFACTURER_MAP = readManufacturerMap();
121 private static Map<Integer, String> readManufacturerMap() {
122 ClassLoader classLoader = KNXBindingConstants.class.getClassLoader();
123 if (classLoader == null) {
127 try (InputStream is = classLoader.getResourceAsStream("manufacturer.properties")) {
132 Properties properties = new Properties();
134 return properties.entrySet().stream()
135 .collect(Collectors.toMap(e -> Integer.parseInt((String) e.getKey()), e -> (String) e.getValue()));
136 } catch (IOException e) {