Update charging state from sunspec storage

This commit is contained in:
Simon Stürz 2021-10-07 09:10:09 +02:00
parent 09924f251d
commit bcb90ee6d1
5 changed files with 18 additions and 28 deletions

View File

@ -52,6 +52,7 @@ class IntegrationPluginSunSpec: public IntegrationPlugin
public: public:
explicit IntegrationPluginSunSpec(); explicit IntegrationPluginSunSpec();
void init() override; void init() override;
void discoverThings(ThingDiscoveryInfo *info) override; void discoverThings(ThingDiscoveryInfo *info) override;
void setupThing(ThingSetupInfo *info) override; void setupThing(ThingSetupInfo *info) override;

View File

@ -1284,20 +1284,13 @@
"defaultValue": "Off" "defaultValue": "Off"
}, },
{ {
"id": "9d191d9f-154e-4de5-81ee-5d7928d24fe2", "id": "f6178427-8e04-45c7-abec-27d04dd5ff04",
"name": "charging", "name": "chargingState",
"displayName": "Charging", "displayName": "Charging state",
"displayNameEvent": "Charging changed", "displayNameEvent": "Charging state changed",
"type": "bool", "type": "QString",
"defaultValue": false "possibleValues": ["idle", "charging", "discharging"],
}, "defaultValue": "idle"
{
"id": "466c2e36-f305-4e3f-9c05-496de7d1cf6d",
"name": "discharging",
"displayName": "Discharging",
"displayNameEvent": "Discharging changed",
"type": "bool",
"defaultValue": false
}, },
{ {
"id": "221a2ef6-0a92-4ff0-87fe-7bd920dbec0b", "id": "221a2ef6-0a92-4ff0-87fe-7bd920dbec0b",

View File

@ -243,6 +243,8 @@ void SolarEdgeBattery::onBlockDataUpdated()
m_thing->setStateValue(solarEdgeBatteryCapacityStateTypeId, m_batteryData.availableEnergy / 1000.0); // kWh m_thing->setStateValue(solarEdgeBatteryCapacityStateTypeId, m_batteryData.availableEnergy / 1000.0); // kWh
m_thing->setStateValue(solarEdgeBatteryStateOfHealthStateTypeId, m_batteryData.stateOfHealth); m_thing->setStateValue(solarEdgeBatteryStateOfHealthStateTypeId, m_batteryData.stateOfHealth);
m_thing->setStateValue(solarEdgeBatteryVersionStateTypeId, m_batteryData.firmwareVersion); m_thing->setStateValue(solarEdgeBatteryVersionStateTypeId, m_batteryData.firmwareVersion);
emit instantaneousPowerChanged(m_batteryData.instantaneousPower);
} }
QDebug operator<<(QDebug debug, const SolarEdgeBattery::BatteryData &batteryData) QDebug operator<<(QDebug debug, const SolarEdgeBattery::BatteryData &batteryData)

View File

@ -121,6 +121,7 @@ public:
signals: signals:
void initFinished(bool success); void initFinished(bool success);
void instantaneousPowerChanged(float instantaneousPower);
private: private:
QTimer m_timer; QTimer m_timer;

View File

@ -138,38 +138,31 @@ void SunSpecStorage::onBlockDataUpdated()
switch (storage->chaSt()) { switch (storage->chaSt()) {
case SunSpecStorageModel::ChastOff: case SunSpecStorageModel::ChastOff:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Off"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Off");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
case SunSpecStorageModel::ChastEmpty: case SunSpecStorageModel::ChastEmpty:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Empty"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Empty");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
case SunSpecStorageModel::ChastDischarging: case SunSpecStorageModel::ChastDischarging:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Discharging"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Discharging");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "discharging");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, true);
break; break;
case SunSpecStorageModel::ChastCharging: case SunSpecStorageModel::ChastCharging:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Charging"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Charging");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, true); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "charging");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
case SunSpecStorageModel::ChastFull: case SunSpecStorageModel::ChastFull:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Full"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Full");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
case SunSpecStorageModel::ChastHolding: case SunSpecStorageModel::ChastHolding:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Holding"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Holding");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
case SunSpecStorageModel::ChastTesting: case SunSpecStorageModel::ChastTesting:
m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Testing"); m_thing->setStateValue(sunspecStorageBatteryLevelStateTypeId, "Testing");
m_thing->setStateValue(sunspecStorageChargingStateTypeId, false); m_thing->setStateValue(sunspecStorageChargingStateStateTypeId, "idle");
m_thing->setStateValue(sunspecStorageDischargingStateTypeId, false);
break; break;
} }