[netatmo] Improve channel helpers (#12851)
Signed-off-by: clinique <gael@lhopital.org>
This commit is contained in:
@@ -112,13 +112,8 @@ public class NetatmoHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
CommonInterface handler = moduleType.isABridge() ? new DeviceHandler((Bridge) thing) : new ModuleHandler(thing);
|
CommonInterface handler = moduleType.isABridge() ? new DeviceHandler((Bridge) thing) : new ModuleHandler(thing);
|
||||||
|
|
||||||
List<ChannelHelper> helpers = new ArrayList<>();
|
List<ChannelHelper> helpers = new ArrayList<>();
|
||||||
moduleType.channelHelpers.forEach(helperClass -> {
|
moduleType.channelGroups
|
||||||
try {
|
.forEach(channelGroup -> channelGroup.getHelperInstance().ifPresent(helper -> helpers.add(helper)));
|
||||||
helpers.add(helperClass.getConstructor().newInstance());
|
|
||||||
} catch (ReflectiveOperationException e) {
|
|
||||||
logger.warn("Error creating or initializing helper class : {}", e.getMessage());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
moduleType.capabilities.forEach(capability -> {
|
moduleType.capabilities.forEach(capability -> {
|
||||||
Capability newCap = null;
|
Capability newCap = null;
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
||||||
|
*
|
||||||
|
* See the NOTICE file(s) distributed with this work for additional
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* This program and the accompanying materials are made available under the
|
||||||
|
* terms of the Eclipse Public License 2.0 which is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-2.0
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: EPL-2.0
|
||||||
|
*/
|
||||||
|
package org.openhab.binding.netatmo.internal.api.data;
|
||||||
|
|
||||||
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.AirQualityChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.BatteryChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.ChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.HumidityChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.LocationChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.MeasuresChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.NoiseChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.SignalChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.TemperatureChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.TimestampChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.providers.NetatmoThingTypeProvider;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link ChannelGroup} makes the link between a channel helper and some group types. It also
|
||||||
|
* defines some standard and common channel groups used by more than one thing.
|
||||||
|
*
|
||||||
|
* @author Gaël L'hopital - Initial contribution
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
|
public class ChannelGroup {
|
||||||
|
public static final ChannelGroup SIGNAL = new ChannelGroup(SignalChannelHelper.class, GROUP_SIGNAL);
|
||||||
|
public static final ChannelGroup EVENT = new ChannelGroup(EventChannelHelper.class, GROUP_LAST_EVENT);
|
||||||
|
public static final ChannelGroup MEASURE = new ChannelGroup(MeasuresChannelHelper.class);
|
||||||
|
public static final ChannelGroup BATTERY = new ChannelGroup(BatteryChannelHelper.class, GROUP_BATTERY);
|
||||||
|
public static final ChannelGroup LOCATION = new ChannelGroup(LocationChannelHelper.class, GROUP_LOCATION);
|
||||||
|
public static final ChannelGroup BATTERY_EXT = new ChannelGroup(BatteryChannelHelper.class,
|
||||||
|
GROUP_TYPE_BATTERY_EXTENDED);
|
||||||
|
public static final ChannelGroup TSTAMP_EXT = new ChannelGroup(TimestampChannelHelper.class,
|
||||||
|
GROUP_TYPE_TIMESTAMP_EXTENDED);
|
||||||
|
public static final ChannelGroup TEMP_OUTSIDE_EXT = new ChannelGroup(TemperatureChannelHelper.class,
|
||||||
|
MeasureClass.OUTSIDE_TEMPERATURE, GROUP_TYPE_TEMPERATURE_OUTSIDE);
|
||||||
|
public static final ChannelGroup TEMP_INSIDE_EXT = new ChannelGroup(TemperatureChannelHelper.class,
|
||||||
|
MeasureClass.INSIDE_TEMPERATURE, GROUP_TYPE_TEMPERATURE_EXTENDED);
|
||||||
|
public static final ChannelGroup TEMP_INSIDE = new ChannelGroup(TemperatureChannelHelper.class,
|
||||||
|
MeasureClass.INSIDE_TEMPERATURE, GROUP_TEMPERATURE);
|
||||||
|
public static final ChannelGroup AIR_QUALITY = new ChannelGroup(AirQualityChannelHelper.class, MeasureClass.CO2,
|
||||||
|
GROUP_AIR_QUALITY);
|
||||||
|
public static final ChannelGroup NOISE = new ChannelGroup(NoiseChannelHelper.class, MeasureClass.NOISE,
|
||||||
|
GROUP_NOISE);
|
||||||
|
public static final ChannelGroup HUMIDITY = new ChannelGroup(HumidityChannelHelper.class, MeasureClass.HUMIDITY,
|
||||||
|
GROUP_HUMIDITY);
|
||||||
|
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(ChannelGroup.class);
|
||||||
|
private final Class<? extends ChannelHelper> helper;
|
||||||
|
public final Set<String> groupTypes;
|
||||||
|
public final Set<String> extensions;
|
||||||
|
|
||||||
|
ChannelGroup(Class<? extends ChannelHelper> helper, String... groupTypes) {
|
||||||
|
this(helper, Set.of(), groupTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChannelGroup(Class<? extends ChannelHelper> helper, MeasureClass measureClass, String... groupTypes) {
|
||||||
|
this(helper, measureClass.channels.keySet(), groupTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ChannelGroup(Class<? extends ChannelHelper> helper, Set<String> extensions, String... groupTypes) {
|
||||||
|
this.helper = helper;
|
||||||
|
this.groupTypes = Set.of(groupTypes);
|
||||||
|
this.extensions = extensions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<ChannelHelper> getHelperInstance() {
|
||||||
|
try {
|
||||||
|
return Optional.of(helper.getConstructor(Set.class).newInstance(
|
||||||
|
groupTypes.stream().map(NetatmoThingTypeProvider::toGroupName).collect(Collectors.toSet())));
|
||||||
|
} catch (ReflectiveOperationException e) {
|
||||||
|
logger.warn("Error creating or initializing helper class : {}", e.getMessage());
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,17 +12,19 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.api.data;
|
package org.openhab.binding.netatmo.internal.api.data;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.BINDING_ID;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.*;
|
import static org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.*;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea;
|
||||||
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
import org.openhab.binding.netatmo.internal.handler.capability.AirCareCapability;
|
import org.openhab.binding.netatmo.internal.handler.capability.AirCareCapability;
|
||||||
import org.openhab.binding.netatmo.internal.handler.capability.CameraCapability;
|
import org.openhab.binding.netatmo.internal.handler.capability.CameraCapability;
|
||||||
import org.openhab.binding.netatmo.internal.handler.capability.Capability;
|
import org.openhab.binding.netatmo.internal.handler.capability.Capability;
|
||||||
@@ -36,36 +38,20 @@ import org.openhab.binding.netatmo.internal.handler.capability.PresenceCapabilit
|
|||||||
import org.openhab.binding.netatmo.internal.handler.capability.RoomCapability;
|
import org.openhab.binding.netatmo.internal.handler.capability.RoomCapability;
|
||||||
import org.openhab.binding.netatmo.internal.handler.capability.WeatherCapability;
|
import org.openhab.binding.netatmo.internal.handler.capability.WeatherCapability;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.AirQualityChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.AirQualityChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.AirQualityExtChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.BatteryChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.BatteryExtChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.CameraChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.CameraChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.ChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.EnergyChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.DoorbellChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventDoorbellChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventDoorbellChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventPersonChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.EventPersonChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.HomeEnergyChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.HomeSecurityChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.HumidityChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.LocationChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.MeasuresChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.NoiseChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.PersonChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.PersonChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.PresenceChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.PresenceChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.PressureChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.PressureChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.PressureExtChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.RainChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.RainChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.RoomChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.RoomChannelHelper;
|
||||||
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.SecurityChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.SetpointChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.SetpointChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.SignalChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.SirenChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.SirenChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.TemperatureChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.TemperatureExtChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.TemperatureOutChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.Therm1ChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.Therm1ChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.TimestampChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.TimestampChannelHelper;
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.TimestampExtChannelHelper;
|
|
||||||
import org.openhab.binding.netatmo.internal.handler.channelhelper.WindChannelHelper;
|
import org.openhab.binding.netatmo.internal.handler.channelhelper.WindChannelHelper;
|
||||||
import org.openhab.core.thing.ThingTypeUID;
|
import org.openhab.core.thing.ThingTypeUID;
|
||||||
|
|
||||||
@@ -76,111 +62,102 @@ import org.openhab.core.thing.ThingTypeUID;
|
|||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public enum ModuleType {
|
public enum ModuleType {
|
||||||
UNKNOWN(FeatureArea.NONE, "", null, List.of(), List.of()),
|
UNKNOWN(FeatureArea.NONE, "", null, Set.of()),
|
||||||
ACCOUNT(FeatureArea.NONE, "", null, List.of(), List.of()),
|
ACCOUNT(FeatureArea.NONE, "", null, Set.of()),
|
||||||
|
|
||||||
HOME(FeatureArea.NONE, "NAHome", ACCOUNT,
|
HOME(FeatureArea.NONE, "NAHome", ACCOUNT,
|
||||||
List.of(DeviceCapability.class, EventCapability.class, HomeCapability.class, ChannelHelperCapability.class),
|
Set.of(DeviceCapability.class, EventCapability.class, HomeCapability.class, ChannelHelperCapability.class),
|
||||||
List.of(HomeSecurityChannelHelper.class, HomeEnergyChannelHelper.class)),
|
new ChannelGroup(SecurityChannelHelper.class, GROUP_SECURITY),
|
||||||
|
new ChannelGroup(EnergyChannelHelper.class, GROUP_ENERGY)),
|
||||||
|
|
||||||
PERSON(FeatureArea.SECURITY, "NAPerson", HOME,
|
PERSON(FeatureArea.SECURITY, "NAPerson", HOME,
|
||||||
List.of(EventCapability.class, PersonCapability.class, ChannelHelperCapability.class),
|
Set.of(EventCapability.class, PersonCapability.class, ChannelHelperCapability.class),
|
||||||
List.of(PersonChannelHelper.class, EventPersonChannelHelper.class)),
|
new ChannelGroup(PersonChannelHelper.class, GROUP_PERSON),
|
||||||
|
new ChannelGroup(EventPersonChannelHelper.class, GROUP_PERSON_LAST_EVENT)),
|
||||||
|
|
||||||
WELCOME(FeatureArea.SECURITY, "NACamera", HOME,
|
WELCOME(FeatureArea.SECURITY, "NACamera", HOME,
|
||||||
List.of(EventCapability.class, CameraCapability.class, ChannelHelperCapability.class),
|
Set.of(EventCapability.class, CameraCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(CameraChannelHelper.class, SignalChannelHelper.class, EventChannelHelper.class)),
|
ChannelGroup.EVENT, new ChannelGroup(CameraChannelHelper.class, GROUP_CAM_STATUS, GROUP_CAM_LIVE)),
|
||||||
|
|
||||||
SIREN(FeatureArea.SECURITY, "NIS", WELCOME, List.of(ChannelHelperCapability.class),
|
SIREN(FeatureArea.SECURITY, "NIS", WELCOME, Set.of(ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(SirenChannelHelper.class, BatteryChannelHelper.class, TimestampChannelHelper.class,
|
ChannelGroup.BATTERY, new ChannelGroup(TimestampChannelHelper.class, GROUP_TIMESTAMP),
|
||||||
SignalChannelHelper.class)),
|
new ChannelGroup(SirenChannelHelper.class, GROUP_SIREN)),
|
||||||
|
|
||||||
PRESENCE(FeatureArea.SECURITY, "NOC", HOME,
|
PRESENCE(FeatureArea.SECURITY, "NOC", HOME,
|
||||||
List.of(EventCapability.class, PresenceCapability.class, ChannelHelperCapability.class),
|
Set.of(EventCapability.class, PresenceCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(PresenceChannelHelper.class, SignalChannelHelper.class, EventChannelHelper.class)),
|
ChannelGroup.EVENT,
|
||||||
|
new ChannelGroup(PresenceChannelHelper.class, GROUP_CAM_STATUS, GROUP_CAM_LIVE, GROUP_PRESENCE)),
|
||||||
|
|
||||||
DOORBELL(FeatureArea.SECURITY, "NDB", HOME,
|
DOORBELL(FeatureArea.SECURITY, "NDB", HOME,
|
||||||
List.of(EventCapability.class, CameraCapability.class, ChannelHelperCapability.class),
|
Set.of(EventCapability.class, CameraCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(DoorbellChannelHelper.class, SignalChannelHelper.class, EventDoorbellChannelHelper.class)),
|
new ChannelGroup(CameraChannelHelper.class, GROUP_DOORBELL_STATUS, GROUP_DOORBELL_LIVE),
|
||||||
|
new ChannelGroup(EventDoorbellChannelHelper.class, GROUP_DOORBELL_LAST_EVENT, GROUP_DOORBELL_SUB_EVENT)),
|
||||||
|
|
||||||
WEATHER_STATION(FeatureArea.WEATHER, "NAMain", ACCOUNT,
|
WEATHER_STATION(FeatureArea.WEATHER, "NAMain", ACCOUNT,
|
||||||
List.of(DeviceCapability.class, WeatherCapability.class, MeasureCapability.class,
|
Set.of(DeviceCapability.class, WeatherCapability.class, MeasureCapability.class,
|
||||||
ChannelHelperCapability.class),
|
ChannelHelperCapability.class),
|
||||||
List.of(PressureExtChannelHelper.class, NoiseChannelHelper.class, HumidityChannelHelper.class,
|
ChannelGroup.SIGNAL, ChannelGroup.HUMIDITY, ChannelGroup.TSTAMP_EXT, ChannelGroup.MEASURE,
|
||||||
TemperatureExtChannelHelper.class, AirQualityChannelHelper.class, LocationChannelHelper.class,
|
ChannelGroup.AIR_QUALITY, ChannelGroup.LOCATION, ChannelGroup.NOISE, ChannelGroup.TEMP_INSIDE_EXT,
|
||||||
TimestampExtChannelHelper.class, MeasuresChannelHelper.class, SignalChannelHelper.class)),
|
new ChannelGroup(PressureChannelHelper.class, MeasureClass.PRESSURE, GROUP_TYPE_PRESSURE_EXTENDED)),
|
||||||
|
|
||||||
OUTDOOR(FeatureArea.WEATHER, "NAModule1", WEATHER_STATION,
|
OUTDOOR(FeatureArea.WEATHER, "NAModule1", WEATHER_STATION,
|
||||||
List.of(MeasureCapability.class, ChannelHelperCapability.class),
|
Set.of(MeasureCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL, ChannelGroup.HUMIDITY,
|
||||||
List.of(HumidityChannelHelper.class, TemperatureOutChannelHelper.class, BatteryChannelHelper.class,
|
ChannelGroup.TSTAMP_EXT, ChannelGroup.MEASURE, ChannelGroup.BATTERY, ChannelGroup.TEMP_OUTSIDE_EXT),
|
||||||
MeasuresChannelHelper.class, TimestampExtChannelHelper.class, SignalChannelHelper.class)),
|
|
||||||
|
|
||||||
WIND(FeatureArea.WEATHER, "NAModule2", WEATHER_STATION, List.of(ChannelHelperCapability.class),
|
WIND(FeatureArea.WEATHER, "NAModule2", WEATHER_STATION, Set.of(ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(WindChannelHelper.class, BatteryChannelHelper.class, TimestampExtChannelHelper.class,
|
ChannelGroup.TSTAMP_EXT, ChannelGroup.BATTERY, new ChannelGroup(WindChannelHelper.class, GROUP_WIND)),
|
||||||
SignalChannelHelper.class)),
|
|
||||||
|
|
||||||
RAIN(FeatureArea.WEATHER, "NAModule3", WEATHER_STATION,
|
RAIN(FeatureArea.WEATHER, "NAModule3", WEATHER_STATION,
|
||||||
List.of(MeasureCapability.class, ChannelHelperCapability.class),
|
Set.of(MeasureCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(RainChannelHelper.class, BatteryChannelHelper.class, MeasuresChannelHelper.class,
|
ChannelGroup.TSTAMP_EXT, ChannelGroup.MEASURE, ChannelGroup.BATTERY,
|
||||||
TimestampExtChannelHelper.class, SignalChannelHelper.class)),
|
new ChannelGroup(RainChannelHelper.class, MeasureClass.RAIN_QUANTITY, GROUP_RAIN)),
|
||||||
|
|
||||||
INDOOR(FeatureArea.WEATHER, "NAModule4", WEATHER_STATION,
|
INDOOR(FeatureArea.WEATHER, "NAModule4", WEATHER_STATION,
|
||||||
List.of(MeasureCapability.class, ChannelHelperCapability.class),
|
Set.of(MeasureCapability.class, ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(HumidityChannelHelper.class, TemperatureExtChannelHelper.class, AirQualityChannelHelper.class,
|
ChannelGroup.TSTAMP_EXT, ChannelGroup.MEASURE, ChannelGroup.BATTERY, ChannelGroup.HUMIDITY,
|
||||||
BatteryChannelHelper.class, MeasuresChannelHelper.class, TimestampExtChannelHelper.class,
|
ChannelGroup.TEMP_INSIDE_EXT, ChannelGroup.AIR_QUALITY),
|
||||||
SignalChannelHelper.class)),
|
|
||||||
|
|
||||||
HOME_COACH(FeatureArea.AIR_CARE, "NHC", ACCOUNT,
|
HOME_COACH(FeatureArea.AIR_CARE, "NHC", ACCOUNT,
|
||||||
List.of(DeviceCapability.class, AirCareCapability.class, MeasureCapability.class,
|
Set.of(DeviceCapability.class, AirCareCapability.class, MeasureCapability.class,
|
||||||
ChannelHelperCapability.class),
|
ChannelHelperCapability.class),
|
||||||
List.of(NoiseChannelHelper.class, HumidityChannelHelper.class, AirQualityExtChannelHelper.class,
|
ChannelGroup.LOCATION, ChannelGroup.SIGNAL, ChannelGroup.NOISE, ChannelGroup.HUMIDITY,
|
||||||
TemperatureChannelHelper.class, PressureChannelHelper.class, TimestampExtChannelHelper.class,
|
ChannelGroup.TEMP_INSIDE, ChannelGroup.MEASURE, ChannelGroup.TSTAMP_EXT,
|
||||||
SignalChannelHelper.class, MeasuresChannelHelper.class, LocationChannelHelper.class)),
|
new ChannelGroup(AirQualityChannelHelper.class, GROUP_TYPE_AIR_QUALITY_EXTENDED),
|
||||||
|
new ChannelGroup(PressureChannelHelper.class, MeasureClass.PRESSURE, GROUP_PRESSURE)),
|
||||||
|
|
||||||
PLUG(FeatureArea.ENERGY, "NAPlug", HOME, List.of(ChannelHelperCapability.class),
|
PLUG(FeatureArea.ENERGY, "NAPlug", HOME, Set.of(ChannelHelperCapability.class), ChannelGroup.SIGNAL),
|
||||||
List.of(SignalChannelHelper.class)),
|
|
||||||
|
|
||||||
VALVE(FeatureArea.ENERGY, "NRV", PLUG, List.of(ChannelHelperCapability.class),
|
VALVE(FeatureArea.ENERGY, "NRV", PLUG, Set.of(ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(BatteryExtChannelHelper.class, SignalChannelHelper.class)),
|
ChannelGroup.BATTERY_EXT),
|
||||||
|
|
||||||
THERMOSTAT(FeatureArea.ENERGY, "NATherm1", PLUG, List.of(ChannelHelperCapability.class),
|
THERMOSTAT(FeatureArea.ENERGY, "NATherm1", PLUG, Set.of(ChannelHelperCapability.class), ChannelGroup.SIGNAL,
|
||||||
List.of(Therm1ChannelHelper.class, BatteryExtChannelHelper.class, SignalChannelHelper.class)),
|
ChannelGroup.BATTERY_EXT, new ChannelGroup(Therm1ChannelHelper.class, GROUP_TYPE_TH_PROPERTIES)),
|
||||||
|
|
||||||
ROOM(FeatureArea.ENERGY, "NARoom", HOME, List.of(RoomCapability.class, ChannelHelperCapability.class),
|
ROOM(FeatureArea.ENERGY, "NARoom", HOME, Set.of(RoomCapability.class, ChannelHelperCapability.class),
|
||||||
List.of(RoomChannelHelper.class, SetpointChannelHelper.class));
|
new ChannelGroup(RoomChannelHelper.class, GROUP_TYPE_ROOM_PROPERTIES, GROUP_TYPE_ROOM_TEMPERATURE),
|
||||||
|
new ChannelGroup(SetpointChannelHelper.class, GROUP_SETPOINT));
|
||||||
|
|
||||||
public static final EnumSet<ModuleType> AS_SET = EnumSet.allOf(ModuleType.class);
|
public static final EnumSet<ModuleType> AS_SET = EnumSet.allOf(ModuleType.class);
|
||||||
|
|
||||||
private final @Nullable ModuleType bridgeType;
|
private final @Nullable ModuleType bridgeType;
|
||||||
public final List<String> groupTypes = new LinkedList<>();
|
public final Set<ChannelGroup> channelGroups;
|
||||||
public final List<String> extensions = new LinkedList<>();
|
public final Set<Class<? extends Capability>> capabilities;
|
||||||
public final List<Class<? extends ChannelHelper>> channelHelpers;
|
|
||||||
public final List<Class<? extends Capability>> capabilities;
|
|
||||||
public final ThingTypeUID thingTypeUID;
|
public final ThingTypeUID thingTypeUID;
|
||||||
public final FeatureArea feature;
|
public final FeatureArea feature;
|
||||||
public final String apiName;
|
public final String apiName;
|
||||||
|
|
||||||
ModuleType(FeatureArea feature, String apiName, @Nullable ModuleType bridge,
|
ModuleType(FeatureArea feature, String apiName, @Nullable ModuleType bridge,
|
||||||
List<Class<? extends Capability>> capabilities, List<Class<? extends ChannelHelper>> helpers) {
|
Set<Class<? extends Capability>> capabilities, ChannelGroup... channelGroups) {
|
||||||
this.channelHelpers = helpers;
|
|
||||||
this.bridgeType = bridge;
|
this.bridgeType = bridge;
|
||||||
this.feature = feature;
|
this.feature = feature;
|
||||||
this.capabilities = capabilities;
|
this.capabilities = capabilities;
|
||||||
this.apiName = apiName;
|
this.apiName = apiName;
|
||||||
thingTypeUID = new ThingTypeUID(BINDING_ID, name().toLowerCase().replace("_", "-"));
|
this.channelGroups = Set.of(channelGroups);
|
||||||
try {
|
this.thingTypeUID = new ThingTypeUID(BINDING_ID, name().toLowerCase().replace("_", "-"));
|
||||||
for (Class<? extends ChannelHelper> helperClass : helpers) {
|
|
||||||
ChannelHelper helper = helperClass.getConstructor().newInstance();
|
|
||||||
groupTypes.addAll(helper.getChannelGroupTypes());
|
|
||||||
extensions.addAll(helper.getExtensibleChannels());
|
|
||||||
}
|
|
||||||
} catch (RuntimeException | ReflectiveOperationException e) {
|
|
||||||
throw new IllegalArgumentException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLogical() {
|
public boolean isLogical() {
|
||||||
return !channelHelpers.contains(SignalChannelHelper.class);
|
return !channelGroups.contains(ChannelGroup.SIGNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isABridge() {
|
public boolean isABridge() {
|
||||||
@@ -192,10 +169,18 @@ public enum ModuleType {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getExtensions() {
|
||||||
|
return channelGroups.stream().map(cg -> cg.extensions).flatMap(Set::stream).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getGroupTypes() {
|
||||||
|
return channelGroups.stream().map(cg -> cg.groupTypes).flatMap(Set::stream).collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
public int[] getSignalLevels() {
|
public int[] getSignalLevels() {
|
||||||
if (!isLogical()) {
|
if (!isLogical()) {
|
||||||
return (channelHelpers.contains(BatteryChannelHelper.class)
|
return (channelGroups.contains(ChannelGroup.BATTERY) || channelGroups.contains(ChannelGroup.BATTERY_EXT))
|
||||||
|| channelHelpers.contains(BatteryExtChannelHelper.class)) ? RADIO_SIGNAL_LEVELS
|
? RADIO_SIGNAL_LEVELS
|
||||||
: WIFI_SIGNAL_LEVELS;
|
: WIFI_SIGNAL_LEVELS;
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|||||||
@@ -15,10 +15,13 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
||||||
|
import org.openhab.core.library.types.DecimalType;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,16 +33,18 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class AirQualityChannelHelper extends ChannelHelper {
|
public class AirQualityChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public AirQualityChannelHelper() {
|
public AirQualityChannelHelper(Set<String> providedGroups) {
|
||||||
this(GROUP_AIR_QUALITY);
|
super(providedGroups);
|
||||||
}
|
|
||||||
|
|
||||||
protected AirQualityChannelHelper(String groupName) {
|
|
||||||
super(groupName, MeasureClass.CO2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
||||||
return CHANNEL_CO2.equals(channelId) ? toQuantityType(dashboard.getCo2(), MeasureClass.CO2) : null;
|
switch (channelId) {
|
||||||
|
case CHANNEL_CO2:
|
||||||
|
return toQuantityType(dashboard.getCo2(), MeasureClass.CO2);
|
||||||
|
case CHANNEL_HEALTH_INDEX:
|
||||||
|
return new DecimalType(dashboard.getHealthIdx());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
|
||||||
import org.openhab.core.library.types.DecimalType;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link AirQualityExtChannelHelper} handles specific channels of NHC thing.
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class AirQualityExtChannelHelper extends AirQualityChannelHelper {
|
|
||||||
|
|
||||||
public AirQualityExtChannelHelper() {
|
|
||||||
super(GROUP_TYPE_AIR_QUALITY_EXTENDED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
|
||||||
return CHANNEL_HEALTH_INDEX.equals(channelId) ? new DecimalType(dashboard.getHealthIdx())
|
|
||||||
: super.internalGetDashboard(channelId, dashboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,9 +13,13 @@
|
|||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.BatteryState;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Module;
|
import org.openhab.binding.netatmo.internal.api.dto.Module;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
||||||
@@ -33,22 +37,22 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class BatteryChannelHelper extends ChannelHelper {
|
public class BatteryChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public BatteryChannelHelper() {
|
public BatteryChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_BATTERY);
|
super(providedGroups);
|
||||||
}
|
|
||||||
|
|
||||||
protected BatteryChannelHelper(String groupName) {
|
|
||||||
super(groupName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected @Nullable State internalGetProperty(String channelId, NAThing naThing, Configuration config) {
|
protected @Nullable State internalGetProperty(String channelId, NAThing naThing, Configuration config) {
|
||||||
int percent = -1;
|
int percent = -1;
|
||||||
|
BatteryState batteryState = BatteryState.UNKNOWN;
|
||||||
if (naThing instanceof Module) {
|
if (naThing instanceof Module) {
|
||||||
percent = ((Module) naThing).getBatteryPercent();
|
percent = ((Module) naThing).getBatteryPercent();
|
||||||
}
|
batteryState = ((Module) naThing).getBatteryState();
|
||||||
if (naThing instanceof HomeStatusModule) {
|
} else if (naThing instanceof HomeStatusModule) {
|
||||||
percent = ((HomeStatusModule) naThing).getBatteryState().level;
|
percent = ((HomeStatusModule) naThing).getBatteryState().level;
|
||||||
|
batteryState = ((HomeStatusModule) naThing).getBatteryState();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
switch (channelId) {
|
switch (channelId) {
|
||||||
case CHANNEL_VALUE:
|
case CHANNEL_VALUE:
|
||||||
@@ -59,6 +63,8 @@ public class BatteryChannelHelper extends ChannelHelper {
|
|||||||
if (percent >= 0) {
|
if (percent >= 0) {
|
||||||
return OnOffType.from(percent < 20);
|
return OnOffType.from(percent < 20);
|
||||||
}
|
}
|
||||||
|
case CHANNEL_BATTERY_STATUS:
|
||||||
|
return toStringType(batteryState);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Module;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
|
||||||
import org.openhab.core.config.core.Configuration;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link BatteryExtChannelHelper} handles specific channels of modules using batteries
|
|
||||||
* having battery status information available on top of standard information
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class BatteryExtChannelHelper extends BatteryChannelHelper {
|
|
||||||
|
|
||||||
public BatteryExtChannelHelper() {
|
|
||||||
super(GROUP_TYPE_BATTERY_EXTENDED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetProperty(String channelId, NAThing naThing, Configuration config) {
|
|
||||||
if (CHANNEL_BATTERY_STATUS.equals(channelId)) {
|
|
||||||
if (naThing instanceof Module) {
|
|
||||||
return toStringType(((Module) naThing).getBatteryState());
|
|
||||||
}
|
|
||||||
if (naThing instanceof HomeStatusModule) {
|
|
||||||
return toStringType(((HomeStatusModule) naThing).getBatteryState());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.internalGetProperty(channelId, naThing, config);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
||||||
@@ -38,11 +40,7 @@ public class CameraChannelHelper extends ChannelHelper {
|
|||||||
private @Nullable String vpnUrl;
|
private @Nullable String vpnUrl;
|
||||||
private @Nullable String localUrl;
|
private @Nullable String localUrl;
|
||||||
|
|
||||||
public CameraChannelHelper() {
|
public CameraChannelHelper(Set<String> providedGroups) {
|
||||||
this(GROUP_CAM_STATUS, GROUP_CAM_LIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected CameraChannelHelper(String... providedGroups) {
|
|
||||||
super(providedGroups);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,18 +12,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Event;
|
import org.openhab.binding.netatmo.internal.api.dto.Event;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
|
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
||||||
import org.openhab.binding.netatmo.internal.providers.NetatmoThingTypeProvider;
|
|
||||||
import org.openhab.core.config.core.Configuration;
|
import org.openhab.core.config.core.Configuration;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
|
|
||||||
@@ -35,19 +32,12 @@ import org.openhab.core.types.State;
|
|||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public abstract class ChannelHelper {
|
public abstract class ChannelHelper {
|
||||||
|
private final Set<String> channelGroups;
|
||||||
|
|
||||||
private @Nullable NAObject data;
|
private @Nullable NAObject data;
|
||||||
private final Set<String> channelGroupTypes;
|
|
||||||
private final Set<String> channelGroups = new HashSet<>();
|
|
||||||
private Set<String> extensibleChannels = Set.of();
|
|
||||||
|
|
||||||
ChannelHelper(String... providedGroups) {
|
public ChannelHelper(Set<String> providedGroups) {
|
||||||
this.channelGroupTypes = Set.of(providedGroups);
|
channelGroups = providedGroups;
|
||||||
channelGroupTypes.forEach(groupType -> channelGroups.add(NetatmoThingTypeProvider.toGroupName(groupType)));
|
|
||||||
}
|
|
||||||
|
|
||||||
ChannelHelper(String providedGroup, MeasureClass measureClass) {
|
|
||||||
this(providedGroup);
|
|
||||||
this.extensibleChannels = measureClass.channels.keySet();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNewData(@Nullable NAObject data) {
|
public void setNewData(@Nullable NAObject data) {
|
||||||
@@ -118,12 +108,4 @@ public abstract class ChannelHelper {
|
|||||||
protected @Nullable State internalGetHomeEvent(String channelId, @Nullable String groupId, HomeEvent event) {
|
protected @Nullable State internalGetHomeEvent(String channelId, @Nullable String groupId, HomeEvent event) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getChannelGroupTypes() {
|
|
||||||
return channelGroupTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<String> getExtensibleChannels() {
|
|
||||||
return extensibleChannels;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link DoorbellChannelHelper} handles specific channels of doorbells
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class DoorbellChannelHelper extends CameraChannelHelper {
|
|
||||||
|
|
||||||
public DoorbellChannelHelper() {
|
|
||||||
super(GROUP_DOORBELL_STATUS, GROUP_DOORBELL_LIVE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,6 +19,7 @@ import java.time.DayOfWeek;
|
|||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@@ -35,16 +36,16 @@ import org.openhab.core.types.State;
|
|||||||
import org.openhab.core.types.UnDefType;
|
import org.openhab.core.types.UnDefType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link HomeEnergyChannelHelper} handles specific channels of thermostat settings at home level.
|
* The {@link EnergyChannelHelper} handles specific channels of thermostat settings at home level.
|
||||||
*
|
*
|
||||||
* @author Gaël L'hopital - Initial contribution
|
* @author Gaël L'hopital - Initial contribution
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class HomeEnergyChannelHelper extends ChannelHelper {
|
public class EnergyChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public HomeEnergyChannelHelper() {
|
public EnergyChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_ENERGY);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.ModuleType;
|
import org.openhab.binding.netatmo.internal.api.data.ModuleType;
|
||||||
@@ -38,11 +40,7 @@ public class EventChannelHelper extends ChannelHelper {
|
|||||||
private @Nullable String vpnUrl, localUrl;
|
private @Nullable String vpnUrl, localUrl;
|
||||||
protected ModuleType moduleType = ModuleType.UNKNOWN;
|
protected ModuleType moduleType = ModuleType.UNKNOWN;
|
||||||
|
|
||||||
public EventChannelHelper() {
|
public EventChannelHelper(Set<String> providedGroups) {
|
||||||
this(GROUP_LAST_EVENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected EventChannelHelper(String... providedGroups) {
|
|
||||||
super(providedGroups);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
|
||||||
@@ -30,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class EventDoorbellChannelHelper extends EventChannelHelper {
|
public class EventDoorbellChannelHelper extends EventChannelHelper {
|
||||||
|
|
||||||
public EventDoorbellChannelHelper() {
|
public EventDoorbellChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_DOORBELL_LAST_EVENT, GROUP_DOORBELL_SUB_EVENT);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.CHANNEL_PERSON_AT_HOME;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class EventPersonChannelHelper extends EventChannelHelper {
|
public class EventPersonChannelHelper extends EventChannelHelper {
|
||||||
|
|
||||||
public EventPersonChannelHelper() {
|
public EventPersonChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_PERSON_LAST_EVENT);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.WeatherUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.WeatherUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class HumidityChannelHelper extends ChannelHelper {
|
public class HumidityChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public HumidityChannelHelper() {
|
public HumidityChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_HUMIDITY, MeasureClass.HUMIDITY);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.CHANNEL_VALUE;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.UnDefType;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class LocationChannelHelper extends ChannelHelper {
|
public class LocationChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public LocationChannelHelper() {
|
public LocationChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_LOCATION);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@@ -29,6 +30,10 @@ import org.openhab.core.types.State;
|
|||||||
public class MeasuresChannelHelper extends ChannelHelper {
|
public class MeasuresChannelHelper extends ChannelHelper {
|
||||||
private @Nullable Map<String, State> measures;
|
private @Nullable Map<String, State> measures;
|
||||||
|
|
||||||
|
public MeasuresChannelHelper(Set<String> providedGroups) {
|
||||||
|
super(providedGroups);
|
||||||
|
}
|
||||||
|
|
||||||
public void setMeasures(Map<String, State> measures) {
|
public void setMeasures(Map<String, State> measures) {
|
||||||
this.measures = measures;
|
this.measures = measures;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,9 +12,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.CHANNEL_VALUE;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -30,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class NoiseChannelHelper extends ChannelHelper {
|
public class NoiseChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public NoiseChannelHelper() {
|
public NoiseChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_NOISE, MeasureClass.NOISE);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeDataPerson;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeDataPerson;
|
||||||
@@ -33,8 +35,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class PersonChannelHelper extends ChannelHelper {
|
public class PersonChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public PersonChannelHelper() {
|
public PersonChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_PERSON);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -12,9 +12,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.CHANNEL_FLOODLIGHT;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
||||||
@@ -31,8 +33,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class PresenceChannelHelper extends CameraChannelHelper {
|
public class PresenceChannelHelper extends CameraChannelHelper {
|
||||||
|
|
||||||
public PresenceChannelHelper() {
|
public PresenceChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_CAM_STATUS, GROUP_CAM_LIVE, GROUP_PRESENCE);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -13,7 +13,9 @@
|
|||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@@ -30,12 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class PressureChannelHelper extends ChannelHelper {
|
public class PressureChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public PressureChannelHelper() {
|
public PressureChannelHelper(Set<String> providedGroups) {
|
||||||
this(GROUP_PRESSURE);
|
super(providedGroups);
|
||||||
}
|
|
||||||
|
|
||||||
protected PressureChannelHelper(String groupName) {
|
|
||||||
super(groupName, MeasureClass.PRESSURE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -45,6 +43,8 @@ public class PressureChannelHelper extends ChannelHelper {
|
|||||||
return toQuantityType(dashboard.getPressure(), MeasureClass.PRESSURE);
|
return toQuantityType(dashboard.getPressure(), MeasureClass.PRESSURE);
|
||||||
case CHANNEL_ABSOLUTE_PRESSURE:
|
case CHANNEL_ABSOLUTE_PRESSURE:
|
||||||
return toQuantityType(dashboard.getAbsolutePressure(), MeasureClass.PRESSURE);
|
return toQuantityType(dashboard.getAbsolutePressure(), MeasureClass.PRESSURE);
|
||||||
|
case CHANNEL_TREND:
|
||||||
|
return toStringType(dashboard.getPressureTrend());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link PressureExtChannelHelper} handles specific behavior of modules measuring pressure
|
|
||||||
* with pressure trend capability
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class PressureExtChannelHelper extends PressureChannelHelper {
|
|
||||||
|
|
||||||
public PressureExtChannelHelper() {
|
|
||||||
super(GROUP_TYPE_PRESSURE_EXTENDED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
|
||||||
return channelId.equals(CHANNEL_TREND) ? toStringType(dashboard.getPressureTrend())
|
|
||||||
: super.internalGetDashboard(channelId, dashboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -30,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class RainChannelHelper extends ChannelHelper {
|
public class RainChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public RainChannelHelper() {
|
public RainChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_RAIN, MeasureClass.RAIN_QUANTITY);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class RoomChannelHelper extends ChannelHelper {
|
public class RoomChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public RoomChannelHelper() {
|
public RoomChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_TYPE_ROOM_TEMPERATURE, GROUP_TYPE_ROOM_PROPERTIES);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toRawType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toRawType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
@@ -30,20 +31,20 @@ import org.openhab.core.types.State;
|
|||||||
import org.openhab.core.types.UnDefType;
|
import org.openhab.core.types.UnDefType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link HomeSecurityChannelHelper} handles specific information for security purpose.
|
* The {@link SecurityChannelHelper} handles specific information for security purpose.
|
||||||
*
|
*
|
||||||
* @author Gaël L'hopital - Initial contribution
|
* @author Gaël L'hopital - Initial contribution
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class HomeSecurityChannelHelper extends ChannelHelper {
|
public class SecurityChannelHelper extends ChannelHelper {
|
||||||
private long persons = -1;
|
private long persons = -1;
|
||||||
private long unknowns = -1;
|
private long unknowns = -1;
|
||||||
private @Nullable String unknownSnapshot;
|
private @Nullable String unknownSnapshot;
|
||||||
private List<String> knownIds = List.of();
|
private List<String> knownIds = List.of();
|
||||||
|
|
||||||
public HomeSecurityChannelHelper() {
|
public SecurityChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_SECURITY);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.UnDefType;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class SetpointChannelHelper extends ChannelHelper {
|
public class SetpointChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public SetpointChannelHelper() {
|
public SetpointChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_SETPOINT);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toQuantityType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class SignalChannelHelper extends ChannelHelper {
|
public class SignalChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public SignalChannelHelper() {
|
public SignalChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_SIGNAL);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
|
||||||
@@ -32,8 +34,8 @@ import org.openhab.core.types.UnDefType;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class SirenChannelHelper extends ChannelHelper {
|
public class SirenChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public SirenChannelHelper() {
|
public SirenChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_SIREN);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.WeatherUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.WeatherUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -30,17 +32,9 @@ import org.openhab.core.types.State;
|
|||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class TemperatureChannelHelper extends ChannelHelper {
|
public class TemperatureChannelHelper extends ChannelHelper {
|
||||||
/*
|
|
||||||
* TemperatureChannelHelper may be used by indoor or outdoor modules. There is no easy way here to decide what is
|
|
||||||
* the handler owning the channelHelper. The usage of OUTSIDE_TEMPERATURE instead of INSIDE_TEMPERATURE is by design
|
|
||||||
* because OUTSIDE_TEMPERATURE has wide value range than INSIDE_TEMPERATURE.
|
|
||||||
*/
|
|
||||||
public TemperatureChannelHelper() {
|
|
||||||
this(GROUP_TEMPERATURE, MeasureClass.OUTSIDE_TEMPERATURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected TemperatureChannelHelper(String groupName, MeasureClass measureClass) {
|
public TemperatureChannelHelper(Set<String> providedGroups) {
|
||||||
super(groupName, measureClass);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,6 +60,8 @@ public class TemperatureChannelHelper extends ChannelHelper {
|
|||||||
double dewPoint = dewPoint(dashboard.getTemperature(), dashboard.getHumidity());
|
double dewPoint = dewPoint(dashboard.getTemperature(), dashboard.getHumidity());
|
||||||
return toQuantityType(dewPointDep(dashboard.getTemperature(), dewPoint),
|
return toQuantityType(dewPointDep(dashboard.getTemperature(), dewPoint),
|
||||||
MeasureClass.OUTSIDE_TEMPERATURE);
|
MeasureClass.OUTSIDE_TEMPERATURE);
|
||||||
|
case CHANNEL_TREND:
|
||||||
|
return toStringType(dashboard.getTempTrend());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link TemperatureExtChannelHelper} handles specific channels of modules measuring temperature
|
|
||||||
* with temp trend capability
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class TemperatureExtChannelHelper extends TemperatureChannelHelper {
|
|
||||||
public TemperatureExtChannelHelper() {
|
|
||||||
super(GROUP_TYPE_TEMPERATURE_EXTENDED, MeasureClass.INSIDE_TEMPERATURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
|
||||||
return CHANNEL_TREND.equals(channelId) ? toStringType(dashboard.getTempTrend())
|
|
||||||
: super.internalGetDashboard(channelId, dashboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toStringType;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link TemperatureOutChannelHelper} handles specific channels of modules measuring temperature
|
|
||||||
* with temp trend capability
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class TemperatureOutChannelHelper extends TemperatureChannelHelper {
|
|
||||||
public TemperatureOutChannelHelper() {
|
|
||||||
super(GROUP_TYPE_TEMPERATURE_OUTSIDE, MeasureClass.OUTSIDE_TEMPERATURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
|
||||||
return CHANNEL_TREND.equals(channelId) ? toStringType(dashboard.getTempTrend())
|
|
||||||
: super.internalGetDashboard(channelId, dashboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.CHANNEL_THERM_RELAY;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@@ -30,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class Therm1ChannelHelper extends ChannelHelper {
|
public class Therm1ChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public Therm1ChannelHelper() {
|
public Therm1ChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_TYPE_TH_PROPERTIES);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toDate
|
|||||||
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
|
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
import org.openhab.binding.netatmo.internal.api.dto.NAThing;
|
||||||
import org.openhab.core.config.core.Configuration;
|
import org.openhab.core.config.core.Configuration;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
@@ -34,12 +36,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class TimestampChannelHelper extends ChannelHelper {
|
public class TimestampChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public TimestampChannelHelper() {
|
public TimestampChannelHelper(Set<String> providedGroups) {
|
||||||
this(GROUP_TIMESTAMP);
|
super(providedGroups);
|
||||||
}
|
|
||||||
|
|
||||||
protected TimestampChannelHelper(String groupName) {
|
|
||||||
super(groupName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,4 +45,9 @@ public class TimestampChannelHelper extends ChannelHelper {
|
|||||||
Optional<ZonedDateTime> lastSeen = naThing.getLastSeen();
|
Optional<ZonedDateTime> lastSeen = naThing.getLastSeen();
|
||||||
return CHANNEL_LAST_SEEN.equals(channelId) && lastSeen.isPresent() ? toDateTimeType(lastSeen) : null;
|
return CHANNEL_LAST_SEEN.equals(channelId) && lastSeen.isPresent() ? toDateTimeType(lastSeen) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
||||||
|
return CHANNEL_MEASURES_TIMESTAMP.equals(channelId) ? toDateTimeType(dashboard.getTimeUtc()) : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|
||||||
|
|
||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.toDateTimeType;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
|
||||||
import org.openhab.binding.netatmo.internal.api.dto.Dashboard;
|
|
||||||
import org.openhab.core.types.State;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link TimestampExtChannelHelper} handles specific behavior
|
|
||||||
* of modules reporting measurement timestamp in dashboard
|
|
||||||
*
|
|
||||||
* @author Gaël L'hopital - Initial contribution
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class TimestampExtChannelHelper extends TimestampChannelHelper {
|
|
||||||
|
|
||||||
public TimestampExtChannelHelper() {
|
|
||||||
super(GROUP_TYPE_TIMESTAMP_EXTENDED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
|
|
||||||
return CHANNEL_MEASURES_TIMESTAMP.equals(channelId) ? toDateTimeType(dashboard.getTimeUtc()) : null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,6 +15,8 @@ package org.openhab.binding.netatmo.internal.handler.channelhelper;
|
|||||||
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
import static org.openhab.binding.netatmo.internal.NetatmoBindingConstants.*;
|
||||||
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
import static org.openhab.binding.netatmo.internal.utils.ChannelTypeUtils.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
|
||||||
@@ -30,8 +32,8 @@ import org.openhab.core.types.State;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class WindChannelHelper extends ChannelHelper {
|
public class WindChannelHelper extends ChannelHelper {
|
||||||
|
|
||||||
public WindChannelHelper() {
|
public WindChannelHelper(Set<String> providedGroups) {
|
||||||
super(GROUP_WIND);
|
super(providedGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class NetatmoThingTypeProvider implements ThingTypeProvider {
|
|||||||
|
|
||||||
ThingTypeBuilder thingTypeBuilder = ThingTypeBuilder.instance(thingTypeUID, thingTypeUID.toString())
|
ThingTypeBuilder thingTypeBuilder = ThingTypeBuilder.instance(thingTypeUID, thingTypeUID.toString())
|
||||||
.withRepresentationProperty(NAThingConfiguration.ID)
|
.withRepresentationProperty(NAThingConfiguration.ID)
|
||||||
.withExtensibleChannelTypeIds(moduleType.extensions)
|
.withExtensibleChannelTypeIds(moduleType.getExtensions())
|
||||||
.withChannelGroupDefinitions(getGroupDefinitions(moduleType))
|
.withChannelGroupDefinitions(getGroupDefinitions(moduleType))
|
||||||
.withConfigDescriptionURI(moduleType.getConfigDescription());
|
.withConfigDescriptionURI(moduleType.getConfigDescription());
|
||||||
|
|
||||||
@@ -94,8 +94,8 @@ public class NetatmoThingTypeProvider implements ThingTypeProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<ChannelGroupDefinition> getGroupDefinitions(ModuleType thingType) {
|
private List<ChannelGroupDefinition> getGroupDefinitions(ModuleType thingType) {
|
||||||
return thingType.groupTypes.stream().map(groupTypeName -> new ChannelGroupDefinition(toGroupName(groupTypeName),
|
return thingType.getGroupTypes().stream().map(groupType -> new ChannelGroupDefinition(toGroupName(groupType),
|
||||||
new ChannelGroupTypeUID(BINDING_ID, groupTypeName))).collect(Collectors.toList());
|
new ChannelGroupTypeUID(BINDING_ID, groupType))).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String toGroupName(String groupeTypeName) {
|
public static String toGroupName(String groupeTypeName) {
|
||||||
|
|||||||
Reference in New Issue
Block a user