]> git.basschouten.com Git - openhab-addons.git/blob
2dd0e685b1827c6e47ee2afa54a5764d1c85f13c
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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.wundergroundupdatereceiver.internal;
14
15 import static org.openhab.core.library.unit.SIUnits.METRE;
16
17 import java.util.Set;
18
19 import javax.measure.Unit;
20 import javax.measure.quantity.Length;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.core.thing.DefaultSystemChannelTypeProvider;
24 import org.openhab.core.thing.ThingTypeUID;
25 import org.openhab.core.thing.type.ChannelTypeUID;
26
27 import tech.units.indriya.format.SimpleUnitFormat;
28 import tech.units.indriya.function.MultiplyConverter;
29 import tech.units.indriya.unit.TransformedUnit;
30
31 /**
32  * The {@link WundergroundUpdateReceiverBindingConstants} class defines common constants, which are
33  * used across the whole binding.
34  *
35  * @author Daniel Demus - Initial contribution
36  */
37 @NonNullByDefault
38 public class WundergroundUpdateReceiverBindingConstants {
39
40     public static final String BINDING_ID = "wundergroundupdatereceiver";
41
42     public static final String STATION_ID_PARAMETER = "ID";
43     public static final String REPRESENTATION_PROPERTY = "stationId";
44
45     // List of all Thing Type UIDs
46     public static final ThingTypeUID THING_TYPE_UPDATE_RECEIVER = new ThingTypeUID(BINDING_ID,
47             "wundergroundUpdateReceiver");
48     static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_UPDATE_RECEIVER);
49
50     public static final String NOW = "now";
51
52     // Excluded technical paramter names
53     public static final String REALTIME_MARKER = "realtime";
54     public static final String PASSWORD = "PASSWORD";
55     public static final String ACTION = "action";
56
57     // List of default synthetic channeltypes added to a new thing
58     public static final String DATEUTC_DATETIME = "dateutc-datetime";
59     public static final String LAST_RECEIVED_DATETIME = "last-received-datetime";
60     public static final String LAST_RECEIVED = "last-received";
61     public static final String LAST_QUERY = "last-query";
62     public static final String LAST_QUERY_STATE = LAST_QUERY + "-state";
63     public static final String LAST_QUERY_TRIGGER = LAST_QUERY + "-trigger";
64
65     // Channel groups
66     public static final String METADATA_GROUP = "metadata";
67     public static final String WIND_GROUP = "wind";
68     public static final String TEMPERATURE_GROUP = "temperature";
69     public static final String HUMIDITY_GROUP = "humidity";
70     public static final String RAIN_GROUP = "rain";
71     public static final String SUNLIGHT_GROUP = "sunlight";
72     public static final String PRESSURE_GROUP = "pressure";
73     public static final String POLLUTION_GROUP = "pollution";
74
75     // Known or observed request paramters received from devices submitting to wunderground.com
76     public static final String DATEUTC = "dateutc";
77     public static final String SOFTWARE_TYPE = "softwaretype";
78     public static final String LOW_BATTERY = "lowbatt";
79     public static final String REALTIME_FREQUENCY = "rtfreq";
80     public static final String WIND_DIRECTION = "winddir";
81     public static final String WIND_SPEED = "windspeedmph";
82     public static final String GUST_SPEED = "windgustmph";
83     public static final String GUST_DIRECTION = "windgustdir";
84     public static final String WIND_SPEED_AVG_2MIN = "windspdmph_avg2m";
85     public static final String WIND_DIRECTION_AVG_2MIN = "winddir_avg2m";
86     public static final String GUST_SPEED_AVG_10MIN = "windgustmph_10m";
87     public static final String GUST_DIRECTION_AVG_10MIN = "windgustdir_10m";
88     public static final String TEMPERATURE = "tempf";
89     public static final String TEMPERATURE_INDEXED = "^temp(\\d+)f$";
90     public static final String WIND_CHILL = "windchillf";
91     public static final String INDOOR_TEMPERATURE = "indoortempf";
92     public static final String SOIL_TEMPERATURE = "soiltempf";
93     public static final String SOIL_TEMPERATURE_INDEXED = "^soiltemp(\\d+)f$";
94     public static final String HUMIDITY = "humidity";
95     public static final String INDOOR_HUMIDITY = "indoorhumidity";
96     public static final String DEWPOINT = "dewptf";
97     public static final String SOIL_MOISTURE = "soilmoisture";
98     public static final String SOIL_MOISTURE_INDEXED = "^soilmoisture(\\d+)$";
99     public static final String LEAF_WETNESS = "leafwetness";
100     public static final String LEAF_WETNESS_INDEXED = "^leafwetness(\\d+)$";
101     public static final String RAIN_IN = "rainin";
102     public static final String DAILY_RAIN_IN = "dailyrainin";
103     public static final String WEEKLY_RAIN_IN = "weeklyrainin";
104     public static final String MONTHLY_RAIN_IN = "monthlyrainin";
105     public static final String YEARLY_RAIN_IN = "yearlyrainin";
106     public static final String SOLAR_RADIATION = "solarradiation";
107     public static final String UV = "UV";
108     public static final String VISIBILITY = "visibility";
109     public static final String WEATHER = "weather";
110     public static final String CLOUDS = "clouds";
111     public static final String BAROM_IN = "baromin";
112     public static final String AQ_NO = "AqNO";
113     public static final String AQ_NO2T = "AqNO2T";
114     public static final String AQ_NO2 = "AqNO2";
115     public static final String AQ_NO2Y = "AqNO2Y";
116     public static final String AQ_NOX = "AqNOX";
117     public static final String AQ_NOY = "AqNOY";
118     public static final String AQ_NO3 = "AqNO3";
119     public static final String AQ_SO4 = "AqSO4";
120     public static final String AQ_SO2 = "AqSO2";
121     public static final String AQ_SO2T = "AqSO2T";
122     public static final String AQ_CO = "AqCO";
123     public static final String AQ_COT = "AqCOT";
124     public static final String AQ_EC = "AqEC";
125     public static final String AQ_OC = "AqOC";
126     public static final String AQ_BC = "AqBC";
127     public static final String AQ_UV_AETH = "AqUV-AETH";
128     public static final String AQ_PM2_5 = "AqPM2.5";
129     public static final String AQ_PM10 = "AqPM10";
130     public static final String AQ_OZONE = "AqOZONE";
131
132     public static final ChannelTypeUID LAST_RECEIVED_DATETIME_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
133             LAST_RECEIVED_DATETIME);
134     public static final ChannelTypeUID LAST_QUERY_STATE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
135             LAST_QUERY_STATE);
136     public static final ChannelTypeUID LAST_QUERY_TRIGGER_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
137             LAST_QUERY_TRIGGER);
138     public static final ChannelTypeUID DATEUTC_DATETIME_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
139             DATEUTC_DATETIME);
140     public static final ChannelTypeUID DATEUTC_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, DATEUTC);
141     public static final ChannelTypeUID LOW_BATTERY_CHANNELTYPEUID = DefaultSystemChannelTypeProvider.SYSTEM_CHANNEL_LOW_BATTERY
142             .getUID();
143     public static final ChannelTypeUID SOFTWARETYPE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "softwaretype");
144     public static final ChannelTypeUID REALTIME_FREQUENCY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
145             "realtime-frequency");
146     public static final ChannelTypeUID WIND_SPEED_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "wind-speed");
147     public static final ChannelTypeUID WIND_DIRECTION_CHANNELTYPEUID = DefaultSystemChannelTypeProvider.SYSTEM_WIND_DIRECTION
148             .getUID();
149     public static final ChannelTypeUID GUST_SPEED_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "wind-gust-speed");
150     public static final ChannelTypeUID GUST_DIRECTION_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
151             "wind-gust-direction");
152     public static final ChannelTypeUID WIND_SPEED_AVG_2MIN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
153             "wind-speed-avg-2min");
154     public static final ChannelTypeUID WIND_DIRECTION_AVG_2MIN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
155             "wind-direction-avg-2min");
156     public static final ChannelTypeUID GUST_SPEED_10MIN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
157             "wind-gust-speed-10min");
158     public static final ChannelTypeUID GUST_DIRECTION_10MIN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
159             "wind-gust-direction-10min");
160     public static final ChannelTypeUID TEMPERATURE_CHANNELTYPEUID = DefaultSystemChannelTypeProvider.SYSTEM_OUTDOOR_TEMPERATURE
161             .getUID();
162     public static final ChannelTypeUID HUMIDITY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "humidity");
163     public static final ChannelTypeUID INDOOR_HUMIDITY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
164             "indoor-humidity");
165     public static final ChannelTypeUID DEW_POINT_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "dew-point");
166     public static final ChannelTypeUID WIND_CHILL_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "wind-chill");
167     // for extra outdoor sensors use temp2f, temp3f, and so on
168     public static final ChannelTypeUID INDOOR_TEMPERATURE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
169             "indoor-temperature");
170     // for sensors 2,3,4 use soiltemp2f, soiltemp3f, and soiltemp4f
171     public static final ChannelTypeUID SOIL_TEMPERATURE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
172             "soil-temperature");
173     public static final ChannelTypeUID RAIN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "rain");
174     public static final ChannelTypeUID RAIN_DAILY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "rain-daily");
175     public static final ChannelTypeUID RAIN_WEEKLY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "rain-weekly");
176     public static final ChannelTypeUID RAIN_MONTHLY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "rain-monthly");
177     public static final ChannelTypeUID RAIN_YEARLY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "rain-yearly");
178     public static final ChannelTypeUID METAR_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "metar");
179     public static final ChannelTypeUID CLOUDS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "clouds");
180     // for sensors 2,3,4 use soilmoisture2, soilmoisture3, and soilmoisture4
181     public static final ChannelTypeUID SOIL_MOISTURE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "soil-moisture");
182     // for sensor 2 use leafwetness2
183     public static final ChannelTypeUID LEAFWETNESS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "leafwetness");
184     public static final ChannelTypeUID SOLARRADIATION_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "solarradiation");
185     public static final ChannelTypeUID UV_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "uv");
186     public static final ChannelTypeUID VISIBILITY_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "visibility");
187     public static final ChannelTypeUID BAROMETRIC_PRESSURE_CHANNELTYPEUID = DefaultSystemChannelTypeProvider.SYSTEM_BAROMETRIC_PRESSURE
188             .getUID();
189     public static final ChannelTypeUID NITRIC_OXIDE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "nitric-oxide");
190     public static final ChannelTypeUID NITROGEN_DIOXIDE_MEASURED_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
191             "nitrogen-dioxide-measured");
192     public static final ChannelTypeUID NITROGEN_DIOXIDE_NOX_NO_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
193             "nitrogen-dioxide-nox-no");
194     public static final ChannelTypeUID NITROGEN_DIOXIDE_NOY_NO_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
195             "nitrogen-dioxide-noy-no");
196     public static final ChannelTypeUID NITROGEN_OXIDES_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
197             "nitrogen-oxides");
198     public static final ChannelTypeUID TOTAL_REACTIVE_NITROGEN_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
199             "total-reactive-nitrogen");
200     public static final ChannelTypeUID NO3_ION_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "no3-ion");
201     public static final ChannelTypeUID SO4_ION_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "so4-ion");
202     public static final ChannelTypeUID SULFUR_DIOXIDE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "sulfur-dioxide");
203     public static final ChannelTypeUID SULFUR_DIOXIDE_TRACE_LEVELS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
204             "sulfur-dioxide-trace-levels");
205     public static final ChannelTypeUID CARBON_MONOXIDE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
206             "carbon-monoxide");
207     public static final ChannelTypeUID CARBON_MONOXIDE_TRACE_LEVELS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
208             "carbon-monoxide-trace-levels");
209     public static final ChannelTypeUID ELEMENTAL_CARBON_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID,
210             "elemental-carbon");
211     public static final ChannelTypeUID ORGANIC_CARBON_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "organic-carbon");
212     public static final ChannelTypeUID BLACK_CARBON_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "black-carbon");
213     public static final ChannelTypeUID AETHALOMETER_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "aethalometer");
214     public static final ChannelTypeUID PM2_5_MASS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "pm2_5-mass");
215     public static final ChannelTypeUID PM10_MASS_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "pm10-mass");
216     public static final ChannelTypeUID OZONE_CHANNELTYPEUID = new ChannelTypeUID(BINDING_ID, "ozone");
217
218     public static final Unit<Length> NAUTICAL_MILE = addUnit(
219             new TransformedUnit<>("NM", METRE, MultiplyConverter.of(1852.0)));
220
221     static {
222         SimpleUnitFormat.getInstance().label(NAUTICAL_MILE, "NM");
223     }
224
225     private static <U extends Unit<?>> U addUnit(U unit) {
226         return unit;
227     }
228 }