[netatmo] Localized label/pattern for dynamic channel types (#13012)
* [netatmo] Localized label/pattern for dynamic channel types * Review comment about key naming * Fix label for timestamp extensible channel types Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
parent
e8e7ca8653
commit
1d766bb824
@ -107,8 +107,8 @@ public class NetatmoConstants {
|
|||||||
new MeasureChannelDetails(confFragment, String.join(":", NUMBER, dimension),
|
new MeasureChannelDetails(confFragment, String.join(":", NUMBER, dimension),
|
||||||
String.format("%%.%df %s", measureDefinition.scale, UnitUtils.UNIT_PLACEHOLDER)));
|
String.format("%%.%df %s", measureDefinition.scale, UnitUtils.UNIT_PLACEHOLDER)));
|
||||||
if (canScale) {
|
if (canScale) {
|
||||||
channels.put(String.join("-", apiDescriptor, GROUP_TIMESTAMP),
|
channels.put(String.join("-", apiDescriptor, GROUP_TIMESTAMP), new MeasureChannelDetails(
|
||||||
new MeasureChannelDetails(GROUP_TIMESTAMP, DATETIME, "%1$tA, %1$td.%1$tm. %1$tH:%1$tM"));
|
GROUP_TIMESTAMP, DATETIME, "@text/extensible-channel-type.timestamp.pattern"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,17 +22,24 @@ import java.util.Locale;
|
|||||||
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.core.i18n.LocaleProvider;
|
||||||
|
import org.openhab.core.thing.i18n.ChannelTypeI18nLocalizationService;
|
||||||
import org.openhab.core.thing.type.ChannelType;
|
import org.openhab.core.thing.type.ChannelType;
|
||||||
import org.openhab.core.thing.type.ChannelTypeBuilder;
|
import org.openhab.core.thing.type.ChannelTypeBuilder;
|
||||||
import org.openhab.core.thing.type.ChannelTypeProvider;
|
import org.openhab.core.thing.type.ChannelTypeProvider;
|
||||||
import org.openhab.core.thing.type.ChannelTypeUID;
|
import org.openhab.core.thing.type.ChannelTypeUID;
|
||||||
import org.openhab.core.thing.type.StateChannelTypeBuilder;
|
import org.openhab.core.thing.type.StateChannelTypeBuilder;
|
||||||
|
import org.osgi.framework.Bundle;
|
||||||
|
import org.osgi.service.component.ComponentContext;
|
||||||
|
import org.osgi.service.component.annotations.Activate;
|
||||||
import org.osgi.service.component.annotations.Component;
|
import org.osgi.service.component.annotations.Component;
|
||||||
|
import org.osgi.service.component.annotations.Reference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extends the ChannelTypeProvider generating Channel Types based on {@link MeasureClass} enum.
|
* Extends the ChannelTypeProvider generating Channel Types based on {@link MeasureClass} enum.
|
||||||
*
|
*
|
||||||
* @author Gaël L'hopital - Initial contribution
|
* @author Gaël L'hopital - Initial contribution
|
||||||
|
* @author Laurent Garnier - Localizing the extensible channel types
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
@ -40,15 +47,20 @@ import org.osgi.service.component.annotations.Component;
|
|||||||
public class NetatmoChannelTypeProvider implements ChannelTypeProvider {
|
public class NetatmoChannelTypeProvider implements ChannelTypeProvider {
|
||||||
private final Collection<ChannelType> channelTypes = new HashSet<>();
|
private final Collection<ChannelType> channelTypes = new HashSet<>();
|
||||||
|
|
||||||
public NetatmoChannelTypeProvider() {
|
@Activate
|
||||||
|
public NetatmoChannelTypeProvider(final @Reference ChannelTypeI18nLocalizationService localizationService,
|
||||||
|
final @Reference LocaleProvider localeProvider, ComponentContext componentContext) {
|
||||||
|
final Bundle bundle = componentContext.getBundleContext().getBundle();
|
||||||
MeasureClass.AS_SET.forEach(mc -> mc.channels.forEach((measureChannel, channelDetails) -> {
|
MeasureClass.AS_SET.forEach(mc -> mc.channels.forEach((measureChannel, channelDetails) -> {
|
||||||
StateChannelTypeBuilder channelTypeBuilder = ChannelTypeBuilder
|
StateChannelTypeBuilder channelTypeBuilder = ChannelTypeBuilder
|
||||||
.state(new ChannelTypeUID(BINDING_ID, measureChannel), measureChannel.replace("-", " "),
|
.state(new ChannelTypeUID(BINDING_ID, measureChannel),
|
||||||
|
String.format("@text/extensible-channel-type.%s.label", measureChannel),
|
||||||
channelDetails.itemType)
|
channelDetails.itemType)
|
||||||
.withStateDescriptionFragment(channelDetails.stateDescriptionFragment)
|
.withStateDescriptionFragment(channelDetails.stateDescriptionFragment)
|
||||||
.withConfigDescriptionURI(channelDetails.configURI);
|
.withConfigDescriptionURI(channelDetails.configURI);
|
||||||
|
ChannelType channelType = localizationService.createLocalizedChannelType(bundle, channelTypeBuilder.build(),
|
||||||
channelTypes.add(channelTypeBuilder.build());
|
localeProvider.getLocale());
|
||||||
|
channelTypes.add(channelType);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -354,6 +354,21 @@ config.period.option.1day = This day
|
|||||||
config.period.option.1week = This week
|
config.period.option.1week = This week
|
||||||
config.period.option.1month = This month
|
config.period.option.1month = This month
|
||||||
|
|
||||||
|
# extensible channel types
|
||||||
|
|
||||||
|
extensible-channel-type.co2-measurement.label = CO2 Measurement
|
||||||
|
extensible-channel-type.co2-timestamp.label = CO2 Measurement Timestamp
|
||||||
|
extensible-channel-type.hum-measurement.label = Humidity Measurement
|
||||||
|
extensible-channel-type.hum-timestamp.label = Humidity Measurement Timestamp
|
||||||
|
extensible-channel-type.noise-measurement.label = Noise Measurement
|
||||||
|
extensible-channel-type.noise-timestamp.label = Noise Measurement Timestamp
|
||||||
|
extensible-channel-type.pressure-measurement.label = Pressure Measurement
|
||||||
|
extensible-channel-type.pressure-timestamp.label = Pressure Measurement Timestamp
|
||||||
|
extensible-channel-type.sum_rain-measurement.label = Summing Rain Measurement
|
||||||
|
extensible-channel-type.temp-measurement.label = Temperature Measurement
|
||||||
|
extensible-channel-type.temp-timestamp.label = Temperature Measurement Timestamp
|
||||||
|
extensible-channel-type.timestamp.pattern = %1$tA, %1$td.%1$tm. %1$tH:%1$tM
|
||||||
|
|
||||||
# thing types
|
# thing types
|
||||||
|
|
||||||
thing-type.netatmo.account.label = Netatmo Account
|
thing-type.netatmo.account.label = Netatmo Account
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user