Update charging state from sunspec storage

pull/39/head
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:
explicit IntegrationPluginSunSpec();
void init() override;
void discoverThings(ThingDiscoveryInfo *info) override;
void setupThing(ThingSetupInfo *info) override;

View File

@ -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",

View File

@ -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)

View File

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

View File

@ -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;
}