diff --git a/sunspec/integrationpluginsunspec.json b/sunspec/integrationpluginsunspec.json index 61a718e..60cee95 100644 --- a/sunspec/integrationpluginsunspec.json +++ b/sunspec/integrationpluginsunspec.json @@ -1425,7 +1425,7 @@ "displayName": "SolarEdge battery", "id": "7900471a-da3f-4f03-98be-3e3d9c841546", "createMethods": [ "Auto" ], - "interfaces": ["battery", "connectable"], + "interfaces": ["energystorage", "connectable"], "paramTypes": [ { "id": "7413cce6-48c1-4924-89bc-915beed67b57", @@ -1488,19 +1488,12 @@ }, { "id": "815b0826-c392-4249-a271-19e92ebe46e0", - "name": "charging", - "displayName": "Charging", - "displayNameEvent": "Charging changed", - "type": "bool", - "defaultValue": false - }, - { - "id": "3a0ee6f1-8a49-431d-9e6f-774cdfa8ae1a", - "name": "discharging", - "displayName": "Discharging", - "displayNameEvent": "Discharging changed", - "type": "bool", - "defaultValue": false + "name": "chargingState", + "displayName": "Charging state", + "displayNameEvent": "Charging state changed", + "type": "QString", + "possibleValues": ["idle", "charging", "discharging"], + "defaultValue": "idle" }, { "id": "f6c6f548-8a12-4a62-a641-08bb003c55fa", @@ -1540,7 +1533,7 @@ }, { "id": "caccf9fd-0f83-4dd5-ae48-a497f13d2a2e", - "name": "instantaneousPower", + "name": "currentPower", "displayName": "Instantaneous power", "displayNameEvent": "Instantaneous power changed", "type": "double", diff --git a/sunspec/solaredgebattery.cpp b/sunspec/solaredgebattery.cpp index c492fe4..8b8b113 100644 --- a/sunspec/solaredgebattery.cpp +++ b/sunspec/solaredgebattery.cpp @@ -194,61 +194,51 @@ void SolarEdgeBattery::onBlockDataUpdated() if (!m_thing) return; - bool charging = false; - bool discharging = false; + QString chargingState = "idle"; switch (m_batteryData.batteryStatus) { case SolarEdgeBattery::Off: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Off"); break; case SolarEdgeBattery::Standby: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Standby"); break; case SolarEdgeBattery::Init: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Init"); break; case SolarEdgeBattery::Charge: - charging = true; - discharging = false; + chargingState = "charging"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Charging"); break; case SolarEdgeBattery::Discharge: - charging = false; - discharging = true; + chargingState = "discharging"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Discharging"); break; case SolarEdgeBattery::Fault: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Fault"); break; case SolarEdgeBattery::Holding: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Holding"); break; case SolarEdgeBattery::Idle: - charging = false; - discharging = false; + chargingState = "idle"; m_thing->setStateValue(solarEdgeBatteryBatteryStatusStateTypeId, "Idle"); break; } - m_thing->setStateValue(solarEdgeBatteryBatteryCriticalStateTypeId, (m_batteryData.stateOfEnergy < 5) && !charging); + m_thing->setStateValue(solarEdgeBatteryBatteryCriticalStateTypeId, (m_batteryData.stateOfEnergy < 5) && chargingState != "charging"); m_thing->setStateValue(solarEdgeBatteryBatteryLevelStateTypeId, m_batteryData.stateOfEnergy); - m_thing->setStateValue(solarEdgeBatteryDischargingStateTypeId, discharging); - m_thing->setStateValue(solarEdgeBatteryChargingStateTypeId, charging); + m_thing->setStateValue(solarEdgeBatteryChargingStateStateTypeId, chargingState); m_thing->setStateValue(solarEdgeBatteryRatedEnergyStateTypeId, m_batteryData.ratedEnergy); m_thing->setStateValue(solarEdgeBatteryAverageTemperatureStateTypeId, m_batteryData.averageTemperature); m_thing->setStateValue(solarEdgeBatteryInstantaneousVoltageStateTypeId, m_batteryData.instantaneousVoltage); m_thing->setStateValue(solarEdgeBatteryInstantaneousCurrentStateTypeId, m_batteryData.instantaneousCurrent); - m_thing->setStateValue(solarEdgeBatteryInstantaneousPowerStateTypeId, m_batteryData.instantaneousPower); + m_thing->setStateValue(solarEdgeBatteryCurrentPowerStateTypeId, m_batteryData.instantaneousPower); m_thing->setStateValue(solarEdgeBatteryMaxEnergyStateTypeId, m_batteryData.maxEnergy); m_thing->setStateValue(solarEdgeBatteryAvailableEnergyStateTypeId, m_batteryData.availableEnergy); m_thing->setStateValue(solarEdgeBatteryStateOfHealthStateTypeId, m_batteryData.stateOfHealth);