]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miio] i18n translation handling for basic channels (#11576)
authorMarcel <marcel@verpaalen.com>
Thu, 2 Dec 2021 08:08:17 +0000 (09:08 +0100)
committerGitHub <noreply@github.com>
Thu, 2 Dec 2021 08:08:17 +0000 (09:08 +0100)
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoBindingConstants.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoHandlerFactory.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoBasicHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoGenericHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoUnsupportedHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoVacuumHandler.java
bundles/org.openhab.binding.miio/src/main/resources/OH-INF/i18n/basic.properties [new file with mode: 0644]
bundles/org.openhab.binding.miio/src/test/java/org/openhab/binding/miio/internal/ReadmeHelper.java

index 4a887e7f76b39033b53872881fb1283c060dc288..ce318ee083ea68276a8a1e81db6635de142ac8c0 100644 (file)
@@ -123,4 +123,8 @@ public final class MiIoBindingConstants {
             + File.separator + BINDING_ID;
     public static final String BINDING_USERDATA_PATH = OpenHAB.getUserDataFolder() + File.separator
             + MiIoBindingConstants.BINDING_ID;
+
+    public static final String I18N_THING_PREFIX = "thing.";
+    public static final String I18N_CHANNEL_PREFIX = "ch.";
+    public static final String I18N_OPTION_PREFIX = "option.";
 }
index afb8073b11228e3305f44351b2892948087b4787..8a68a89a9ea5972c0dbc1d818adec775f3cc7f6d 100644 (file)
@@ -29,6 +29,8 @@ import org.openhab.binding.miio.internal.handler.MiIoGenericHandler;
 import org.openhab.binding.miio.internal.handler.MiIoUnsupportedHandler;
 import org.openhab.binding.miio.internal.handler.MiIoVacuumHandler;
 import org.openhab.core.common.ThreadPoolManager;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.io.net.http.HttpClientFactory;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.thing.ThingTypeUID;
@@ -60,6 +62,8 @@ public class MiIoHandlerFactory extends BaseThingHandlerFactory {
     private CloudConnector cloudConnector;
     private ChannelTypeRegistry channelTypeRegistry;
     private BasicChannelTypeProvider basicChannelTypeProvider;
+    private final TranslationProvider i18nProvider;
+    private final LocaleProvider localeProvider;
     private @Nullable Future<Boolean> scheduledTask;
     private final Logger logger = LoggerFactory.getLogger(MiIoHandlerFactory.class);
 
@@ -67,11 +71,14 @@ public class MiIoHandlerFactory extends BaseThingHandlerFactory {
     public MiIoHandlerFactory(@Reference HttpClientFactory httpClientFactory,
             @Reference ChannelTypeRegistry channelTypeRegistry,
             @Reference MiIoDatabaseWatchService miIoDatabaseWatchService, @Reference CloudConnector cloudConnector,
-            @Reference BasicChannelTypeProvider basicChannelTypeProvider, Map<String, Object> properties) {
+            @Reference BasicChannelTypeProvider basicChannelTypeProvider, @Reference TranslationProvider i18nProvider,
+            @Reference LocaleProvider localeProvider, Map<String, Object> properties) {
         this.httpClientFactory = httpClientFactory;
         this.miIoDatabaseWatchService = miIoDatabaseWatchService;
         this.channelTypeRegistry = channelTypeRegistry;
         this.basicChannelTypeProvider = basicChannelTypeProvider;
+        this.i18nProvider = i18nProvider;
+        this.localeProvider = localeProvider;
         this.cloudConnector = cloudConnector;
         @Nullable
         String username = (String) properties.get("username");
@@ -108,16 +115,18 @@ public class MiIoHandlerFactory extends BaseThingHandlerFactory {
     protected @Nullable ThingHandler createHandler(Thing thing) {
         ThingTypeUID thingTypeUID = thing.getThingTypeUID();
         if (thingTypeUID.equals(THING_TYPE_MIIO)) {
-            return new MiIoGenericHandler(thing, miIoDatabaseWatchService, cloudConnector);
+            return new MiIoGenericHandler(thing, miIoDatabaseWatchService, cloudConnector, i18nProvider,
+                    localeProvider);
         }
         if (thingTypeUID.equals(THING_TYPE_BASIC)) {
             return new MiIoBasicHandler(thing, miIoDatabaseWatchService, cloudConnector, channelTypeRegistry,
-                    basicChannelTypeProvider);
+                    basicChannelTypeProvider, i18nProvider, localeProvider);
         }
         if (thingTypeUID.equals(THING_TYPE_VACUUM)) {
-            return new MiIoVacuumHandler(thing, miIoDatabaseWatchService, cloudConnector, channelTypeRegistry);
+            return new MiIoVacuumHandler(thing, miIoDatabaseWatchService, cloudConnector, channelTypeRegistry,
+                    i18nProvider, localeProvider);
         }
         return new MiIoUnsupportedHandler(thing, miIoDatabaseWatchService, cloudConnector,
-                httpClientFactory.getCommonHttpClient());
+                httpClientFactory.getCommonHttpClient(), i18nProvider, localeProvider);
     }
 }
index dd8aaa923fbae4155c2ded5a1e0201d9bf68c71f..244435a4d47794628bece3b7691b3e73320d34f7 100644 (file)
@@ -50,6 +50,8 @@ import org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication;
 import org.openhab.core.cache.ExpiringCache;
 import org.openhab.core.common.NamedThreadFactory;
 import org.openhab.core.config.core.Configuration;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.StringType;
 import org.openhab.core.thing.ChannelUID;
@@ -60,6 +62,8 @@ import org.openhab.core.thing.ThingTypeUID;
 import org.openhab.core.thing.binding.BaseThingHandler;
 import org.openhab.core.thing.binding.builder.ThingBuilder;
 import org.openhab.core.types.Command;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -81,6 +85,9 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
     protected static final int MAX_QUEUE = 5;
     protected static final Gson GSON = new GsonBuilder().create();
     protected static final String TIMESTAMP = "timestamp";
+    protected final Bundle bundle;
+    protected final TranslationProvider i18nProvider;
+    protected final LocaleProvider localeProvider;
 
     protected ScheduledExecutorService miIoScheduler = new ScheduledThreadPoolExecutor(3,
             new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true));
@@ -114,10 +121,13 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
     protected MiIoDatabaseWatchService miIoDatabaseWatchService;
 
     public MiIoAbstractHandler(Thing thing, MiIoDatabaseWatchService miIoDatabaseWatchService,
-            CloudConnector cloudConnector) {
+            CloudConnector cloudConnector, TranslationProvider i18nProvider, LocaleProvider localeProvider) {
         super(thing);
         this.miIoDatabaseWatchService = miIoDatabaseWatchService;
         this.cloudConnector = cloudConnector;
+        this.i18nProvider = i18nProvider;
+        this.localeProvider = localeProvider;
+        this.bundle = FrameworkUtil.getBundle(this.getClass());
     }
 
     @Override
@@ -590,7 +600,8 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
             String label = getThing().getLabel();
             if (label == null || label.startsWith("Xiaomi Mi Device")) {
                 ThingBuilder thingBuilder = editThing();
-                thingBuilder.withLabel(miDevice.getDescription());
+                label = getLocalText(I18N_THING_PREFIX + modelId, miDevice.getDescription());
+                thingBuilder.withLabel(label);
                 updateThing(thingBuilder.build());
             }
             logger.info("Mi Device model {} identified as: {}. Does not match thingtype {}. Changing thingtype to {}",
@@ -644,4 +655,13 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
             logger.debug("Error while handing message {}", response.getResponse(), e);
         }
     }
+
+    protected String getLocalText(String key, String defaultText) {
+        try {
+            String text = i18nProvider.getText(bundle, key, defaultText, localeProvider.getLocale());
+            return text != null ? text : defaultText;
+        } catch (IllegalArgumentException e) {
+            return defaultText;
+        }
+    }
 }
index 19f7e3382aabc7c31db19e7c4d2ad626ee766d77..d192889aad8a80e82528eb06f6ed3c7bf542d2e9 100644 (file)
@@ -49,6 +49,8 @@ import org.openhab.binding.miio.internal.basic.MiIoDeviceActionCondition;
 import org.openhab.binding.miio.internal.cloud.CloudConnector;
 import org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication;
 import org.openhab.core.cache.ExpiringCache;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.HSBType;
 import org.openhab.core.library.types.OnOffType;
@@ -106,8 +108,9 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
 
     public MiIoBasicHandler(Thing thing, MiIoDatabaseWatchService miIoDatabaseWatchService,
             CloudConnector cloudConnector, ChannelTypeRegistry channelTypeRegistry,
-            BasicChannelTypeProvider basicChannelTypeProvider) {
-        super(thing, miIoDatabaseWatchService, cloudConnector);
+            BasicChannelTypeProvider basicChannelTypeProvider, TranslationProvider i18nProvider,
+            LocaleProvider localeProvider) {
+        super(thing, miIoDatabaseWatchService, cloudConnector, i18nProvider, localeProvider);
         this.channelTypeRegistry = channelTypeRegistry;
         this.basicChannelTypeProvider = basicChannelTypeProvider;
     }
@@ -452,6 +455,7 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
         try {
             JsonObject deviceMapping = Utils.convertFileToJSON(fn);
             logger.debug("Using device database: {} for device {}", fn.getFile(), deviceName);
+            String key = fn.getFile().replaceFirst("/database/", "").split("json")[0];
             Gson gson = new GsonBuilder().serializeNulls().create();
             miioDevice = gson.fromJson(deviceMapping, MiIoBasicDevice.class);
             for (Channel ch : getThing().getChannels()) {
@@ -475,7 +479,7 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
                     logger.debug("properties {}", miChannel);
                     if (!miChannel.getType().isEmpty()) {
                         basicChannelTypeProvider.addChannelType(miChannel, deviceName);
-                        ChannelUID channelUID = addChannel(thingBuilder, miChannel, deviceName);
+                        ChannelUID channelUID = addChannel(thingBuilder, miChannel, deviceName, key);
                         if (channelUID != null) {
                             actions.put(channelUID, miChannel);
                             channelsAdded++;
@@ -505,7 +509,8 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
         return false;
     }
 
-    private @Nullable ChannelUID addChannel(ThingBuilder thingBuilder, MiIoBasicChannel miChannel, String model) {
+    private @Nullable ChannelUID addChannel(ThingBuilder thingBuilder, MiIoBasicChannel miChannel, String model,
+            String key) {
         String channel = miChannel.getChannel();
         String dataType = miChannel.getType();
         if (channel.isEmpty() || dataType.isEmpty()) {
@@ -514,7 +519,8 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
             return null;
         }
         ChannelUID channelUID = new ChannelUID(getThing().getUID(), channel);
-        ChannelBuilder newChannel = ChannelBuilder.create(channelUID, dataType).withLabel(miChannel.getFriendlyName());
+        String label = getLocalText(I18N_CHANNEL_PREFIX + key + channel, miChannel.getFriendlyName());
+        ChannelBuilder newChannel = ChannelBuilder.create(channelUID, dataType).withLabel(label);
         boolean useGeneratedChannelType = false;
         if (!miChannel.getChannelType().isBlank()) {
             ChannelTypeUID channelTypeUID = new ChannelTypeUID(miChannel.getChannelType());
index 233adbd1df18c38319ed4651937271dff90f900f..6377698c98d99b793be97ea0936ecf37a39ee4fc 100644 (file)
@@ -15,6 +15,8 @@ package org.openhab.binding.miio.internal.handler;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService;
 import org.openhab.binding.miio.internal.cloud.CloudConnector;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -33,8 +35,8 @@ public class MiIoGenericHandler extends MiIoAbstractHandler {
     private final Logger logger = LoggerFactory.getLogger(MiIoGenericHandler.class);
 
     public MiIoGenericHandler(Thing thing, MiIoDatabaseWatchService miIoDatabaseWatchService,
-            CloudConnector cloudConnector) {
-        super(thing, miIoDatabaseWatchService, cloudConnector);
+            CloudConnector cloudConnector, TranslationProvider i18nProvider, LocaleProvider localeProvider) {
+        super(thing, miIoDatabaseWatchService, cloudConnector, i18nProvider, localeProvider);
     }
 
     @Override
index 21e0dbdb967ff3ef2707a1575ea34b68110b53c7..84cb9c18c5d51c5a8991446b520511d937bc76ea 100644 (file)
@@ -44,6 +44,8 @@ import org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService;
 import org.openhab.binding.miio.internal.cloud.CloudConnector;
 import org.openhab.binding.miio.internal.miot.MiotParser;
 import org.openhab.core.cache.ExpiringCache;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
@@ -87,8 +89,9 @@ public class MiIoUnsupportedHandler extends MiIoAbstractHandler {
     });
 
     public MiIoUnsupportedHandler(Thing thing, MiIoDatabaseWatchService miIoDatabaseWatchService,
-            CloudConnector cloudConnector, HttpClient httpClientFactory) {
-        super(thing, miIoDatabaseWatchService, cloudConnector);
+            CloudConnector cloudConnector, HttpClient httpClientFactory, TranslationProvider i18nProvider,
+            LocaleProvider localeProvider) {
+        super(thing, miIoDatabaseWatchService, cloudConnector, i18nProvider, localeProvider);
         this.httpClient = httpClientFactory;
     }
 
index 74f7b3e45eda4768b495be9aeceae61426a2035c..98caed804be0423bb767550beccfe97abbc57c38 100644 (file)
@@ -52,6 +52,8 @@ import org.openhab.binding.miio.internal.robot.StatusType;
 import org.openhab.binding.miio.internal.robot.VacuumErrorType;
 import org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication;
 import org.openhab.core.cache.ExpiringCache;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.library.types.DateTimeType;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
@@ -113,8 +115,9 @@ public class MiIoVacuumHandler extends MiIoAbstractHandler {
     private RRMapDrawOptions mapDrawOptions = new RRMapDrawOptions();
 
     public MiIoVacuumHandler(Thing thing, MiIoDatabaseWatchService miIoDatabaseWatchService,
-            CloudConnector cloudConnector, ChannelTypeRegistry channelTypeRegistry) {
-        super(thing, miIoDatabaseWatchService, cloudConnector);
+            CloudConnector cloudConnector, ChannelTypeRegistry channelTypeRegistry, TranslationProvider i18nProvider,
+            LocaleProvider localeProvider) {
+        super(thing, miIoDatabaseWatchService, cloudConnector, i18nProvider, localeProvider);
         this.channelTypeRegistry = channelTypeRegistry;
         mapChannelUid = new ChannelUID(thing.getUID(), CHANNEL_VACUUM_MAP);
         status = new ExpiringCache<>(CACHE_EXPIRY, () -> {
diff --git a/bundles/org.openhab.binding.miio/src/main/resources/OH-INF/i18n/basic.properties b/bundles/org.openhab.binding.miio/src/main/resources/OH-INF/i18n/basic.properties
new file mode 100644 (file)
index 0000000..124919a
--- /dev/null
@@ -0,0 +1,2460 @@
+# Automatic created list by miio readme maker for miio devices & database channels
+
+# Devices
+
+thing.aux.aircondition.v1 = AUX Smart Air Conditioner
+thing.careli.fryer.maf01 = Mi Air Frying Pan
+thing.careli.fryer.maf02 = Mi Smart Air Fryer (3.5L)
+thing.careli.fryer.maf03 = Mi Air Frying Pan
+thing.cgllc.airm.cgdn1 = Qingping Air Monitor Lite
+thing.cgllc.airmonitor.b1 = Mi Multifunction Air Monitor
+thing.cgllc.airmonitor.s1 = Qingping Air Monitor
+thing.chuangmi.ir.v2 = Mi Universal Remote
+thing.chuangmi.plug.212a01 = Mi Smart Power Plug 2 (Wi-Fi and Bluetooth Gateway)
+thing.chuangmi.plug.hmi205 = Mi Smart Plug WiFi
+thing.chuangmi.plug.hmi206 = Mi Smart Plug (WiFi)
+thing.chuangmi.plug.hmi208 = Mi Smart Wi-Fi Plug (Bluetooth Gateway)
+thing.chuangmi.plug.m1 = Mi Plug Mini
+thing.chuangmi.plug.m3 = Mi Smart Plug (Wi-Fi) Basic
+thing.chuangmi.plug.v1 = Mi Smart Power Plug
+thing.chuangmi.plug.v2 = Mi Smart Power Plug v2
+thing.chuangmi.plug.v3 = MIJIA Smart  Plug Enhanced
+thing.chuangmi.remote.v2 = Mi Remote
+thing.chunmi.cooker.normal1 = Mi IH Rice Cooker
+thing.chunmi.cooker.normal2 = Mi IH Rice Cooker
+thing.chunmi.cooker.normal4 = Mi IH Rice Cooker 4L
+thing.chunmi.cooker.press1 = Mi IH Pressure Rice Cooker
+thing.chunmi.cooker.press2 = Mi IH Pressure Rice Cooker
+thing.cuco.plug.cp1 = Gosund Smart Plug
+thing.deerma.humidifier.jsq = Mi Smart Antibacterial Humidifier
+thing.deerma.humidifier.jsq1 = Mi S Smart Humidifer 
+thing.deerma.humidifier.mjjsq = Mi Smart Humidifier
+thing.dmaker.airfresh.a1 = Mi Fresh Air Ventilator A1-150
+thing.dmaker.airfresh.t2017 = Mi Fresh Air Ventilator
+thing.dmaker.fan.1c = Mi Smart Standing Fan 2 Lite
+thing.dmaker.fan.p5 = Mi Smart Standing Fan 1X
+thing.dmaker.fan.p8 = Mi Smart Standing Fan 1C
+thing.dmaker.fan.p9 = Mi Smart Tower Fan
+thing.dmaker.fan.p10 = Mi Smart Standing Fan 2
+thing.dmaker.fan.p15 = Mi Smart Standing Fan Pro
+thing.dmaker.fan.p18 = Mi Smart Standing Fan 2
+thing.dreame.vacuum.mc1808 = Mi Robot Vacuum Mop 1C STYTJ01ZHM
+thing.dreame.vacuum.p2008 = Dreame Robot Vacuum-Mop F9
+thing.dreame.vacuum.p2009 = Dreame Robot Vacuum D9 
+thing.dreame.vacuum.p2036 = Trouver Robot LDS Vacuum-Mop Finder
+thing.dreame.vacuum.p2041o = Mi Robot Vacuum-Mop 2 Pro+
+thing.dreame.vacuum.p2156o = MOVA Z500 Robot Vacuum and Mop Cleaner
+thing.dreame.vacuum.p2157 = MOVA L600 Robot Vacuum and Mop Cleaner
+thing.huayi.light.ari013 = HUIZUO ARIES For Bedroom
+thing.huayi.light.aries = HUIZUO ARIES For Living Room
+thing.huayi.light.fanwy = HUIZUO Fan Light
+thing.huayi.light.fanwy2 = HUIZUO Fan Light(2020)
+thing.huayi.light.peg091 = HUIZUO PEGASUS For Living Room
+thing.huayi.light.peg093 = HUIZUO PEGASUS For Bedroom
+thing.huayi.light.pis123 = HUIZUO PISCES For Bedroom
+thing.huayi.light.pisces = HUIZUO PISCES For Living Room
+thing.huayi.light.tau023 = HUIZUO TAURUS For Bedroom
+thing.huayi.light.taurus = HUIZUO TAURUS For Living Room
+thing.huayi.light.vir063 = HUIZUO VIRGO For Bedroom
+thing.huayi.light.virgo = HUIZUO VIRGO For Living Room
+thing.huayi.light.wy = HUIZUO Ceiling Light
+thing.huayi.light.wy200 = HUIZUO LIANGCHEN(BLE Mesh)
+thing.huayi.light.wy201 = HUIZUO SAG Downlight (BLE Mesh)
+thing.huayi.light.wy202 = HUIZUO Bulb (BLE Mesh)
+thing.huayi.light.wy203 = HUIZUO YONG Downlight (BLE Mesh)
+thing.huayi.light.wy204 = huayi.light.wy204
+thing.huayi.light.wyheat = HUIZUO Heating Lamp
+thing.huayi.light.zw131 = HUIZUO ZIWEI Ceiling Lamp
+thing.hunmi.cooker.normal3 = MiJia Rice Cooker
+thing.idelan.aircondition.v1 = Jinxing Smart Air Conditioner
+thing.lumi.ctrl_neutral1.v1 = Aqara Wall Switch(No Neutral, Single Rocker)
+thing.lumi.ctrl_neutral2.v1 = Aqara Wall Switch (No Neutral, Double Rocker)
+thing.lumi.curtain.hagl05 = Xiaomiyoupin Curtain Controller (Wi-Fi)
+thing.lumi.gateway.mgl03 = Mi Air Purifier virtual
+thing.lumi.gateway.v1 = Mi smart Home Gateway Hub v1
+thing.lumi.gateway.v2 = Mi smart Home GatewayHub v2
+thing.lumi.gateway.v3 = Mi smart Home Gateway Hub v3
+thing.lumi.gateway.mieu01 = Mi smart Home Gateway Hub
+thing.midea.aircondition.v1 = Midea AC-i Youth
+thing.midea.aircondition.v2 = Midea Air Conditioner v2
+thing.midea.aircondition.xa1 = Midea AC-Cool Golden
+thing.mijia.vacuum.v2 = Mi Robot Vacuum-Mop Essential
+thing.mmgg.pet_waterer.s1 = Mijia Smart Pet Water Dispenser
+thing.mmgg.pet_waterer.s2 = Mijia Smart Pet Water Dispenser
+thing.mmgg.pet_waterer.s3 = Mijia Smart Pet Water Dispenser
+thing.mmgg.pet_waterer.s4 = XIAOWAN Smart Pet Water Dispenser
+thing.mrbond.airer.m1pro = MR.BOND
+thing.mrbond.airer.m1s = MR.BOND
+thing.mrbond.airer.m1super = MR.BOND
+thing.nwt.derh.wdh318efw1 = WIDETECH WDH318EFW1 Internet Dehumidifier
+thing.philips.light.bceiling1 = Philips Zhirui Ceiling Lamp Bedroom 40W
+thing.philips.light.bceiling2 = Philips Zhirui Ceiling Lamp Bedroom 28W
+thing.philips.light.bulb = Philips ZhiRui E27 bulb
+thing.philips.light.candle = Philips ZhiRui E14 Candle Lamp Frosted version
+thing.philips.light.candle2 = Philips ZhiRui E14 Candle Lamp Crystal version
+thing.philips.light.cbulb = Mijia Philips Color Bulb
+thing.philips.light.cbulbs = Philips Light
+thing.philips.light.ceiling = Philips Connected Ceiling
+thing.philips.light.dcolor = Philips Light
+thing.philips.light.dlight = ZhiRui Dimmable Downlight
+thing.philips.light.downlight = Philips ZhiRui Downlight
+thing.philips.light.hbulb = Philips Wi-Fi bulb E27 White
+thing.philips.light.lnblight1 = Philips ZhiYi Ceiling Lamp FL 40W
+thing.philips.light.lnblight2 = Philips ZhiYi Ceiling Lamp FL 28W
+thing.philips.light.lnlrlight = Philips ZhiYi Ceiling Lamp FL 80W
+thing.philips.light.lrceiling = Philips Zhirui Ceiling Lamp Living room 80W
+thing.philips.light.mceil = Zhirui Ceiling Lamp Nordic 80W
+thing.philips.light.mceilm = Zhirui Ceiling Lamp Nordic 40W
+thing.philips.light.mceils = Zhirui Ceiling Lamp Nordic 28W
+thing.philips.light.mono1 = Philips Smart Lamp
+thing.philips.light.moonlight = Philips ZhiRui Bedside Lamp
+thing.philips.light.obceil = Zhirui Ceiling Lamp Black 80W
+thing.philips.light.obceim =  Zhirui Ceiling Lamp Black 40W
+thing.philips.light.obceis = Zhirui Ceiling Lamp Black 28W
+thing.philips.light.rwread = Mijia Philips Study Desk Lamp
+thing.philips.light.sceil = Zhirui Ceiling Lamp Starry 80W
+thing.philips.light.sceilm = Zhirui Ceiling Lamp Starry 40W
+thing.philips.light.sceils = Zhirui Ceiling Lamp Starry 28W
+thing.philips.light.sread1 = Philips EyeCare Connected Desk Lamp gen2.
+thing.philips.light.sread2 = Mijia Philips Desk Lamp 2S
+thing.philips.light.virtual = Philips Connected Lights
+thing.philips.light.xzceil = Zhirui Ceiling Lamp Gorgeous 80W
+thing.philips.light.xzceim = Zhirui Ceiling Lamp Gorgeous 40W
+thing.philips.light.xzceis = Zhirui Ceiling Lamp Gorgeous 28W
+thing.philips.light.zyceiling = Philips ZhiYi Ceiling lamp
+thing.philips.light.zysread = Philips ZhiYi Desk Lamp
+thing.philips.light.zystrip = Philips ZhiYi Strip
+thing.qmi.powerstrip.v1 = CHINGMI Smart Power Strip v1
+thing.roborock.sweeper.e2v2 = Rockrobo Xiaowa Sweeper v2
+thing.roborock.sweeper.e2v3 = Rockrobo Xiaowa Sweeper v3
+thing.roborock.vacuum.a08 = Roborock S6 Pure
+thing.roborock.vacuum.a09 = Roborock T7 Pro
+thing.roborock.vacuum.a10 = Roborock S6 MaxV
+thing.roborock.vacuum.a11 = Roborock T7
+thing.roborock.vacuum.a14 = Roborock T7S
+thing.roborock.vacuum.a15 = Roborock S7
+thing.roborock.vacuum.a19 = Roborock S4 Max
+thing.roborock.vacuum.a23 = Roborock T7S Plus
+thing.roborock.vacuum.c1 = Xiaowa C1
+thing.roborock.vacuum.e2 = Roborock Xiaowa E Series Vacuum v2
+thing.roborock.vacuum.m1s = Mi Robot Vacuum 1S
+thing.roborock.vacuum.p5 = Roborock P5
+thing.roborock.vacuum.s4 = Roborock S4
+thing.roborock.vacuum.s4v2 = Roborock Vacuum S4v2
+thing.roborock.vacuum.s5 = Roborock S5
+thing.roborock.vacuum.s5e = Roborock S5 Max
+thing.roborock.vacuum.s6 = Roborock S6
+thing.roborock.vacuum.t4 = Roborock T4
+thing.roborock.vacuum.t4v2 = Roborock Vacuum T4 v2
+thing.roborock.vacuum.t4v3 = Roborock Vacuum T4 v3
+thing.roborock.vacuum.t6 = Roborock T6
+thing.roborock.vacuum.t6v2 = Roborock Vacuum T6 v2
+thing.roborock.vacuum.t6v3 = Roborock Vacuum T6 v3
+thing.roborock.vacuum.t7 = Roborock Vacuum T7
+thing.roborock.vacuum.t7p = Roborock Vacuum T7p
+thing.roborock.vacuum.t7pv2 = Roborock Vacuum T7 v2
+thing.roborock.vacuum.t7pv3 = Roborock Vacuum T7 v3
+thing.roborock.vacuum.t7v2 = Roborock Vacuum T7 v2
+thing.roborock.vacuum.t7v3 = Roborock Vacuum T7 v3
+thing.rockrobo.vacuum.s6 = Roborock Vacuum S6
+thing.rockrobo.vacuum.v1 = Mi Robot Vacuum
+thing.090615.switch.xswitch01 = PTX OneKey Switch (WIFI)
+thing.090615.switch.xswitch02 = PTX Twokey switch(wifi)
+thing.090615.switch.xswitch03 = PTX ThreeKey Switch (WIFI)
+thing.scishare.coffee.s1102 = SCISHARE Smart Capsule Coffee Machine
+thing.scishare.coffee.s1301 = Xiaomi Scishare Smart Capsule Coffee Machine
+thing.soocare.toothbrush.x3 = Soocare Electric Toothbrush
+thing.viomi.fridge.v3 = Viomi Internet Refrigerator iLive(French style 462L)
+thing.viomi.vacuum.v6 = Viomi Cleaning Robot V-RVCLM21B
+thing.viomi.vacuum.v7 = Mi Robot Vacuum-Mop P
+thing.viomi.vacuum.v8 = Mi Robot Vacuum-Mop P
+thing.viomi.vacuum.v18 = Viomi S9
+thing.viomi.waterheater.e1 = VIOMI Internet Electric Water Heater 1A (60L)
+thing.xiaomi.aircondition.ma1 = Mi Inverter Air Conditioner (1.5HP)
+thing.xiaomi.aircondition.ma2 = Mi Inverter Air Conditioner (1.5HP, China Energy Label Level 1)
+thing.xiaomi.aircondition.ma4 = Mi Vertical Air Conditioner (2HP)
+thing.xiaomi.aircondition.ma5 = Mi Smart Vertical Air Conditioner C1 (2HP / Inverter / China Energy Label Level 1)
+thing.xiaomi.aircondition.ma6 = Mi Smart Air Conditioner C1 (1.5HP / Conventional / China Energy Label Level 3)
+thing.xiaomi.aircondition.ma9 = Mi Smart Air Conditioner C1 (1HP / Inverter / China Energy Label Level 1)
+thing.xiaomi.aircondition.mc1 = Mi Smart Air Conditioner A (1HP / Inverter / China Energy Label Level 1)
+thing.xiaomi.aircondition.mc2 = Mi Smart Air Conditioner A (1.5HP / Inverter / China Energy Label Level 1)
+thing.xiaomi.aircondition.mc4 = Mi Smart Air Conditioner A (1HP / Inverter / China Energy Label Level <1)
+thing.xiaomi.aircondition.mc5 = Mi Smart Air Conditioner A (1.5HP / Inverter / China Energy Label Level <1)
+thing.xiaomi.aircondition.mc6 = Mi Smart Vertical Air Conditioner A (2HP / Inverter / China Energy Label Level <1)
+thing.xiaomi.aircondition.mc7 = Mi Smart Vertical Air Conditioner A (3HP / Inverter / China Energy Label Level <1)
+thing.xiaomi.aircondition.mc8 = Mi Smart Ultra Electricity Saving Air Conditioner(1.5HP/Inverter/New China Energy Label Level 3)
+thing.xiaomi.aircondition.mc9 = Mi Smart Ultra Electricity Saving Vertical Air Conditioner(2HP/Inverter/New China Energy Label Level 3)
+thing.xiaomi.aircondition.c10 = Mi Smart Ultra Electricity Saving Vertical Air Conditioner (2HP/Inverter/New China Energy Label Level 1)
+thing.xiaomi.aircondition.c11 = Mi Smart Ultra Electricity Saving Vertical Air Conditioner (3HP/Inverter/New China Energy Label Level 1)
+thing.xiaomi.aircondition.mh1 = Mi Smart Air Conditioner C (1HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mh2 = Mi Smart Air Conditioner C (1.5HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mh3 = Mi Smart Ultra Electricity Saving Air Conditioner(1HP/Inverter/New China Energy Label Level 3)
+thing.xiaomi.aircondition.mt1 = Mi Smart Air Conditioner X (1HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt2 = Mi Smart Air Conditioner X (1.5HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt3 = Mi Smart Gentle Breeze Air Conditioner (1HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt4 = Mi Smart Gentle Breeze Air Conditioner (1.5HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt5 = Mi Smart Gentle Breeze Vertical Air Conditioner (3HP / Inverter / New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt7 = Mi Smart Ultra Electricity Saving Air Conditioner (1HP/Inverter/New China Energy Label Level 1)
+thing.xiaomi.aircondition.mt8 = Mi Smart Ultra Electricity Saving Air Conditioner (1.5HP/Inverter/New China Energy Label Level 1)
+thing.xiaomi.repeater.v2 = Mi Wi-Fi Repeater 2
+thing.xiaomi.wifispeaker.v1 = Mi Network Speaker
+thing.xjx.toilet.pro = Uclean Smart Toilet Seat
+thing.xjx.toilet.pure = Uclean Smart Toilet pure
+thing.xjx.toilet.relax = Uclean Smart Toilet relax
+thing.xjx.toilet.zero = Whale Spout Smart Toilet Zero
+thing.yeelight.bhf_light.v2 = Yeelight Smart Bath Heater
+thing.yeelink.bhf_light.v1 = Yeelight Smart Bath Heater Pro
+thing.yeelink.bhf_light.v2 = Yeelight Smart Bath Heater
+thing.yeelink.light.bslamp1 = Mi Bedside Lamp
+thing.yeelink.light.bslamp2 = Mi Bedside Lamp 2
+thing.yeelink.light.bslamp3 = Yeelight Bedside Lamp II
+thing.yeelink.light.ceiling1 = Yeelight Ceiling Light
+thing.yeelink.light.ceiling2 = Yeelight Ceiling Light SE
+thing.yeelink.light.ceiling3 = Yeelight LED Ceiling Light
+thing.yeelink.light.ceiling4 = Yeelight LED Ceiling Light
+thing.yeelink.light.ceiling4.ambi = Yeelight LED Ceiling Ambi Lamp
+thing.yeelink.light.ceiling5 = Mi LED Ceiling Light
+thing.yeelink.light.ceiling6 = Yeelight HaoShi LED Ceiling Lamp Pro
+thing.yeelink.light.ceiling7 = Yeelight Haoshi Ceiling Lamp
+thing.yeelink.light.ceiling8 = LED Ceiling Light Crystal Plus
+thing.yeelink.light.ceiling9 = Yeelight HaoShi LED Ceiling Lamp Pro
+thing.yeelink.light.ceiling10 = Yeelight Crystal Pendant Lamp
+thing.yeelink.light.ceiling10.ambi = Yeelight LED Ceiling Ambi Lamp
+thing.yeelink.light.ceiling11 = Yeelight Ceiling Light 320 1S
+thing.yeelink.light.ceiling12 = Yeelight Stylized Ceiling Light  Pro
+thing.yeelink.light.ceiling13 = Yeelight Ceiling Light
+thing.yeelink.light.ceiling14 = Yeelight Ceiling Light Mini
+thing.yeelink.light.ceiling15 = Yeelight Ceiling Light 480 1S
+thing.yeelink.light.ceiling16 = Yeelight Xingyu Ceiling Light
+thing.yeelink.light.ceiling17 = Yeelight ShaoHua Celing Light
+thing.yeelink.light.ceiling18 = Yeelight Ceiling Light Pro
+thing.yeelink.light.ceiling19 = Yeelight Ceiling Light Pro
+thing.yeelink.light.ceiling19.ambi = Yeelight LED Ceiling Ambi Lamp
+thing.yeelink.light.ceiling20 = Yeelight Ceiling Light
+thing.yeelink.light.ceiling20.ambi = Yeelight LED Ceiling Ambi Lamp
+thing.yeelink.light.ceiling21 = Mi Smart LED Living Room Ceiling Light
+thing.yeelink.light.ceiling22 = Mi Smart LED Ceiling Light
+thing.yeelink.light.ceiling23 = Mi Smart LED Ceiling Light (350mm)
+thing.yeelink.light.ceil26 = Yeelight Jade Smart LED Ceiling Light C2001
+thing.yeelink.light.color1 = Yeelight Color Bulb
+thing.yeelink.light.color2 = Yeelight LED Bulb (Color)
+thing.yeelink.light.color3 = Mi LED Smart Bulb (White and Color)
+thing.yeelink.light.color4 = Yeelight LED Bulb 1S(Color)
+thing.yeelink.light.color5 = Mi Smart LED Bulb Essential (White and Color)
+thing.yeelink.light.colora = Yeelight Smart LED Bulb 1SE (color)
+thing.yeelink.light.ct2 = Yeelight LED Bulb (Tunable)
+thing.yeelink.light.lamp1 = Mi LED Desk Lamp
+thing.yeelink.light.lamp2 = Mi Smart LED Desk Lamp Pro
+thing.yeelink.light.lamp3 = Yeelight LED Lamp
+thing.yeelink.light.lamp4 = Mi LED Desk Lamp 1S
+thing.yeelink.light.lamp5 = Yeelight Smart Desk Lamp Prime
+thing.yeelink.light.lamp6 = Yeelight
+thing.yeelink.light.lamp7 = Yeelight LED Light Sensor Desk Lamp V1
+thing.yeelink.light.lamp8 = Yeelight
+thing.yeelink.light.lamp9 = Yeelight Star LED Table Lamp
+thing.yeelink.light.lamp10 = Yeelight Star Floor Lamp
+thing.yeelink.light.lamp15 = Yeelight Screen Light Bar
+thing.yeelink.light.mono1 = Yeelight Bulb
+thing.yeelink.light.mono2 = Yeelight White Bulb v2
+thing.yeelink.light.mono4 = Yeelight LED Bulb 1S(Dimmable)
+thing.yeelink.light.mono5 = Yeelight LED Filament Bulb
+thing.yeelink.light.mono6 = Mi Smart LED Bulb
+thing.yeelink.light.monoa = Yeelight LED smart bulb W3(dimmable)
+thing.yeelink.light.monob = Yeelight GU10 Smart Bulb W1(dimmable)
+thing.yeelink.light.panel1 = Yeelight Whiteglow Panel Light
+thing.yeelink.light.strip1 = Yeelight Lightstrip
+thing.yeelink.light.strip2 = Yeelight Lightstrip Plus
+thing.yeelink.light.strip4 = Yeelight Willow LED Lightstrip
+thing.yeelink.light.virtual = Light Group (Mi & Yeelight)
+thing.yeelink.switch.sw1 = Yeelight Smart Dual Control Module
+thing.yeelink.wifispeaker.v1 = Yeelight Smart Speaker
+thing.yilai.light.ceiling1 = Yilai Ceiling Light Aiyue 480
+thing.yilai.light.ceiling2 = Yilai Ceiling Lamp Hefeng 430
+thing.yilai.light.ceiling3 = Yilai Ceiling Lamp Hefeng Pro
+thing.yunmi.waterpuri.lx2 = Mi Water Purifier lx2
+thing.yunmi.waterpuri.lx3 = Mi Water Purifier (Under Counter)
+thing.yunmi.waterpuri.lx4 = Mi Water Purifier lx4
+thing.yunmi.waterpuri.lx5 = Mi Water Purifier 1A/400G Pro
+thing.yunmi.waterpuri.lx6 = Mi Water Purifier (Under Counter)
+thing.yunmi.waterpuri.lx7 = Mi Water Purifier 500G/500G Pro
+thing.yunmi.waterpuri.lx8 = Mi Water Purifier 600G
+thing.yunmi.waterpuri.lx9 = Mi Water Purifier D1
+thing.yunmi.waterpuri.lx10 = Mi Water Purifier lx10
+thing.yunmi.waterpuri.lx11 = Mi Water Purifier C1 (Triple Setting)
+thing.yunmi.waterpuri.lx12 = Mi Water Purifier S1
+thing.yunmi.waterpurifier.v1 = Mi Water Purifier v1
+thing.yunmi.waterpurifier.v2 = Mi Water Purifier v2
+thing.yunmi.waterpurifier.v3 = Mi Water Purifier (Under sink) v3
+thing.yunmi.waterpurifier.v4 = Mi Water Purifier v4
+thing.zhimi.airfresh.va2 = Smartmi Ventilation System
+thing.zhimi.airfresh.va4 = Smartmi Fresh Air System (Heating)
+thing.zhimi.airmonitor.v1 = Mi PM2.5 Air Quality Monitor
+thing.zhimi.airpurifier.m1 = Mi Air Purifier 2 (mini)
+thing.zhimi.airpurifier.m2 = Mi Air Purifier 2
+thing.zhimi.airpurifier.ma1 = Mi Air Purifier 2S
+thing.zhimi.airpurifier.ma2 = Mi Air Purifier 2S
+thing.zhimi.airpurifier.ma4 = Mi Air Purifier 3
+thing.zhimi.airpurifier.mb1 = Mi Air Purifier 2S
+thing.zhimi.airpurifier.mb3 = Mi Air Purifier 3/3H
+thing.zhimi.airpurifier.mb4 = Mi Air Purifier 3C
+thing.zhimi.airpurifier.mc1 = Mi Air Purifier 2S
+thing.zhimi.airpurifier.mc2 = Mi Air Purifier 2H
+thing.zhimi.airpurifier.sa1 = Mi Air Purifier Super
+thing.zhimi.airpurifier.sa2 = Mi Air Purifier MAX / MAX Pro
+thing.zhimi.airpurifier.v1 = Mi Air Purifier v1
+thing.zhimi.airpurifier.v2 = Mi Air Purifier v2
+thing.zhimi.airpurifier.v3 = Mi Air Purifier v3
+thing.zhimi.airpurifier.v5 = Mi Air Purifier v5
+thing.zhimi.airpurifier.v6 = Mi Air Purifier Pro v6
+thing.zhimi.airpurifier.v7 = Mi Air Purifier Pro v7
+thing.zhimi.airpurifier.vb2 = Mi Air Purifier Pro H
+thing.zhimi.airpurifier.virtual = Mi Air Purifier virtual
+thing.zhimi.airpurifier.vtl_m1 = Mi Air Purifier 2(Virtual)
+thing.zhimi.airpurifier.za1 = Smartmi Air Purifier
+thing.zhimi.fan.sa1 = Mi Standing Fan
+thing.zhimi.fan.v1 = Mi Smart Fan
+thing.zhimi.fan.v2 = Smartmi DC Pedestal Fan
+thing.zhimi.fan.v3 = Smartmi DC Pedestal Fan
+thing.zhimi.fan.za1 = Smartmi Inverter Pedestal Fan
+thing.zhimi.fan.za3 = Smartmi Standing Fan 2
+thing.zhimi.fan.za4 = Smartmi Standing Fan 2S
+thing.zhimi.fan.za5 = Smartmi Standing Fan 3 
+thing.zhimi.heater.ma2 = Mi Smart Space Heater S
+thing.zhimi.heater.ma3 = Mi Smart Baseboard Heater E
+thing.zhimi.heater.mc2 = Mi Smart Space Heater S
+thing.zhimi.heater.na1 = Smartmi Smart Fan
+thing.zhimi.heater.nb1 = Smartmi Smart Fan Heater
+thing.zhimi.heater.za1 = Smartmi Radiant Heater Smart Version
+thing.zhimi.heater.za2 = Smartmi Smart Convector Heater 1S
+thing.zhimi.heater.zb1 = Smartmi Smart Convector Heater 1S
+thing.zhimi.humidifier.ca1 = Smartmi Evaporative Humidifier
+thing.zhimi.humidifier.ca4 = Smartmi Evaporative Humidifer 2
+thing.zhimi.humidifier.cb1 = Smartmi Evaporative Humidifier
+thing.zhimi.humidifier.cb2 = Smartmi Evaporative Humidifier
+thing.zhimi.humidifier.v1 = Smartmi Humidifier
+thing.zimi.clock.myk01 = Mi AI Alarm
+thing.zimi.powerstrip.v2 = Mi Smart Power Strip
+thing.unknown = Unknown Mi IO Device
+
+# Channels
+
+ch.090615.switch.xswitch01.switch1name = Switch Name 1
+ch.090615.switch.xswitch01.switch1state = Switch 1
+ch.090615.switch.xswitch02.switch1name = Switch Name 1
+ch.090615.switch.xswitch02.switch1state = Switch 1
+ch.090615.switch.xswitch02.switch2name = Switch Name 2
+ch.090615.switch.xswitch02.switch2state = Switch 2
+ch.090615.switch.xswitch03.switch1name = Switch Name 1
+ch.090615.switch.xswitch03.switch1state = Switch 1
+ch.090615.switch.xswitch03.switch2name = Switch Name 2
+ch.090615.switch.xswitch03.switch2state = Switch 2
+ch.090615.switch.xswitch03.switch3name = Switch Name 3
+ch.090615.switch.xswitch03.switch3state = Switch 3
+ch.careli.fryer.maf01-miot.actions = Actions
+ch.careli.fryer.maf01-miot.appoint_time = Custom - Appoint Time
+ch.careli.fryer.maf01-miot.appoint_time_left = Custom - Appoint Time Left
+ch.careli.fryer.maf01-miot.fault = Air Fryer - Device Fault
+ch.careli.fryer.maf01-miot.food_quantity = Custom - Food Quantity
+ch.careli.fryer.maf01-miot.left_time = Air Fryer - Left Time
+ch.careli.fryer.maf01-miot.preheat_switch = Custom - Preheat Switch
+ch.careli.fryer.maf01-miot.recipe_id = Custom - Recipe Id
+ch.careli.fryer.maf01-miot.recipe_name = Custom - Recipe Name
+ch.careli.fryer.maf01-miot.recipe_sync = Custom - Recipe Sync
+ch.careli.fryer.maf01-miot.status = Air Fryer - Status
+ch.careli.fryer.maf01-miot.target_temperature = Air Fryer - Target Temperature
+ch.careli.fryer.maf01-miot.target_time = Air Fryer - Target Time
+ch.careli.fryer.maf01-miot.turn_pot = Custom - Turn Pot
+ch.careli.fryer.maf01-miot.work_temp = Custom - Work Temp
+ch.careli.fryer.maf01-miot.work_time = Custom - Work Time
+ch.careli.fryer.maf02-miot.actions = Actions
+ch.careli.fryer.maf02-miot.appoint_time = Custom - Appoint Time
+ch.careli.fryer.maf02-miot.appoint_time_left = Custom - Appoint Time Left
+ch.careli.fryer.maf02-miot.fault = Air Fryer - Device Fault
+ch.careli.fryer.maf02-miot.food_quantity = Custom - Food Quantity
+ch.careli.fryer.maf02-miot.left_time = Air Fryer - Left Time
+ch.careli.fryer.maf02-miot.preheat_switch = Custom - Preheat Switch
+ch.careli.fryer.maf02-miot.recipe_id = Custom - Recipe Id
+ch.careli.fryer.maf02-miot.status = Air Fryer - Status
+ch.careli.fryer.maf02-miot.target_temperature = Air Fryer - Target Temperature
+ch.careli.fryer.maf02-miot.target_time = Air Fryer - Target Time
+ch.careli.fryer.maf02-miot.turn_pot = Custom - Turn Pot
+ch.careli.fryer.maf02-miot.work_temp = Custom - Work Temp
+ch.careli.fryer.maf02-miot.work_time = Custom - Work Time
+ch.cgllc.airm.cgdn1-miot.actions = Actions
+ch.cgllc.airm.cgdn1-miot.battery_level = Battery - Battery Level
+ch.cgllc.airm.cgdn1-miot.charging_state = Battery - Charging State
+ch.cgllc.airm.cgdn1-miot.co2_density = Environment - CO2 Density
+ch.cgllc.airm.cgdn1-miot.device_off = Settings - Device Off
+ch.cgllc.airm.cgdn1-miot.mac = Mac - Mac
+ch.cgllc.airm.cgdn1-miot.monitoring_frequency = Settings - Monitoring Frequency
+ch.cgllc.airm.cgdn1-miot.pm10_density = Environment - PM10 Density
+ch.cgllc.airm.cgdn1-miot.pm2_5_density = Environment - PM2 5 Density
+ch.cgllc.airm.cgdn1-miot.relative_humidity = Environment - Relative Humidity
+ch.cgllc.airm.cgdn1-miot.screen_off = Settings - Screen Off
+ch.cgllc.airm.cgdn1-miot.tempature_unit = Settings - Tempature Unit
+ch.cgllc.airm.cgdn1-miot.temperature = Environment - Temperature
+ch.cgllc.airm.cgdn1-miot.voltage = Battery - Voltage
+ch.cgllc.airmonitor.b1.battery = Battery
+ch.cgllc.airmonitor.b1.co2 = CO2e
+ch.cgllc.airmonitor.b1.humidity = Humidity
+ch.cgllc.airmonitor.b1.pm25 = PM2.5
+ch.cgllc.airmonitor.b1.temperature = Temperature
+ch.cgllc.airmonitor.b1.tvoc = tVOC
+ch.cgllc.airmonitor.s1.battery = Battery
+ch.cgllc.airmonitor.s1.co2 = CO2
+ch.cgllc.airmonitor.s1.humidity = Humidity
+ch.cgllc.airmonitor.s1.pm25 = PM2.5
+ch.cgllc.airmonitor.s1.temperature = Temperature
+ch.cgllc.airmonitor.s1.tvoc = tVOC
+ch.chuangmi.plug.212a01-miot.countdown = Imilab Timer - Countdown
+ch.chuangmi.plug.212a01-miot.countdown-info = Imilab Timer - Countdown Info
+ch.chuangmi.plug.212a01-miot.electric-current = Power Consumption - Electric Current
+ch.chuangmi.plug.212a01-miot.electric-power = Current Power Consumption - Electric Power
+ch.chuangmi.plug.212a01-miot.off-duration = Imilab Timer - Off Duration
+ch.chuangmi.plug.212a01-miot.on = Power
+ch.chuangmi.plug.212a01-miot.on-duration = Imilab Timer - On Duration
+ch.chuangmi.plug.212a01-miot.on1 = Indicator Light - Switch Status
+ch.chuangmi.plug.212a01-miot.power-consumption = Daily Power Consumption
+ch.chuangmi.plug.212a01-miot.task-switch = Imilab Timer - Task Switch
+ch.chuangmi.plug.212a01-miot.temperature = Temperature
+ch.chuangmi.plug.212a01-miot.voltage = Power Consumption - Voltage
+ch.chuangmi.plug.212a01-miot.working-time = Working Time
+ch.chuangmi.plug.m1.led = Indicator light
+ch.chuangmi.plug.m1.power = Power
+ch.chuangmi.plug.m1.temperature = Temperature
+ch.chuangmi.plug.v1.power = Power
+ch.chuangmi.plug.v1.temperature = Temperature
+ch.chuangmi.plug.v1.usb = USB
+ch.chuangmi.plug.v2.power = Power
+ch.chuangmi.plug.v2.usb = USB
+ch.chuangmi.plug.v3.led = Wifi LED
+ch.chuangmi.plug.v3.power = Power
+ch.chuangmi.plug.v3.temperature = Temperature
+ch.chuangmi.plug.v3.usb = USB
+ch.cuco.plug.cp1-miot.FirmwareRevision = Device Information-CurrentFirmware Version
+ch.cuco.plug.cp1-miot.Manufacturer = Device Information-Device Manufacturer
+ch.cuco.plug.cp1-miot.Model = Device Information-Device Model
+ch.cuco.plug.cp1-miot.On = Switch-Switch Status
+ch.cuco.plug.cp1-miot.SerialNumber = Device Information-Device Serial Number
+ch.deerma.humidifier.jsq1.humidity = Humidity
+ch.deerma.humidifier.jsq1.humidity_set = Humidity Setting
+ch.deerma.humidifier.jsq1.led = LED indicator Light
+ch.deerma.humidifier.jsq1.mode = Mode
+ch.deerma.humidifier.jsq1.power = Power
+ch.deerma.humidifier.jsq1.sound = Notification Sounds
+ch.deerma.humidifier.jsq1.watertankstatus = Watertank Status
+ch.deerma.humidifier.jsq1.wet_and_protect = Wet and Protect
+ch.deerma.humidifier.mjjsq.humidity = Humidity
+ch.deerma.humidifier.mjjsq.humidity_set = Humidity Setting
+ch.deerma.humidifier.mjjsq.led = LED indicator Light
+ch.deerma.humidifier.mjjsq.mode = Mode
+ch.deerma.humidifier.mjjsq.power = Power
+ch.deerma.humidifier.mjjsq.sound = Notification Sounds
+ch.deerma.humidifier.mjjsq.watertankstatus = Watertank Status
+ch.dmaker.airfresh.a1.airFreshCO2 = CO2
+ch.dmaker.airfresh.a1.airFreshChildLock = Child Lock
+ch.dmaker.airfresh.a1.airFreshCurrentSpeed = Current Speed
+ch.dmaker.airfresh.a1.airFreshDisplay = Display
+ch.dmaker.airfresh.a1.airFreshFavoriteSpeed = Favorite Speed
+ch.dmaker.airfresh.a1.airFreshFilterDays = Filter Days Remaining
+ch.dmaker.airfresh.a1.airFreshFilterPercents = Filter Percents Remaining
+ch.dmaker.airfresh.a1.airFreshMode = Mode
+ch.dmaker.airfresh.a1.airFreshPM25 = PM2.5
+ch.dmaker.airfresh.a1.airFreshPTCPower = PTC
+ch.dmaker.airfresh.a1.airFreshPTCStatus = PTC Status
+ch.dmaker.airfresh.a1.airFreshResetFilterA1 = Reset Filter
+ch.dmaker.airfresh.a1.airFreshSound = Sound
+ch.dmaker.airfresh.a1.airFreshTemperature = Temperature Outside
+ch.dmaker.airfresh.a1.power = Power
+ch.dmaker.airfresh.t2017.airFreshCO2 = CO2
+ch.dmaker.airfresh.t2017.airFreshChildLock = Child Lock
+ch.dmaker.airfresh.t2017.airFreshCurrentSpeed = Current Speed
+ch.dmaker.airfresh.t2017.airFreshDisplay = Display
+ch.dmaker.airfresh.t2017.airFreshDisplayDirection = Screen direction
+ch.dmaker.airfresh.t2017.airFreshFavoriteSpeed = Favorite Speed
+ch.dmaker.airfresh.t2017.airFreshFilterDays = Filter Days Remaining
+ch.dmaker.airfresh.t2017.airFreshFilterPercents = Filter Percents Remaining
+ch.dmaker.airfresh.t2017.airFreshFilterProDays = Filter Pro Days Remaining
+ch.dmaker.airfresh.t2017.airFreshFilterProPercents = Filter Pro Percents Remaining
+ch.dmaker.airfresh.t2017.airFreshMode = Mode
+ch.dmaker.airfresh.t2017.airFreshPM25 = PM2.5
+ch.dmaker.airfresh.t2017.airFreshPTCPower = PTC
+ch.dmaker.airfresh.t2017.airFreshPTCStatus = PTC Status
+ch.dmaker.airfresh.t2017.airFreshPtcLevel = PTC Level
+ch.dmaker.airfresh.t2017.airFreshResetFilter = Reset Filter
+ch.dmaker.airfresh.t2017.airFreshSound = Sound
+ch.dmaker.airfresh.t2017.airFreshTemperature = Temperature Outside
+ch.dmaker.airfresh.t2017.power = Power
+ch.dmaker.fan.p15-miot.actions = Actions
+ch.dmaker.fan.p15-miot.alarm = Alarm - Alarm
+ch.dmaker.fan.p15-miot.fan_level = Fan - Gear Fan Level
+ch.dmaker.fan.p15-miot.fault = Motor Controller - Device Fault
+ch.dmaker.fan.p15-miot.horizontal_angle = Fan - Horizontal Angle
+ch.dmaker.fan.p15-miot.horizontal_swing = Fan - Horizontal Swing
+ch.dmaker.fan.p15-miot.mode = Fan - Mode
+ch.dmaker.fan.p15-miot.off_delay_time = Off Delay Time - Off Delay Time
+ch.dmaker.fan.p15-miot.on = Fan - Switch Status
+ch.dmaker.fan.p15-miot.on1 = Indicator Light - Switch Status
+ch.dmaker.fan.p15-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.dmaker.fan.p15-miot.status = Fan - Status
+ch.dmaker.fan.p18-miot.actions = Actions
+ch.dmaker.fan.p18-miot.alarm = Fan - Alarm
+ch.dmaker.fan.p18-miot.brightness = Fan - Brightness
+ch.dmaker.fan.p18-miot.fan_level = Fan - Fan Level
+ch.dmaker.fan.p18-miot.horizontal_angle = Fan - Horizontal Angle
+ch.dmaker.fan.p18-miot.horizontal_swing = Fan - Horizontal Swing
+ch.dmaker.fan.p18-miot.mode = Fan - Mode
+ch.dmaker.fan.p18-miot.motor_control = Fan - Motor Control
+ch.dmaker.fan.p18-miot.off_delay_time = Fan - Power Off Delay Time
+ch.dmaker.fan.p18-miot.on = Fan - Switch Status
+ch.dmaker.fan.p18-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.dmaker.fan.p18-miot.speed_level = Fan - Speed Level
+ch.dmaker.fan.p5.angle = Angle
+ch.dmaker.fan.p5.beep = Beep Sound
+ch.dmaker.fan.p5.child_lock = Child Lock
+ch.dmaker.fan.p5.light = Light
+ch.dmaker.fan.p5.mode = Mode
+ch.dmaker.fan.p5.power = Power
+ch.dmaker.fan.p5.roll = Rotation
+ch.dmaker.fan.p5.speed = Speed
+ch.dmaker.fan.p5.timer = Timer
+ch.dmaker.fan.p8-miot.Alarm = Fan-Alarm
+ch.dmaker.fan.p8-miot.Brightness = Fan-Brightness
+ch.dmaker.fan.p8-miot.FanLevel = Fan-Fan Level
+ch.dmaker.fan.p8-miot.HorizontalSwing = Fan-Horizontal Swing
+ch.dmaker.fan.p8-miot.Mode = Fan-Mode
+ch.dmaker.fan.p8-miot.OffDelayTime = Fan-Power Off Delay Time
+ch.dmaker.fan.p8-miot.On = Fan - Switch Status
+ch.dmaker.fan.p8-miot.PhysicalControlsLocked = Physical Control Locked-Physical Control Locked
+ch.dmaker.fan.p8-miot.actions = Actions
+ch.dmaker.fan.p9-miot.Alarm = Fan-Alarm
+ch.dmaker.fan.p9-miot.Brightness = Fan-Brightness
+ch.dmaker.fan.p9-miot.FanLevel = Fan-Fan Level
+ch.dmaker.fan.p9-miot.HorizontalAngle = Fan-Horizontal Angle
+ch.dmaker.fan.p9-miot.HorizontalSwing = Fan-Horizontal Swing
+ch.dmaker.fan.p9-miot.Mode = Fan-Mode
+ch.dmaker.fan.p9-miot.MotorControl = Fan-Motor Control
+ch.dmaker.fan.p9-miot.OffDelayTime = Fan - Power Off Delay Time
+ch.dmaker.fan.p9-miot.On = Fan-Switch Status
+ch.dmaker.fan.p9-miot.PhysicalControlsLocked = Physical Control Locked-Physical Control Locked
+ch.dmaker.fan.p9-miot.SpeedLevel = Fan-Speed Level
+ch.dmaker.fan.p9-miot.actions = Actions
+ch.dreame.vacuum.mc1808-miot.Area = clean-area
+ch.dreame.vacuum.mc1808-miot.BatteryLevel = Battery-Battery Level
+ch.dreame.vacuum.mc1808-miot.BrushLeftTime = Main Cleaning Brush-Brush Left Time
+ch.dreame.vacuum.mc1808-miot.BrushLeftTime1 = Side Cleaning Brush-Brush Left Time
+ch.dreame.vacuum.mc1808-miot.BrushLifeLevel = Main Cleaning Brush-Brush Life Level
+ch.dreame.vacuum.mc1808-miot.BrushLifeLevel1 = Side Cleaning Brush-Brush Life Level
+ch.dreame.vacuum.mc1808-miot.ButtonLed = Clean - Button Led
+ch.dreame.vacuum.mc1808-miot.ChargingState = Battery-Charging State
+ch.dreame.vacuum.mc1808-miot.CleanLogStartTime = Clean - Clean Log Start Time
+ch.dreame.vacuum.mc1808-miot.Enable = Annoy - Enable
+ch.dreame.vacuum.mc1808-miot.Fault = Robot Cleaner-Device Fault
+ch.dreame.vacuum.mc1808-miot.FilterLeftTime = Filter-Filter Left Time
+ch.dreame.vacuum.mc1808-miot.FilterLifeLevel = Filter - Filter Life Level
+ch.dreame.vacuum.mc1808-miot.LifeBrushMain = Consumable - Life Brush Main
+ch.dreame.vacuum.mc1808-miot.LifeBrushSide = Consumable - Life Brush Side
+ch.dreame.vacuum.mc1808-miot.LifeSieve = Consumable - Life Sieve
+ch.dreame.vacuum.mc1808-miot.MapView = Map - Map View
+ch.dreame.vacuum.mc1808-miot.Mode = clean-mode
+ch.dreame.vacuum.mc1808-miot.StartTime = Annoy - Start Time
+ch.dreame.vacuum.mc1808-miot.Status = Robot Cleaner-Status
+ch.dreame.vacuum.mc1808-miot.StopTime = Annoy - Stop Time
+ch.dreame.vacuum.mc1808-miot.TaskDone = Clean - Task Done
+ch.dreame.vacuum.mc1808-miot.TimeZone = Time - Time Zone
+ch.dreame.vacuum.mc1808-miot.Timer = clean-timer
+ch.dreame.vacuum.mc1808-miot.TotalCleanArea = Clean - Total Clean Area
+ch.dreame.vacuum.mc1808-miot.TotalCleanTime = Clean - Total Clean Time
+ch.dreame.vacuum.mc1808-miot.TotalCleanTimes = Clean - Total Clean Times
+ch.dreame.vacuum.mc1808-miot.VoicePackets = Audio - Voice Packets
+ch.dreame.vacuum.mc1808-miot.Volume = Audio - Volume
+ch.dreame.vacuum.mc1808-miot.WorkMode = clean-workmode
+ch.dreame.vacuum.mc1808-miot.vacuumaction = Vacuum Action
+ch.dreame.vacuum.mc1808-miot.water-mode = Water Mode
+ch.dreame.vacuum.p2008-miot.battery-level = Battery - Battery Level
+ch.dreame.vacuum.p2008-miot.break-point-restart = Vacuum Extend - Break Point Restart
+ch.dreame.vacuum.p2008-miot.brush-left-time = Main Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2008-miot.brush-left-time1 = Side Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2008-miot.brush-life-level = Main Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2008-miot.brush-life-level1 = Side Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2008-miot.carpet-press = Vacuum Extend - Carpet Press
+ch.dreame.vacuum.p2008-miot.charging-state = Battery - Charging State
+ch.dreame.vacuum.p2008-miot.cleaning-area = Vacuum Extend - Cleaning Area
+ch.dreame.vacuum.p2008-miot.cleaning-mode = Vacuum Extend - Cleaning Mode
+ch.dreame.vacuum.p2008-miot.cleaning-time = Vacuum Extend - Cleaning Time
+ch.dreame.vacuum.p2008-miot.enable = Do Not Disturb - Enable
+ch.dreame.vacuum.p2008-miot.end-time = Do Not Disturb - End Time
+ch.dreame.vacuum.p2008-miot.fault = Robot Cleaner - Device Fault
+ch.dreame.vacuum.p2008-miot.filter-left-time = Filter - Filter Left Time
+ch.dreame.vacuum.p2008-miot.filter-life-level = Filter - Filter Life Level
+ch.dreame.vacuum.p2008-miot.first-clean-time = Clean Logs - First Clean Time
+ch.dreame.vacuum.p2008-miot.mop-mode = Vacuum Extend - Mop Mode
+ch.dreame.vacuum.p2008-miot.save-map-status = Vslam Extend - Save Map Status
+ch.dreame.vacuum.p2008-miot.start-time = Do Not Disturb - Start Time
+ch.dreame.vacuum.p2008-miot.status = Robot Cleaner - Status
+ch.dreame.vacuum.p2008-miot.task-status = Vacuum Extend - Task Status
+ch.dreame.vacuum.p2008-miot.time-zone = Time - Time Zone
+ch.dreame.vacuum.p2008-miot.timer-clean = Time - Timer Clean
+ch.dreame.vacuum.p2008-miot.total-clean-area = Clean Logs - Total Clean Area
+ch.dreame.vacuum.p2008-miot.total-clean-time = Clean Logs - Total Clean Time
+ch.dreame.vacuum.p2008-miot.total-clean-times = Clean Logs - Total Clean Times
+ch.dreame.vacuum.p2008-miot.voice-change-state = Audio - Voice Change State
+ch.dreame.vacuum.p2008-miot.voice-packet-id = Audio - Voice Packet Id
+ch.dreame.vacuum.p2008-miot.volume = Audio - Volume
+ch.dreame.vacuum.p2008-miot.waterbox-status = Vacuum Extend - Waterbox Status
+ch.dreame.vacuum.p2008-miot.work-mode = Vacuum Extend - Work Mode
+ch.dreame.vacuum.p2009-miot.battery-level = Battery - Battery Level
+ch.dreame.vacuum.p2009-miot.break-point-restart = Vacuum Extend - Break Point Restart
+ch.dreame.vacuum.p2009-miot.brush-left-time = Main Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2009-miot.brush-left-time1 = Side Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2009-miot.brush-life-level = Main Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2009-miot.brush-life-level1 = Side Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2009-miot.carpet-press = Vacuum Extend - Carpet Press
+ch.dreame.vacuum.p2009-miot.charging-state = Battery - Charging State
+ch.dreame.vacuum.p2009-miot.clean-rags-tip = Vacuum Extend - Clean Rags Tip
+ch.dreame.vacuum.p2009-miot.cleaning-area = Vacuum Extend - Cleaning Area
+ch.dreame.vacuum.p2009-miot.cleaning-mode = Vacuum Extend - Cleaning Mode
+ch.dreame.vacuum.p2009-miot.cleaning-time = Vacuum Extend - Cleaning Time
+ch.dreame.vacuum.p2009-miot.enable = Do Not Disturb - Enable
+ch.dreame.vacuum.p2009-miot.end-time = Do Not Disturb - End Time
+ch.dreame.vacuum.p2009-miot.fault = Robot Cleaner - Device Fault
+ch.dreame.vacuum.p2009-miot.faults = Vacuum Extend - Faults
+ch.dreame.vacuum.p2009-miot.filter-left-time = Filter - Filter Left Time
+ch.dreame.vacuum.p2009-miot.filter-life-level = Filter - Filter Life Level
+ch.dreame.vacuum.p2009-miot.first-clean-time = Clean Logs - First Clean Time
+ch.dreame.vacuum.p2009-miot.keep-sweeper-time = Vacuum Extend - Keep Sweeper Time
+ch.dreame.vacuum.p2009-miot.mop-mode = Vacuum Extend - Mop Mode
+ch.dreame.vacuum.p2009-miot.resetConsumable = Consumables Reset
+ch.dreame.vacuum.p2009-miot.serial-number1 = Vacuum Extend - Serial Number
+ch.dreame.vacuum.p2009-miot.start-time = Do Not Disturb - Start Time
+ch.dreame.vacuum.p2009-miot.status = Robot Cleaner - Status
+ch.dreame.vacuum.p2009-miot.task-status = Vacuum Extend - Task Status
+ch.dreame.vacuum.p2009-miot.time-zone = Time - Time Zone
+ch.dreame.vacuum.p2009-miot.timer-clean = Time - Timer Clean
+ch.dreame.vacuum.p2009-miot.total-clean-area = Clean Logs - Total Clean Area
+ch.dreame.vacuum.p2009-miot.total-clean-time = Clean Logs - Total Clean Time
+ch.dreame.vacuum.p2009-miot.total-clean-times = Clean Logs - Total Clean Times
+ch.dreame.vacuum.p2009-miot.vacuumaction = Vacuum Action
+ch.dreame.vacuum.p2009-miot.voice-change-state = Audio - Voice Change State
+ch.dreame.vacuum.p2009-miot.voice-packet-id = Audio - Voice Packet Id
+ch.dreame.vacuum.p2009-miot.volume = Audio - Volume
+ch.dreame.vacuum.p2009-miot.waterbox-status = Vacuum Extend - Waterbox Status
+ch.dreame.vacuum.p2009-miot.work-mode = Vacuum Extend - Work Mode
+ch.dreame.vacuum.p2156o-miot.actions = Actions
+ch.dreame.vacuum.p2156o-miot.battery_level = Battery - Battery Level
+ch.dreame.vacuum.p2156o-miot.break_point_restart = Vacuum Extend - Break Point Restart
+ch.dreame.vacuum.p2156o-miot.brush_left_time = Main Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2156o-miot.brush_left_time1 = Side Cleaning Brush - Brush Left Time
+ch.dreame.vacuum.p2156o-miot.brush_life_level = Main Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2156o-miot.brush_life_level1 = Side Cleaning Brush - Brush Life Level
+ch.dreame.vacuum.p2156o-miot.carpet_press = Vacuum Extend - Carpet Press
+ch.dreame.vacuum.p2156o-miot.charging_state = Battery - Charging State
+ch.dreame.vacuum.p2156o-miot.cleaning-area = Vacuum Extend - Cleaning Area
+ch.dreame.vacuum.p2156o-miot.cleaning_mode = Vacuum Extend - Cleaning Mode
+ch.dreame.vacuum.p2156o-miot.cleaning_time = Vacuum Extend - Cleaning Time
+ch.dreame.vacuum.p2156o-miot.enable = Do Not Disturb - Enable
+ch.dreame.vacuum.p2156o-miot.end_time = Do Not Disturb - End Time
+ch.dreame.vacuum.p2156o-miot.fault = Robot Cleaner - Device Fault
+ch.dreame.vacuum.p2156o-miot.faults = Vacuum Extend - Faults
+ch.dreame.vacuum.p2156o-miot.filter_left_time = Filter - Filter Left Time
+ch.dreame.vacuum.p2156o-miot.filter_life_level = Filter - Filter Life Level
+ch.dreame.vacuum.p2156o-miot.first_clean_time = Clean Logs - First Clean Time
+ch.dreame.vacuum.p2156o-miot.keep_sweeper_time = Vacuum Extend - Keep Sweeper Time
+ch.dreame.vacuum.p2156o-miot.mode = Robot Cleaner - Mode
+ch.dreame.vacuum.p2156o-miot.mop_mode = Vacuum Extend - Mop Mode
+ch.dreame.vacuum.p2156o-miot.save_map_status = Vslam Extend - Save Map Status
+ch.dreame.vacuum.p2156o-miot.serial_number = Vacuum Extend - Serial Number
+ch.dreame.vacuum.p2156o-miot.start_time = Do Not Disturb - Start Time
+ch.dreame.vacuum.p2156o-miot.status = Robot Cleaner - Status
+ch.dreame.vacuum.p2156o-miot.task_status = Vacuum Extend - Task Status
+ch.dreame.vacuum.p2156o-miot.time_zone = Time - Time Zone
+ch.dreame.vacuum.p2156o-miot.timer_clean = Time - Timer Clean
+ch.dreame.vacuum.p2156o-miot.total_clean_area = Clean Logs - Total Clean Area
+ch.dreame.vacuum.p2156o-miot.total_clean_time = Clean Logs - Total Clean Time
+ch.dreame.vacuum.p2156o-miot.total_clean_times = Clean Logs - Total Clean Times
+ch.dreame.vacuum.p2156o-miot.voice_change_state = Audio - Voice Change State
+ch.dreame.vacuum.p2156o-miot.voice_packet_id = Audio - Voice Packet Id
+ch.dreame.vacuum.p2156o-miot.volume = Audio - Volume
+ch.dreame.vacuum.p2156o-miot.waterbox_status = Vacuum Extend - Waterbox Status
+ch.dreame.vacuum.p2156o-miot.work_mode = Vacuum Extend - Work Mode
+ch.huayi.light.fanwy-miot.brightness = Light - Brightness
+ch.huayi.light.fanwy-miot.color-temperature = Light - Color Temperature
+ch.huayi.light.fanwy-miot.fan-level = Fan - Fan Level
+ch.huayi.light.fanwy-miot.mode = Fan - Mode
+ch.huayi.light.fanwy-miot.motor-reverse = Fan - Motor Reverse
+ch.huayi.light.fanwy-miot.on = Light - Power
+ch.huayi.light.fanwy-miot.on1 = Fan - Power
+ch.huayi.light.fanwy2-miot.brightness = Light - Brightness
+ch.huayi.light.fanwy2-miot.color-temperature = Light - Color Temperature
+ch.huayi.light.fanwy2-miot.fan-level = Fan - Fan Level
+ch.huayi.light.fanwy2-miot.flabellum = Presets - Flabellum
+ch.huayi.light.fanwy2-miot.mode = Fan - Mode
+ch.huayi.light.fanwy2-miot.on = Light - Power
+ch.huayi.light.fanwy2-miot.on1 = Fan - Power
+ch.huayi.light.fanwy2-miot.pre-brightness = Presets - Pre Brightness
+ch.huayi.light.fanwy2-miot.pre-colortemp = Presets - Pre Colortemp
+ch.huayi.light.fanwy2-miot.pre-custom = Presets - Pre Custom
+ch.huayi.light.fanwy2-miot.pre-speed = Presets - Pre Speed
+ch.huayi.light.fanwy2-miot.reversal = Presets - Reversal
+ch.huayi.light.fanwy2-miot.time-off = Presets - Time Off
+ch.huayi.light.pis123-miot.brightness = Light - Brightness
+ch.huayi.light.pis123-miot.color-temperature = Light - Color Temperature
+ch.huayi.light.pis123-miot.on = Light - Power
+ch.huayi.light.wy200-miot.brightness = Light - Brightness
+ch.huayi.light.wy200-miot.color-temperature = Light - Color Temperature
+ch.huayi.light.wy200-miot.on = Light - Power
+ch.huayi.light.wyheat-miot.brightness = Light - Brightness
+ch.huayi.light.wyheat-miot.color-temperature = Light - Color Temperature
+ch.huayi.light.wyheat-miot.fault = Heater - Device Fault
+ch.huayi.light.wyheat-miot.heat-level = Heater - Heat Level
+ch.huayi.light.wyheat-miot.on = Light - Power
+ch.huayi.light.wyheat-miot.on1 = Heater - Power
+ch.huayi.light.wyheat-miot.screenshow = Other - Screenshow
+ch.lumi.curtain.hagl05-miot.current-position = Curtain - Current Position
+ch.lumi.curtain.hagl05-miot.en-night-tip-light = Set Night Tip Light
+ch.lumi.curtain.hagl05-miot.fault = Curtain - Device Fault
+ch.lumi.curtain.hagl05-miot.manual-enabled = curtain_cfg - Manual Enabled
+ch.lumi.curtain.hagl05-miot.polarity = curtain_cfg - Polarity
+ch.lumi.curtain.hagl05-miot.pos-limit = curtain_cfg - Position Limit
+ch.lumi.curtain.hagl05-miot.run-time = curtain_cfg - Run-time
+ch.lumi.curtain.hagl05-miot.status = Curtain - Status
+ch.lumi.curtain.hagl05-miot.target-position = Curtain - Target Position
+ch.lumi.gateway.alarmingVol = Alarming Volume
+ch.lumi.gateway.doorbellPush = Doorbell Push
+ch.lumi.gateway.doorbellVol = Doorbell Volume
+ch.lumi.gateway.gatewayVol = Gateway Volume
+ch.lumi.gateway.mieu01.alarming_volume = Alarming Volume
+ch.lumi.gateway.mieu01.arming_time = Arming Time
+ch.lumi.gateway.mieu01.corridor = Automatic Night Light
+ch.lumi.gateway.mieu01.corridor_on_time = Corridor on time
+ch.lumi.gateway.mieu01.doorbell_push = Doorbell Push
+ch.lumi.gateway.mieu01.doorbell_volume = Doorbell Volume
+ch.lumi.gateway.mieu01.gateway_volume = Gateway Volume
+ch.lumi.gateway.mieu01.guard = Guard
+ch.lumi.gateway.mieu01.language = Voice prompt Language
+ch.lumi.gateway.mieu01.lumi_bind = Lumi_bind info
+ch.lumi.gateway.mieu01.nightlight = Night Light
+ch.lumi.gateway.mieu01.rgb = Colored Light
+ch.lumi.gateway.mieu01.zigbee_channel = Zigbee Channel
+ch.lumi.gateway.telnetEnable = Enable Telnet
+ch.mijia.vacuum.v2-miot.alarm = Alarm - Alarm
+ch.mijia.vacuum.v2-miot.battery-level = Battery - Battery Level
+ch.mijia.vacuum.v2-miot.brush-left-time = Brush Cleaner - Brush Left Time
+ch.mijia.vacuum.v2-miot.brush-left-time1 = Brush Cleaner - Brush Left Time
+ch.mijia.vacuum.v2-miot.brush-life-level = Brush Cleaner - Brush Life Level
+ch.mijia.vacuum.v2-miot.brush-life-level1 = Brush Cleaner - Brush Life Level
+ch.mijia.vacuum.v2-miot.charging-state = Battery - Charging State
+ch.mijia.vacuum.v2-miot.clean-area = Clean Record - Clean Area
+ch.mijia.vacuum.v2-miot.clean_time = Clean Record - Clean Time
+ch.mijia.vacuum.v2-miot.direction_key = Remote Control - Direction Key
+ch.mijia.vacuum.v2-miot.fan-level = Robot Cleaner - Fan Level
+ch.mijia.vacuum.v2-miot.fault = Robot Cleaner - Device Fault
+ch.mijia.vacuum.v2-miot.filter-left-time = Filter - Filter Left Time
+ch.mijia.vacuum.v2-miot.filter_life_level = Filter - Filter Life Level
+ch.mijia.vacuum.v2-miot.language = Language - Language
+ch.mijia.vacuum.v2-miot.mode = Robot Cleaner - Mode
+ch.mijia.vacuum.v2-miot.mop-status = Other Status - Mop Status
+ch.mijia.vacuum.v2-miot.not-disturb-switch = Language - Not Disturb Switch
+ch.mijia.vacuum.v2-miot.status = Robot Cleaner - Status
+ch.mijia.vacuum.v2-miot.target-water-level = Robot Cleaner - Target Water Level
+ch.mijia.vacuum.v2-miot.total-clean-area = Clean Record - Total Clean Area
+ch.mijia.vacuum.v2-miot.total-clean-count = Clean Record - Total Clean Count
+ch.mijia.vacuum.v2-miot.total-clean-time = Clean Record - Total Clean Time
+ch.mijia.vacuum.v2-miot.vacuumaction = Vacuum Action
+ch.mijia.vacuum.v2-miot.volume = Alarm - Volume
+ch.mmgg.pet_waterer.s1-miot.cotton-left-time = Filter Cotton - Cotton Left Time
+ch.mmgg.pet_waterer.s1-miot.fault = Pet Drinking Fountain - Device Fault
+ch.mmgg.pet_waterer.s1-miot.filter-left-time = Filter - Filter Left Time
+ch.mmgg.pet_waterer.s1-miot.mode = Mode
+ch.mmgg.pet_waterer.s1-miot.no-water-flag = No Water Flag - No Water Flag
+ch.mmgg.pet_waterer.s1-miot.no-water-time = No Water Flag - No Water Time
+ch.mmgg.pet_waterer.s1-miot.on = Power
+ch.mmgg.pet_waterer.s1-miot.on1 = Indicator Light - Switch
+ch.mmgg.pet_waterer.s1-miot.remain-clean-time = Remain Clean Time - Remain Clean Time
+ch.mmgg.pet_waterer.s1-miot.resetConsumable = Consumables Reset
+ch.mmgg.pet_waterer.s2-miot.cotton-left-time = Filter Cotton - Cotton Left Time
+ch.mmgg.pet_waterer.s2-miot.fault = Pet Drinking Fountain - Device Fault
+ch.mmgg.pet_waterer.s2-miot.filter-left-time = Filter - Filter Left Time
+ch.mmgg.pet_waterer.s2-miot.mode = Mode
+ch.mmgg.pet_waterer.s2-miot.no-water-flag = No Water Flag - No Water Flag
+ch.mmgg.pet_waterer.s2-miot.no-water-time = No Water Flag - No Water Time
+ch.mmgg.pet_waterer.s2-miot.on = Power
+ch.mmgg.pet_waterer.s2-miot.on1 = Indicator Light - Switch
+ch.mmgg.pet_waterer.s2-miot.pump-block-flag = No Water Flag - Pump Block Flag
+ch.mmgg.pet_waterer.s2-miot.remain-clean-time = Remain Clean Time - Remain Clean Time
+ch.mmgg.pet_waterer.s2-miot.resetConsumable = Consumables Reset
+ch.mrbond.airer.m1pro.airer_location = Airer Location
+ch.mrbond.airer.m1pro.disinfect = disinfect
+ch.mrbond.airer.m1pro.distime = Disinfect Time
+ch.mrbond.airer.m1pro.dry = Dry
+ch.mrbond.airer.m1pro.drytime = Dry Time
+ch.mrbond.airer.m1pro.led = LED Status
+ch.mrbond.airer.m1pro.motor = Motor
+ch.nwt.derh.wdh318efw1.alarm = Alarm
+ch.nwt.derh.wdh318efw1.autohumidity = Auto humidity
+ch.nwt.derh.wdh318efw1.buzzer = Buzzer
+ch.nwt.derh.wdh318efw1.childlock = Child Lock
+ch.nwt.derh.wdh318efw1.compressorstatus = Compressor Status
+ch.nwt.derh.wdh318efw1.defroststatus = Defrost Status
+ch.nwt.derh.wdh318efw1.fanspeed = Fan Speed
+ch.nwt.derh.wdh318efw1.fanst = Fan St
+ch.nwt.derh.wdh318efw1.humidity = Humidity
+ch.nwt.derh.wdh318efw1.led = LED
+ch.nwt.derh.wdh318efw1.mode = Mode
+ch.nwt.derh.wdh318efw1.power = Power
+ch.nwt.derh.wdh318efw1.tankfull = Tank Full
+ch.nwt.derh.wdh318efw1.temperature = Temperature
+ch.philips.light.bceiling1.ac = Auto Ambiance
+ch.philips.light.bceiling1.bl = Night Light
+ch.philips.light.bceiling1.brightness = Brightness
+ch.philips.light.bceiling1.cct = Correlated Color Temperature
+ch.philips.light.bceiling1.delayoff = Delay Off
+ch.philips.light.bceiling1.dv = DV
+ch.philips.light.bceiling1.mb = MiBand
+ch.philips.light.bceiling1.ms = MiBand Notifications
+ch.philips.light.bceiling1.power = Power
+ch.philips.light.bceiling1.scene = Scene
+ch.philips.light.bceiling1.sw = Switch
+ch.philips.light.bulb.brightness = Brightness
+ch.philips.light.bulb.cct = Correlated Color Temperature
+ch.philips.light.bulb.delayoff = Delay Off
+ch.philips.light.bulb.dv = DV
+ch.philips.light.bulb.power = Power
+ch.philips.light.bulb.scene = Scene
+ch.philips.light.bulb.switchscene = Switch Scene
+ch.philips.light.candle.brightness = Brightness
+ch.philips.light.candle.cct = Correlated Color Temperature
+ch.philips.light.candle.delayoff = Delay Off
+ch.philips.light.candle.power = Power
+ch.philips.light.candle.scene = Scene
+ch.philips.light.candle.toggle = Toggle
+ch.philips.light.cbulb.brightness = Brightness
+ch.philips.light.cbulb.cct = Correlated Color Temperature
+ch.philips.light.cbulb.cid = Color
+ch.philips.light.cbulb.delayoff = Delay Off
+ch.philips.light.cbulb.power = Power
+ch.philips.light.cbulb.scene = Scene
+ch.philips.light.cbulb.switch_en = Switch Enabled
+ch.philips.light.cbulb.switchscene = Switch Scene
+ch.philips.light.ceil-miot.MibandStatus = Mi Band Status
+ch.philips.light.ceil-miot.WallScene = Wall Scene
+ch.philips.light.ceil-miot.WallSceneEn = Wall Scene Enable
+ch.philips.light.ceil-miot.autoCct = Auto CCT
+ch.philips.light.ceil-miot.brightness = Brightness
+ch.philips.light.ceil-miot.cct = Color Temperature
+ch.philips.light.ceil-miot.dimmingPeriod = Dimming Period
+ch.philips.light.ceil-miot.dv = Delayed Turn-off
+ch.philips.light.ceil-miot.mode = Mode
+ch.philips.light.ceil-miot.on = Power
+ch.philips.light.ceiling.brightness = Brightness
+ch.philips.light.ceiling.cct = Correlated Color Temperature
+ch.philips.light.ceiling.power = Power
+ch.philips.light.ceiling.scene = Scene
+ch.philips.light.ceiling.switchscene = Switch Scene
+ch.philips.light.ceiling.toggle = Toggle
+ch.philips.light.mono.brightness = Brightness
+ch.philips.light.mono.power = Power
+ch.philips.light.mono.scene = Scene
+ch.philips.light.moonlight.brightness = Brightness
+ch.philips.light.moonlight.cct = Correlated Color Temperature
+ch.philips.light.moonlight.delayoff = Delay Off
+ch.philips.light.moonlight.dv = DV
+ch.philips.light.moonlight.gonight = Go Night
+ch.philips.light.moonlight.power = Power
+ch.philips.light.moonlight.scene = Scene
+ch.philips.light.moonlight.toggle = Toggle
+ch.philips.light.rwread.brightness = Brightness
+ch.philips.light.rwread.dv = DV
+ch.philips.light.rwread.flm = Follow Me
+ch.philips.light.rwread.power = Power
+ch.philips.light.rwread.scene = Scene
+ch.philips.light.sread1.ambientBrightness = Ambient Brightness
+ch.philips.light.sread1.ambientPower = Ambient Power
+ch.philips.light.sread1.bl = Night Light
+ch.philips.light.sread1.brightness = Brightness
+ch.philips.light.sread1.eyecare = Eyecare
+ch.philips.light.sread1.illumination = Ambient Illumination
+ch.philips.light.sread1.power = Power
+ch.qmi.powerstrip.v1.current = Current
+ch.qmi.powerstrip.v1.elec_leakage = Electic Leakage
+ch.qmi.powerstrip.v1.led = wifi LED
+ch.qmi.powerstrip.v1.mode = Mode
+ch.qmi.powerstrip.v1.power = Power
+ch.qmi.powerstrip.v1.powerUsage = Power Consumption
+ch.qmi.powerstrip.v1.power_factor = Power Factor
+ch.qmi.powerstrip.v1.power_price = Power Price
+ch.qmi.powerstrip.v1.temperature = Temperature
+ch.qmi.powerstrip.v1.voltage = Voltage
+ch.scishare.coffee.s1102.Status = status
+ch.scishare.coffee.s1102.boil = Boil water
+ch.scishare.coffee.s1102.expresso = Brew Americano
+ch.scishare.coffee.s1102.power = Power
+ch.viomi.vacuum.v18-miot.auto-area-id = Map - Auto Area Id
+ch.viomi.vacuum.v18-miot.battery-level = Battery - Battery Level
+ch.viomi.vacuum.v18-miot.clean-area = Viomi Vacuum - Clean Area
+ch.viomi.vacuum.v18-miot.clean-map-url = Viomi Vacuum - Clean Map Url
+ch.viomi.vacuum.v18-miot.clean-mode = Viomi Vacuum - Clean Mode
+ch.viomi.vacuum.v18-miot.clean-start-time = Viomi Vacuum - Clean Start Time
+ch.viomi.vacuum.v18-miot.clean-use-time = Viomi Vacuum - Clean Use Time
+ch.viomi.vacuum.v18-miot.clean-way = Viomi Vacuum - Clean Way
+ch.viomi.vacuum.v18-miot.contact-state = Robot Cleaner - Contact State
+ch.viomi.vacuum.v18-miot.contact-state1 = Robot Cleaner - Contact State
+ch.viomi.vacuum.v18-miot.contact-state2 = Robot Cleaner - Contact State
+ch.viomi.vacuum.v18-miot.cur-cleaning-path = Map - Cur Cleaning Path
+ch.viomi.vacuum.v18-miot.cur-lang = Viomi Vacuum - Cur Lang
+ch.viomi.vacuum.v18-miot.cur-map-id = Viomi Vacuum - Cur Map Id
+ch.viomi.vacuum.v18-miot.cur-map-url = Viomi Vacuum - Cur Map Url
+ch.viomi.vacuum.v18-miot.cur-voice = Voice - Cur Voice
+ch.viomi.vacuum.v18-miot.dnd-enable = Order - Dnd Enable
+ch.viomi.vacuum.v18-miot.dnd-end-hour = Order - Dnd End Hour
+ch.viomi.vacuum.v18-miot.dnd-end-minute = Order - Dnd End Minute
+ch.viomi.vacuum.v18-miot.dnd-start-hour = Order - Dnd Start Hour
+ch.viomi.vacuum.v18-miot.dnd-start-minute = Order - Dnd Start Minute
+ch.viomi.vacuum.v18-miot.dnd-timezone = Order - Dnd Timezone
+ch.viomi.vacuum.v18-miot.door-state = Robot Cleaner - Door State
+ch.viomi.vacuum.v18-miot.download-progress = Voice - Download Progress
+ch.viomi.vacuum.v18-miot.download-status = Voice - Download Status
+ch.viomi.vacuum.v18-miot.dust-collection = Viomi Vacuum - Dust Collection
+ch.viomi.vacuum.v18-miot.fault = Robot Cleaner - Device Fault
+ch.viomi.vacuum.v18-miot.has-map = Viomi Vacuum - Has Map
+ch.viomi.vacuum.v18-miot.has-newmap = Viomi Vacuum - Has Newmap
+ch.viomi.vacuum.v18-miot.hypa-hours = Viomi Vacuum - Hypa Hours
+ch.viomi.vacuum.v18-miot.hypa-life = Viomi Vacuum - Hypa Life
+ch.viomi.vacuum.v18-miot.last-update-time = Viomi Vacuum - Last Update Time
+ch.viomi.vacuum.v18-miot.main-brush-hours = Viomi Vacuum - Main Brush Hours
+ch.viomi.vacuum.v18-miot.main-brush-life = Viomi Vacuum - Main Brush Life
+ch.viomi.vacuum.v18-miot.map-id = Map - Map Id
+ch.viomi.vacuum.v18-miot.map-list = Map - Map List
+ch.viomi.vacuum.v18-miot.map-name = Map - Map Name
+ch.viomi.vacuum.v18-miot.map-num = Viomi Vacuum - Map Num
+ch.viomi.vacuum.v18-miot.map-type = Map - Map Type
+ch.viomi.vacuum.v18-miot.mode = Robot Cleaner - Mode
+ch.viomi.vacuum.v18-miot.mop-hours = Viomi Vacuum - Mop Hours
+ch.viomi.vacuum.v18-miot.mop-life = Viomi Vacuum - Mop Life
+ch.viomi.vacuum.v18-miot.mop-route = Viomi Vacuum - Mop Route
+ch.viomi.vacuum.v18-miot.mute = Robot Cleaner - Mute
+ch.viomi.vacuum.v18-miot.oper-result = Map - Oper Result
+ch.viomi.vacuum.v18-miot.orderdata = Order - Orderdata
+ch.viomi.vacuum.v18-miot.remember-state = Viomi Vacuum - Remember State
+ch.viomi.vacuum.v18-miot.repeat-state = Viomi Vacuum - Repeat State
+ch.viomi.vacuum.v18-miot.side-brush-hours = Viomi Vacuum - Side Brush Hours
+ch.viomi.vacuum.v18-miot.side-brush-life = Viomi Vacuum - Side Brush Life
+ch.viomi.vacuum.v18-miot.status = Robot Cleaner - Status
+ch.viomi.vacuum.v18-miot.suction-grade = Viomi Vacuum - Suction Grade
+ch.viomi.vacuum.v18-miot.sweep-type = Robot Cleaner - Sweep Type
+ch.viomi.vacuum.v18-miot.target-point = Point Zone - Target Point
+ch.viomi.vacuum.v18-miot.target-voice = Voice - Target Voice
+ch.viomi.vacuum.v18-miot.time-zone = Viomi Vacuum - Time Zone
+ch.viomi.vacuum.v18-miot.timestamp = Order - Timestamp
+ch.viomi.vacuum.v18-miot.vacuumaction = Vacuum Action
+ch.viomi.vacuum.v18-miot.water-grade = Viomi Vacuum - Water Grade
+ch.viomi.vacuum.v18-miot.wdr-mode = Robot Cleaner - Wide Dynamic Range Mode
+ch.viomi.vacuum.v8.battery_life = Battery
+ch.viomi.vacuum.v8.box_type = Box type
+ch.viomi.vacuum.v8.err_state = Error
+ch.viomi.vacuum.v8.has_map = has_map
+ch.viomi.vacuum.v8.has_newmap = has_newmap
+ch.viomi.vacuum.v8.is_mop = is_mop
+ch.viomi.vacuum.v8.mode = Mode
+ch.viomi.vacuum.v8.mop_type = mop_type
+ch.viomi.vacuum.v8.remember_map = remember_map
+ch.viomi.vacuum.v8.s_area = Clean Area
+ch.viomi.vacuum.v8.s_time = Clean time
+ch.viomi.vacuum.v8.state = State
+ch.viomi.vacuum.v8.suction_grade = suction_grade
+ch.viomi.vacuum.v8.vacuumaction = Vacuum Action
+ch.viomi.vacuum.v8.water_grade = water_grade
+ch.viomi.waterheater.e1.appointEnd = Appoint End
+ch.viomi.waterheater.e1.appointStart = Appoint Start
+ch.viomi.waterheater.e1.errStatus = Error Status
+ch.viomi.waterheater.e1.hotWater = Hot Water
+ch.viomi.waterheater.e1.modeType = Mode
+ch.viomi.waterheater.e1.needClean = Need Clean
+ch.viomi.waterheater.e1.targetTemp = Target Temperature
+ch.viomi.waterheater.e1.velocity = Velocity
+ch.viomi.waterheater.e1.washStatus = Wash Status
+ch.viomi.waterheater.e1.waterTemp = Water Temperature
+ch.xiaomi.aircondition.ma1-miot.alarm = Alarm - Alarm
+ch.xiaomi.aircondition.ma1-miot.dryer = Air Conditioner - Dryer
+ch.xiaomi.aircondition.ma1-miot.eco = Air Conditioner - Eco
+ch.xiaomi.aircondition.ma1-miot.fan-level = Fan Control - Fan Level
+ch.xiaomi.aircondition.ma1-miot.heater = Air Conditioner - Heater
+ch.xiaomi.aircondition.ma1-miot.mode = Air Conditioner - Mode
+ch.xiaomi.aircondition.ma1-miot.on = Power
+ch.xiaomi.aircondition.ma1-miot.on1 = Indicator Light - Switch Status
+ch.xiaomi.aircondition.ma1-miot.sleep-mode = Air Conditioner - Sleep Mode
+ch.xiaomi.aircondition.ma1-miot.target-temperature = Air Conditioner - Target Temperature
+ch.xiaomi.aircondition.ma1-miot.temperature = Environment - Temperature
+ch.xiaomi.aircondition.ma1-miot.vertical-swing = Fan Control - Vertical Swing
+ch.xiaomi.aircondition.mc1-miot.alarm = Alarm - Alarm
+ch.xiaomi.aircondition.mc1-miot.clean = Maintenance - Clean
+ch.xiaomi.aircondition.mc1-miot.dryer = Air Conditioner - Dryer
+ch.xiaomi.aircondition.mc1-miot.eco = Air Conditioner - Eco
+ch.xiaomi.aircondition.mc1-miot.elec-count = Electricity - Count
+ch.xiaomi.aircondition.mc1-miot.electricity = Power consumption accumulation in kWh
+ch.xiaomi.aircondition.mc1-miot.examine = Maintenance - Examine
+ch.xiaomi.aircondition.mc1-miot.fan-level = Fan Control - Fan Level
+ch.xiaomi.aircondition.mc1-miot.fan-percent = Fan Speed %
+ch.xiaomi.aircondition.mc1-miot.heater = Air Conditioner - Heater
+ch.xiaomi.aircondition.mc1-miot.mode = Air Conditioner - Mode
+ch.xiaomi.aircondition.mc1-miot.on = Power
+ch.xiaomi.aircondition.mc1-miot.on1 = Indicator Light - Switch Status
+ch.xiaomi.aircondition.mc1-miot.running-duration = Maintenance - Running Duration
+ch.xiaomi.aircondition.mc1-miot.sleep-mode = Air Conditioner - Sleep Mode
+ch.xiaomi.aircondition.mc1-miot.target-temperature = Air Conditioner - Target Temperature
+ch.xiaomi.aircondition.mc1-miot.temperature = Environment - Temperature
+ch.xiaomi.aircondition.mc1-miot.timer = Enhance - Timer
+ch.xiaomi.aircondition.mc1-miot.vertical-swing = Fan Control - Vertical Swing
+ch.xjx.toilet.fan_temp = Fan Temperature
+ch.xjx.toilet.seat_temp = Seat Temperature
+ch.xjx.toilet.status_led = Night Light
+ch.xjx.toilet.status_seatheat = Seat Status
+ch.xjx.toilet.water_temp_t = Water Temperature
+ch.yeelink.bhf1.bh_mode = Bath Heater mode
+ch.yeelink.bhf1.brightness = Brightness
+ch.yeelink.bhf1.delayoff = Shutdown Timer
+ch.yeelink.bhf1.nightlightBrightness = Nightlight Brightness
+ch.yeelink.bhf1.power = Power
+ch.yeelink.bhf1.temperature = Temperature
+ch.yeelink.light.ceiling.brightness = Brightness
+ch.yeelink.light.ceiling.colorMode = Color Mode
+ch.yeelink.light.ceiling.colorTemperature = Color Temperature
+ch.yeelink.light.ceiling.customScene = Set Scene
+ch.yeelink.light.ceiling.delayoff = Shutdown Timer
+ch.yeelink.light.ceiling.name = Name
+ch.yeelink.light.ceiling.nightlightBrightness = Nightlight Brightness
+ch.yeelink.light.ceiling.power = Power
+ch.yeelink.light.ceiling2.brightness = Brightness
+ch.yeelink.light.ceiling2.colorMode = Color Mode
+ch.yeelink.light.ceiling2.colorTemperature = Color Temperature
+ch.yeelink.light.ceiling2.customScene = Set Scene
+ch.yeelink.light.ceiling2.delayoff = Shutdown Timer
+ch.yeelink.light.ceiling2.name = Name
+ch.yeelink.light.ceiling2.nightlightBrightness = Nightlight Brightness
+ch.yeelink.light.ceiling2.power = Power
+ch.yeelink.light.ceiling4.ambientBrightness = Ambient Brightness
+ch.yeelink.light.ceiling4.ambientColor = Ambient Color
+ch.yeelink.light.ceiling4.ambientColorMode = Ambient Color Mode
+ch.yeelink.light.ceiling4.ambientColorTemperature = Ambient Color Temperature
+ch.yeelink.light.ceiling4.ambientPower = Ambient Power
+ch.yeelink.light.ceiling4.brightness = Brightness
+ch.yeelink.light.ceiling4.colorMode = Color Mode
+ch.yeelink.light.ceiling4.colorTemperature = Color Temperature
+ch.yeelink.light.ceiling4.customScene = Set Scene
+ch.yeelink.light.ceiling4.delayoff = Shutdown Timer
+ch.yeelink.light.ceiling4.name = Name
+ch.yeelink.light.ceiling4.nightlightBrightness = Nightlight Brightness
+ch.yeelink.light.ceiling4.power = Power
+ch.yeelink.light.color1.brightness = Brightness
+ch.yeelink.light.color1.colorMode = Color Mode
+ch.yeelink.light.color1.colorTemperature = Color Temperature
+ch.yeelink.light.color1.colorflow = Color Flow
+ch.yeelink.light.color1.delayoff = Shutdown Timer
+ch.yeelink.light.color1.name = Name
+ch.yeelink.light.color1.power = Power
+ch.yeelink.light.color1.rgbColor = RGB Color
+ch.yeelink.light.lamp1.brightness = Brightness
+ch.yeelink.light.lamp1.colorMode = Color Mode
+ch.yeelink.light.lamp1.colorTemperature = Color Temperature
+ch.yeelink.light.lamp1.delayoff = Shutdown Timer
+ch.yeelink.light.lamp1.name = Name
+ch.yeelink.light.lamp1.power = Power
+ch.yeelink.light.light15.ambientBrightness = Ambient Brightness
+ch.yeelink.light.light15.ambientColor = Ambient Color
+ch.yeelink.light.light15.ambientColorMode = Ambient Color Mode
+ch.yeelink.light.light15.ambientColorTemperature = Ambient Color Temperature
+ch.yeelink.light.light15.ambientPower = Ambient Power
+ch.yeelink.light.light15.brightness = Brightness
+ch.yeelink.light.light15.colorMode = Color Mode
+ch.yeelink.light.light15.colorTemperature = Color Temperature
+ch.yeelink.light.light15.delayoff = Shutdown Timer
+ch.yeelink.light.light15.power = Power
+ch.yeelink.light.light15.rgbColor = RGB Color
+ch.yeelink.switch.sw1-miot.flash = Extension - Flash
+ch.yeelink.switch.sw1-miot.interlock = Extension - Interlock
+ch.yeelink.switch.sw1-miot.mode = First Switch Default - Mode
+ch.yeelink.switch.sw1-miot.mode1 = First Switch - Delay
+ch.yeelink.switch.sw1-miot.mode2 = Second Switch Default - Mode
+ch.yeelink.switch.sw1-miot.mode3 = Second Switch Service - Delay
+ch.yeelink.switch.sw1-miot.on = First Switch - Switch Status
+ch.yeelink.switch.sw1-miot.on1 = Second Switch - Switch Status
+ch.yeelink.switch.sw1-miot.rc-list = Extension - Rc List
+ch.yunmi.waterpurifier.f1_totalflow = Filter 1 Total Flow
+ch.yunmi.waterpurifier.f1_totaltime = Filter 1 Total Time
+ch.yunmi.waterpurifier.f1_usedflow = Filter 1 Used Flow
+ch.yunmi.waterpurifier.f1_usedtime = Filter 1 Used Time
+ch.yunmi.waterpurifier.f2_totalflow = Filter 2 Total Flow
+ch.yunmi.waterpurifier.f2_totaltime = Filter 2 Total Time
+ch.yunmi.waterpurifier.f2_usedflow = Filter 2 Used Flow
+ch.yunmi.waterpurifier.f2_usedtime = Filter 2 Used Time
+ch.yunmi.waterpurifier.f3_totalflow = Filter 3 Total Flow
+ch.yunmi.waterpurifier.f3_totaltime = Filter 3 Total Time
+ch.yunmi.waterpurifier.f3_usedflow = Filter 3 Used Flow
+ch.yunmi.waterpurifier.f3_usedtime = Filter 3 Used Time
+ch.yunmi.waterpurifier.f4_totalflow = Filter 4 Total Flow
+ch.yunmi.waterpurifier.f4_totaltime = Filter 4 Total Time
+ch.yunmi.waterpurifier.f4_usedflow = Filter 4 Used Flow
+ch.yunmi.waterpurifier.f4_usedtime = Filter 4 Used Time
+ch.yunmi.waterpurifier.lightMode = Light Mode
+ch.yunmi.waterpurifier.lx8.f1_totalflow = Filter 1 Total Flow
+ch.yunmi.waterpurifier.lx8.f1_totaltime = Filter 1 Total Time
+ch.yunmi.waterpurifier.lx8.f1_usedflow = Filter 1 Used Flow
+ch.yunmi.waterpurifier.lx8.f1_usedtime = Filter 1 Used Time
+ch.yunmi.waterpurifier.lx8.f2_totalflow = Filter 2 Total Flow
+ch.yunmi.waterpurifier.lx8.f2_totaltime = Filter 2 Total Time
+ch.yunmi.waterpurifier.lx8.f2_usedflow = Filter 2 Used Flow
+ch.yunmi.waterpurifier.lx8.f2_usedtime = Filter 2 Used Time
+ch.yunmi.waterpurifier.lx8.f3_totalflow = Filter 3 Total Flow
+ch.yunmi.waterpurifier.lx8.f3_totaltime = Filter 3 Total Time
+ch.yunmi.waterpurifier.lx8.f3_usedflow = Filter 3 Used Flow
+ch.yunmi.waterpurifier.lx8.f3_usedtime = Filter 3 Used Time
+ch.yunmi.waterpurifier.lx8.f4_totalflow = Filter 4 Total Flow
+ch.yunmi.waterpurifier.lx8.f4_totaltime = Filter 4 Total Time
+ch.yunmi.waterpurifier.lx8.f4_usedflow = Filter 4 Used Flow
+ch.yunmi.waterpurifier.lx8.f4_usedtime = Filter 4 Used Time
+ch.yunmi.waterpurifier.lx8.lightMode = Light Mode
+ch.yunmi.waterpurifier.lx8.maintenance_interval = Maintenance Interval
+ch.yunmi.waterpurifier.lx8.maintenance_state = Maintenance State
+ch.yunmi.waterpurifier.lx8.rinse = Rinse
+ch.yunmi.waterpurifier.lx8.run_status = Run Status
+ch.yunmi.waterpurifier.lx8.tds_in = TDS in
+ch.yunmi.waterpurifier.lx8.tds_out = TDS out
+ch.yunmi.waterpurifier.lx8.tds_warn_thd = TDS Warn Threshold
+ch.yunmi.waterpurifier.maintenance_interval = Maintenance Interval
+ch.yunmi.waterpurifier.maintenance_state = Maintenance State
+ch.yunmi.waterpurifier.rinse = Rinse
+ch.yunmi.waterpurifier.run_status = Run Status
+ch.yunmi.waterpurifier.tds_in = TDS in
+ch.yunmi.waterpurifier.tds_out = TDS out
+ch.yunmi.waterpurifier.tds_out_avg = Average TDS out
+ch.yunmi.waterpurifier.tds_warn_thd = TDS Warn Threshold
+ch.yunmi.waterpurifier.temperature = Temperature
+ch.zhimi.airfresh.va4.aqi = Air Quality Index
+ch.zhimi.airfresh.va4.averageaqi = Average Air Quality Index
+ch.zhimi.airfresh.va4.buzzer = Buzzer
+ch.zhimi.airfresh.va4.childLock = Child Lock
+ch.zhimi.airfresh.va4.co2 = CO2
+ch.zhimi.airfresh.va4.filterhours = Filter Hours used
+ch.zhimi.airfresh.va4.heater = Heater
+ch.zhimi.airfresh.va4.humidity = Humidity
+ch.zhimi.airfresh.va4.led_level = Led - Brightness
+ch.zhimi.airfresh.va4.mode = Mode
+ch.zhimi.airfresh.va4.motorspeed = Motor Speed
+ch.zhimi.airfresh.va4.power = Power
+ch.zhimi.airfresh.va4.temperature = Temperature
+ch.zhimi.airfresh.va4.usedhours = Run Time
+ch.zhimi.airmonitor.v1.aqi = Air Quality Index
+ch.zhimi.airmonitor.v1.battery = Battery
+ch.zhimi.airmonitor.v1.night_begin = Night Begin Time
+ch.zhimi.airmonitor.v1.night_end = Night End Time
+ch.zhimi.airmonitor.v1.night_state = Night State
+ch.zhimi.airmonitor.v1.power = Power
+ch.zhimi.airmonitor.v1.time_state = Time State
+ch.zhimi.airmonitor.v1.usb_state = USB State
+ch.zhimi.airpurifier.m1.aqi = Air Quality Index
+ch.zhimi.airpurifier.m1.averageaqi = Average Air Quality Index
+ch.zhimi.airpurifier.m1.buzzer = Buzzer Status
+ch.zhimi.airpurifier.m1.childlock = Child Lock
+ch.zhimi.airpurifier.m1.favoritelevel = Favorite Level
+ch.zhimi.airpurifier.m1.filterhours = Filter Hours used
+ch.zhimi.airpurifier.m1.filterlife = Filter Life
+ch.zhimi.airpurifier.m1.filtermaxlife = Filter Max Life
+ch.zhimi.airpurifier.m1.humidity = Humidity
+ch.zhimi.airpurifier.m1.led = LED Status
+ch.zhimi.airpurifier.m1.mode = Mode
+ch.zhimi.airpurifier.m1.motorspeed = Motor Speed
+ch.zhimi.airpurifier.m1.power = Power
+ch.zhimi.airpurifier.m1.purifyvolume = Purified Volume
+ch.zhimi.airpurifier.m1.temperature = Temperature
+ch.zhimi.airpurifier.m1.usedhours = Run Time
+ch.zhimi.airpurifier.ma4-miot.alarm = Alarm - Alarm
+ch.zhimi.airpurifier.ma4-miot.app-extra = Others - App Extra
+ch.zhimi.airpurifier.ma4-miot.aqi-goodh = Aqi - Aqi Goodh
+ch.zhimi.airpurifier.ma4-miot.aqi-runstate = Aqi - Aqi Runstate
+ch.zhimi.airpurifier.ma4-miot.aqi-state = Aqi - Aqi State
+ch.zhimi.airpurifier.ma4-miot.aqi-updata-heartbeat = Aqi - Aqi Updata Heartbeat
+ch.zhimi.airpurifier.ma4-miot.aqi-zone = Aqi - Aqi Zone
+ch.zhimi.airpurifier.ma4-miot.average-aqi = Aqi - Average Aqi
+ch.zhimi.airpurifier.ma4-miot.average-aqi-cnt = Aqi - Average Aqi Cnt
+ch.zhimi.airpurifier.ma4-miot.brightness = Indicator Light - Brightness
+ch.zhimi.airpurifier.ma4-miot.buttom-door = Others - Buttom Door
+ch.zhimi.airpurifier.ma4-miot.button-pressed = Button - Button_pressed
+ch.zhimi.airpurifier.ma4-miot.cola = Others - Cola
+ch.zhimi.airpurifier.ma4-miot.fan-level = Air Purifier - Fan Level
+ch.zhimi.airpurifier.ma4-miot.fault = Air Purifier - Device Fault
+ch.zhimi.airpurifier.ma4-miot.favorite-fan-level = Motor Speed - Favorite Fan Level
+ch.zhimi.airpurifier.ma4-miot.filter-hour-used-debug = Filter Time - Filter Hour Used Debug
+ch.zhimi.airpurifier.ma4-miot.filter-life-level = Filter - Filter Life Level
+ch.zhimi.airpurifier.ma4-miot.filter-max-time = Filter Time - Filter Max Time
+ch.zhimi.airpurifier.ma4-miot.filter-used-time = Filter - Filter Used Time
+ch.zhimi.airpurifier.ma4-miot.hw-version = Others - Hw Version
+ch.zhimi.airpurifier.ma4-miot.i2c-error-count = Others - I2c Error Count
+ch.zhimi.airpurifier.ma4-miot.m1-favorite = Motor Speed - M1 Favorite
+ch.zhimi.airpurifier.ma4-miot.m1-high = Motor Speed - M1 High
+ch.zhimi.airpurifier.ma4-miot.m1-low = Motor Speed - M1 Low
+ch.zhimi.airpurifier.ma4-miot.m1-med = Motor Speed - M1 Med
+ch.zhimi.airpurifier.ma4-miot.m1-med-l = Motor Speed - M1 Med L
+ch.zhimi.airpurifier.ma4-miot.m1-silent = Motor Speed - M1 Silent
+ch.zhimi.airpurifier.ma4-miot.m1-strong = Motor Speed - M1 Strong
+ch.zhimi.airpurifier.ma4-miot.main-channel = Others - Main Channel
+ch.zhimi.airpurifier.ma4-miot.manual-level = Others - Manual Level
+ch.zhimi.airpurifier.ma4-miot.mode = Air Purifier - Mode
+ch.zhimi.airpurifier.ma4-miot.motor1-set-speed = Motor Speed - Motor1 Set Speed
+ch.zhimi.airpurifier.ma4-miot.motor1-speed = Motor Speed - Motor1 Speed
+ch.zhimi.airpurifier.ma4-miot.on = Air Purifier - Switch Status
+ch.zhimi.airpurifier.ma4-miot.on1 = Indicator Light - Switch Status
+ch.zhimi.airpurifier.ma4-miot.physical-controls-locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.airpurifier.ma4-miot.pm2_5-density = Environment - Pm2.5 Density
+ch.zhimi.airpurifier.ma4-miot.purify-volume = Aqi - Purify Volume
+ch.zhimi.airpurifier.ma4-miot.reboot-cause = Others - Reboot_cause
+ch.zhimi.airpurifier.ma4-miot.relative-humidity = Environment - Relative Humidity
+ch.zhimi.airpurifier.ma4-miot.rfid-factory-id = Rfid - Rfid Factory Id
+ch.zhimi.airpurifier.ma4-miot.rfid-product-id = Rfid - Rfid Product Id
+ch.zhimi.airpurifier.ma4-miot.rfid-serial-num = Rfid - Rfid Serial Num
+ch.zhimi.airpurifier.ma4-miot.rfid-tag = Rfid - Rfid Tag
+ch.zhimi.airpurifier.ma4-miot.rfid-time = Rfid - Rfid Time
+ch.zhimi.airpurifier.ma4-miot.sensor-state = Aqi - Sensor State
+ch.zhimi.airpurifier.ma4-miot.slave-channel = Others - Slave Channel
+ch.zhimi.airpurifier.ma4-miot.temperature = Environment - Temperature
+ch.zhimi.airpurifier.ma4-miot.use-time = Use Time - Use Time
+ch.zhimi.airpurifier.mb3-miot.alarm = Alarm - Alarm
+ch.zhimi.airpurifier.mb3-miot.app-extra = Others - App Extra
+ch.zhimi.airpurifier.mb3-miot.aqi-goodh = Aqi - Aqi Goodh
+ch.zhimi.airpurifier.mb3-miot.aqi-runstate = Aqi - Aqi Runstate
+ch.zhimi.airpurifier.mb3-miot.aqi-state = Aqi - Aqi State
+ch.zhimi.airpurifier.mb3-miot.aqi-updata-heartbeat = Aqi - Aqi Updata Heartbeat
+ch.zhimi.airpurifier.mb3-miot.aqi-zone = Aqi - Aqi Zone
+ch.zhimi.airpurifier.mb3-miot.average-aqi = Aqi - Average Aqi
+ch.zhimi.airpurifier.mb3-miot.average-aqi-cnt = Aqi - Average Aqi Cnt
+ch.zhimi.airpurifier.mb3-miot.brightness = Indicator Light - Brightness
+ch.zhimi.airpurifier.mb3-miot.buttom-door = Others - Buttom Door
+ch.zhimi.airpurifier.mb3-miot.button-pressed = Button - Button Pressed
+ch.zhimi.airpurifier.mb3-miot.cola = Others - Cola
+ch.zhimi.airpurifier.mb3-miot.country-code = Others - National Code
+ch.zhimi.airpurifier.mb3-miot.fan-level = Air Purifier - Fan Level
+ch.zhimi.airpurifier.mb3-miot.fault = Air Purifier - Fault
+ch.zhimi.airpurifier.mb3-miot.favorite-fan-level = Motor Speed - Favorite Fan Level
+ch.zhimi.airpurifier.mb3-miot.filter-hour-debug = Filter Time - Filter Hour Debug
+ch.zhimi.airpurifier.mb3-miot.filter-life-level = Filter - Filter Life Level
+ch.zhimi.airpurifier.mb3-miot.filter-max-time = Filter Time - Filter Max Time
+ch.zhimi.airpurifier.mb3-miot.filter-used-time = Filter - Filter Used Time
+ch.zhimi.airpurifier.mb3-miot.hw-version = Others - Hw Version
+ch.zhimi.airpurifier.mb3-miot.iic-error-count = Others - Iic Error Count
+ch.zhimi.airpurifier.mb3-miot.main-channel = Others - Main Channel
+ch.zhimi.airpurifier.mb3-miot.manual-level = Others - Manual Level
+ch.zhimi.airpurifier.mb3-miot.mode = Air Purifier - Mode
+ch.zhimi.airpurifier.mb3-miot.motor-favorite = Motor Speed - Motor Favorite
+ch.zhimi.airpurifier.mb3-miot.motor-high = Motor Speed - Motor High
+ch.zhimi.airpurifier.mb3-miot.motor-low = Motor Speed - Motor Low
+ch.zhimi.airpurifier.mb3-miot.motor-med = Motor Speed - Motor Med
+ch.zhimi.airpurifier.mb3-miot.motor-med-l = Motor Speed - Motor Med L
+ch.zhimi.airpurifier.mb3-miot.motor-set-speed = Motor Speed - Motor Set Speed
+ch.zhimi.airpurifier.mb3-miot.motor-silent = Motor Speed - Motor Silent
+ch.zhimi.airpurifier.mb3-miot.motor-speed = Motor Speed - Motor Speed
+ch.zhimi.airpurifier.mb3-miot.motor-strong = Motor Speed - Motor Strong
+ch.zhimi.airpurifier.mb3-miot.on = Air Purifier - Switch Status
+ch.zhimi.airpurifier.mb3-miot.on1 = Indicator Light - Switch Status
+ch.zhimi.airpurifier.mb3-miot.physical-controls-locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.airpurifier.mb3-miot.pm2_5-density = Environment - Pm2.5 density
+ch.zhimi.airpurifier.mb3-miot.purify-volume = Aqi - Purify Volume
+ch.zhimi.airpurifier.mb3-miot.reboot-cause = Others - Reboot Cause
+ch.zhimi.airpurifier.mb3-miot.relative-humidity = Environment - Relative Humidity
+ch.zhimi.airpurifier.mb3-miot.rfid-factory-id = Rfid - Rfid Factory Id
+ch.zhimi.airpurifier.mb3-miot.rfid-product-id = Rfid - Rfid Product Id
+ch.zhimi.airpurifier.mb3-miot.rfid-serial-num = Rfid - Rfid Serial Num
+ch.zhimi.airpurifier.mb3-miot.rfid-tag = Rfid - Rfid Tag
+ch.zhimi.airpurifier.mb3-miot.rfid-time = Rfid - Rfid Time
+ch.zhimi.airpurifier.mb3-miot.sensor-state = Aqi - Sensor State
+ch.zhimi.airpurifier.mb3-miot.slave-channel = Others - Slave Channel
+ch.zhimi.airpurifier.mb3-miot.temperature = Environment - Temperature
+ch.zhimi.airpurifier.mb3-miot.use-time = Use Time - Use Time
+ch.zhimi.airpurifier.mb4-miot.alarm = Alarm - Alarm
+ch.zhimi.airpurifier.mb4-miot.aqi_updata_heartbeat = Custom Service - Aqi Updata Heartbeat
+ch.zhimi.airpurifier.mb4-miot.brightness = Screen - Brightness
+ch.zhimi.airpurifier.mb4-miot.fault = Air Purifier - Device Fault
+ch.zhimi.airpurifier.mb4-miot.favorite_speed = Custom Service - Favorite Speed
+ch.zhimi.airpurifier.mb4-miot.filter_life_level = Filter - Filter Life Level
+ch.zhimi.airpurifier.mb4-miot.filter_used_time = Filter - Filter Used Time
+ch.zhimi.airpurifier.mb4-miot.miio_lib_version = Custom Service - Miio Lib Version
+ch.zhimi.airpurifier.mb4-miot.mode = Mode
+ch.zhimi.airpurifier.mb4-miot.moto_speed_rpm = Custom Service - Moto Speed Rpm
+ch.zhimi.airpurifier.mb4-miot.on = Power
+ch.zhimi.airpurifier.mb4-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.airpurifier.mb4-miot.pm2_5_density = Environment - Pm2 5 Density
+ch.zhimi.airpurifier.v1.act_det = Air AutoDetect
+ch.zhimi.airpurifier.v1.aqi = Air Quality Index
+ch.zhimi.airpurifier.v1.brightness = Brightness
+ch.zhimi.airpurifier.v1.buzzer = Buzzer Status
+ch.zhimi.airpurifier.v1.filterlive = Filter Life
+ch.zhimi.airpurifier.v1.filtermaxlife = Filter Max Life
+ch.zhimi.airpurifier.v1.humidity = Humidity
+ch.zhimi.airpurifier.v1.led = LED Status
+ch.zhimi.airpurifier.v1.mode = Mode
+ch.zhimi.airpurifier.v1.power = Power
+ch.zhimi.airpurifier.v6.aqi = Air Quality Index
+ch.zhimi.airpurifier.v6.averageaqi = Average Air Quality Index
+ch.zhimi.airpurifier.v6.bright = LED Brightness
+ch.zhimi.airpurifier.v6.childlock = Child Lock
+ch.zhimi.airpurifier.v6.favoritelevel = Favorite Level
+ch.zhimi.airpurifier.v6.filterhours = Filter Hours used
+ch.zhimi.airpurifier.v6.filterlife = Filter Life
+ch.zhimi.airpurifier.v6.filtermaxlife = Filter Max Life
+ch.zhimi.airpurifier.v6.humidity = Humidity
+ch.zhimi.airpurifier.v6.led = LED Status
+ch.zhimi.airpurifier.v6.mode = Mode
+ch.zhimi.airpurifier.v6.motorspeed = Motor Speed
+ch.zhimi.airpurifier.v6.power = Power
+ch.zhimi.airpurifier.v6.purifyvolume = Purivied Volume
+ch.zhimi.airpurifier.v6.temperature = Temperature
+ch.zhimi.airpurifier.v6.usedhours = Run Time
+ch.zhimi.airpurifier.v7.aqi = Air Quality Index
+ch.zhimi.airpurifier.v7.averageaqi = Average Air Quality Index
+ch.zhimi.airpurifier.v7.childlock = Child Lock
+ch.zhimi.airpurifier.v7.favoritelevel = Favorite Level
+ch.zhimi.airpurifier.v7.filterhours = Filter Hours used
+ch.zhimi.airpurifier.v7.filterlife = Filter Life
+ch.zhimi.airpurifier.v7.filtermaxlife = Filter Max Life
+ch.zhimi.airpurifier.v7.humidity = Humidity
+ch.zhimi.airpurifier.v7.illuminance = Illuminance
+ch.zhimi.airpurifier.v7.led = LED Status
+ch.zhimi.airpurifier.v7.mode = Mode
+ch.zhimi.airpurifier.v7.motorspeed = Motor Speed
+ch.zhimi.airpurifier.v7.motorspeed2 = Motor Speed 2
+ch.zhimi.airpurifier.v7.power = Power
+ch.zhimi.airpurifier.v7.temperature = Temperature
+ch.zhimi.airpurifier.v7.volume = Volume
+ch.zhimi.airpurifier.vb2-miot.actions = Actions
+ch.zhimi.airpurifier.vb2-miot.alarm = Alarm - Alarm
+ch.zhimi.airpurifier.vb2-miot.app_extra = Others - App Extra
+ch.zhimi.airpurifier.vb2-miot.aqi_goodh = Aqi - Aqi Goodh
+ch.zhimi.airpurifier.vb2-miot.aqi_runstate = Aqi - Runstate
+ch.zhimi.airpurifier.vb2-miot.aqi_state = Aqi - Aqi State
+ch.zhimi.airpurifier.vb2-miot.aqi_zone = Aqi - Aqi Zone
+ch.zhimi.airpurifier.vb2-miot.average_aqi = Aqi - Average Aqi
+ch.zhimi.airpurifier.vb2-miot.average_aqi_cnt = Aqi - Average_aqi Read Times
+ch.zhimi.airpurifier.vb2-miot.brightness = Indicator Light - Brightness
+ch.zhimi.airpurifier.vb2-miot.buttom_door = Others - Buttom Door
+ch.zhimi.airpurifier.vb2-miot.button_pressed = Button - Button_pressed
+ch.zhimi.airpurifier.vb2-miot.cola = Others - Cola
+ch.zhimi.airpurifier.vb2-miot.country_code = Others - Country Code
+ch.zhimi.airpurifier.vb2-miot.fan_level = Air Purifier - Fan Level
+ch.zhimi.airpurifier.vb2-miot.fault = Air Purifier - Device Fault
+ch.zhimi.airpurifier.vb2-miot.favorite_level = Motor Speed - Favorite Level
+ch.zhimi.airpurifier.vb2-miot.filter_hour_used_debug = Filter Time - Filter Hour Used Debug
+ch.zhimi.airpurifier.vb2-miot.filter_life_level = Filter - Filter Life Level
+ch.zhimi.airpurifier.vb2-miot.filter_max_time = Filter Time - Filter Max Time
+ch.zhimi.airpurifier.vb2-miot.filter_used_time = Filter - Filter Used Time
+ch.zhimi.airpurifier.vb2-miot.m1_favorite = Motor Speed - M1 Favorite
+ch.zhimi.airpurifier.vb2-miot.m1_high = Motor Speed - M1 High
+ch.zhimi.airpurifier.vb2-miot.m1_low = Motor Speed - M1 Low
+ch.zhimi.airpurifier.vb2-miot.m1_med = Motor Speed - M1 Med
+ch.zhimi.airpurifier.vb2-miot.m1_med_l = Motor Speed - M1 Med L
+ch.zhimi.airpurifier.vb2-miot.m1_silent = Motor Speed - M1 Silent
+ch.zhimi.airpurifier.vb2-miot.m1_strong = Motor Speed - M1 Strong
+ch.zhimi.airpurifier.vb2-miot.main_channel = Others - Main Channel
+ch.zhimi.airpurifier.vb2-miot.manual_level = Others - Manual Level
+ch.zhimi.airpurifier.vb2-miot.mode = Air Purifier - Mode
+ch.zhimi.airpurifier.vb2-miot.motor1_set_speed = Motor Speed - Motor1 Set Speed
+ch.zhimi.airpurifier.vb2-miot.motor1_speed = Motor Speed - Motor1 Speed
+ch.zhimi.airpurifier.vb2-miot.on = Air Purifier - Power
+ch.zhimi.airpurifier.vb2-miot.on1 = Indicator Light - Switch Status
+ch.zhimi.airpurifier.vb2-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.airpurifier.vb2-miot.pm2_5_density = Environment - PM2 5 Density
+ch.zhimi.airpurifier.vb2-miot.powertime = Others - Powertime
+ch.zhimi.airpurifier.vb2-miot.purify_volume = Aqi - Purify Volume
+ch.zhimi.airpurifier.vb2-miot.reboot_cause = Others - Reboot_cause
+ch.zhimi.airpurifier.vb2-miot.relative_humidity = Environment - Relative Humidity
+ch.zhimi.airpurifier.vb2-miot.rfid_factory_id = Rfid - Rfid Factory Id
+ch.zhimi.airpurifier.vb2-miot.rfid_product_id = Rfid - Rfid Product Id
+ch.zhimi.airpurifier.vb2-miot.rfid_serial_num = Rfid - Rfid Serial Num
+ch.zhimi.airpurifier.vb2-miot.rfid_tag = Rfid - Rfid Tag
+ch.zhimi.airpurifier.vb2-miot.rfid_time = Rfid - Rfid Time
+ch.zhimi.airpurifier.vb2-miot.sensor_state = Aqi - Sensor State
+ch.zhimi.airpurifier.vb2-miot.slave_channel = Others - Slave Channel
+ch.zhimi.airpurifier.vb2-miot.temperature = Environment - Temperature
+ch.zhimi.airpurifier.vb2-miot.use_time = Use Time - Use Time
+ch.zhimi.airpurifier.vb2-miot.volume = Alarm - Volume
+ch.zhimi.airpurifier.za1-miot.air_quality = Environment - Air Quality
+ch.zhimi.airpurifier.za1-miot.alarm = Alarm - Alarm
+ch.zhimi.airpurifier.za1-miot.aqi_zone = Aqi - Aqi Zone
+ch.zhimi.airpurifier.za1-miot.average_aqi = Aqi - Average Aqi
+ch.zhimi.airpurifier.za1-miot.brightness = Indicator Light - Brightness
+ch.zhimi.airpurifier.za1-miot.country_code = Others - Country Code
+ch.zhimi.airpurifier.za1-miot.fault = Air Purifier - Fault
+ch.zhimi.airpurifier.za1-miot.favorite_fan_level = Motor Speed - Favorite Fan Level
+ch.zhimi.airpurifier.za1-miot.filter_life_level = Filter - Filter Life Level
+ch.zhimi.airpurifier.za1-miot.filter_max_time = Filter Time - Filter Max Time
+ch.zhimi.airpurifier.za1-miot.filter_used_time = Filter - Filter Used Time
+ch.zhimi.airpurifier.za1-miot.gesture_status = Others - Gesture Status
+ch.zhimi.airpurifier.za1-miot.hw_version = Others - Hw Version
+ch.zhimi.airpurifier.za1-miot.mode = Air Purifier - Mode
+ch.zhimi.airpurifier.za1-miot.motor_speed = Motor Speed - Motor Speed
+ch.zhimi.airpurifier.za1-miot.on = Air Purifier - Switch Status
+ch.zhimi.airpurifier.za1-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.airpurifier.za1-miot.pm2_5_density = Environment - PM2 5 Density
+ch.zhimi.airpurifier.za1-miot.purify_volume = Aqi - Purify Volume
+ch.zhimi.airpurifier.za1-miot.reboot_cause = Others - Reboot Cause
+ch.zhimi.airpurifier.za1-miot.relative_humidity = Environment - Relative Humidity
+ch.zhimi.airpurifier.za1-miot.rfid_factory_id = Rfid - Rfid Factory Id
+ch.zhimi.airpurifier.za1-miot.rfid_product_id = Rfid - Rfid Product Id
+ch.zhimi.airpurifier.za1-miot.rfid_serial_num = Rfid - Rfid Serial Num
+ch.zhimi.airpurifier.za1-miot.rfid_tag = Rfid - Rfid Tag
+ch.zhimi.airpurifier.za1-miot.rfid_time = Rfid - Rfid Time
+ch.zhimi.airpurifier.za1-miot.sensor_state = Aqi - Sensor State
+ch.zhimi.airpurifier.za1-miot.sgp_ethanol = Others - Sgp Ethanol
+ch.zhimi.airpurifier.za1-miot.sgp_serial = Others - Sgp Serial
+ch.zhimi.airpurifier.za1-miot.sgp_version = Others - Sgp Version
+ch.zhimi.airpurifier.za1-miot.temperature = Environment - Temperature
+ch.zhimi.airpurifier.za1-miot.use_time = Use Time - Use Time
+ch.zhimi.fan.sa1.acPower = AC Power
+ch.zhimi.fan.sa1.angle = Angle
+ch.zhimi.fan.sa1.angleEnable = Rotation
+ch.zhimi.fan.sa1.buzzer = Buzzer
+ch.zhimi.fan.sa1.child_lock = Child Lock
+ch.zhimi.fan.sa1.led_b = LED
+ch.zhimi.fan.sa1.move = Move Direction
+ch.zhimi.fan.sa1.naturalLevel = Natural Level
+ch.zhimi.fan.sa1.power = Power
+ch.zhimi.fan.sa1.poweroffTime = Power-Off Timer
+ch.zhimi.fan.sa1.speed = Speed
+ch.zhimi.fan.sa1.speedLevel = Speed Level
+ch.zhimi.fan.sa1.usedhours = Run Time
+ch.zhimi.fan.v3.acPower = AC Power
+ch.zhimi.fan.v3.angle = Angle
+ch.zhimi.fan.v3.angleEnable = Rotation
+ch.zhimi.fan.v3.battery = Battery
+ch.zhimi.fan.v3.buzzer = Buzzer
+ch.zhimi.fan.v3.child_lock = Child Lock
+ch.zhimi.fan.v3.humidity = Humidity
+ch.zhimi.fan.v3.led_b = LED
+ch.zhimi.fan.v3.mode = Battery Charge
+ch.zhimi.fan.v3.move = Move Direction
+ch.zhimi.fan.v3.naturalLevel = Natural Level
+ch.zhimi.fan.v3.power = Power
+ch.zhimi.fan.v3.poweroffTime = Power-Off Timer
+ch.zhimi.fan.v3.speed = Speed
+ch.zhimi.fan.v3.speedLevel = Speed Level
+ch.zhimi.fan.v3.temp_dec = Temperature
+ch.zhimi.fan.v3.usedhours = Run Time
+ch.zhimi.fan.za4.angle = Angle
+ch.zhimi.fan.za4.angleEnable = Rotation
+ch.zhimi.fan.za4.buzzer = Buzzer
+ch.zhimi.fan.za4.child_lock = Child Lock
+ch.zhimi.fan.za4.led_b = LED
+ch.zhimi.fan.za4.move = Move Direction
+ch.zhimi.fan.za4.naturalLevel = Natural Level
+ch.zhimi.fan.za4.power = Power
+ch.zhimi.fan.za4.poweroffTime = Timer
+ch.zhimi.fan.za4.speed = Speed
+ch.zhimi.fan.za4.speedLevel = Speed Level
+ch.zhimi.fan.za4.usedhours = Run Time
+ch.zhimi.fan.za5-miot.ac_state = Custom Service - Ac State
+ch.zhimi.fan.za5-miot.alarm = Alarm - Alarm
+ch.zhimi.fan.za5-miot.anion = Fan - Anion
+ch.zhimi.fan.za5-miot.battery_state = Custom Service - Battery State
+ch.zhimi.fan.za5-miot.brightness = Indicator Light - Brightness
+ch.zhimi.fan.za5-miot.button_press = Custom Service - Button Press
+ch.zhimi.fan.za5-miot.fan_level = Fan - Fan Level
+ch.zhimi.fan.za5-miot.horizontal_angle = Fan - Horizontal Angle
+ch.zhimi.fan.za5-miot.horizontal_swing = Fan - Horizontal Swing
+ch.zhimi.fan.za5-miot.mode = Fan - Mode
+ch.zhimi.fan.za5-miot.off_delay = Fan - Power Off Delay
+ch.zhimi.fan.za5-miot.on = Fan - Power
+ch.zhimi.fan.za5-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.fan.za5-miot.relative_humidity = Environment - Relative Humidity
+ch.zhimi.fan.za5-miot.speed_level = Custom Service - Speed Level
+ch.zhimi.fan.za5-miot.speed_now = Custom Service - Speed Now
+ch.zhimi.fan.za5-miot.temperature = Environment - Temperature
+ch.zhimi.heater.ma2-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.ma2-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.ma2-miot.countdown_time = Countdown - Countdown Time
+ch.zhimi.heater.ma2-miot.fault = Heater - Fault
+ch.zhimi.heater.ma2-miot.hw_enable = Private Service - Hw Enable
+ch.zhimi.heater.ma2-miot.on = Heater - Switch Status
+ch.zhimi.heater.ma2-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.heater.ma2-miot.target_temperature = Heater - Target Temperature
+ch.zhimi.heater.ma2-miot.temperature = Environment - Temperature
+ch.zhimi.heater.ma2-miot.use_time = Private Service - Use Time
+ch.zhimi.heater.ma3-miot.actions = Actions
+ch.zhimi.heater.ma3-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.ma3-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.ma3-miot.countdown_time = Countdown - Countdown Time
+ch.zhimi.heater.ma3-miot.fault = Heater - Fault
+ch.zhimi.heater.ma3-miot.mode = Heater - Mode
+ch.zhimi.heater.ma3-miot.on = Heater - Switch Status
+ch.zhimi.heater.ma3-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.heater.ma3-miot.target_temperature = Heater - Target Temperature
+ch.zhimi.heater.ma3-miot.temperature = Environment - Temperature
+ch.zhimi.heater.ma3-miot.use_time = Private Service - Use Time
+ch.zhimi.heater.mc2-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.mc2-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.mc2-miot.countdown_time = Countdown - Countdown Time
+ch.zhimi.heater.mc2-miot.country_code = Private Service - Country Code
+ch.zhimi.heater.mc2-miot.fault = Heater - Device Fault
+ch.zhimi.heater.mc2-miot.hw_enable = Private Service - Hw Enable
+ch.zhimi.heater.mc2-miot.on = Heater - Power
+ch.zhimi.heater.mc2-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.heater.mc2-miot.target_temperature = Heater - Target Temperature
+ch.zhimi.heater.mc2-miot.temperature = Environment - Temperature
+ch.zhimi.heater.mc2-miot.use_time = Private Service - Use Time
+ch.zhimi.heater.na1-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.na1-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.na1-miot.countdown_time = Countdown - Countdown Time
+ch.zhimi.heater.na1-miot.fault = Heater - Device Fault
+ch.zhimi.heater.na1-miot.heat_level = Heater - Heat Level
+ch.zhimi.heater.na1-miot.mode = Heater - Mode
+ch.zhimi.heater.na1-miot.on = Heater - Power
+ch.zhimi.heater.na1-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.heater.na1-miot.return_to_middle = Private Service - Return To Middle
+ch.zhimi.heater.nb1-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.nb1-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.nb1-miot.countdown_time = Countdown - Countdown Time
+ch.zhimi.heater.nb1-miot.country_code = Private Service - Country Code
+ch.zhimi.heater.nb1-miot.fault = Heater - Device Fault
+ch.zhimi.heater.nb1-miot.heat_level = Heater - Heat Level
+ch.zhimi.heater.nb1-miot.hw_en = Private Service - Hw En
+ch.zhimi.heater.nb1-miot.mode = Heater - Mode
+ch.zhimi.heater.nb1-miot.on = Heater - Power
+ch.zhimi.heater.nb1-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
+ch.zhimi.heater.nb1-miot.return_to_middle = Private Service - Return To Middle
+ch.zhimi.heater.nb1-miot.target_temperature = Heater - Target Temperature
+ch.zhimi.heater.nb1-miot.temperature = Environment - Temperature
+ch.zhimi.heater.za1.HWSwitch = HW Switch
+ch.zhimi.heater.za1.brightness = Brightness
+ch.zhimi.heater.za1.buzzer = Buzzer Status
+ch.zhimi.heater.za1.childlock = Child Lock
+ch.zhimi.heater.za1.power = Power
+ch.zhimi.heater.za1.relative_humidity = Relative Humidity
+ch.zhimi.heater.za1.target_temperature = Target Temperature
+ch.zhimi.heater.za1.temperature = Temperature
+ch.zhimi.heater.za1.usedhours = Run Time
+ch.zhimi.heater.za2-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.za2-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.za2-miot.countdown-time = Countdown - Countdown Time
+ch.zhimi.heater.za2-miot.fault = Heater - Device Fault
+ch.zhimi.heater.za2-miot.on = Heater - Power
+ch.zhimi.heater.za2-miot.physical-controls-locked = Physical Control Locked - Physical Controls Locked
+ch.zhimi.heater.za2-miot.relative-humidity = Environment - Relative Humidity
+ch.zhimi.heater.za2-miot.target-temperature = Heater - Target Temperature
+ch.zhimi.heater.za2-miot.temperature = Environment - Temperature
+ch.zhimi.heater.za2-miot.use-time = Private-Service - Use Time
+ch.zhimi.heater.zb1-miot.alarm = Alarm - Alarm
+ch.zhimi.heater.zb1-miot.brightness = Indicator Light - Brightness
+ch.zhimi.heater.zb1-miot.countdown-time = Countdown - Countdown Time
+ch.zhimi.heater.zb1-miot.country-code = Private-Service - Country-Code
+ch.zhimi.heater.zb1-miot.fault = Heater - Device Fault
+ch.zhimi.heater.zb1-miot.on = Heater - Power
+ch.zhimi.heater.zb1-miot.physical-controls-locked = Physical Control Locked - Physical Controls Locked
+ch.zhimi.heater.zb1-miot.relative-humidity = Environment - Relative Humidity
+ch.zhimi.heater.zb1-miot.target-temperature = Heater - Target Temperature
+ch.zhimi.heater.zb1-miot.temperature = Environment - Temperature
+ch.zhimi.heater.zb1-miot.use-time = Private-Service - Use Time
+ch.zhimi.humidifier.ca4.ButtonPressed = Button Pressed
+ch.zhimi.humidifier.ca4.Fault = Humidifier Device Fault
+ch.zhimi.humidifier.ca4.actualmotorspeed = Actual Motor Speed
+ch.zhimi.humidifier.ca4.bright = LED Brightness
+ch.zhimi.humidifier.ca4.buzzer = Buzzer Status
+ch.zhimi.humidifier.ca4.childlock = Child Lock
+ch.zhimi.humidifier.ca4.clean = Clean Mode
+ch.zhimi.humidifier.ca4.dry = Dry
+ch.zhimi.humidifier.ca4.humidity = Humidity
+ch.zhimi.humidifier.ca4.mode = Mode - Fan Level
+ch.zhimi.humidifier.ca4.power = Power
+ch.zhimi.humidifier.ca4.powerhours = Power Time
+ch.zhimi.humidifier.ca4.targetHumidity = Target Humidity
+ch.zhimi.humidifier.ca4.targetmotorspeed = Target Motor Speed
+ch.zhimi.humidifier.ca4.temperature = Temperature
+ch.zhimi.humidifier.ca4.usedhours = Run Time
+ch.zhimi.humidifier.ca4.waterlevel = Water Level
+ch.zhimi.humidifier.cb1.bright = LED Brightness
+ch.zhimi.humidifier.cb1.buzzer = Buzzer Status
+ch.zhimi.humidifier.cb1.childlock = Child Lock
+ch.zhimi.humidifier.cb1.depth = Depth
+ch.zhimi.humidifier.cb1.dry = Dry
+ch.zhimi.humidifier.cb1.humidifierMode = Humidifier Mode
+ch.zhimi.humidifier.cb1.humidity = Humidity
+ch.zhimi.humidifier.cb1.motorspeed = Motor Speed
+ch.zhimi.humidifier.cb1.power = Power
+ch.zhimi.humidifier.cb1.setHumidity = Humidity Set
+ch.zhimi.humidifier.cb1.temperature = Temperature
+ch.zhimi.humidifier.cb1.usedhours = Run Time
+ch.zhimi.humidifier.v1.aqi = Air Quality Index
+ch.zhimi.humidifier.v1.bright = LED Brightness
+ch.zhimi.humidifier.v1.buzzer = Buzzer Status
+ch.zhimi.humidifier.v1.childlock = Child Lock
+ch.zhimi.humidifier.v1.depth = Depth
+ch.zhimi.humidifier.v1.dry = Dry
+ch.zhimi.humidifier.v1.humidity = Humidity
+ch.zhimi.humidifier.v1.mode = Mode
+ch.zhimi.humidifier.v1.motorspeed = Motor Speed
+ch.zhimi.humidifier.v1.power = Power
+ch.zhimi.humidifier.v1.setHumidity = Humidity Set
+ch.zhimi.humidifier.v1.temperature = Temperature
+ch.zhimi.humidifier.v1.translevel = Trans_level
+ch.zhimi.humidifier.v1.usedhours = Run Time
+ch.zimi.powerstrip.v2.current = Current
+ch.zimi.powerstrip.v2.led = wifi LED
+ch.zimi.powerstrip.v2.lp_autooff = Low Power Auto Off
+ch.zimi.powerstrip.v2.lp_autooff_delay = Low Power Limit Time
+ch.zimi.powerstrip.v2.lp_threshold = Low Power Threshold
+ch.zimi.powerstrip.v2.power = Power
+ch.zimi.powerstrip.v2.powerUsage = Power Consumption
+ch.zimi.powerstrip.v2.power_price = power_price
+ch.zimi.powerstrip.v2.temperature = Temperature
+option.careli.fryer.maf01-miot.actions-air-fryer-cancel-cooking = Air Fryer Cancel Cooking
+option.careli.fryer.maf01-miot.actions-air-fryer-pause = Air Fryer Pause
+option.careli.fryer.maf01-miot.actions-air-fryer-start-cook = Air Fryer Start Cook
+option.careli.fryer.maf01-miot.actions-custom-resume-cook = Custom Resume Cook
+option.careli.fryer.maf01-miot.actions-custom-start-cook = Custom Start Cook
+option.careli.fryer.maf01-miot.fault-0 = No Faults
+option.careli.fryer.maf01-miot.fault-1 = E1
+option.careli.fryer.maf01-miot.fault-2 = E2
+option.careli.fryer.maf01-miot.food_quantity-0 = Null
+option.careli.fryer.maf01-miot.food_quantity-1 = Single
+option.careli.fryer.maf01-miot.food_quantity-2 = Double
+option.careli.fryer.maf01-miot.food_quantity-3 = Half
+option.careli.fryer.maf01-miot.food_quantity-4 = Full
+option.careli.fryer.maf01-miot.preheat_switch-0 = Null
+option.careli.fryer.maf01-miot.preheat_switch-1 = Off
+option.careli.fryer.maf01-miot.preheat_switch-2 = On
+option.careli.fryer.maf01-miot.status-0 = Shutdown
+option.careli.fryer.maf01-miot.status-1 = Standby
+option.careli.fryer.maf01-miot.status-2 = Pause
+option.careli.fryer.maf01-miot.status-3 = Appointment
+option.careli.fryer.maf01-miot.status-4 = Cooking
+option.careli.fryer.maf01-miot.status-5 = Preheat 
+option.careli.fryer.maf01-miot.status-6 = Cooked
+option.careli.fryer.maf01-miot.status-7 = Preheat Finish
+option.careli.fryer.maf01-miot.status-8 = Preheat Pause
+option.careli.fryer.maf01-miot.status-9 = Pause2
+option.careli.fryer.maf01-miot.turn_pot-0 = Not Turn Pot
+option.careli.fryer.maf01-miot.turn_pot-1 = Switch Off
+option.careli.fryer.maf01-miot.turn_pot-2 = Turn Pot
+option.careli.fryer.maf02-miot.actions-air-fryer-cancel-cooking = Air Fryer Cancel Cooking
+option.careli.fryer.maf02-miot.actions-air-fryer-pause = Air Fryer Pause
+option.careli.fryer.maf02-miot.actions-air-fryer-start-cook = Air Fryer Start Cook
+option.careli.fryer.maf02-miot.actions-custom-resume-cooking = Custom Resume Cooking
+option.careli.fryer.maf02-miot.actions-custom-start-custom-cook = Custom Start Custom Cook
+option.careli.fryer.maf02-miot.fault-0 = No Faults
+option.careli.fryer.maf02-miot.fault-1 = E1
+option.careli.fryer.maf02-miot.fault-2 = E2
+option.careli.fryer.maf02-miot.food_quantity-0 = Null
+option.careli.fryer.maf02-miot.food_quantity-1 = Single
+option.careli.fryer.maf02-miot.food_quantity-2 = Double
+option.careli.fryer.maf02-miot.food_quantity-3 = Half
+option.careli.fryer.maf02-miot.food_quantity-4 = Full
+option.careli.fryer.maf02-miot.preheat_switch-0 = Null
+option.careli.fryer.maf02-miot.preheat_switch-1 = Off
+option.careli.fryer.maf02-miot.preheat_switch-2 = On
+option.careli.fryer.maf02-miot.status-0 = Shutdown
+option.careli.fryer.maf02-miot.status-1 = Standby
+option.careli.fryer.maf02-miot.status-2 = Pause
+option.careli.fryer.maf02-miot.status-3 = Appointment
+option.careli.fryer.maf02-miot.status-4 = Cooking
+option.careli.fryer.maf02-miot.status-5 = Preheat 
+option.careli.fryer.maf02-miot.status-6 = Cooked
+option.careli.fryer.maf02-miot.status-7 = Preheat Finish
+option.careli.fryer.maf02-miot.status-8 = Preheat Pause
+option.careli.fryer.maf02-miot.status-9 = Pause2
+option.careli.fryer.maf02-miot.turn_pot-0 = Not Turn Pot
+option.careli.fryer.maf02-miot.turn_pot-1 = Switch Off
+option.careli.fryer.maf02-miot.turn_pot-2 = Turn Pot
+option.cgllc.airm.cgdn1-miot.actions-settings-set-device-off = Set Device Off
+option.cgllc.airm.cgdn1-miot.actions-settings-set-end-time = Set End Time
+option.cgllc.airm.cgdn1-miot.actions-settings-set-frequency = Set Frequency
+option.cgllc.airm.cgdn1-miot.actions-settings-set-screen-off = Set Screen Off
+option.cgllc.airm.cgdn1-miot.actions-settings-set-start-time = Set Start Time
+option.cgllc.airm.cgdn1-miot.actions-settings-set-temp-unit = Set Temp Unit
+option.cgllc.airm.cgdn1-miot.charging_state-1 = Charging
+option.cgllc.airm.cgdn1-miot.charging_state-2 = Not charging
+option.cgllc.airm.cgdn1-miot.charging_state-3 = Not chargeable
+option.cgllc.airm.cgdn1-miot.device_off-0 = Null
+option.cgllc.airm.cgdn1-miot.device_off-15 = Minute
+option.cgllc.airm.cgdn1-miot.device_off-30 = Minute
+option.cgllc.airm.cgdn1-miot.device_off-60 = Minute
+option.cgllc.airm.cgdn1-miot.monitoring_frequency-0 = Null
+option.cgllc.airm.cgdn1-miot.monitoring_frequency-1 = Second
+option.cgllc.airm.cgdn1-miot.monitoring_frequency-300 = Second
+option.cgllc.airm.cgdn1-miot.monitoring_frequency-60 = Second
+option.cgllc.airm.cgdn1-miot.monitoring_frequency-600 = Second
+option.cgllc.airm.cgdn1-miot.screen_off-0 = Null
+option.cgllc.airm.cgdn1-miot.screen_off-15 = Second
+option.cgllc.airm.cgdn1-miot.screen_off-30 = Second
+option.cgllc.airm.cgdn1-miot.screen_off-300 = Second
+option.cgllc.airm.cgdn1-miot.screen_off-60 = Second
+option.deerma.humidifier.jsq1.mode-1 = Low
+option.deerma.humidifier.jsq1.mode-2 = Medium
+option.deerma.humidifier.jsq1.mode-3 = High
+option.deerma.humidifier.jsq1.mode-4 = Humidity 
+option.deerma.humidifier.mjjsq.mode-1 = Low
+option.deerma.humidifier.mjjsq.mode-2 = Medium
+option.deerma.humidifier.mjjsq.mode-3 = High
+option.deerma.humidifier.mjjsq.mode-4 = Humidity 
+option.dmaker.fan.p15-miot.actions-off-delay-time-toggle = Off Delay Time Toggle
+option.dmaker.fan.p15-miot.fan_level-1 = Level1
+option.dmaker.fan.p15-miot.fan_level-2 = Level2
+option.dmaker.fan.p15-miot.fan_level-3 = Level3
+option.dmaker.fan.p15-miot.fan_level-4 = Level4
+option.dmaker.fan.p15-miot.fault-0 = No Faults
+option.dmaker.fan.p15-miot.horizontal_angle-120 = 120
+option.dmaker.fan.p15-miot.horizontal_angle-140 = 140
+option.dmaker.fan.p15-miot.horizontal_angle-30 = 30
+option.dmaker.fan.p15-miot.horizontal_angle-60 = 60
+option.dmaker.fan.p15-miot.horizontal_angle-90 = 90
+option.dmaker.fan.p15-miot.mode-0 = Straight Wind
+option.dmaker.fan.p15-miot.mode-1 = Natural Wind
+option.dmaker.fan.p18-miot.actions-fan-toggle = Fan Toggle
+option.dmaker.fan.p18-miot.fan_level-1 = Level1
+option.dmaker.fan.p18-miot.fan_level-2 = Level2
+option.dmaker.fan.p18-miot.fan_level-3 = Level3
+option.dmaker.fan.p18-miot.fan_level-4 = Level4
+option.dmaker.fan.p18-miot.horizontal_angle-120 = 120
+option.dmaker.fan.p18-miot.horizontal_angle-140 = 140
+option.dmaker.fan.p18-miot.horizontal_angle-30 = 30
+option.dmaker.fan.p18-miot.horizontal_angle-60 = 60
+option.dmaker.fan.p18-miot.horizontal_angle-90 = 90
+option.dmaker.fan.p18-miot.mode-0 = Straight Wind
+option.dmaker.fan.p18-miot.mode-1 = Natural Wind
+option.dmaker.fan.p18-miot.motor_control-0 = NO
+option.dmaker.fan.p18-miot.motor_control-1 = LEFT
+option.dmaker.fan.p18-miot.motor_control-2 = RIGHT
+option.dmaker.fan.p8-miot.FanLevel-1 = Level1
+option.dmaker.fan.p8-miot.FanLevel-2 = Level2
+option.dmaker.fan.p8-miot.FanLevel-3 = Level3
+option.dmaker.fan.p8-miot.Mode-0 = Straight Wind
+option.dmaker.fan.p8-miot.Mode-1 = Sleep
+option.dmaker.fan.p8-miot.actions-fan-toggle = Fan Toggle
+option.dmaker.fan.p9-miot.FanLevel-1 = Level1
+option.dmaker.fan.p9-miot.FanLevel-2 = Level2
+option.dmaker.fan.p9-miot.FanLevel-3 = Level3
+option.dmaker.fan.p9-miot.FanLevel-4 = Level4
+option.dmaker.fan.p9-miot.HorizontalAngle-120 = 120
+option.dmaker.fan.p9-miot.HorizontalAngle-150 = 150
+option.dmaker.fan.p9-miot.HorizontalAngle-30 = 30
+option.dmaker.fan.p9-miot.HorizontalAngle-60 = 60
+option.dmaker.fan.p9-miot.HorizontalAngle-90 = 90
+option.dmaker.fan.p9-miot.Mode-0 = Straight Wind
+option.dmaker.fan.p9-miot.Mode-1 = Natural Wind
+option.dmaker.fan.p9-miot.Mode-2 = Sleep
+option.dmaker.fan.p9-miot.actions-fan-toggle = Fan Toggle
+option.dreame.vacuum.mc1808-miot.ChargingState-1 = Charging
+option.dreame.vacuum.mc1808-miot.ChargingState-2 = Not Charging
+option.dreame.vacuum.mc1808-miot.ChargingState-4 = Charging
+option.dreame.vacuum.mc1808-miot.ChargingState-5 = Go Charging
+option.dreame.vacuum.mc1808-miot.Fault-0 = No faults
+option.dreame.vacuum.mc1808-miot.Mode-0 = quiet
+option.dreame.vacuum.mc1808-miot.Mode-1 = standard
+option.dreame.vacuum.mc1808-miot.Mode-2 = medium
+option.dreame.vacuum.mc1808-miot.Mode-3 = strong
+option.dreame.vacuum.mc1808-miot.Status-1 = Sweeping
+option.dreame.vacuum.mc1808-miot.Status-2 = Idle
+option.dreame.vacuum.mc1808-miot.Status-3 = Paused
+option.dreame.vacuum.mc1808-miot.Status-4 = Error
+option.dreame.vacuum.mc1808-miot.Status-5 = Go Charging
+option.dreame.vacuum.mc1808-miot.Status-6 = Charging
+option.dreame.vacuum.mc1808-miot.TaskDone-0 = in progress
+option.dreame.vacuum.mc1808-miot.TaskDone-1 = done
+option.dreame.vacuum.mc1808-miot.vacuumaction-dock = Goto Dock
+option.dreame.vacuum.mc1808-miot.vacuumaction-stop = Stop
+option.dreame.vacuum.mc1808-miot.vacuumaction-stopsweep = Stop Sweep
+option.dreame.vacuum.mc1808-miot.vacuumaction-sweep = Sweep
+option.dreame.vacuum.mc1808-miot.vacuumaction-vacuum = Vacuum
+option.dreame.vacuum.mc1808-miot.water-mode-1 = Low
+option.dreame.vacuum.mc1808-miot.water-mode-2 = Medium
+option.dreame.vacuum.mc1808-miot.water-mode-4 = High
+option.dreame.vacuum.p2008-miot.break-point-restart-0 = Off
+option.dreame.vacuum.p2008-miot.break-point-restart-1 = On
+option.dreame.vacuum.p2008-miot.carpet-press-0 = Off
+option.dreame.vacuum.p2008-miot.carpet-press-1 = On
+option.dreame.vacuum.p2008-miot.charging-state-1 = Charging
+option.dreame.vacuum.p2008-miot.charging-state-2 = Not Charging
+option.dreame.vacuum.p2008-miot.charging-state-5 = Go Charging
+option.dreame.vacuum.p2008-miot.cleaning-mode-0 = mode 0
+option.dreame.vacuum.p2008-miot.cleaning-mode-1 = mode 1
+option.dreame.vacuum.p2008-miot.cleaning-mode-2 = mode 2
+option.dreame.vacuum.p2008-miot.cleaning-mode-3 = mode 3
+option.dreame.vacuum.p2008-miot.fault-0 = No Faults
+option.dreame.vacuum.p2008-miot.mop-mode-1 = low water
+option.dreame.vacuum.p2008-miot.mop-mode-2 = medium water
+option.dreame.vacuum.p2008-miot.mop-mode-3 = high water
+option.dreame.vacuum.p2008-miot.save-map-status--1 = Not Enabled
+option.dreame.vacuum.p2008-miot.save-map-status-0 = Off
+option.dreame.vacuum.p2008-miot.save-map-status-1 = On
+option.dreame.vacuum.p2008-miot.status-1 = Sweeping
+option.dreame.vacuum.p2008-miot.status-2 = Idle
+option.dreame.vacuum.p2008-miot.status-3 = Paused
+option.dreame.vacuum.p2008-miot.status-4 = Error
+option.dreame.vacuum.p2008-miot.status-5 = Go Charging
+option.dreame.vacuum.p2008-miot.status-6 = Charging
+option.dreame.vacuum.p2008-miot.task-status-0 = Status 0
+option.dreame.vacuum.p2008-miot.task-status-1 = Status 1
+option.dreame.vacuum.p2008-miot.waterbox-status-0 = Status 0
+option.dreame.vacuum.p2008-miot.waterbox-status-1 = Status 1
+option.dreame.vacuum.p2009-miot.break-point-restart-0 = Off
+option.dreame.vacuum.p2009-miot.break-point-restart-1 = On
+option.dreame.vacuum.p2009-miot.carpet-press-0 = Off
+option.dreame.vacuum.p2009-miot.carpet-press-1 = On
+option.dreame.vacuum.p2009-miot.charging-state-1 = Charging
+option.dreame.vacuum.p2009-miot.charging-state-2 = Not Charging
+option.dreame.vacuum.p2009-miot.charging-state-5 = Go Charging
+option.dreame.vacuum.p2009-miot.cleaning-mode-0 = mode 0
+option.dreame.vacuum.p2009-miot.cleaning-mode-1 = mode 1
+option.dreame.vacuum.p2009-miot.cleaning-mode-2 = mode 2
+option.dreame.vacuum.p2009-miot.cleaning-mode-3 = mode 3
+option.dreame.vacuum.p2009-miot.fault-0 = No Error
+option.dreame.vacuum.p2009-miot.fault-1 = Drop
+option.dreame.vacuum.p2009-miot.fault-10 = Waterbox Empty
+option.dreame.vacuum.p2009-miot.fault-11 = Box full
+option.dreame.vacuum.p2009-miot.fault-12 = Brush
+option.dreame.vacuum.p2009-miot.fault-13 = Side Brush
+option.dreame.vacuum.p2009-miot.fault-14 = Fan
+option.dreame.vacuum.p2009-miot.fault-15 = Left Wheel motor
+option.dreame.vacuum.p2009-miot.fault-16 = Right Wheel motor
+option.dreame.vacuum.p2009-miot.fault-17 = Turn suffocate
+option.dreame.vacuum.p2009-miot.fault-18 = Forward suffocate
+option.dreame.vacuum.p2009-miot.fault-19 = Charger get
+option.dreame.vacuum.p2009-miot.fault-2 = Cliff
+option.dreame.vacuum.p2009-miot.fault-20 = Battery low
+option.dreame.vacuum.p2009-miot.fault-21 = Charge fault
+option.dreame.vacuum.p2009-miot.fault-22 = Battery percentage
+option.dreame.vacuum.p2009-miot.fault-23 = Heart
+option.dreame.vacuum.p2009-miot.fault-24 = Camera occlusion
+option.dreame.vacuum.p2009-miot.fault-25 = Camera fault
+option.dreame.vacuum.p2009-miot.fault-26 = Event battery
+option.dreame.vacuum.p2009-miot.fault-27 = Forward looking
+option.dreame.vacuum.p2009-miot.fault-28 = Gyroscope
+option.dreame.vacuum.p2009-miot.fault-3 = Bumper
+option.dreame.vacuum.p2009-miot.fault-4 = Gesture
+option.dreame.vacuum.p2009-miot.fault-5 = Bumper Repeat
+option.dreame.vacuum.p2009-miot.fault-6 = Drop Repeat
+option.dreame.vacuum.p2009-miot.fault-7 = Optical Flow
+option.dreame.vacuum.p2009-miot.fault-8 = No Box
+option.dreame.vacuum.p2009-miot.fault-9 = No Tankbox
+option.dreame.vacuum.p2009-miot.mop-mode-1 = low water
+option.dreame.vacuum.p2009-miot.mop-mode-2 = medium water
+option.dreame.vacuum.p2009-miot.mop-mode-3 = high water
+option.dreame.vacuum.p2009-miot.resetConsumable-filter-reset-filter-life = Reset Filter
+option.dreame.vacuum.p2009-miot.resetConsumable-mainbrush-cleaner-reset-brush-life = Reset Main Brush
+option.dreame.vacuum.p2009-miot.resetConsumable-sidebrush-cleaner-reset-brush-life = Reset Side Brush
+option.dreame.vacuum.p2009-miot.status-1 = Sweeping
+option.dreame.vacuum.p2009-miot.status-2 = Idle
+option.dreame.vacuum.p2009-miot.status-3 = Paused
+option.dreame.vacuum.p2009-miot.status-4 = Error
+option.dreame.vacuum.p2009-miot.status-5 = Go Charging
+option.dreame.vacuum.p2009-miot.status-6 = Charging
+option.dreame.vacuum.p2009-miot.status-7 = Mopping
+option.dreame.vacuum.p2009-miot.task-status-0 = Notask
+option.dreame.vacuum.p2009-miot.task-status-1 = AutoClean
+option.dreame.vacuum.p2009-miot.task-status-2 = CustomClean
+option.dreame.vacuum.p2009-miot.task-status-3 = SelectAreanClean
+option.dreame.vacuum.p2009-miot.task-status-4 = SpotArea
+option.dreame.vacuum.p2009-miot.vacuumaction-dock = Goto Dock
+option.dreame.vacuum.p2009-miot.vacuumaction-findme = Find me
+option.dreame.vacuum.p2009-miot.vacuumaction-stopsweep = Stop Sweep
+option.dreame.vacuum.p2009-miot.vacuumaction-sweep = Sweep
+option.dreame.vacuum.p2009-miot.vacuumaction-testsound = Test Sound
+option.dreame.vacuum.p2009-miot.waterbox-status-0 = Status 0
+option.dreame.vacuum.p2009-miot.waterbox-status-1 = Status 1
+option.dreame.vacuum.p2156o-miot.actions-audio-play-sound = Audio Play Sound
+option.dreame.vacuum.p2156o-miot.actions-audio-position = Audio Position
+option.dreame.vacuum.p2156o-miot.actions-battery-start-charge = Start Charge
+option.dreame.vacuum.p2156o-miot.actions-brush-cleaner-reset-brush-life = Brush Cleaner Reset Brush Life
+option.dreame.vacuum.p2156o-miot.actions-filter-reset-filter-life = Filter Reset Filter Life
+option.dreame.vacuum.p2156o-miot.actions-map-map-req = Map Map Req
+option.dreame.vacuum.p2156o-miot.actions-map-update-map = Map Update Map
+option.dreame.vacuum.p2156o-miot.actions-time-delete-timer = Time Delete Timer
+option.dreame.vacuum.p2156o-miot.actions-vacuum-extend-start-clean = Vacuum Extend Start Clean
+option.dreame.vacuum.p2156o-miot.actions-vacuum-extend-stop-clean = Vacuum Extend Stop Clean
+option.dreame.vacuum.p2156o-miot.actions-vacuum-start-sweep = Start Sweep
+option.dreame.vacuum.p2156o-miot.actions-vacuum-stop-sweeping = Stop Sweeping
+option.dreame.vacuum.p2156o-miot.break_point_restart-0 = Off
+option.dreame.vacuum.p2156o-miot.break_point_restart-1 = On
+option.dreame.vacuum.p2156o-miot.carpet_press-0 = Off
+option.dreame.vacuum.p2156o-miot.carpet_press-1 = On
+option.dreame.vacuum.p2156o-miot.charging_state-1 = Charging
+option.dreame.vacuum.p2156o-miot.charging_state-2 = Not Charging
+option.dreame.vacuum.p2156o-miot.charging_state-5 = Go Charging
+option.dreame.vacuum.p2156o-miot.cleaning_mode-0 = mode 0
+option.dreame.vacuum.p2156o-miot.cleaning_mode-1 = mode 1
+option.dreame.vacuum.p2156o-miot.cleaning_mode-2 = mode 2
+option.dreame.vacuum.p2156o-miot.cleaning_mode-3 = mode 3
+option.dreame.vacuum.p2156o-miot.mode-0 = Silent
+option.dreame.vacuum.p2156o-miot.mode-1 = Basic
+option.dreame.vacuum.p2156o-miot.mode-2 = Strong
+option.dreame.vacuum.p2156o-miot.mode-3 = Full Speed
+option.dreame.vacuum.p2156o-miot.mop_mode-1 = low water
+option.dreame.vacuum.p2156o-miot.mop_mode-2 = medium water
+option.dreame.vacuum.p2156o-miot.mop_mode-3 = high water
+option.dreame.vacuum.p2156o-miot.save_map_status-0 = Off
+option.dreame.vacuum.p2156o-miot.save_map_status-1 = On
+option.dreame.vacuum.p2156o-miot.status-1 = Sweeping
+option.dreame.vacuum.p2156o-miot.status-2 = Idle
+option.dreame.vacuum.p2156o-miot.status-3 = Paused
+option.dreame.vacuum.p2156o-miot.status-4 = Error
+option.dreame.vacuum.p2156o-miot.status-5 = Go Charging
+option.dreame.vacuum.p2156o-miot.status-6 = Charging
+option.dreame.vacuum.p2156o-miot.status-7 = Mopping
+option.dreame.vacuum.p2156o-miot.task_status-0 = Notask
+option.dreame.vacuum.p2156o-miot.task_status-1 = AutoClean
+option.dreame.vacuum.p2156o-miot.task_status-2 = CustomClean
+option.dreame.vacuum.p2156o-miot.task_status-3 = SelectAreanClean
+option.dreame.vacuum.p2156o-miot.task_status-4 = SpotArea
+option.dreame.vacuum.p2156o-miot.waterbox_status-0 = Status 0
+option.dreame.vacuum.p2156o-miot.waterbox_status-1 = Status 1
+option.huayi.light.fanwy-miot.mode-1 = Normal Wind
+option.huayi.light.fanwy-miot.mode-2 = Natural Wind
+option.huayi.light.fanwy2-miot.mode-0 = Basic
+option.huayi.light.fanwy2-miot.mode-1 = Natural Wind
+option.huayi.light.fanwy2-miot.pre-custom-0 = Switch Off
+option.huayi.light.fanwy2-miot.pre-custom-1 = Open
+option.huayi.light.fanwy2-miot.reversal-0 = Postitive
+option.huayi.light.fanwy2-miot.reversal-1 = Reverse
+option.huayi.light.wyheat-miot.fault-0 = No Faults
+option.lumi.curtain.hagl05-miot.en-night-tip-light-0 = Disable
+option.lumi.curtain.hagl05-miot.en-night-tip-light-1 = Enable
+option.lumi.curtain.hagl05-miot.fault-0 = No faults
+option.lumi.curtain.hagl05-miot.manual-enabled-0 = Disable
+option.lumi.curtain.hagl05-miot.manual-enabled-1 = Enable
+option.lumi.curtain.hagl05-miot.polarity-0 = Positive
+option.lumi.curtain.hagl05-miot.polarity-1 = Reverse
+option.lumi.curtain.hagl05-miot.pos-limit-0 = Unlimit
+option.lumi.curtain.hagl05-miot.pos-limit-1 = Limit
+option.lumi.curtain.hagl05-miot.status-0 = Stopped
+option.lumi.curtain.hagl05-miot.status-1 = Opening
+option.lumi.curtain.hagl05-miot.status-2 = Closing
+option.mijia.vacuum.v2-miot.charging-state-0 = Not-charging
+option.mijia.vacuum.v2-miot.charging-state-1 = Charging
+option.mijia.vacuum.v2-miot.charging-state-2 = Charging-competely
+option.mijia.vacuum.v2-miot.direction_key-0 = direction 0
+option.mijia.vacuum.v2-miot.direction_key-1 = direction 1
+option.mijia.vacuum.v2-miot.direction_key-2 = direction 2
+option.mijia.vacuum.v2-miot.direction_key-3 = direction 3
+option.mijia.vacuum.v2-miot.direction_key-4 = direction 4
+option.mijia.vacuum.v2-miot.fan-level-0 = Silence
+option.mijia.vacuum.v2-miot.fan-level-1 = Stanrd
+option.mijia.vacuum.v2-miot.fan-level-2 = Middle
+option.mijia.vacuum.v2-miot.fan-level-3 = Enchance
+option.mijia.vacuum.v2-miot.fault-0 = No Faults
+option.mijia.vacuum.v2-miot.fault-1 = Left-wheel-error
+option.mijia.vacuum.v2-miot.fault-10 = Charging-error
+option.mijia.vacuum.v2-miot.fault-11 = No-wate-error
+option.mijia.vacuum.v2-miot.fault-12 = Pick-up-error
+option.mijia.vacuum.v2-miot.fault-2 = Right-wheel-error
+option.mijia.vacuum.v2-miot.fault-3 = Cliff-error
+option.mijia.vacuum.v2-miot.fault-4 = Low-battery-error
+option.mijia.vacuum.v2-miot.fault-5 = Bump-error
+option.mijia.vacuum.v2-miot.fault-6 = Main-brush-error
+option.mijia.vacuum.v2-miot.fault-7 = Side-brush-error
+option.mijia.vacuum.v2-miot.fault-8 = Fan-motor-error
+option.mijia.vacuum.v2-miot.fault-9 = Dustbin-error
+option.mijia.vacuum.v2-miot.language-0 = English
+option.mijia.vacuum.v2-miot.language-1 = 简体中文
+option.mijia.vacuum.v2-miot.language-2 = Español
+option.mijia.vacuum.v2-miot.language-3 = Русский
+option.mijia.vacuum.v2-miot.language-4 = Italiano
+option.mijia.vacuum.v2-miot.language-5 = Français
+option.mijia.vacuum.v2-miot.language-6 = Deutsch
+option.mijia.vacuum.v2-miot.language-7 = 한국어
+option.mijia.vacuum.v2-miot.language-8 = Polski
+option.mijia.vacuum.v2-miot.mode-1 = Auto-clean
+option.mijia.vacuum.v2-miot.mode-2 = Spot-clean
+option.mijia.vacuum.v2-miot.mode-3 = Wallflow-clean
+option.mijia.vacuum.v2-miot.mop-status-0 = Mop Uninstall
+option.mijia.vacuum.v2-miot.mop-status-1 = Mop Install
+option.mijia.vacuum.v2-miot.status-1 = Idle
+option.mijia.vacuum.v2-miot.status-2 = Sweeping
+option.mijia.vacuum.v2-miot.status-3 = Paused
+option.mijia.vacuum.v2-miot.status-4 = Error
+option.mijia.vacuum.v2-miot.status-5 = Charging
+option.mijia.vacuum.v2-miot.status-6 = Go Charging
+option.mijia.vacuum.v2-miot.target-water-level-1 = Level1
+option.mijia.vacuum.v2-miot.target-water-level-2 = Level2
+option.mijia.vacuum.v2-miot.target-water-level-3 = Level3
+option.mmgg.pet_waterer.s1-miot.fault-0 = No faults
+option.mmgg.pet_waterer.s1-miot.mode-1 = Common
+option.mmgg.pet_waterer.s1-miot.mode-2 = Smart 
+option.mmgg.pet_waterer.s1-miot.resetConsumable-filter-cotton-reset-cotton-life = Reset Cotton Time
+option.mmgg.pet_waterer.s1-miot.resetConsumable-filter-reset-filter-life = Reset Filter Life
+option.mmgg.pet_waterer.s1-miot.resetConsumable-remain-clean-time-reset-clean-time = Reset Clean Time
+option.mmgg.pet_waterer.s2-miot.fault-0 = No faults
+option.mmgg.pet_waterer.s2-miot.mode-1 = Common
+option.mmgg.pet_waterer.s2-miot.mode-2 = Smart 
+option.mmgg.pet_waterer.s2-miot.resetConsumable-filter-cotton-reset-cotton-life = Reset Cotton Time
+option.mmgg.pet_waterer.s2-miot.resetConsumable-filter-reset-filter-life = Reset Filter Life
+option.mmgg.pet_waterer.s2-miot.resetConsumable-remain-clean-time-reset-clean-time = Reset Clean Time
+option.qmi.powerstrip.v1.mode-green = Green
+option.qmi.powerstrip.v1.mode-normal = Normal
+option.viomi.vacuum.v18-miot.clean-mode-0 = Everywhere
+option.viomi.vacuum.v18-miot.clean-mode-1 = Edges
+option.viomi.vacuum.v18-miot.clean-mode-2 = Surface
+option.viomi.vacuum.v18-miot.clean-mode-3 = Fixed Location
+option.viomi.vacuum.v18-miot.clean-way-0 = Sweep Floor
+option.viomi.vacuum.v18-miot.clean-way-1 = Sweep
+option.viomi.vacuum.v18-miot.clean-way-2 = Mop
+option.viomi.vacuum.v18-miot.contact-state-0 = Off
+option.viomi.vacuum.v18-miot.contact-state-1 = On
+option.viomi.vacuum.v18-miot.dnd-enable-0 = Disabled
+option.viomi.vacuum.v18-miot.dnd-enable-1 = Enabled
+option.viomi.vacuum.v18-miot.door-state-0 = Door 0
+option.viomi.vacuum.v18-miot.door-state-1 = Door 1
+option.viomi.vacuum.v18-miot.door-state-2 = Door 2
+option.viomi.vacuum.v18-miot.door-state-3 = Door 3
+option.viomi.vacuum.v18-miot.download-status-0 = Free
+option.viomi.vacuum.v18-miot.download-status-1 = Downloading
+option.viomi.vacuum.v18-miot.dust-collection-0 = Close
+option.viomi.vacuum.v18-miot.dust-collection-1 = Open
+option.viomi.vacuum.v18-miot.fault-0 = No Error
+option.viomi.vacuum.v18-miot.fault-1 = Low Battery Find Charge
+option.viomi.vacuum.v18-miot.fault-10 = Side Brush Err
+option.viomi.vacuum.v18-miot.fault-11 = Fan Err
+option.viomi.vacuum.v18-miot.fault-12 = Lidar Cover
+option.viomi.vacuum.v18-miot.fault-13 = Garbage Full
+option.viomi.vacuum.v18-miot.fault-14 = Garbage Out
+option.viomi.vacuum.v18-miot.fault-15 = Garbage Full Out
+option.viomi.vacuum.v18-miot.fault-16 = Trapped
+option.viomi.vacuum.v18-miot.fault-17 = Pick Up
+option.viomi.vacuum.v18-miot.fault-18 = Garbage Out
+option.viomi.vacuum.v18-miot.fault-2 = Low Bat Need Poweroff
+option.viomi.vacuum.v18-miot.fault-20 = Cannot Arrive
+option.viomi.vacuum.v18-miot.fault-21 = Start From Forbid
+option.viomi.vacuum.v18-miot.fault-22 = Drop
+option.viomi.vacuum.v18-miot.fault-23 = Kit Water Pump
+option.viomi.vacuum.v18-miot.fault-24 = Find Charge Failed
+option.viomi.vacuum.v18-miot.fault-25 = No Mop Clean
+option.viomi.vacuum.v18-miot.fault-26 = Low Battery Cant Clean
+option.viomi.vacuum.v18-miot.fault-3 = Wheel Trap
+option.viomi.vacuum.v18-miot.fault-4 = Collision Error
+option.viomi.vacuum.v18-miot.fault-5 = Tile Do Task
+option.viomi.vacuum.v18-miot.fault-6 = Lidar Point Err
+option.viomi.vacuum.v18-miot.fault-7 = Front Wall Err
+option.viomi.vacuum.v18-miot.fault-8 = Along Wall Err
+option.viomi.vacuum.v18-miot.fault-9 = Mid Brush Err
+option.viomi.vacuum.v18-miot.has-map-0 = No map in memory
+option.viomi.vacuum.v18-miot.has-map-1 = Map in memory
+option.viomi.vacuum.v18-miot.has-newmap-0 = None
+option.viomi.vacuum.v18-miot.has-newmap-1 = New
+option.viomi.vacuum.v18-miot.has-newmap-2 = Cover
+option.viomi.vacuum.v18-miot.map-type-0 = Upload to url0
+option.viomi.vacuum.v18-miot.map-type-1 = Upload to url1
+option.viomi.vacuum.v18-miot.map-type-2 = Upload to url2
+option.viomi.vacuum.v18-miot.mode-0 = Silent
+option.viomi.vacuum.v18-miot.mode-1 = Basic
+option.viomi.vacuum.v18-miot.mode-2 = Medium
+option.viomi.vacuum.v18-miot.mode-3 = Strong
+option.viomi.vacuum.v18-miot.mop-route-0 = C-Curved
+option.viomi.vacuum.v18-miot.mop-route-1 = Y-Route
+option.viomi.vacuum.v18-miot.status-0 = Sleep
+option.viomi.vacuum.v18-miot.status-1 = Idle
+option.viomi.vacuum.v18-miot.status-2 = Paused
+option.viomi.vacuum.v18-miot.status-3 = Go Charging
+option.viomi.vacuum.v18-miot.status-4 = Charging
+option.viomi.vacuum.v18-miot.status-5 = Sweeping
+option.viomi.vacuum.v18-miot.status-6 = Sweeping and Mopping
+option.viomi.vacuum.v18-miot.status-7 = Mopping
+option.viomi.vacuum.v18-miot.suction-grade-0 = Silent
+option.viomi.vacuum.v18-miot.suction-grade-1 = Standard
+option.viomi.vacuum.v18-miot.suction-grade-2 = Medium
+option.viomi.vacuum.v18-miot.suction-grade-3 = Strong
+option.viomi.vacuum.v18-miot.sweep-type-0 = Total
+option.viomi.vacuum.v18-miot.sweep-type-2 = Wall
+option.viomi.vacuum.v18-miot.sweep-type-3 = Zone
+option.viomi.vacuum.v18-miot.sweep-type-4 = Point
+option.viomi.vacuum.v18-miot.sweep-type-5 = Control
+option.viomi.vacuum.v18-miot.vacuumaction-pause = Pause
+option.viomi.vacuum.v18-miot.vacuumaction-start-charge = Goto Dock
+option.viomi.vacuum.v18-miot.vacuumaction-start-mop = Start Mop
+option.viomi.vacuum.v18-miot.vacuumaction-start-only-sweep = Start Sweep Only
+option.viomi.vacuum.v18-miot.vacuumaction-start-sweep = Sweep
+option.viomi.vacuum.v18-miot.vacuumaction-start-sweep-mop = Start Sweep Mop
+option.viomi.vacuum.v18-miot.vacuumaction-stop-massage = Stop Sweep
+option.viomi.vacuum.v18-miot.vacuumaction-stop-sweeping = Stop Sweep
+option.viomi.vacuum.v18-miot.water-grade-0 = 1 Block
+option.viomi.vacuum.v18-miot.water-grade-1 = 2 Blocks
+option.viomi.vacuum.v18-miot.water-grade-2 = 3 Blocks
+option.viomi.vacuum.v18-miot.wdr-mode-0 = Mode 0
+option.viomi.vacuum.v18-miot.wdr-mode-1 = Mode 1
+option.viomi.vacuum.v18-miot.wdr-mode-2 = Mode 2
+option.xiaomi.aircondition.ma1-miot.fan-level-0 = Auto
+option.xiaomi.aircondition.ma1-miot.fan-level-1 = Level1
+option.xiaomi.aircondition.ma1-miot.fan-level-2 = Level2
+option.xiaomi.aircondition.ma1-miot.fan-level-3 = Level3
+option.xiaomi.aircondition.ma1-miot.fan-level-4 = Level4
+option.xiaomi.aircondition.ma1-miot.fan-level-5 = Level5
+option.xiaomi.aircondition.ma1-miot.fan-level-6 = Level6
+option.xiaomi.aircondition.ma1-miot.fan-level-7 = Level7
+option.xiaomi.aircondition.ma1-miot.mode-1 = Cool
+option.xiaomi.aircondition.ma1-miot.mode-2 = Dry
+option.xiaomi.aircondition.ma1-miot.mode-3 = Heat
+option.xiaomi.aircondition.ma1-miot.mode-4 = Fan
+option.xiaomi.aircondition.mc1-miot.fan-level-0 = Auto
+option.xiaomi.aircondition.mc1-miot.fan-level-1 = Level1
+option.xiaomi.aircondition.mc1-miot.fan-level-2 = Level2
+option.xiaomi.aircondition.mc1-miot.fan-level-3 = Level3
+option.xiaomi.aircondition.mc1-miot.fan-level-4 = Level4
+option.xiaomi.aircondition.mc1-miot.fan-level-5 = Level5
+option.xiaomi.aircondition.mc1-miot.fan-level-6 = Level6
+option.xiaomi.aircondition.mc1-miot.fan-level-7 = Level7
+option.xiaomi.aircondition.mc1-miot.mode-2 = Cool
+option.xiaomi.aircondition.mc1-miot.mode-3 = Dry
+option.xiaomi.aircondition.mc1-miot.mode-4 = Fan
+option.xiaomi.aircondition.mc1-miot.mode-5 = Heat
+option.yeelink.light.ceiling.colorMode-0 = Default
+option.yeelink.light.ceiling.colorMode-1 = RGB mode
+option.yeelink.light.ceiling.colorMode-2 = CT mode
+option.yeelink.light.ceiling.colorMode-3 = HSV mode
+option.yeelink.light.ceiling.colorMode-4 = Color Flow mode
+option.yeelink.light.ceiling.colorMode-5 = Night Light mode
+option.yeelink.light.ceiling2.colorMode-0 = Default
+option.yeelink.light.ceiling2.colorMode-1 = RGB mode
+option.yeelink.light.ceiling2.colorMode-2 = CT mode
+option.yeelink.light.ceiling2.colorMode-3 = HSV mode
+option.yeelink.light.ceiling2.colorMode-4 = Color Flow mode
+option.yeelink.light.ceiling2.colorMode-5 = Night Light mode
+option.yeelink.light.ceiling4.colorMode-0 = Default
+option.yeelink.light.ceiling4.colorMode-1 = RGB mode
+option.yeelink.light.ceiling4.colorMode-2 = CT mode
+option.yeelink.light.ceiling4.colorMode-3 = HSV mode
+option.yeelink.light.ceiling4.colorMode-4 = Color Flow mode
+option.yeelink.light.ceiling4.colorMode-5 = Night Light mode
+option.yeelink.light.color1.colorMode-0 = Default
+option.yeelink.light.color1.colorMode-1 = RGB mode
+option.yeelink.light.color1.colorMode-2 = CT mode
+option.yeelink.light.color1.colorMode-3 = HSV mode
+option.yeelink.light.color1.colorMode-4 = Color Flow mode
+option.yeelink.light.color1.colorMode-5 = Night Light mode
+option.yeelink.light.lamp1.colorMode-0 = Default
+option.yeelink.light.lamp1.colorMode-1 = RGB mode
+option.yeelink.light.lamp1.colorMode-2 = CT mode
+option.yeelink.light.lamp1.colorMode-3 = HSV mode
+option.yeelink.light.lamp1.colorMode-4 = Color Flow mode
+option.yeelink.light.lamp1.colorMode-5 = Night Light mode
+option.yeelink.light.light15.colorMode-0 = Default
+option.yeelink.light.light15.colorMode-1 = RGB mode
+option.yeelink.light.light15.colorMode-2 = CT mode
+option.yeelink.light.light15.colorMode-3 = HSV mode
+option.yeelink.light.light15.colorMode-4 = Color Flow mode
+option.yeelink.light.light15.colorMode-5 = Night Light mode
+option.yeelink.switch.sw1-miot.mode-0 = Off
+option.yeelink.switch.sw1-miot.mode-1 = On
+option.yeelink.switch.sw1-miot.mode2-0 = Off
+option.yeelink.switch.sw1-miot.mode2-1 = On
+option.yunmi.waterpurifier.lightMode-0 = Simple Mode
+option.yunmi.waterpurifier.lightMode-1 = Special Mode
+option.yunmi.waterpurifier.lx8.lightMode-0 = Simple Mode
+option.yunmi.waterpurifier.lx8.lightMode-1 = Special Mode
+option.zhimi.airfresh.va4.led_level-0 = High
+option.zhimi.airfresh.va4.led_level-1 = Low
+option.zhimi.airfresh.va4.led_level-2 = Idle
+option.zhimi.airfresh.va4.mode-auto = Auto
+option.zhimi.airfresh.va4.mode-interval = Interval
+option.zhimi.airfresh.va4.mode-low = 1
+option.zhimi.airfresh.va4.mode-middle = 2
+option.zhimi.airfresh.va4.mode-silent = Night
+option.zhimi.airfresh.va4.mode-strong = 3
+option.zhimi.airpurifier.m1.favoritelevel-0 = Favorite 0
+option.zhimi.airpurifier.m1.favoritelevel-1 = Favorite 1
+option.zhimi.airpurifier.m1.favoritelevel-10 = Favorite 10
+option.zhimi.airpurifier.m1.favoritelevel-11 = Favorite 11
+option.zhimi.airpurifier.m1.favoritelevel-12 = Favorite 13
+option.zhimi.airpurifier.m1.favoritelevel-13 = Favorite 13
+option.zhimi.airpurifier.m1.favoritelevel-14 = Favorite 14
+option.zhimi.airpurifier.m1.favoritelevel-15 = Favorite 15
+option.zhimi.airpurifier.m1.favoritelevel-2 = Favorite 2
+option.zhimi.airpurifier.m1.favoritelevel-3 = Favorite 3
+option.zhimi.airpurifier.m1.favoritelevel-4 = Favorite 4
+option.zhimi.airpurifier.m1.favoritelevel-5 = Favorite 5
+option.zhimi.airpurifier.m1.favoritelevel-6 = Favorite 6
+option.zhimi.airpurifier.m1.favoritelevel-7 = Favorite 7
+option.zhimi.airpurifier.m1.favoritelevel-8 = Favorite 8
+option.zhimi.airpurifier.m1.favoritelevel-9 = Favorite 9
+option.zhimi.airpurifier.m1.mode-auto = Auto
+option.zhimi.airpurifier.m1.mode-favorite = Favorite
+option.zhimi.airpurifier.m1.mode-high = High
+option.zhimi.airpurifier.m1.mode-idle = Idle
+option.zhimi.airpurifier.m1.mode-medium = Medium
+option.zhimi.airpurifier.m1.mode-silent = Silent
+option.zhimi.airpurifier.m1.mode-strong = Strong
+option.zhimi.airpurifier.ma4-miot.aqi-runstate-0 = continue
+option.zhimi.airpurifier.ma4-miot.aqi-runstate-1 = hold
+option.zhimi.airpurifier.ma4-miot.aqi-runstate-2 = sleep
+option.zhimi.airpurifier.ma4-miot.aqi-state-0 = AQI_GOOD_L
+option.zhimi.airpurifier.ma4-miot.aqi-state-1 = AQI_GOOD_H
+option.zhimi.airpurifier.ma4-miot.aqi-state-2 = AQI_MID_L
+option.zhimi.airpurifier.ma4-miot.aqi-state-3 = AQI_MID_H
+option.zhimi.airpurifier.ma4-miot.aqi-state-4 = AQI_BAD_L
+option.zhimi.airpurifier.ma4-miot.aqi-state-5 = AQI_BAD_H
+option.zhimi.airpurifier.ma4-miot.brightness-0 = brightest
+option.zhimi.airpurifier.ma4-miot.brightness-1 = glimmer
+option.zhimi.airpurifier.ma4-miot.brightness-2 = led_closed
+option.zhimi.airpurifier.ma4-miot.fan-level-1 = Level1
+option.zhimi.airpurifier.ma4-miot.fan-level-2 = Level2
+option.zhimi.airpurifier.ma4-miot.fan-level-3 = Level3
+option.zhimi.airpurifier.ma4-miot.fault-0 = No faults
+option.zhimi.airpurifier.ma4-miot.fault-1 = m1_run
+option.zhimi.airpurifier.ma4-miot.fault-2 = m1_stuck
+option.zhimi.airpurifier.ma4-miot.fault-3 = no_sensor
+option.zhimi.airpurifier.ma4-miot.fault-4 = error_hum
+option.zhimi.airpurifier.ma4-miot.fault-5 = error_temp
+option.zhimi.airpurifier.ma4-miot.manual-level-1 = Level1
+option.zhimi.airpurifier.ma4-miot.manual-level-2 = Level2
+option.zhimi.airpurifier.ma4-miot.manual-level-3 = Level3
+option.zhimi.airpurifier.ma4-miot.mode-0 = Auto
+option.zhimi.airpurifier.ma4-miot.mode-1 = Sleep
+option.zhimi.airpurifier.ma4-miot.mode-2 = Favorite
+option.zhimi.airpurifier.ma4-miot.mode-3 = None
+option.zhimi.airpurifier.ma4-miot.reboot-cause-0 = REASON_HW_BOOT
+option.zhimi.airpurifier.ma4-miot.reboot-cause-1 = REASON_USER_REBOOT
+option.zhimi.airpurifier.ma4-miot.reboot-cause-2 = REASON_UPDATE
+option.zhimi.airpurifier.ma4-miot.reboot-cause-3 = REASON_WDT
+option.zhimi.airpurifier.mb3-miot.aqi-runstate-0 = continuous sampling
+option.zhimi.airpurifier.mb3-miot.aqi-runstate-1 = preparing sampling
+option.zhimi.airpurifier.mb3-miot.aqi-runstate-2 = stop sampling
+option.zhimi.airpurifier.mb3-miot.aqi-state-0 = best
+option.zhimi.airpurifier.mb3-miot.aqi-state-1 = good
+option.zhimi.airpurifier.mb3-miot.aqi-state-2 = normal
+option.zhimi.airpurifier.mb3-miot.aqi-state-3 = bad
+option.zhimi.airpurifier.mb3-miot.aqi-state-4 = worse
+option.zhimi.airpurifier.mb3-miot.aqi-state-5 = unhealthy
+option.zhimi.airpurifier.mb3-miot.brightness-0 = Brightest
+option.zhimi.airpurifier.mb3-miot.brightness-1 = Glimmer
+option.zhimi.airpurifier.mb3-miot.brightness-2 = Led Closed
+option.zhimi.airpurifier.mb3-miot.country-code-44 = 分销英文
+option.zhimi.airpurifier.mb3-miot.country-code-82 = 韩国
+option.zhimi.airpurifier.mb3-miot.country-code-852 = 中国香港
+option.zhimi.airpurifier.mb3-miot.country-code-886 = 中国台湾
+option.zhimi.airpurifier.mb3-miot.country-code-91 = 印度
+option.zhimi.airpurifier.mb3-miot.fan-level-1 = Level1
+option.zhimi.airpurifier.mb3-miot.fan-level-2 = Level2
+option.zhimi.airpurifier.mb3-miot.fan-level-3 = Level3
+option.zhimi.airpurifier.mb3-miot.fault-0 = No faults
+option.zhimi.airpurifier.mb3-miot.fault-1 = m1_run
+option.zhimi.airpurifier.mb3-miot.fault-2 = m1_stuck
+option.zhimi.airpurifier.mb3-miot.fault-3 = no_sensor
+option.zhimi.airpurifier.mb3-miot.fault-4 = error_hum
+option.zhimi.airpurifier.mb3-miot.fault-5 = error_temp
+option.zhimi.airpurifier.mb3-miot.manual-level-1 = Level1
+option.zhimi.airpurifier.mb3-miot.manual-level-2 = Level2
+option.zhimi.airpurifier.mb3-miot.manual-level-3 = Level3
+option.zhimi.airpurifier.mb3-miot.mode-0 = Auto
+option.zhimi.airpurifier.mb3-miot.mode-1 = Sleep
+option.zhimi.airpurifier.mb3-miot.mode-2 = Favorite
+option.zhimi.airpurifier.mb3-miot.mode-3 = None
+option.zhimi.airpurifier.mb3-miot.reboot-cause-0 = hardware reboot
+option.zhimi.airpurifier.mb3-miot.reboot-cause-1 = software reboot
+option.zhimi.airpurifier.mb3-miot.reboot-cause-2 = update reboot
+option.zhimi.airpurifier.mb3-miot.reboot-cause-3 = dog reboot
+option.zhimi.airpurifier.mb4-miot.mode-0 = Auto
+option.zhimi.airpurifier.mb4-miot.mode-1 = Sleep
+option.zhimi.airpurifier.mb4-miot.mode-2 = Favorite
+option.zhimi.airpurifier.vb2-miot.actions-button-toggle = Toggle
+option.zhimi.airpurifier.vb2-miot.actions-button-toggle-mode = Toggle Mode
+option.zhimi.airpurifier.vb2-miot.aqi_runstate-0 = continue
+option.zhimi.airpurifier.vb2-miot.aqi_runstate-1 = hold
+option.zhimi.airpurifier.vb2-miot.aqi_runstate-2 = sleep
+option.zhimi.airpurifier.vb2-miot.aqi_state-0 = AQI_GOOD_L
+option.zhimi.airpurifier.vb2-miot.aqi_state-1 = AQI_GOOD_H
+option.zhimi.airpurifier.vb2-miot.aqi_state-2 = AQI_MID_L
+option.zhimi.airpurifier.vb2-miot.aqi_state-3 = AQI_MID_H
+option.zhimi.airpurifier.vb2-miot.aqi_state-4 = AQI_BAD_L
+option.zhimi.airpurifier.vb2-miot.aqi_state-5 = AQI_BAD_H
+option.zhimi.airpurifier.vb2-miot.brightness-0 = brightest
+option.zhimi.airpurifier.vb2-miot.brightness-1 = glimmer
+option.zhimi.airpurifier.vb2-miot.brightness-2 = not bright
+option.zhimi.airpurifier.vb2-miot.country_code-44 = UK
+option.zhimi.airpurifier.vb2-miot.country_code-82 = Korea
+option.zhimi.airpurifier.vb2-miot.country_code-852 = Hong Kong
+option.zhimi.airpurifier.vb2-miot.country_code-886 = Taiwan
+option.zhimi.airpurifier.vb2-miot.country_code-91 = India
+option.zhimi.airpurifier.vb2-miot.fan_level-0 = Sleep
+option.zhimi.airpurifier.vb2-miot.fan_level-1 = Level1
+option.zhimi.airpurifier.vb2-miot.fan_level-2 = Level2
+option.zhimi.airpurifier.vb2-miot.fan_level-3 = Level3
+option.zhimi.airpurifier.vb2-miot.fault-0 = No faults
+option.zhimi.airpurifier.vb2-miot.fault-1 = m1_run
+option.zhimi.airpurifier.vb2-miot.fault-2 = m1_stuck
+option.zhimi.airpurifier.vb2-miot.fault-3 = no_sensor
+option.zhimi.airpurifier.vb2-miot.fault-4 = error_hum
+option.zhimi.airpurifier.vb2-miot.fault-5 = error_temp
+option.zhimi.airpurifier.vb2-miot.fault-6 = timer_error1
+option.zhimi.airpurifier.vb2-miot.fault-7 = timer_error2
+option.zhimi.airpurifier.vb2-miot.manual_level-1 = level1
+option.zhimi.airpurifier.vb2-miot.manual_level-2 = level2
+option.zhimi.airpurifier.vb2-miot.manual_level-3 = level3
+option.zhimi.airpurifier.vb2-miot.mode-0 = Auto
+option.zhimi.airpurifier.vb2-miot.mode-1 = Night
+option.zhimi.airpurifier.vb2-miot.mode-2 = Favourite
+option.zhimi.airpurifier.vb2-miot.mode-3 = Manual
+option.zhimi.airpurifier.vb2-miot.reboot_cause-0 = REASON_HW_BOOT
+option.zhimi.airpurifier.vb2-miot.reboot_cause-1 = REASON_USER_REBOOT
+option.zhimi.airpurifier.vb2-miot.reboot_cause-2 = REASON_UPDATE
+option.zhimi.airpurifier.vb2-miot.reboot_cause-3 = REASON_WDT
+option.zhimi.airpurifier.vb2-miot.sensor_state-0 = waiting
+option.zhimi.airpurifier.vb2-miot.sensor_state-1 = ready
+option.zhimi.airpurifier.za1-miot.brightness-0 = Bright
+option.zhimi.airpurifier.za1-miot.brightness-1 = Light
+option.zhimi.airpurifier.za1-miot.brightness-2 = Off
+option.zhimi.airpurifier.za1-miot.country_code-1 = America
+option.zhimi.airpurifier.za1-miot.country_code-10 = Taiwan
+option.zhimi.airpurifier.za1-miot.country_code-2 = Canada
+option.zhimi.airpurifier.za1-miot.country_code-3 = Singapore
+option.zhimi.airpurifier.za1-miot.country_code-4 = Europe
+option.zhimi.airpurifier.za1-miot.country_code-5 = Australian
+option.zhimi.airpurifier.za1-miot.country_code-6 = Korea
+option.zhimi.airpurifier.za1-miot.country_code-7 = China
+option.zhimi.airpurifier.za1-miot.country_code-8 = France
+option.zhimi.airpurifier.za1-miot.country_code-9 = Japanese
+option.zhimi.airpurifier.za1-miot.fault-0 = No faults
+option.zhimi.airpurifier.za1-miot.fault-1 = m1_run
+option.zhimi.airpurifier.za1-miot.fault-2 = m1_stuck
+option.zhimi.airpurifier.za1-miot.fault-3 = no_sensor
+option.zhimi.airpurifier.za1-miot.fault-4 = error_hum
+option.zhimi.airpurifier.za1-miot.fault-5 = error_temp
+option.zhimi.airpurifier.za1-miot.fault-6 = timer_error1
+option.zhimi.airpurifier.za1-miot.fault-7 = timer_error2
+option.zhimi.airpurifier.za1-miot.mode-0 = Auto
+option.zhimi.airpurifier.za1-miot.mode-1 = Sleep
+option.zhimi.airpurifier.za1-miot.mode-2 = Favorite
+option.zhimi.airpurifier.za1-miot.reboot_cause-0 = hardware
+option.zhimi.airpurifier.za1-miot.reboot_cause-1 = human
+option.zhimi.airpurifier.za1-miot.reboot_cause-2 = upgrade
+option.zhimi.airpurifier.za1-miot.reboot_cause-3 = watchdog
+option.zhimi.airpurifier.za1-miot.sensor_state-0 = waiting
+option.zhimi.airpurifier.za1-miot.sensor_state-1 = ready
+option.zhimi.fan.sa1.angle-120 = 120
+option.zhimi.fan.sa1.angle-30 = 30
+option.zhimi.fan.sa1.angle-60 = 60
+option.zhimi.fan.sa1.angle-90 = 90
+option.zhimi.fan.sa1.led_b-0 = Bright
+option.zhimi.fan.sa1.led_b-1 = Dimmed
+option.zhimi.fan.sa1.led_b-2 = Off
+option.zhimi.fan.sa1.move- = None
+option.zhimi.fan.sa1.move-left = Left
+option.zhimi.fan.sa1.move-right = Right
+option.zhimi.fan.v3.angle-120 = 120
+option.zhimi.fan.v3.angle-30 = 30
+option.zhimi.fan.v3.angle-60 = 60
+option.zhimi.fan.v3.angle-90 = 90
+option.zhimi.fan.v3.led_b-0 = Bright
+option.zhimi.fan.v3.led_b-1 = Dimmed
+option.zhimi.fan.v3.led_b-2 = Off
+option.zhimi.fan.v3.move- = None
+option.zhimi.fan.v3.move-left = Left
+option.zhimi.fan.v3.move-right = Right
+option.zhimi.fan.za5-miot.button_press-0 = No Button Pressed
+option.zhimi.fan.za5-miot.button_press-1 = power
+option.zhimi.fan.za5-miot.button_press-2 = swing
+option.zhimi.fan.za5-miot.fan_level-1 = Level 1
+option.zhimi.fan.za5-miot.fan_level-2 = Level 2
+option.zhimi.fan.za5-miot.fan_level-3 = Level 3
+option.zhimi.fan.za5-miot.fan_level-4 = Level 4
+option.zhimi.fan.za5-miot.mode-0 = Natural Wind
+option.zhimi.fan.za5-miot.mode-1 = Straight Wind
+option.zhimi.heater.ma2-miot.brightness-0 = Bright
+option.zhimi.heater.ma2-miot.brightness-1 = Dark
+option.zhimi.heater.ma2-miot.brightness-2 = Extinguished
+option.zhimi.heater.ma2-miot.fault-0 = No Error
+option.zhimi.heater.ma2-miot.fault-1 = NTC Connect Error
+option.zhimi.heater.ma2-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.ma2-miot.fault-3 = EEPROM Error
+option.zhimi.heater.ma2-miot.fault-4 = Multi Errors
+option.zhimi.heater.ma3-miot.actions-private-service-toggle-switch = Toggle Private Service
+option.zhimi.heater.ma3-miot.brightness-0 = Bright
+option.zhimi.heater.ma3-miot.brightness-1 = Dark
+option.zhimi.heater.ma3-miot.brightness-2 = Extinguished
+option.zhimi.heater.ma3-miot.fault-0 = No Error
+option.zhimi.heater.ma3-miot.fault-1 = NTC Connect Error
+option.zhimi.heater.ma3-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.ma3-miot.fault-3 = EEPROM Error
+option.zhimi.heater.ma3-miot.fault-4 = Multi Errors
+option.zhimi.heater.ma3-miot.mode-0 = Auto
+option.zhimi.heater.ma3-miot.mode-1 = LL Mode
+option.zhimi.heater.ma3-miot.mode-2 = HH Mode
+option.zhimi.heater.mc2-miot.brightness-0 = Bright
+option.zhimi.heater.mc2-miot.brightness-1 = Dark
+option.zhimi.heater.mc2-miot.brightness-2 = Extinguished
+option.zhimi.heater.mc2-miot.country_code-0 = Unknown
+option.zhimi.heater.mc2-miot.country_code-1 = US
+option.zhimi.heater.mc2-miot.country_code-33 = FR
+option.zhimi.heater.mc2-miot.country_code-44 = EU
+option.zhimi.heater.mc2-miot.country_code-7 = RU
+option.zhimi.heater.mc2-miot.country_code-81 = JP
+option.zhimi.heater.mc2-miot.country_code-82 = KR
+option.zhimi.heater.mc2-miot.country_code-852 = HK
+option.zhimi.heater.mc2-miot.country_code-86 = CN
+option.zhimi.heater.mc2-miot.country_code-886 = TW
+option.zhimi.heater.mc2-miot.fault-0 = No Error
+option.zhimi.heater.mc2-miot.fault-1 = NTC Connect Error
+option.zhimi.heater.mc2-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.mc2-miot.fault-3 = EEPROM Error
+option.zhimi.heater.mc2-miot.fault-4 = Multi Errors
+option.zhimi.heater.na1-miot.brightness-0 = Bright
+option.zhimi.heater.na1-miot.brightness-1 = Dark
+option.zhimi.heater.na1-miot.brightness-2 = Extinguished
+option.zhimi.heater.na1-miot.fault-0 = No Error
+option.zhimi.heater.na1-miot.fault-1 = NTC Connect Error
+option.zhimi.heater.na1-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.na1-miot.fault-3 = EEPROM Error
+option.zhimi.heater.na1-miot.fault-4 = Multi Errors
+option.zhimi.heater.na1-miot.heat_level-1 = High
+option.zhimi.heater.na1-miot.heat_level-2 = Low
+option.zhimi.heater.na1-miot.mode-0 = Fan not swing
+option.zhimi.heater.na1-miot.mode-1 = Fan swing
+option.zhimi.heater.nb1-miot.brightness-0 = Bright
+option.zhimi.heater.nb1-miot.brightness-1 = Dark
+option.zhimi.heater.nb1-miot.brightness-2 = Extinguished
+option.zhimi.heater.nb1-miot.country_code-0 = Unknown
+option.zhimi.heater.nb1-miot.country_code-1 = US
+option.zhimi.heater.nb1-miot.country_code-33 = FR
+option.zhimi.heater.nb1-miot.country_code-44 = EU
+option.zhimi.heater.nb1-miot.country_code-7 = RU
+option.zhimi.heater.nb1-miot.country_code-81 = JP
+option.zhimi.heater.nb1-miot.country_code-82 = KR
+option.zhimi.heater.nb1-miot.country_code-852 = HK
+option.zhimi.heater.nb1-miot.country_code-86 = CN
+option.zhimi.heater.nb1-miot.country_code-886 = TW
+option.zhimi.heater.nb1-miot.fault-0 = No Error
+option.zhimi.heater.nb1-miot.fault-1 = NTC Connect Error
+option.zhimi.heater.nb1-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.nb1-miot.fault-3 = EEPROM Error
+option.zhimi.heater.nb1-miot.fault-4 = Multi Errors
+option.zhimi.heater.nb1-miot.heat_level-1 = High
+option.zhimi.heater.nb1-miot.heat_level-2 = Low
+option.zhimi.heater.nb1-miot.mode-0 = Fan not swing
+option.zhimi.heater.nb1-miot.mode-1 = Fan swing
+option.zhimi.heater.za2-miot.brightness-0 = Bright
+option.zhimi.heater.za2-miot.brightness-1 = Dark
+option.zhimi.heater.za2-miot.brightness-2 = Extinguished
+option.zhimi.heater.za2-miot.fault-0 = No Error
+option.zhimi.heater.za2-miot.fault-1 = NTC     Connect Error
+option.zhimi.heater.za2-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.za2-miot.fault-3 = EEPROM Error
+option.zhimi.heater.za2-miot.fault-4 = Multi Errors
+option.zhimi.heater.zb1-miot.brightness-0 = Bright
+option.zhimi.heater.zb1-miot.brightness-1 = Dark
+option.zhimi.heater.zb1-miot.brightness-2 = Extinguished
+option.zhimi.heater.zb1-miot.country-code-0 = Unknown
+option.zhimi.heater.zb1-miot.country-code-1 = US
+option.zhimi.heater.zb1-miot.country-code-33 = FR
+option.zhimi.heater.zb1-miot.country-code-44 = EU
+option.zhimi.heater.zb1-miot.country-code-7 = RU
+option.zhimi.heater.zb1-miot.country-code-81 = JP
+option.zhimi.heater.zb1-miot.country-code-82 = KR
+option.zhimi.heater.zb1-miot.country-code-852 = HK
+option.zhimi.heater.zb1-miot.country-code-86 = CN
+option.zhimi.heater.zb1-miot.country-code-886 = TW
+option.zhimi.heater.zb1-miot.fault-0 = No Error
+option.zhimi.heater.zb1-miot.fault-1 = NTC     Connect Error
+option.zhimi.heater.zb1-miot.fault-2 = High Temperature Alarm
+option.zhimi.heater.zb1-miot.fault-3 = EEPROM Error
+option.zhimi.heater.zb1-miot.fault-4 = Multi Errors
+option.zhimi.humidifier.ca4.ButtonPressed-0 = none
+option.zhimi.humidifier.ca4.ButtonPressed-1 = led
+option.zhimi.humidifier.ca4.ButtonPressed-2 = power
+option.zhimi.humidifier.ca4.bright-0 = Dark
+option.zhimi.humidifier.ca4.bright-1 = Dimmed
+option.zhimi.humidifier.ca4.bright-2 = Brightest
+option.zhimi.humidifier.ca4.mode-0 = Auto
+option.zhimi.humidifier.ca4.mode-1 = Silent
+option.zhimi.humidifier.ca4.mode-2 = Normal
+option.zhimi.humidifier.ca4.mode-3 = Maximum
+
index 353fc1078883e55f875ae006ba5071813feba619..440c142ad12bb2131bcf40ea9e85d4fb26f41e7a 100644 (file)
  */
 package org.openhab.binding.miio.internal;
 
+import static org.openhab.binding.miio.internal.MiIoBindingConstants.*;
+
 import java.io.File;
+import java.io.FileFilter;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
@@ -24,6 +27,9 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -59,6 +65,7 @@ public class ReadmeHelper {
     private static final String BASEFILE = "./README.base.md";
     private static final String OUTPUTFILE = "./README.md";
     private static final String DEVICE_NAMES_FILE = "./src/main/resources/misc/device_names.json";
+    private static final String I18N_CHANNEL_FILE = "./src/main/resources/OH-INF/i18n/basic.properties";
     private static final boolean UPDATE_OPTION_MAPPING_README_COMMENTS = true;
 
     @Disabled
@@ -71,7 +78,6 @@ public class ReadmeHelper {
         StringWriter channelList = rm.channelList();
         LOGGER.info("## Creating Item Files for miio:basic devices");
         StringWriter itemFileExamples = rm.itemFileExamples();
-        LOGGER.info("## Done");
         try {
             String baseDoc = new String(Files.readAllBytes(Paths.get(BASEFILE)), StandardCharsets.UTF_8);
             String newDoc = baseDoc.replaceAll("!!!devices", deviceList.toString())
@@ -79,8 +85,34 @@ public class ReadmeHelper {
                     .replaceAll("!!!itemFileExamples", itemFileExamples.toString());
             Files.write(Paths.get(OUTPUTFILE), newDoc.getBytes(StandardCharsets.UTF_8));
         } catch (IOException e) {
-            LOGGER.warn("IO exception", e);
+            LOGGER.warn("IO exception writing readme", e);
+        }
+
+        LOGGER.info("## Creating i18n entries for devices and miio:basic channels");
+        StringBuilder sb = new StringBuilder();
+        sb.append("# Automatic created list by miio readme maker for miio devices & database channels\n\n");
+        sb.append("# Devices\n\n");
+        for (MiIoDevices d : Arrays.asList(MiIoDevices.values())) {
+            sb.append(I18N_THING_PREFIX);
+            sb.append(d.getModel());
+            sb.append(" = ");
+            sb.append(d.getDescription());
+            sb.append("\n");
+        }
+        sb.append("\n# Channels\n\n");
+        for (Entry<String, String> e : sortByKeys(rm.createI18nEntries()).entrySet()) {
+            sb.append(e.getKey());
+            sb.append(" = ");
+            sb.append(e.getValue());
+            sb.append("\n");
+        }
+        sb.append("\n");
+        try {
+            Files.write(Paths.get(I18N_CHANNEL_FILE), sb.toString().getBytes(StandardCharsets.UTF_8));
+        } catch (IOException e) {
+            LOGGER.warn("IO exception creating i18n file", e);
         }
+        LOGGER.info("## Done");
     }
 
     private StringWriter deviceList() {
@@ -163,25 +195,21 @@ public class ReadmeHelper {
     }
 
     public static String readmeOptionMapping(MiIoBasicChannel channel, String model) {
-        StateDescriptionDTO stateDescription = channel.getStateDescription();
-        if (stateDescription != null && stateDescription.getOptions() != null) {
-            final List<OptionsValueListDTO> options = stateDescription.getOptions();
-            if (options != null && !options.isEmpty()) {
-                StringBuilder mapping = new StringBuilder();
-                mapping.append("Value mapping `[");
-                options.forEach((option) -> {
-                    mapping.append(String.format("\"%s\"=\"%s\",", String.valueOf(option.value),
-                            String.valueOf(option.label)));
-                });
-                mapping.deleteCharAt(mapping.length() - 1);
-                mapping.append("]`");
-                String newComment = mapping.toString();
-                if (!channel.getReadmeComment().contentEquals(newComment)) {
-                    LOGGER.info("Channel {} - {} readme comment updated to '{}'", model, channel.getChannel(),
-                            newComment);
-                }
-                return newComment;
+        final List<OptionsValueListDTO> options = getChannelOptions(channel);
+        if (!options.isEmpty()) {
+            StringBuilder mapping = new StringBuilder();
+            mapping.append("Value mapping `[");
+            options.forEach((option) -> {
+                mapping.append(
+                        String.format("\"%s\"=\"%s\",", String.valueOf(option.value), String.valueOf(option.label)));
+            });
+            mapping.deleteCharAt(mapping.length() - 1);
+            mapping.append("]`");
+            String newComment = mapping.toString();
+            if (!channel.getReadmeComment().contentEquals(newComment)) {
+                LOGGER.info("Channel {} - {} readme comment updated to '{}'", model, channel.getChannel(), newComment);
             }
+            return newComment;
         }
         return channel.getReadmeComment();
     }
@@ -264,25 +292,80 @@ public class ReadmeHelper {
         List<MiIoBasicDevice> arrayList = new ArrayList<>();
         String path = "./src/main/resources/database/";
         File dir = new File(path);
-        File[] filesList = dir.listFiles();
+        FileFilter fileFilter = file -> !file.isDirectory() && file.getName().toLowerCase().endsWith(".json");
+        File[] filesList = dir.listFiles(fileFilter);
+        if (filesList == null) {
+            return arrayList;
+        }
         for (File file : filesList) {
-            if (file.isFile()) {
-                try {
-                    JsonObject deviceMapping = convertFileToJSON(path + file.getName());
-                    Gson gson = new GsonBuilder().serializeNulls().create();
-                    @Nullable
-                    MiIoBasicDevice devdb = gson.fromJson(deviceMapping, MiIoBasicDevice.class);
-                    if (devdb != null) {
-                        arrayList.add(devdb);
-                    }
-                } catch (Exception e) {
-                    LOGGER.info("Error while searching  in database '{}': {}", file.getName(), e.getMessage());
+            try {
+                JsonObject deviceMapping = convertFileToJSON(path + file.getName());
+                Gson gson = new GsonBuilder().serializeNulls().create();
+                @Nullable
+                MiIoBasicDevice devdb = gson.fromJson(deviceMapping, MiIoBasicDevice.class);
+                if (devdb != null) {
+                    arrayList.add(devdb);
                 }
+            } catch (Exception e) {
+                LOGGER.info("Error while searching  in database '{}': {}", file.getName(), e.getMessage());
             }
         }
         return arrayList;
     }
 
+    public static List<OptionsValueListDTO> getChannelOptions(MiIoBasicChannel channel) {
+        StateDescriptionDTO state = channel.getStateDescription();
+        if (state != null) {
+            List<OptionsValueListDTO> options = state.getOptions();
+            if (options != null) {
+                return options;
+            }
+        }
+        return List.of();
+    }
+
+    private Map<String, String> createI18nEntries() {
+        Map<String, String> i18nEntries = new HashMap<>();
+        String path = "./src/main/resources/database/";
+        File dir = new File(path);
+        FileFilter fileFilter = file -> !file.isDirectory() && file.getName().toLowerCase().endsWith(".json");
+        File[] filesList = dir.listFiles(fileFilter);
+        if (filesList == null) {
+            return i18nEntries;
+        }
+        for (File file : filesList) {
+            try {
+                String key = file.getName().toLowerCase().split("json")[0];
+                JsonObject deviceMapping = convertFileToJSON(path + file.getName());
+                Gson gson = new GsonBuilder().serializeNulls().create();
+                @Nullable
+                MiIoBasicDevice devdb = gson.fromJson(deviceMapping, MiIoBasicDevice.class);
+                if (devdb == null) {
+                    continue;
+                }
+                for (MiIoBasicChannel channel : devdb.getDevice().getChannels()) {
+                    i18nEntries.put(I18N_CHANNEL_PREFIX + key + channel.getChannel(), channel.getFriendlyName());
+                    List<OptionsValueListDTO> options = getChannelOptions(channel);
+                    for (OptionsValueListDTO channelOption : options) {
+                        String optionValue = channelOption.value;
+                        String optionLabel = channelOption.label;
+                        if (optionValue != null && optionLabel != null) {
+                            i18nEntries.put(I18N_OPTION_PREFIX + key + channel.getChannel() + "-" + optionValue,
+                                    optionLabel);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                LOGGER.info("Error while searching  in database '{}': {}", file.getName(), e.getMessage());
+            }
+        }
+        return i18nEntries;
+    }
+
+    public static <K extends Comparable, V> Map<K, V> sortByKeys(Map<K, V> map) {
+        return new TreeMap<>(map);
+    }
+
     private static String minLengthString(String string, int length) {
         return String.format("%-" + length + "s", string);
     }
@@ -290,7 +373,6 @@ public class ReadmeHelper {
     JsonObject convertFileToJSON(String fileName) {
         // Read from File to String
         JsonObject jsonObject = new JsonObject();
-
         try {
             JsonElement jsonElement = JsonParser.parseReader(new FileReader(fileName));
             jsonObject = jsonElement.getAsJsonObject();