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.surepetcare.internal;
15 import java.time.LocalDate;
16 import java.time.LocalTime;
17 import java.time.ZonedDateTime;
18 import java.util.Arrays;
19 import java.util.HashSet;
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.binding.surepetcare.internal.utils.GsonLocalDateTypeAdapter;
24 import org.openhab.binding.surepetcare.internal.utils.GsonLocalTimeTypeAdapter;
25 import org.openhab.binding.surepetcare.internal.utils.GsonZonedDateTimeTypeAdapter;
26 import org.openhab.core.thing.ThingTypeUID;
28 import com.google.gson.FieldNamingPolicy;
29 import com.google.gson.Gson;
30 import com.google.gson.GsonBuilder;
33 * The {@link SurePetcareConstants} class defines common constants, which are used across the whole binding.
35 * @author Rene Scherer - Initial contribution
38 public class SurePetcareConstants {
40 public static final String BINDING_ID = "surepetcare";
42 // List all Thing Type UIDs, related to the binding
43 public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "bridge");
44 public static final ThingTypeUID THING_TYPE_HOUSEHOLD = new ThingTypeUID(BINDING_ID, "household");
45 public static final ThingTypeUID THING_TYPE_PET = new ThingTypeUID(BINDING_ID, "pet");
46 public static final ThingTypeUID THING_TYPE_HUB_DEVICE = new ThingTypeUID(BINDING_ID, "hubDevice");
47 public static final ThingTypeUID THING_TYPE_FLAP_DEVICE = new ThingTypeUID(BINDING_ID, "flapDevice");
48 public static final ThingTypeUID THING_TYPE_FEEDER_DEVICE = new ThingTypeUID(BINDING_ID, "feederDevice");
50 public static final Set<ThingTypeUID> BRIDGE_THING_TYPES_UIDS = Set.of(THING_TYPE_BRIDGE);
51 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = new HashSet<>(Arrays.asList(THING_TYPE_HOUSEHOLD,
52 THING_TYPE_PET, THING_TYPE_HUB_DEVICE, THING_TYPE_FLAP_DEVICE, THING_TYPE_FEEDER_DEVICE));
54 public static final long DEFAULT_REFRESH_INTERVAL_TOPOLOGY = 36000; // 10 hours
55 public static final long DEFAULT_REFRESH_INTERVAL_STATUS = 300; // 5 mins
56 public static final int DEFAULT_HTTP_TIMEOUT = 8;
58 public static final String PROPERTY_NAME_ID = "id";
60 public static final int FLAP_MAX_NUMBER_OF_CURFEWS = 4;
61 public static final int BOWL_ID_ONE_BOWL_USED = 1;
62 public static final int BOWL_ID_TWO_BOWLS_USED = 4;
64 public static final Gson GSON = new GsonBuilder()
65 .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
66 .registerTypeAdapter(ZonedDateTime.class, new GsonZonedDateTimeTypeAdapter())
67 .registerTypeAdapter(LocalDate.class, new GsonLocalDateTypeAdapter())
68 .registerTypeAdapter(LocalTime.class, new GsonLocalTimeTypeAdapter()).create();
70 // Bridge Channel Names
71 public static final String BRIDGE_CHANNEL_REFRESH = "refresh";
73 // Household Channel Names
74 public static final String HOUSEHOLD_CHANNEL_ID = "id";
75 public static final String HOUSEHOLD_CHANNEL_NAME = "name";
76 public static final String HOUSEHOLD_CHANNEL_TIMEZONE_ID = "timezoneId";
78 // Device Channel Names
79 public static final String DEVICE_CHANNEL_ID = "id";
80 public static final String DEVICE_CHANNEL_NAME = "name";
81 public static final String DEVICE_CHANNEL_PRODUCT = "product";
82 public static final String DEVICE_CHANNEL_LED_MODE = "ledMode";
83 public static final String DEVICE_CHANNEL_PAIRING_MODE = "pairingMode";
84 public static final String DEVICE_CHANNEL_ONLINE = "online";
85 public static final String DEVICE_CHANNEL_CURFEW_BASE = "curfew";
86 public static final String DEVICE_CHANNEL_CURFEW_ENABLED = DEVICE_CHANNEL_CURFEW_BASE + "Enabled";
87 public static final String DEVICE_CHANNEL_CURFEW_LOCK_TIME = DEVICE_CHANNEL_CURFEW_BASE + "LockTime";
88 public static final String DEVICE_CHANNEL_CURFEW_UNLOCK_TIME = DEVICE_CHANNEL_CURFEW_BASE + "UnlockTime";
89 public static final String DEVICE_CHANNEL_LOCKING_MODE = "lockingMode";
90 public static final String DEVICE_CHANNEL_BATTERY_VOLTAGE = "batteryVoltage";
91 public static final String DEVICE_CHANNEL_BATTERY_LEVEL = "batteryLevel";
92 public static final String DEVICE_CHANNEL_LOW_BATTERY = "lowBattery";
93 public static final String DEVICE_CHANNEL_DEVICE_RSSI = "deviceRSSI";
94 public static final String DEVICE_CHANNEL_HUB_RSSI = "hubRSSI";
95 public static final String DEVICE_CHANNEL_BOWLS_FOOD = "bowlsFood";
96 public static final String DEVICE_CHANNEL_BOWLS_TARGET = "bowlsTarget";
97 public static final String DEVICE_CHANNEL_BOWLS_FOOD_LEFT = "bowlsFoodLeft";
98 public static final String DEVICE_CHANNEL_BOWLS_TARGET_LEFT = "bowlsTargetLeft";
99 public static final String DEVICE_CHANNEL_BOWLS_FOOD_RIGHT = "bowlsFoodRight";
100 public static final String DEVICE_CHANNEL_BOWLS_TARGET_RIGHT = "bowlsTargetRight";
101 public static final String DEVICE_CHANNEL_BOWLS = "bowls";
102 public static final String DEVICE_CHANNEL_BOWLS_CLOSE_DELAY = "bowlsCloseDelay";
103 public static final String DEVICE_CHANNEL_BOWLS_TRAINING_MODE = "bowlsTrainingMode";
106 public static final String PET_CHANNEL_ID = "id";
107 public static final String PET_CHANNEL_NAME = "name";
108 public static final String PET_CHANNEL_COMMENT = "comment";
109 public static final String PET_CHANNEL_GENDER = "gender";
110 public static final String PET_CHANNEL_BREED = "breed";
111 public static final String PET_CHANNEL_SPECIES = "species";
112 public static final String PET_CHANNEL_PHOTO = "photo";
113 public static final String PET_CHANNEL_LOCATION = "location";
114 public static final String PET_CHANNEL_LOCATION_CHANGED = "locationChanged";
115 public static final String PET_CHANNEL_LOCATION_TIMEOFFSET = "locationTimeoffset";
116 public static final String PET_CHANNEL_LOCATION_CHANGED_THROUGH = "locationChangedThrough";
117 public static final String PET_CHANNEL_DATE_OF_BIRTH = "dateOfBirth";
118 public static final String PET_CHANNEL_WEIGHT = "weight";
119 public static final String PET_CHANNEL_TAG_IDENTIFIER = "tagIdentifier";
120 public static final String PET_CHANNEL_FEEDER_DEVICE = "feederDevice";
121 public static final String PET_CHANNEL_FEEDER_LASTFEEDING = "feederLastFeeding";
122 public static final String PET_CHANNEL_FEEDER_LAST_CHANGE = "feederLastChange";
123 public static final String PET_CHANNEL_FEEDER_LAST_CHANGE_LEFT = "feederLastChangeLeft";
124 public static final String PET_CHANNEL_FEEDER_LAST_CHANGE_RIGHT = "feederLastChangeRight";