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.draytonwiser.internal;
15 import java.util.Arrays;
16 import java.util.Collections;
17 import java.util.HashSet;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.eclipse.jdt.annotation.Nullable;
22 import org.openhab.core.library.types.DecimalType;
23 import org.openhab.core.thing.ThingTypeUID;
24 import org.openhab.core.types.State;
25 import org.openhab.core.types.UnDefType;
28 * The {@link DraytonWiserBindingConstants} class defines common constants, which are
29 * used across the whole binding.
31 * @author Andrew Schofield - Initial contribution
34 public class DraytonWiserBindingConstants {
36 public static final String BINDING_ID = "draytonwiser";
38 public static final String REFRESH_INTERVAL = "refresh";
39 public static final int DEFAULT_REFRESH_SECONDS = 60;
41 public static final int OFFLINE_TEMPERATURE = -32768;
43 // Web Service Endpoints
44 public static final String DEVICE_ENDPOINT = "data/domain/Device/";
45 public static final String ROOMSTATS_ENDPOINT = "data/domain/RoomStat/";
46 public static final String TRVS_ENDPOINT = "data/domain/SmartValve/";
47 public static final String ROOMS_ENDPOINT = "data/domain/Room/";
48 public static final String HEATCHANNELS_ENDPOINT = "data/domain/HeatingChannel/";
49 public static final String SYSTEM_ENDPOINT = "data/domain/System/";
50 public static final String STATION_ENDPOINT = "data/network/Station/";
51 public static final String DOMAIN_ENDPOINT = "data/domain/";
52 public static final String HOTWATER_ENDPOINT = "data/domain/HotWater/";
53 public static final String SMARTPLUG_ENDPOINT = "data/domain/SmartPlug/";
56 public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "heathub");
58 // List of all Thing Type UIDs
59 public static final ThingTypeUID THING_TYPE_CONTROLLER = new ThingTypeUID(BINDING_ID, "boiler-controller");
60 public static final ThingTypeUID THING_TYPE_ROOM = new ThingTypeUID(BINDING_ID, "room");
61 public static final ThingTypeUID THING_TYPE_ROOMSTAT = new ThingTypeUID(BINDING_ID, "roomstat");
62 public static final ThingTypeUID THING_TYPE_ITRV = new ThingTypeUID(BINDING_ID, "itrv");
63 public static final ThingTypeUID THING_TYPE_HOTWATER = new ThingTypeUID(BINDING_ID, "hotwater");
64 public static final ThingTypeUID THING_TYPE_SMARTPLUG = new ThingTypeUID(BINDING_ID, "smart-plug");
67 public static final String PROP_ADDRESS = "networkAddress";
68 public static final String PROP_SERIAL_NUMBER = "serialNumber";
69 public static final String PROP_NAME = "name";
70 public static final String PROP_ID = "id";
72 // List of all Channel ids
73 public static final String CHANNEL_CURRENT_TEMPERATURE = "currentTemperature";
74 public static final String CHANNEL_CURRENT_HUMIDITY = "currentHumidity";
75 public static final String CHANNEL_CURRENT_SETPOINT = "currentSetPoint";
76 public static final String CHANNEL_CURRENT_BATTERY_VOLTAGE = "currentBatteryVoltage";
77 public static final String CHANNEL_CURRENT_BATTERY_LEVEL = "currentBatteryLevel";
78 public static final String CHANNEL_CURRENT_WISER_BATTERY_LEVEL = "currentWiserBatteryLevel";
79 public static final String CHANNEL_CURRENT_DEMAND = "currentDemand";
80 public static final String CHANNEL_HEAT_REQUEST = "heatRequest";
81 public static final String CHANNEL_CURRENT_SIGNAL_RSSI = "currentSignalRSSI";
82 public static final String CHANNEL_CURRENT_SIGNAL_LQI = "currentSignalLQI";
83 public static final String CHANNEL_CURRENT_SIGNAL_STRENGTH = "currentSignalStrength";
84 public static final String CHANNEL_CURRENT_WISER_SIGNAL_STRENGTH = "currentWiserSignalStrength";
85 public static final String CHANNEL_HEATING_OVERRIDE = "heatingOverride";
86 public static final String CHANNEL_HOT_WATER_OVERRIDE = "hotWaterOverride";
87 public static final String CHANNEL_HEATCHANNEL_1_DEMAND = "heatChannel1Demand";
88 public static final String CHANNEL_HEATCHANNEL_2_DEMAND = "heatChannel2Demand";
89 public static final String CHANNEL_HEATCHANNEL_1_DEMAND_STATE = "heatChannel1DemandState";
90 public static final String CHANNEL_HEATCHANNEL_2_DEMAND_STATE = "heatChannel2DemandState";
91 public static final String CHANNEL_HOTWATER_DEMAND_STATE = "hotWaterDemandState";
92 public static final String CHANNEL_AWAY_MODE_STATE = "awayModeState";
93 public static final String CHANNEL_ECO_MODE_STATE = "ecoModeState";
94 public static final String CHANNEL_MANUAL_MODE_STATE = "manualModeState";
95 public static final String CHANNEL_ZIGBEE_CONNECTED = "zigbeeConnected";
96 public static final String CHANNEL_HOT_WATER_SETPOINT = "hotWaterSetPoint";
97 public static final String CHANNEL_HOT_WATER_BOOST_DURATION = "hotWaterBoostDuration";
98 public static final String CHANNEL_HOT_WATER_BOOSTED = "hotWaterBoosted";
99 public static final String CHANNEL_HOT_WATER_BOOST_REMAINING = "hotWaterBoostRemaining";
100 public static final String CHANNEL_ROOM_BOOST_DURATION = "roomBoostDuration";
101 public static final String CHANNEL_ROOM_BOOSTED = "roomBoosted";
102 public static final String CHANNEL_ROOM_BOOST_REMAINING = "roomBoostRemaining";
103 public static final String CHANNEL_ROOM_WINDOW_STATE_DETECTION = "windowStateDetection";
104 public static final String CHANNEL_ROOM_WINDOW_STATE = "windowState";
105 public static final String CHANNEL_DEVICE_LOCKED = "deviceLocked";
106 public static final String CHANNEL_SMARTPLUG_OUTPUT_STATE = "plugOutputState";
107 public static final String CHANNEL_SMARTPLUG_AWAY_ACTION = "plugAwayAction";
108 public static final String CHANNEL_COMFORT_MODE_STATE = "comfortModeState";
109 public static final String CHANNEL_SMARTPLUG_INSTANTANEOUS_POWER = "plugInstantaneousPower";
110 public static final String CHANNEL_SMARTPLUG_ENERGY_DELIVERED = "plugEnergyDelivered";
112 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
113 .unmodifiableSet(new HashSet<>(Arrays.asList(THING_TYPE_CONTROLLER, THING_TYPE_ROOM, THING_TYPE_ROOMSTAT,
114 THING_TYPE_BRIDGE, THING_TYPE_ITRV, THING_TYPE_HOTWATER, THING_TYPE_SMARTPLUG)));
116 // Lookups from text representations to useful values
118 public enum SignalStrength {
125 private final int signalStrength;
127 SignalStrength(final int signalStrength) {
128 this.signalStrength = signalStrength;
131 public static State toSignalStrength(final String strength) {
133 return new DecimalType(SignalStrength.valueOf(strength.toUpperCase()).signalStrength);
134 } catch (final IllegalArgumentException e) {
135 // Catch unrecognized values.
136 return UnDefType.UNDEF;
141 public enum BatteryLevel {
149 private final int batteryLevel;
151 private BatteryLevel(final int batteryLevel) {
152 this.batteryLevel = batteryLevel;
155 public static State toBatteryLevel(final @Nullable String level) {
158 return new DecimalType(BatteryLevel.valueOf(level.toUpperCase()).batteryLevel);
159 } catch (final IllegalArgumentException e) {
160 // Catch unrecognized values.
161 return UnDefType.UNDEF;
164 return UnDefType.UNDEF;