diff --git a/sunspec/integrationpluginsunspec.h b/sunspec/integrationpluginsunspec.h index 815246b..d2228fe 100644 --- a/sunspec/integrationpluginsunspec.h +++ b/sunspec/integrationpluginsunspec.h @@ -52,6 +52,7 @@ class IntegrationPluginSunSpec: public IntegrationPlugin public: explicit IntegrationPluginSunSpec(); + void init() override; void discoverThings(ThingDiscoveryInfo *info) override; void setupThing(ThingSetupInfo *info) override; diff --git a/sunspec/integrationpluginsunspec.json b/sunspec/integrationpluginsunspec.json index 00246de..c99f4c9 100644 --- a/sunspec/integrationpluginsunspec.json +++ b/sunspec/integrationpluginsunspec.json @@ -1284,20 +1284,13 @@ "defaultValue": "Off" }, { - "id": "9d191d9f-154e-4de5-81ee-5d7928d24fe2", - "name": "charging", - "displayName": "Charging", - "displayNameEvent": "Charging changed", - "type": "bool", - "defaultValue": false - }, - { - "id": "466c2e36-f305-4e3f-9c05-496de7d1cf6d", - "name": "discharging", - "displayName": "Discharging", - "displayNameEvent": "Discharging changed", - "type": "bool", - "defaultValue": false + "id": "f6178427-8e04-45c7-abec-27d04dd5ff04", + "name": "chargingState", + "displayName": "Charging state", + "displayNameEvent": "Charging state changed", + "type": "QString", + "possibleValues": ["idle", "charging", "discharging"], + "defaultValue": "idle" }, { "id": "221a2ef6-0a92-4ff0-87fe-7bd920dbec0b", diff --git a/sunspec/solaredgebattery.cpp b/sunspec/solaredgebattery.cpp index f14aa20..0ccf57a 100644 --- a/sunspec/solaredgebattery.cpp +++ b/sunspec/solaredgebattery.cpp @@ -243,6 +243,8 @@ void SolarEdgeBattery::onBlockDataUpdated() m_thing->setStateValue(solarEdgeBatteryCapacityStateTypeId, m_batteryData.availableEnergy / 1000.0); // kWh m_thing->setStateValue(solarEdgeBatteryStateOfHealthStateTypeId, m_batteryData.stateOfHealth); m_thing->setStateValue(solarEdgeBatteryVersionStateTypeId, m_batteryData.firmwareVersion); + + emit instantaneousPowerChanged(m_batteryData.instantaneousPower); } QDebug operator<<(QDebug debug, const SolarEdgeBattery::BatteryData &batteryData) diff --git a/sunspec/solaredgebattery.h b/sunspec/solaredgebattery.h index 6b8927d..9f9fecd 100644 --- a/sunspec/solaredgebattery.h +++ b/sunspec/solaredgebattery.h @@ -121,6 +121,7 @@ public: signals: void initFinished(bool success); + void instantaneousPowerChanged(float instantaneousPower); private: QTimer m_timer; diff --git a/sunspec/sunspecstorage.cpp b/sunspec/sunspecstorage.cpp index 79de4f4..6261427 100644 --- a/sunspec/sunspecstorage.cpp +++ b/sunspec/sunspecstorage.cpp @@ -138,38 +138,31 @@ void SunSpecStorage::onBlockDataUpdated() switch (storage->chaSt()) { case SunSpecStorageModel::ChastOff: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Off"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle"); break; case SunSpecStorageModel::ChastEmpty: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Empty"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle"); break; case SunSpecStorageModel::ChastDischarging: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Discharging"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, true); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "discharging"); break; case SunSpecStorageModel::ChastCharging: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Charging"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, true); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "charging"); break; case SunSpecStorageModel::ChastFull: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Full"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle"); break; case SunSpecStorageModel::ChastHolding: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Holding"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle"); break; case SunSpecStorageModel::ChastTesting: m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Testing"); - m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); - m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false); + m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle"); break; }