* avoid deprecated parameters evcc rest API parameters 'batteryConfigured' and 'pvConfigured'
Signed-off-by: Michael Weger <weger.michael@gmx.net>
# evcc Binding
-This binding integrates [evcc - electric vehicle charging control](https://evcc.io), a project that provides a control center for electric vehicle charging.
-The binding requires evcc [version 0.123.1](https://github.com/evcc-io/evcc/releases/tag/0.123.1) or newer and is tested with this version.
+This binding integrates [evcc](https://evcc.io), an extensible **E**lectric **V**ehicle **C**harge **C**ontroller and home energy management system.
+The binding is compatible to evcc [version 0.123.1](https://github.com/evcc-io/evcc/releases/tag/0.123.1) or newer and was tested with [version 0.125.0](https://github.com/evcc-io/evcc/releases/tag/0.125.0).
You can easily install and upgrade evcc on openHABian using `sudo openhabian-config`.
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.evcc.internal.api.EvccAPI;
import org.openhab.binding.evcc.internal.api.EvccApiException;
+import org.openhab.binding.evcc.internal.api.dto.Battery;
import org.openhab.binding.evcc.internal.api.dto.Loadpoint;
+import org.openhab.binding.evcc.internal.api.dto.PV;
import org.openhab.binding.evcc.internal.api.dto.Plan;
import org.openhab.binding.evcc.internal.api.dto.Result;
import org.openhab.binding.evcc.internal.api.dto.Vehicle;
return;
}
}
-
} else if (groupId.startsWith(CHANNEL_GROUP_ID_VEHICLE) || groupId.startsWith(CHANNEL_GROUP_ID_HEATING)
|| (groupId.startsWith(CHANNEL_GROUP_ID_LOADPOINT)
&& groupId.endsWith(CHANNEL_GROUP_ID_CURRENT))) {
Map<String, Vehicle> vehicles = result.getVehicles();
logger.debug("Found {} vehicles on site {}.", vehicles.size(), sitename);
updateStatus(ThingStatus.ONLINE);
- batteryConfigured = result.getBatteryConfigured();
- gridConfigured = result.getGridConfigured();
- pvConfigured = result.getPvConfigured();
+ Battery[] batteries = result.getBattery();
+ batteryConfigured = ((batteries != null) && (batteries.length > 0));
+ gridConfigured = (result.getGridPower() != null);
+ PV[] pvs = result.getPV();
+ pvConfigured = ((pvs != null) && (pvs.length > 0));
createChannelsGeneral();
updateChannelsGeneral();
for (int i = 0; i < numberOfLoadpoints; i++) {
}
boolean gridConfigured = this.gridConfigured;
if (gridConfigured) {
- float gridPower = result.getGridPower();
+ float gridPower = ((result.getGridPower() == null) ? 0.0f : result.getGridPower());
channel = new ChannelUID(uid, CHANNEL_GROUP_ID_GENERAL, CHANNEL_GRID_POWER);
updateState(channel, new QuantityType<>(gridPower, Units.WATT));
}
--- /dev/null
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.evcc.internal.api.dto;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * This class represents a battery object of the status response (/api/state).
+ * This DTO was written for evcc version 0.123.1
+ *
+ * @author MikeTheTux - Initial contribution
+ */
+public class Battery {
+ // Data types from https://github.com/evcc-io/evcc/blob/master/api/api.go
+ // and from https://docs.evcc.io/docs/reference/configuration/messaging/#msg
+
+ @SerializedName("power")
+ private float power;
+
+ @SerializedName("energy")
+ private float energy;
+
+ @SerializedName("soc")
+ private float soc;
+
+ @SerializedName("capacity")
+ private float capacity;
+
+ @SerializedName("controllable")
+ private boolean controllable;
+
+ /**
+ * @return battery's capacity
+ */
+ public float getCapacity() {
+ return capacity;
+ }
+
+ /**
+ * @return battery's power
+ */
+ public float getPower() {
+ return power;
+ }
+
+ /**
+ * @return battery's state of charge
+ */
+ public float getSoC() {
+ return soc;
+ }
+
+ /**
+ * @return battery discharge controlable
+ */
+ public boolean getControllable() {
+ return controllable;
+ }
+}
--- /dev/null
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.evcc.internal.api.dto;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * This class represents a PV object of the status response (/api/state).
+ * This DTO was written for evcc version 0.123.1
+ *
+ * @author MikeTheTux - Initial contribution
+ */
+public class PV {
+ // Data types from https://github.com/evcc-io/evcc/blob/master/api/api.go
+ // and from https://docs.evcc.io/docs/reference/configuration/messaging/#msg
+
+ @SerializedName("power")
+ private float power;
+
+ /**
+ * @return PV power
+ */
+ public float getPower() {
+ return power;
+ }
+}
@SerializedName("batteryCapacity")
private float batteryCapacity;
- @SerializedName("batteryConfigured")
- private boolean batteryConfigured;
+ @SerializedName("battery")
+ private Battery[] battery;
@SerializedName("batteryPower")
private float batteryPower;
@SerializedName("batteryMode")
private String batteryMode;
- @SerializedName("gridConfigured")
- private boolean gridConfigured;
+ @SerializedName("gridCurrents")
+ private float[] gridCurrents;
+
+ @SerializedName("gridEnergy")
+ private float gridEnergy;
@SerializedName("gridPower")
- private float gridPower;
+ private Float gridPower;
@SerializedName("homePower")
private float homePower;
@SerializedName("residualPower")
private float residualPower;
- @SerializedName("pvConfigured")
- private boolean pvConfigured;
+ @SerializedName("pv")
+ private PV[] pv;
@SerializedName("pvPower")
private float pvPower;
private String availableVersion;
/**
- * @return battery's capacity
+ * @return all configured batteries
*/
- public float getBatteryCapacity() {
- return batteryCapacity;
+ public Battery[] getBattery() {
+ return battery;
}
/**
- * @return whether battery is configured
+ * @return battery's capacity
*/
- public boolean getBatteryConfigured() {
- return batteryConfigured;
+ public float getBatteryCapacity() {
+ return batteryCapacity;
}
/**
}
/**
- * @return whether grid is configured
+ * @return grid's currents
+ */
+ public float[] getGridCurrents() {
+ return gridCurrents;
+ }
+
+ /**
+ * @return grid's energy
*/
- public boolean getGridConfigured() {
- return gridConfigured;
+ public float getGridEnergy() {
+ return gridEnergy;
}
/**
- * @return grid's power
+ * @return grid's power or {@code null} if not available
*/
- public float getGridPower() {
+ public Float getGridPower() {
return gridPower;
}
}
/**
- * @return whether pv is configured
+ * @return all configured PVs
*/
- public boolean getPvConfigured() {
- return pvConfigured;
+ public PV[] getPV() {
+ return pv;
}
/**