|
110 | 110 | * {@link VehicleHandler} transform data into state updates and handling of vehicle commands
|
111 | 111 | *
|
112 | 112 | * @author Bernd Weymann - Initial contribution
|
| 113 | + * @author Bernd Weymann - Bugfix https://github.com/openhab/openhab-addons/issues/16932 |
113 | 114 | */
|
114 | 115 | @NonNullByDefault
|
115 | 116 | public class VehicleHandler extends BaseThingHandler {
|
@@ -552,24 +553,33 @@ private void configureSeats(ChannelUID channelUID, State command) {
|
552 | 553 | public void distributeCommandStatus(AppTwinCommandStatusUpdatesByPID cmdUpdates) {
|
553 | 554 | Map<Long, AppTwinCommandStatus> updates = cmdUpdates.getUpdatesByPidMap();
|
554 | 555 | updates.forEach((key, value) -> {
|
555 |
| - // Command name |
556 |
| - ChannelStateMap csmCommand = new ChannelStateMap(OH_CHANNEL_CMD_NAME, GROUP_COMMAND, |
557 |
| - new DecimalType(value.getType().getNumber())); |
558 |
| - updateChannel(csmCommand); |
559 |
| - // Command State |
560 |
| - ChannelStateMap csmState = new ChannelStateMap(OH_CHANNEL_CMD_STATE, GROUP_COMMAND, |
561 |
| - new DecimalType(value.getState().getNumber())); |
562 |
| - updateChannel(csmState); |
563 |
| - // Command Time |
564 |
| - DateTimeType dtt = Utils.getDateTimeType(value.getTimestampInMs()); |
565 |
| - UOMObserver observer = null; |
566 |
| - if (Locale.US.getCountry().equals(Utils.getCountry())) { |
567 |
| - observer = new UOMObserver(UOMObserver.TIME_US); |
568 |
| - } else { |
569 |
| - observer = new UOMObserver(UOMObserver.TIME_ROW); |
| 556 | + try { |
| 557 | + // getting type and state may throw Exception |
| 558 | + int commandType = value.getType().getNumber(); |
| 559 | + int commandState = value.getState().getNumber(); |
| 560 | + // Command name |
| 561 | + ChannelStateMap csmCommand = new ChannelStateMap(OH_CHANNEL_CMD_NAME, GROUP_COMMAND, |
| 562 | + new DecimalType(commandType)); |
| 563 | + updateChannel(csmCommand); |
| 564 | + // Command State |
| 565 | + ChannelStateMap csmState = new ChannelStateMap(OH_CHANNEL_CMD_STATE, GROUP_COMMAND, |
| 566 | + new DecimalType(commandState)); |
| 567 | + updateChannel(csmState); |
| 568 | + // Command Time |
| 569 | + DateTimeType dtt = Utils.getDateTimeType(value.getTimestampInMs()); |
| 570 | + UOMObserver observer = null; |
| 571 | + if (Locale.US.getCountry().equals(Utils.getCountry())) { |
| 572 | + observer = new UOMObserver(UOMObserver.TIME_US); |
| 573 | + } else { |
| 574 | + observer = new UOMObserver(UOMObserver.TIME_ROW); |
| 575 | + } |
| 576 | + ChannelStateMap csmUpdated = new ChannelStateMap(OH_CHANNEL_CMD_LAST_UPDATE, GROUP_COMMAND, dtt, |
| 577 | + observer); |
| 578 | + updateChannel(csmUpdated); |
| 579 | + } catch (IllegalArgumentException iae) { |
| 580 | + logger.trace("Cannot decode command {} {}", value.getAllFields().toString(), iae.getMessage()); |
| 581 | + // silent ignore update |
570 | 582 | }
|
571 |
| - ChannelStateMap csmUpdated = new ChannelStateMap(OH_CHANNEL_CMD_LAST_UPDATE, GROUP_COMMAND, dtt, observer); |
572 |
| - updateChannel(csmUpdated); |
573 | 583 | });
|
574 | 584 | }
|
575 | 585 |
|
|
0 commit comments