2 * Copyright (c) 2010-2020 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.smhi.internal;
15 import java.math.BigDecimal;
16 import java.util.Collections;
17 import java.util.List;
18 import java.util.stream.Collectors;
19 import java.util.stream.Stream;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.openhab.core.thing.ThingTypeUID;
25 * The {@link SmhiBindingConstants} class defines common constants, which are
26 * used across the whole binding.
28 * @author Anders Alfredsson - Initial contribution
31 public class SmhiBindingConstants {
33 public static final String BINDING_ID = "smhi";
35 // List of all Thing Type UIDs
36 public static final ThingTypeUID THING_TYPE_FORECAST = new ThingTypeUID(BINDING_ID, "forecast");
38 // Smhi's ids for parameters, also used as channel ids
39 public static final String PRESSURE = "msl";
40 public static final String TEMPERATURE = "t";
41 public static final String VISIBILITY = "vis";
42 public static final String WIND_DIRECTION = "wd";
43 public static final String WIND_SPEED = "ws";
44 public static final String RELATIVE_HUMIDITY = "r";
45 public static final String THUNDER_PROBABILITY = "tstm";
46 public static final String TOTAL_CLOUD_COVER = "tcc_mean";
47 public static final String LOW_CLOUD_COVER = "lcc_mean";
48 public static final String MEDIUM_CLOUD_COVER = "mcc_mean";
49 public static final String HIGH_CLOUD_COVER = "hcc_mean";
50 public static final String GUST = "gust";
51 public static final String PRECIPITATION_MIN = "pmin";
52 public static final String PRECIPITATION_MAX = "pmax";
53 public static final String PRECIPITATION_MEAN = "pmean";
54 public static final String PRECIPITATION_MEDIAN = "pmedian";
55 public static final String PERCENT_FROZEN = "spp";
56 public static final String PRECIPITATION_CATEGORY = "pcat";
57 public static final String WEATHER_SYMBOL = "wsymb2";
59 public static final List<String> CHANNEL_IDS = Collections
60 .unmodifiableList(Stream
61 .of(PRESSURE, TEMPERATURE, VISIBILITY, WIND_DIRECTION, WIND_SPEED, RELATIVE_HUMIDITY,
62 THUNDER_PROBABILITY, TOTAL_CLOUD_COVER, LOW_CLOUD_COVER, MEDIUM_CLOUD_COVER,
63 HIGH_CLOUD_COVER, GUST, PRECIPITATION_MIN, PRECIPITATION_MAX, PRECIPITATION_MEAN,
64 PRECIPITATION_MEDIAN, PERCENT_FROZEN, PRECIPITATION_CATEGORY, WEATHER_SYMBOL)
65 .collect(Collectors.toList()));
67 public static final String BASE_URL = "https://opendata-download-metfcst.smhi.se/api/category/pmp3g/version/2/";
68 public static final String APPROVED_TIME_URL = BASE_URL + "approvedtime.json";
69 public static final String POINT_FORECAST_URL = BASE_URL + "geotype/point/lon/%.6f/lat/%.6f/data.json";
71 public static final BigDecimal OCTAS_TO_PERCENT = BigDecimal.valueOf(12.5);