[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>
pull/12981/head
lolodomo 2022-06-27 18:09:37 +02:00 committed by GitHub
parent e8e7ca8653
commit 1d766bb824
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 6 deletions

View File

@ -107,8 +107,8 @@ public class NetatmoConstants {
new MeasureChannelDetails(confFragment, String.join(":", NUMBER, dimension),
String.format("%%.%df %s", measureDefinition.scale, UnitUtils.UNIT_PLACEHOLDER)));
if (canScale) {
channels.put(String.join("-", apiDescriptor, GROUP_TIMESTAMP),
new MeasureChannelDetails(GROUP_TIMESTAMP, DATETIME, "%1$tA, %1$td.%1$tm. %1$tH:%1$tM"));
channels.put(String.join("-", apiDescriptor, GROUP_TIMESTAMP), new MeasureChannelDetails(
GROUP_TIMESTAMP, DATETIME, "@text/extensible-channel-type.timestamp.pattern"));
}
}
}

View File

@ -22,17 +22,24 @@ import java.util.Locale;
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.core.i18n.LocaleProvider;
import org.openhab.core.thing.i18n.ChannelTypeI18nLocalizationService;
import org.openhab.core.thing.type.ChannelType;
import org.openhab.core.thing.type.ChannelTypeBuilder;
import org.openhab.core.thing.type.ChannelTypeProvider;
import org.openhab.core.thing.type.ChannelTypeUID;
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.Reference;
/**
* Extends the ChannelTypeProvider generating Channel Types based on {@link MeasureClass} enum.
*
* @author Gaël L'hopital - Initial contribution
* @author Laurent Garnier - Localizing the extensible channel types
*
*/
@NonNullByDefault
@ -40,15 +47,20 @@ import org.osgi.service.component.annotations.Component;
public class NetatmoChannelTypeProvider implements ChannelTypeProvider {
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) -> {
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)
.withStateDescriptionFragment(channelDetails.stateDescriptionFragment)
.withConfigDescriptionURI(channelDetails.configURI);
channelTypes.add(channelTypeBuilder.build());
ChannelType channelType = localizationService.createLocalizedChannelType(bundle, channelTypeBuilder.build(),
localeProvider.getLocale());
channelTypes.add(channelType);
}));
}

View File

@ -354,6 +354,21 @@ config.period.option.1day = This day
config.period.option.1week = This week
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-type.netatmo.account.label = Netatmo Account