]> git.basschouten.com Git - openhab-addons.git/blob
4c8e6ee647cdc57d1f48c156c79a3bda3022c233
[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.solaredge.internal;
14
15 import java.util.Set;
16 import java.util.concurrent.TimeUnit;
17
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openhab.core.thing.ThingTypeUID;
20
21 /**
22  * The {@link SolarEdgeBindingConstants} class defines common constants, which are
23  * used across the whole binding.
24  *
25  * @author Alexander Friese - Initial contribution
26  */
27 @NonNullByDefault
28 public class SolarEdgeBindingConstants {
29
30     private static final String BINDING_ID = "solaredge";
31
32     // List of main device types
33     public static final String DEVICE_GENERIC = "generic";
34
35     // List of all Thing Type UIDs
36     public static final ThingTypeUID THING_TYPE_GENERIC = new ThingTypeUID(BINDING_ID, DEVICE_GENERIC);
37
38     // List of all channel groups
39     public static final String CHANNEL_GROUP_LIVE = "live";
40     public static final String CHANNEL_GROUP_AGGREGATE_DAY = "aggregate_day";
41     public static final String CHANNEL_GROUP_AGGREGATE_WEEK = "aggregate_week";
42     public static final String CHANNEL_GROUP_AGGREGATE_MONTH = "aggregate_month";
43     public static final String CHANNEL_GROUP_AGGREGATE_YEAR = "aggregate_year";
44
45     // List of all channel ids
46     public static final String CHANNEL_ID_PRODUCTION = "production";
47     public static final String CHANNEL_ID_PV_STATUS = "pv_status";
48     public static final String CHANNEL_ID_CONSUMPTION = "consumption";
49     public static final String CHANNEL_ID_LOAD_STATUS = "load_status";
50     public static final String CHANNEL_ID_BATTERY_STATUS = "battery_status";
51     public static final String CHANNEL_ID_BATTERY_CRITICAL = "battery_critical";
52     public static final String CHANNEL_ID_BATTERY_LEVEL = "battery_level";
53     public static final String CHANNEL_ID_GRID_STATUS = "grid_status";
54     public static final String CHANNEL_ID_IMPORT = "import";
55     public static final String CHANNEL_ID_EXPORT = "export";
56     public static final String CHANNEL_ID_BATTERY_CHARGE = "battery_charge";
57     public static final String CHANNEL_ID_BATTERY_DISCHARGE = "battery_discharge";
58     public static final String CHANNEL_ID_BATTERY_CHARGE_DISCHARGE = "battery_charge_discharge";
59     public static final String CHANNEL_ID_SELF_CONSUMPTION_FOR_CONSUMPTION = "selfConsumptionForConsumption";
60     public static final String CHANNEL_ID_SELF_CONSUMPTION_COVERAGE = "selfConsumptionCoverage";
61     public static final String CHANNEL_ID_BATTERY_SELF_CONSUMPTION = "batterySelfConsumption";
62
63     // PRIVATE API CONSTANTS
64     // URLs
65     public static final String PRIVATE_DATA_API_URL = "https://monitoring.solaredge.com/solaredge-apigw/api/site/";
66     public static final String PRIVATE_DATA_API_URL_AGGREGATE_DATA_DAY_WEEK_SUFFIX = "/powerDashboardChart";
67     public static final String PRIVATE_DATA_API_URL_AGGREGATE_DATA_MONTH_YEAR_SUFFIX = "/energyDashboardChart";
68     public static final String PRIVATE_DATA_API_URL_LIVE_DATA_SUFFIX = "/currentPowerFlow.json";
69
70     // field names
71     public static final String PRIVATE_API_TOKEN_COOKIE_NAME = "SPRING_SECURITY_REMEMBER_ME_COOKIE";
72     public static final String PRIVATE_API_TOKEN_COOKIE_DOMAIN = "monitoring.solaredge.com";
73     public static final String PRIVATE_API_TOKEN_COOKIE_PATH = "/";
74     public static final String PRIVATE_DATA_API_AGGREGATE_DATA_CHARTFIELD_FIELD = "chartField";
75
76     //
77     //
78     // PRIVATE API CONSTANTS
79     // URLs
80     public static final String PUBLIC_DATA_API_URL = "https://monitoringapi.solaredge.com/site/";
81     public static final String PUBLIC_DATA_API_URL_AGGREGATE_DATA_SUFFIX = "/energyDetails";
82     public static final String PUBLIC_DATA_API_URL_LIVE_DATA_SUFFIX = "/currentPowerFlow";
83     public static final String PUBLIC_DATA_API_URL_LIVE_DATA_METERLESS_SUFFIX = "/overview";
84
85     // field names
86     public static final String PUBLIC_DATA_API_KEY_FIELD = "api_key";
87     public static final String PUBLIC_DATA_API_START_TIME_FIELD = "startTime";
88     public static final String PUBLIC_DATA_API_END_TIME_FIELD = "endTime";
89     public static final String PUBLIC_DATA_API_TIME_UNIT_FIELD = "timeUnit";
90
91     // constants
92     public static final String BEGIN_OF_DAY_TIME = "00:00:00";
93     public static final String END_OF_DAY_TIME = "23:59:59";
94     public static final long MINUTES_PER_DAY = 1440;
95
96     // web request constants
97     public static final long WEB_REQUEST_PUBLIC_API_DAY_LIMIT = 300;
98     public static final long WEB_REQUEST_INITIAL_DELAY = TimeUnit.SECONDS.toMillis(30);
99     public static final long WEB_REQUEST_INTERVAL = TimeUnit.SECONDS.toMillis(5);
100     public static final int WEB_REQUEST_QUEUE_MAX_SIZE = 20;
101
102     // Status Keys
103     public static final String STATUS_INVALID_SOLAR_ID = "@text/status.invalid.solarId";
104     public static final String STATUS_INVALID_TOKEN = "@text/status.invalid.token";
105     public static final String STATUS_UNKNOWN_ERROR = "@text/status.unknown.error";
106     public static final String STATUS_INVALID_TOKEN_LENGTH = "@text/status.invalid.token.length";
107     public static final String STATUS_INVALID_API_KEY_LENGTH = "@text/status.invalid.api.key.length";
108     public static final String STATUS_REQUEST_LIMIT_EXCEEDED = "@text/status.request.limit.exceeded [\""
109             + WEB_REQUEST_PUBLIC_API_DAY_LIMIT + "\"]";
110     public static final String STATUS_NO_METER_CONFIGURED = "@text/status.no.meter.configured";
111     public static final String STATUS_WAITING_FOR_LOGIN = "@text/status.waiting.for.login";
112
113     public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_GENERIC);
114 }