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