From 2625acffda503f0587cecf06935d3e04bc339091 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 18 Sep 2022 17:06:29 +0200 Subject: [PATCH] Add EVSEID output to EnBwAvailabilityDetector --- .../api/availability/AvailabilityDetector.kt | 3 ++- .../api/availability/EnBwAvailabilityDetector.kt | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/api/availability/AvailabilityDetector.kt b/app/src/main/java/net/vonforst/evmap/api/availability/AvailabilityDetector.kt index df9b0b09..a817d81b 100644 --- a/app/src/main/java/net/vonforst/evmap/api/availability/AvailabilityDetector.kt +++ b/app/src/main/java/net/vonforst/evmap/api/availability/AvailabilityDetector.kt @@ -132,7 +132,8 @@ abstract class BaseAvailabilityDetector(private val client: OkHttpClient) : Avai data class ChargeLocationStatus( val status: Map>, - val source: String + val source: String, + val evseIds: Map>? = null ) { fun applyFilters(connectors: Set?, minPower: Int?): ChargeLocationStatus { val statusFiltered = status.filterKeys { diff --git a/app/src/main/java/net/vonforst/evmap/api/availability/EnBwAvailabilityDetector.kt b/app/src/main/java/net/vonforst/evmap/api/availability/EnBwAvailabilityDetector.kt index 2934793d..32a6c33d 100644 --- a/app/src/main/java/net/vonforst/evmap/api/availability/EnBwAvailabilityDetector.kt +++ b/app/src/main/java/net/vonforst/evmap/api/availability/EnBwAvailabilityDetector.kt @@ -152,13 +152,14 @@ class EnBwAvailabilityDetector(client: OkHttpClient, baseUrl: String? = null) : val connectorStatus = details.flatMap { it.chargePoints }.flatMap { cp -> cp.connectors.map { connector -> - connector to cp.status + Triple(connector, cp.status, cp.evseId) } } val enbwConnectors = mutableMapOf>() val enbwStatus = mutableMapOf() - connectorStatus.forEachIndexed { index, (connector, statusStr) -> + val enbwEvseId = mutableMapOf() + connectorStatus.forEachIndexed { index, (connector, statusStr, evseId) -> val id = index.toLong() val power = connector.maxPowerInKw ?: 0.0 val type = when (connector.plugTypeName) { @@ -179,17 +180,22 @@ class EnBwAvailabilityDetector(client: OkHttpClient, baseUrl: String? = null) : "UNSPECIFIED" -> ChargepointStatus.UNKNOWN else -> ChargepointStatus.UNKNOWN } - enbwConnectors.put(id, power to type) - enbwStatus.put(id, status) + enbwConnectors[id] = power to type + enbwStatus[id] = status + evseId?.let { enbwEvseId[id] = it } } val match = matchChargepoints(enbwConnectors, location.chargepointsMerged) val chargepointStatus = match.mapValues { entry -> entry.value.map { enbwStatus[it]!! } } + val evseIds = if (enbwEvseId.size == enbwStatus.size) match.mapValues { entry -> + entry.value.map { enbwEvseId[it]!! } + } else null return ChargeLocationStatus( chargepointStatus, - "EnBW" + "EnBW", + evseIds ) }