Merge PR #14: Rework generic battery
commit
cce26aca49
|
|
@ -64,11 +64,14 @@ void IntegrationPluginGenericEnergy::setupThing(ThingSetupInfo *info)
|
|||
thing->setStateValue(impulseSmartMeterCurrentPowerStateTypeId, power*1000);
|
||||
m_pulsesPerTimeframe.insert(thing, 0);
|
||||
});
|
||||
} else if (thing->thingClassId() == batteryThingClassId) {
|
||||
} else if (thing->thingClassId() == energyStorageThingClassId) {
|
||||
connect(thing, &Thing::settingChanged, [thing](const ParamTypeId &settingTypeId, const QVariant &value){
|
||||
if (settingTypeId == batterySettingsCriticalLevelParamTypeId) {
|
||||
int currentBatteryLevel = thing->stateValue(batteryBatteryLevelStateTypeId).toInt();
|
||||
thing->setStateValue(batteryBatteryCriticalStateTypeId, currentBatteryLevel <= value.toInt());
|
||||
if (settingTypeId == energyStorageSettingsCapacityParamTypeId) {
|
||||
thing->setStateValue(energyStorageCapacityStateTypeId, value);
|
||||
}
|
||||
if (settingTypeId == energyStorageSettingsCriticalLevelParamTypeId) {
|
||||
int currentBatteryLevel = thing->stateValue(energyStorageBatteryLevelStateTypeId).toInt();
|
||||
thing->setStateValue(energyStorageBatteryCriticalStateTypeId, currentBatteryLevel <= value.toInt());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -139,17 +142,18 @@ void IntegrationPluginGenericEnergy::executeAction(ThingActionInfo *info)
|
|||
} else {
|
||||
Q_ASSERT_X(false, "executeAction", QString("Unhandled actionTypeId: %1").arg(action.actionTypeId().toString()).toUtf8());
|
||||
}
|
||||
} else if (thing->thingClassId() == batteryThingClassId) {
|
||||
if (action.actionTypeId() == batteryBatteryLevelControlActionTypeId) {
|
||||
int value = action.paramValue(batteryBatteryLevelControlActionBatteryLevelControlParamTypeId).toInt();
|
||||
thing->setStateValue(batteryBatteryLevelStateTypeId, value);
|
||||
thing->setStateValue(batteryBatteryLevelControlStateTypeId, value);
|
||||
int criticalValue = thing->setting(batterySettingsCriticalLevelParamTypeId).toInt();
|
||||
thing->setStateValue(batteryBatteryCriticalStateTypeId, value <= criticalValue);
|
||||
} else if (thing->thingClassId() == energyStorageThingClassId) {
|
||||
if (action.actionTypeId() == energyStorageBatteryLevelActionTypeId) {
|
||||
int value = action.paramValue(energyStorageBatteryLevelActionBatteryLevelParamTypeId).toInt();
|
||||
thing->setStateValue(energyStorageBatteryLevelStateTypeId, value);
|
||||
int criticalValue = thing->setting(energyStorageSettingsCriticalLevelParamTypeId).toInt();
|
||||
thing->setStateValue(energyStorageBatteryCriticalStateTypeId, value <= criticalValue);
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
return;
|
||||
} else if (action.actionTypeId() == batteryChargingActionTypeId) {
|
||||
thing->setStateValue(batteryChargingStateTypeId, action.paramValue(batteryChargingActionChargingParamTypeId));
|
||||
} else if (action.actionTypeId() == energyStorageCurrentPowerActionTypeId) {
|
||||
thing->setStateValue(energyStorageCurrentPowerStateTypeId, action.paramValue(energyStorageCurrentPowerActionCurrentPowerParamTypeId));
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
} else if (action.actionTypeId() == energyStorageChargingActionTypeId) {
|
||||
thing->setStateValue(energyStorageChargingStateTypeId, action.paramValue(energyStorageChargingActionChargingParamTypeId));
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,11 +148,20 @@
|
|||
},
|
||||
{
|
||||
"id": "81418556-cae3-4803-aa0c-9c4b3304a3eb",
|
||||
"name": "battery",
|
||||
"displayName": "Generic battery",
|
||||
"name": "energyStorage",
|
||||
"displayName": "Generic energy storage",
|
||||
"createMethods": ["user"],
|
||||
"interfaces": ["battery"],
|
||||
"interfaces": ["energystorage"],
|
||||
"settingsTypes": [
|
||||
{
|
||||
"id": "c170df55-029d-4b67-ae09-248645dd7040",
|
||||
"name": "capacity",
|
||||
"displayName": "Capacity",
|
||||
"type": "double",
|
||||
"unit": "KiloWattHour",
|
||||
"minValue": 0,
|
||||
"defaultValue": 50000
|
||||
},
|
||||
{
|
||||
"id": "8d875cb7-3a14-42d1-bf1b-759e5fd95a8f",
|
||||
"name": "criticalLevel",
|
||||
|
|
@ -164,28 +173,29 @@
|
|||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "8d1c43f9-4528-4797-8f6a-f7b91fbb91d0",
|
||||
"name": "currentPower",
|
||||
"displayName": "Current power",
|
||||
"displayNameAction": "Set current power",
|
||||
"type": "double",
|
||||
"unit": "Watt",
|
||||
"defaultValue": 0,
|
||||
"writable": true,
|
||||
"minValue": -10000,
|
||||
"maxValue": 10000,
|
||||
"ioType": "analogOutput"
|
||||
},
|
||||
{
|
||||
"id": "d37eed4a-befc-40d4-b435-40a761f99314",
|
||||
"name": "batteryLevel",
|
||||
"displayName": "Battery level",
|
||||
"displayNameEvent": "Battery level changed",
|
||||
"displayNameAction": "Set battery level",
|
||||
"type": "int",
|
||||
"unit": "Percentage",
|
||||
"defaultValue": 0,
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
{
|
||||
"id": "3336f0c2-158b-4353-b74f-f1bb9c4e8447",
|
||||
"name": "batteryLevelControl",
|
||||
"displayName": "Battery level control",
|
||||
"displayNameEvent": "Battery level control changed",
|
||||
"displayNameAction": "Set battery level",
|
||||
"type": "double",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"defaultValue": 0,
|
||||
"unit": "Percentage",
|
||||
"writable": true,
|
||||
"ioType": "analogOutput"
|
||||
},
|
||||
|
|
@ -207,6 +217,14 @@
|
|||
"displayNameEvent": "Battery entered or left critical state",
|
||||
"type": "bool",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"id": "bf076970-20fe-46f7-b4bc-fe34ec833829",
|
||||
"name": "capacity",
|
||||
"displayName": "Capacity",
|
||||
"type": "double",
|
||||
"unit": "KiloWattHour",
|
||||
"defaultValue": 10000
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue