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