]> git.basschouten.com Git - openhab-addons.git/commitdiff
[resol] Fix handling of WeekTime fields on vbus (#13753)
authorRaphael Mack <ramack@raphael-mack.de>
Sat, 3 Dec 2022 13:59:26 +0000 (14:59 +0100)
committerGitHub <noreply@github.com>
Sat, 3 Dec 2022 13:59:26 +0000 (14:59 +0100)
* correct handling of WeekTime fields from and update vbus library, fixes #13447

Signed-off-by: Raphael Mack <ramack@raphael-mack.de>
bundles/org.openhab.binding.resol/pom.xml
bundles/org.openhab.binding.resol/src/main/java/org/openhab/binding/resol/handler/ResolThingHandler.java
bundles/org.openhab.binding.resol/src/main/resources/OH-INF/thing/thing-types.xml

index f8d70625e7d2bb370b92720321c66aae1011388f..dc0586e480b1e7f291323259aa84fc7b0ee56c27 100644 (file)
@@ -18,7 +18,7 @@
     <dependency>
       <groupId>de.resol</groupId>
       <artifactId>vbus</artifactId>
-      <version>0.7.0</version>
+      <version>0.10.0</version>
       <scope>compile</scope>
     </dependency>
   </dependencies>
index 095c0ac34d2245587d36d13304779415410d1e94..22c24311b6b74ae4fb33c43df91385df0e2e21a7 100644 (file)
@@ -67,7 +67,7 @@ public class ResolThingHandler extends ResolBaseThingHandler {
 
     private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
 
-    private static final SimpleDateFormat WEEK_FORMAT = new SimpleDateFormat("EHH:mm");
+    private static final SimpleDateFormat WEEK_FORMAT = new SimpleDateFormat("EEE,HH:mm");
 
     static {
         synchronized (DATE_FORMAT) {
@@ -158,13 +158,13 @@ public class ResolThingHandler extends ResolBaseThingHandler {
 
             Thing thing = getThing();
             switch (pfv.getPacketFieldSpec().getType()) {
-                case WeekTime:
                 case DateTime:
                     acceptedItemType = "DateTime";
                     break;
                 case Number:
                     acceptedItemType = ResolChannelTypeProvider.itemTypeForUnit(pfv.getPacketFieldSpec().getUnit());
                     break;
+                case WeekTime:
                 case Time:
                 default:
                     acceptedItemType = "String";
@@ -249,11 +249,12 @@ public class ResolThingHandler extends ResolBaseThingHandler {
                                     this.updateState(channelId, q);
                                 } else {
                                     try {
-                                        QuantityType<?> q = new QuantityType<>(str);
+                                        QuantityType<?> q = new QuantityType<>(str, Locale
+                                                .getDefault()); /* vbus library returns the value in default locale */
                                         this.updateState(channelId, q);
                                     } catch (IllegalArgumentException e) {
                                         logger.debug("unit of '{}' unknown in openHAB", str);
-                                        QuantityType<?> q = new QuantityType<>(dd.toString());
+                                        QuantityType<?> q = new QuantityType<>(dd, Units.ONE);
                                         this.updateState(channelId, q);
                                     }
                                 }
@@ -272,8 +273,7 @@ public class ResolThingHandler extends ResolBaseThingHandler {
                         break;
                     case WeekTime:
                         synchronized (WEEK_FORMAT) {
-                            DateTimeType d = new DateTimeType(WEEK_FORMAT.format(pfv.getRawValueDate()));
-                            this.updateState(channelId, d);
+                            this.updateState(channelId, new StringType(WEEK_FORMAT.format(pfv.getRawValueDate())));
                         }
                         break;
                     case DateTime:
@@ -287,13 +287,15 @@ public class ResolThingHandler extends ResolBaseThingHandler {
                         if (b != null) {
                             ResolBridgeHandler handler = (ResolBridgeHandler) b.getHandler();
                             String value;
+                            Locale loc;
                             if (handler != null) {
-                                value = pfv.formatTextValue(pfv.getPacketFieldSpec().getUnit(), handler.getLocale());
+                                loc = handler.getLocale();
                             } else {
-                                value = pfv.formatTextValue(pfv.getPacketFieldSpec().getUnit(), Locale.getDefault());
+                                loc = Locale.getDefault();
                             }
+                            value = pfv.formatTextValue(pfv.getPacketFieldSpec().getUnit(), loc);
                             try {
-                                QuantityType<?> q = new QuantityType<>(value);
+                                QuantityType<?> q = new QuantityType<>(value, loc);
                                 this.updateState(channelId, q);
                             } catch (IllegalArgumentException e) {
                                 this.updateState(channelId, new StringType(value));
index 1099e9c426971cd9932dfc3ac2f2c03d4e05e7dc..35a065bdbf358b754a82389930f17b7f63996eb6 100644 (file)
        </thing-type>
 
        <channel-type id="weektime">
-               <item-type>DateTime</item-type>
+               <item-type>String</item-type>
                <label>Time</label>
                <description>Time and day of week.</description>
                <category>Time</category>