Skip to content

Commit 2fbb133

Browse files
weymannjlaur
authored andcommitted
bugfix discovery and thing properties (openhab#18003)
Signed-off-by: Bernd Weymann <[email protected]>
1 parent a11fe51 commit 2fbb133

File tree

1 file changed

+11
-5
lines changed
  • bundles/org.openhab.binding.mercedesme/src/main/java/org/openhab/binding/mercedesme/internal/handler

1 file changed

+11
-5
lines changed

bundles/org.openhab.binding.mercedesme/src/main/java/org/openhab/binding/mercedesme/internal/handler/AccountHandler.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ public ClientUpgradeRequest getClientUpgradeRequest() {
271271
public void registerVin(String vin, VehicleHandler handler) {
272272
discoveryService.vehicleRemove(this, vin, handler.getThing().getThingTypeUID().getId());
273273
activeVehicleHandlerMap.put(vin, handler);
274+
discovery(vin); // update properties for added vehicle
274275
VEPUpdate updateForVin = vepUpdateMap.get(vin);
275276
if (updateForVin != null) {
276277
handler.enqueueUpdate(updateForVin);
@@ -340,7 +341,6 @@ private void handleMessage(byte[] array) {
340341
PushMessage pm = VehicleEvents.PushMessage.parseFrom(array);
341342
if (pm.hasVepUpdates()) {
342343
boolean distributed = distributeVepUpdates(pm.getVepUpdates().getUpdatesMap());
343-
logger.trace("Distributed VEPUpdate {}", distributed);
344344
if (distributed) {
345345
AcknowledgeVEPUpdatesByVIN ack = AcknowledgeVEPUpdatesByVIN.newBuilder()
346346
.setSequenceNumber(pm.getVepUpdates().getSequenceNumber()).build();
@@ -349,7 +349,7 @@ private void handleMessage(byte[] array) {
349349
}
350350
} else if (pm.hasAssignedVehicles()) {
351351
for (int i = 0; i < pm.getAssignedVehicles().getVinsCount(); i++) {
352-
String vin = pm.getAssignedVehicles().getVins(0);
352+
String vin = pm.getAssignedVehicles().getVins(i);
353353
discovery(vin);
354354
}
355355
AcknowledgeAssignedVehicles ack = AcknowledgeAssignedVehicles.newBuilder().build();
@@ -394,6 +394,7 @@ public boolean distributeVepUpdates(Map<String, VEPUpdate> map) {
394394
}
395395
});
396396
notFoundList.forEach(vin -> {
397+
discovery(vin); // add vehicle to discovery
397398
logger.trace("No VehicleHandler available for VIN {}", vin);
398399
});
399400
return notFoundList.isEmpty();
@@ -410,13 +411,18 @@ public void commandStatusUpdate(Map<String, AppTwinCommandStatusUpdatesByPID> up
410411
});
411412
}
412413

414+
/**
415+
* Updates properties for existing handlers or delivers discovery result
416+
*
417+
* @param vin of discovered vehicle
418+
*/
413419
@SuppressWarnings("null")
414420
public void discovery(String vin) {
415421
if (activeVehicleHandlerMap.containsKey(vin)) {
416422
VehicleHandler vh = activeVehicleHandlerMap.get(vin);
417-
if (vh.getThing().getProperties().isEmpty()) {
418-
vh.getThing().setProperties(getStringCapabilities(vin));
419-
}
423+
Map<String, String> properties = getStringCapabilities(vin);
424+
properties.putAll(vh.getThing().getProperties());
425+
vh.getThing().setProperties(properties);
420426
} else {
421427
if (!capabilitiesMap.containsKey(vin)) {
422428
// only report new discovery if capabilities aren't discovered yet

0 commit comments

Comments
 (0)