diff --git a/app/src/main/java/net/vonforst/evmap/api/availability/NewMotionAvailabilityDetector.kt b/app/src/main/java/net/vonforst/evmap/api/availability/NewMotionAvailabilityDetector.kt index fb738664..52358f52 100644 --- a/app/src/main/java/net/vonforst/evmap/api/availability/NewMotionAvailabilityDetector.kt +++ b/app/src/main/java/net/vonforst/evmap/api/availability/NewMotionAvailabilityDetector.kt @@ -130,13 +130,14 @@ class NewMotionAvailabilityDetector(client: OkHttpClient, baseUrl: String? = nul } val connectorStatus = details.flatMap { it.evses }.flatMap { evse -> evse.connectors.map { connector -> - connector to evse.status + Triple(connector, evse.status, evse.evseId) } } val nmConnectors = mutableMapOf>() val nmStatus = mutableMapOf() - connectorStatus.forEach { (connector, statusStr) -> + val nmEvseId = mutableMapOf() + connectorStatus.forEach { (connector, statusStr, evseId) -> val id = connector.uid val power = connector.electricalProperties.getPower() val type = when (connector.connectorType.toLowerCase(Locale.ROOT)) { @@ -161,15 +162,20 @@ class NewMotionAvailabilityDetector(client: OkHttpClient, baseUrl: String? = nul } nmConnectors.put(id, power to type) nmStatus.put(id, status) + evseId?.let { nmEvseId[id] = it } } val match = matchChargepoints(nmConnectors, location.chargepointsMerged) val chargepointStatus = match.mapValues { entry -> entry.value.map { nmStatus[it]!! } } + val evseIds = if (nmEvseId.size == nmStatus.size) match.mapValues { entry -> + entry.value.map { nmEvseId[it]!! } + } else null return ChargeLocationStatus( chargepointStatus, - "NewMotion" + "NewMotion", + evseIds ) }