Rework generic battery/energy storage
This commit is contained in:
parent
a17852e17a
commit
6c8b576522
@ -64,11 +64,14 @@ void IntegrationPluginGenericEnergy::setupThing(ThingSetupInfo *info)
|
|||||||
thing->setStateValue(impulseSmartMeterCurrentPowerStateTypeId, power*1000);
|
thing->setStateValue(impulseSmartMeterCurrentPowerStateTypeId, power*1000);
|
||||||
m_pulsesPerTimeframe.insert(thing, 0);
|
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){
|
connect(thing, &Thing::settingChanged, [thing](const ParamTypeId &settingTypeId, const QVariant &value){
|
||||||
if (settingTypeId == batterySettingsCriticalLevelParamTypeId) {
|
if (settingTypeId == energyStorageSettingsCapacityParamTypeId) {
|
||||||
int currentBatteryLevel = thing->stateValue(batteryBatteryLevelStateTypeId).toInt();
|
thing->setStateValue(energyStorageCapacityStateTypeId, value);
|
||||||
thing->setStateValue(batteryBatteryCriticalStateTypeId, currentBatteryLevel <= value.toInt());
|
}
|
||||||
|
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 {
|
} else {
|
||||||
Q_ASSERT_X(false, "executeAction", QString("Unhandled actionTypeId: %1").arg(action.actionTypeId().toString()).toUtf8());
|
Q_ASSERT_X(false, "executeAction", QString("Unhandled actionTypeId: %1").arg(action.actionTypeId().toString()).toUtf8());
|
||||||
}
|
}
|
||||||
} else if (thing->thingClassId() == batteryThingClassId) {
|
} else if (thing->thingClassId() == energyStorageThingClassId) {
|
||||||
if (action.actionTypeId() == batteryBatteryLevelControlActionTypeId) {
|
if (action.actionTypeId() == energyStorageBatteryLevelActionTypeId) {
|
||||||
int value = action.paramValue(batteryBatteryLevelControlActionBatteryLevelControlParamTypeId).toInt();
|
int value = action.paramValue(energyStorageBatteryLevelActionBatteryLevelParamTypeId).toInt();
|
||||||
thing->setStateValue(batteryBatteryLevelStateTypeId, value);
|
thing->setStateValue(energyStorageBatteryLevelStateTypeId, value);
|
||||||
thing->setStateValue(batteryBatteryLevelControlStateTypeId, value);
|
int criticalValue = thing->setting(energyStorageSettingsCriticalLevelParamTypeId).toInt();
|
||||||
int criticalValue = thing->setting(batterySettingsCriticalLevelParamTypeId).toInt();
|
thing->setStateValue(energyStorageBatteryCriticalStateTypeId, value <= criticalValue);
|
||||||
thing->setStateValue(batteryBatteryCriticalStateTypeId, value <= criticalValue);
|
|
||||||
info->finish(Thing::ThingErrorNoError);
|
info->finish(Thing::ThingErrorNoError);
|
||||||
return;
|
} else if (action.actionTypeId() == energyStorageCurrentPowerActionTypeId) {
|
||||||
} else if (action.actionTypeId() == batteryChargingActionTypeId) {
|
thing->setStateValue(energyStorageCurrentPowerStateTypeId, action.paramValue(energyStorageCurrentPowerActionCurrentPowerParamTypeId));
|
||||||
thing->setStateValue(batteryChargingStateTypeId, action.paramValue(batteryChargingActionChargingParamTypeId));
|
info->finish(Thing::ThingErrorNoError);
|
||||||
|
} else if (action.actionTypeId() == energyStorageChargingActionTypeId) {
|
||||||
|
thing->setStateValue(energyStorageChargingStateTypeId, action.paramValue(energyStorageChargingActionChargingParamTypeId));
|
||||||
info->finish(Thing::ThingErrorNoError);
|
info->finish(Thing::ThingErrorNoError);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,11 +148,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "81418556-cae3-4803-aa0c-9c4b3304a3eb",
|
"id": "81418556-cae3-4803-aa0c-9c4b3304a3eb",
|
||||||
"name": "battery",
|
"name": "energyStorage",
|
||||||
"displayName": "Generic battery",
|
"displayName": "Generic energy storage",
|
||||||
"createMethods": ["user"],
|
"createMethods": ["user"],
|
||||||
"interfaces": ["battery"],
|
"interfaces": ["energystorage"],
|
||||||
"settingsTypes": [
|
"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",
|
"id": "8d875cb7-3a14-42d1-bf1b-759e5fd95a8f",
|
||||||
"name": "criticalLevel",
|
"name": "criticalLevel",
|
||||||
@ -164,28 +173,29 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"stateTypes": [
|
"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",
|
"id": "d37eed4a-befc-40d4-b435-40a761f99314",
|
||||||
"name": "batteryLevel",
|
"name": "batteryLevel",
|
||||||
"displayName": "Battery level",
|
"displayName": "Battery level",
|
||||||
"displayNameEvent": "Battery level changed",
|
"displayNameAction": "Set battery level",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"unit": "Percentage",
|
"unit": "Percentage",
|
||||||
"defaultValue": 0,
|
"defaultValue": 0,
|
||||||
"minValue": 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,
|
"maxValue": 100,
|
||||||
"defaultValue": 0,
|
|
||||||
"unit": "Percentage",
|
|
||||||
"writable": true,
|
"writable": true,
|
||||||
"ioType": "analogOutput"
|
"ioType": "analogOutput"
|
||||||
},
|
},
|
||||||
@ -207,6 +217,14 @@
|
|||||||
"displayNameEvent": "Battery entered or left critical state",
|
"displayNameEvent": "Battery entered or left critical state",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"defaultValue": false
|
"defaultValue": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bf076970-20fe-46f7-b4bc-fe34ec833829",
|
||||||
|
"name": "capacity",
|
||||||
|
"displayName": "Capacity",
|
||||||
|
"type": "double",
|
||||||
|
"unit": "KiloWattHour",
|
||||||
|
"defaultValue": 10000
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user