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;
15 import java.util.Collections;
17 import java.util.concurrent.TimeUnit;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.thing.ThingTypeUID;
23 * The {@link SolarEdgeBindingConstants} class defines common constants, which are
24 * used across the whole binding.
26 * @author Alexander Friese - Initial contribution
29 public class SolarEdgeBindingConstants {
31 private static final String BINDING_ID = "solaredge";
33 // List of main device types
34 public static final String DEVICE_GENERIC = "generic";
36 // List of all Thing Type UIDs
37 public static final ThingTypeUID THING_TYPE_GENERIC = new ThingTypeUID(BINDING_ID, DEVICE_GENERIC);
39 // List of all channel groups
40 public static final String CHANNEL_GROUP_LIVE = "live";
41 public static final String CHANNEL_GROUP_AGGREGATE_DAY = "aggregate_day";
42 public static final String CHANNEL_GROUP_AGGREGATE_WEEK = "aggregate_week";
43 public static final String CHANNEL_GROUP_AGGREGATE_MONTH = "aggregate_month";
44 public static final String CHANNEL_GROUP_AGGREGATE_YEAR = "aggregate_year";
46 // List of all channel ids
47 public static final String CHANNEL_ID_PRODUCTION = "production";
48 public static final String CHANNEL_ID_PV_STATUS = "pv_status";
49 public static final String CHANNEL_ID_CONSUMPTION = "consumption";
50 public static final String CHANNEL_ID_LOAD_STATUS = "load_status";
51 public static final String CHANNEL_ID_BATTERY_STATUS = "battery_status";
52 public static final String CHANNEL_ID_BATTERY_CRITICAL = "battery_critical";
53 public static final String CHANNEL_ID_BATTERY_LEVEL = "battery_level";
54 public static final String CHANNEL_ID_GRID_STATUS = "grid_status";
55 public static final String CHANNEL_ID_IMPORT = "import";
56 public static final String CHANNEL_ID_EXPORT = "export";
57 public static final String CHANNEL_ID_BATTERY_CHARGE = "battery_charge";
58 public static final String CHANNEL_ID_BATTERY_DISCHARGE = "battery_discharge";
59 public static final String CHANNEL_ID_BATTERY_CHARGE_DISCHARGE = "battery_charge_discharge";
60 public static final String CHANNEL_ID_SELF_CONSUMPTION_FOR_CONSUMPTION = "selfConsumptionForConsumption";
61 public static final String CHANNEL_ID_SELF_CONSUMPTION_COVERAGE = "selfConsumptionCoverage";
62 public static final String CHANNEL_ID_BATTERY_SELF_CONSUMPTION = "batterySelfConsumption";
64 // PRIVATE API CONSTANTS
66 public static final String PRIVATE_DATA_API_URL = "https://monitoring.solaredge.com/solaredge-apigw/api/site/";
67 public static final String PRIVATE_DATA_API_URL_AGGREGATE_DATA_DAY_WEEK_SUFFIX = "/powerDashboardChart";
68 public static final String PRIVATE_DATA_API_URL_AGGREGATE_DATA_MONTH_YEAR_SUFFIX = "/energyDashboardChart";
69 public static final String PRIVATE_DATA_API_URL_LIVE_DATA_SUFFIX = "/currentPowerFlow.json";
72 public static final String PRIVATE_API_TOKEN_COOKIE_NAME = "SPRING_SECURITY_REMEMBER_ME_COOKIE";
73 public static final String PRIVATE_API_TOKEN_COOKIE_DOMAIN = "monitoring.solaredge.com";
74 public static final String PRIVATE_API_TOKEN_COOKIE_PATH = "/";
75 public static final String PRIVATE_DATA_API_AGGREGATE_DATA_CHARTFIELD_FIELD = "chartField";
79 // PRIVATE API CONSTANTS
81 public static final String PUBLIC_DATA_API_URL = "https://monitoringapi.solaredge.com/site/";
82 public static final String PUBLIC_DATA_API_URL_AGGREGATE_DATA_SUFFIX = "/energyDetails";
83 public static final String PUBLIC_DATA_API_URL_LIVE_DATA_SUFFIX = "/currentPowerFlow";
84 public static final String PUBLIC_DATA_API_URL_LIVE_DATA_METERLESS_SUFFIX = "/overview";
87 public static final String PUBLIC_DATA_API_KEY_FIELD = "api_key";
88 public static final String PUBLIC_DATA_API_START_TIME_FIELD = "startTime";
89 public static final String PUBLIC_DATA_API_END_TIME_FIELD = "endTime";
90 public static final String PUBLIC_DATA_API_TIME_UNIT_FIELD = "timeUnit";
93 public static final String BEGIN_OF_DAY_TIME = "00:00:00";
94 public static final String END_OF_DAY_TIME = "23:59:59";
95 public static final long MINUTES_PER_DAY = 1440;
97 // web request constants
98 public static final long WEB_REQUEST_PUBLIC_API_DAY_LIMIT = 300;
99 public static final long WEB_REQUEST_INITIAL_DELAY = TimeUnit.SECONDS.toMillis(30);
100 public static final long WEB_REQUEST_INTERVAL = TimeUnit.SECONDS.toMillis(5);
101 public static final int WEB_REQUEST_QUEUE_MAX_SIZE = 20;
103 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_GENERIC);