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.solaredge.internal;
16 import java.util.concurrent.TimeUnit;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openhab.core.thing.ThingTypeUID;
22 * The {@link SolarEdgeBindingConstants} class defines common constants, which are
23 * used across the whole binding.
25 * @author Alexander Friese - Initial contribution
28 public class SolarEdgeBindingConstants {
30 private static final String BINDING_ID = "solaredge";
32 // List of main device types
33 public static final String DEVICE_GENERIC = "generic";
35 // List of all Thing Type UIDs
36 public static final ThingTypeUID THING_TYPE_GENERIC = new ThingTypeUID(BINDING_ID, DEVICE_GENERIC);
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";
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";
63 // PRIVATE API CONSTANTS
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";
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";
78 // PRIVATE API CONSTANTS
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";
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";
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;
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;
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";
113 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_GENERIC);