Update battery

master
Simon Stürz 2022-08-19 13:03:39 +02:00
parent 88657c791c
commit 7c03a13d7d
3 changed files with 62 additions and 18 deletions

View File

@ -258,8 +258,13 @@ void IntegrationPluginKostal::postSetupThing(Thing *thing)
} }
qCDebug(dcKostal()) << "There is a battery connected but not set up yet. Creating a battery" << kostalConnection->batteryType(); qCDebug(dcKostal()) << "There is a battery connected but not set up yet. Creating a battery" << kostalConnection->batteryType();
QString batteryName = kostalConnection->batteryManufacturer();
if (kostalConnection->batteryModelId() != 0) {
batteryName += " - " + QString::number(kostalConnection->batteryModelId());
}
ThingClass batteryThingClass = thingClass(kostalBatteryThingClassId); ThingClass batteryThingClass = thingClass(kostalBatteryThingClassId);
ThingDescriptor descriptor(kostalBatteryThingClassId, kostalConnection->batteryManufacturer() + " - " + kostalConnection->batteryModelId(), QString(), thing->id()); ThingDescriptor descriptor(kostalBatteryThingClassId, batteryName, QString::number(kostalConnection->batterySerialNumber()), thing->id());
// No params required, all we need is the connection // No params required, all we need is the connection
emit autoThingsAppeared(ThingDescriptors() << descriptor); emit autoThingsAppeared(ThingDescriptors() << descriptor);
} }
@ -408,21 +413,25 @@ void IntegrationPluginKostal::setupKostalConnection(ThingSetupInfo *info)
if (batteryThings.count() == 1) { if (batteryThings.count() == 1) {
Thing *batteryThing = batteryThings.first(); Thing *batteryThing = batteryThings.first();
batteryThing->setStateValue(kostalBatteryVoltageStateTypeId, kostalConnection->batteryVoltage());
batteryThing->setStateValue(kostalBatteryTemperatureStateTypeId, kostalConnection->batteryTemperature());
batteryThing->setStateValue(kostalBatteryBatteryLevelStateTypeId, kostalConnection->batteryStateOfCharge()); batteryThing->setStateValue(kostalBatteryBatteryLevelStateTypeId, kostalConnection->batteryStateOfCharge());
batteryThing->setStateValue(kostalBatteryBatteryCriticalStateTypeId, kostalConnection->batteryStateOfCharge() < 5); batteryThing->setStateValue(kostalBatteryBatteryCriticalStateTypeId, kostalConnection->batteryStateOfCharge() < 5);
batteryThing->setStateValue(kostalBatteryCapacityStateTypeId, kostalConnection->batteryWorkCapacity() / 1000.0); // kWh
batteryThing->setStateValue(kostalBatteryCurrentPowerStateTypeId, kostalConnection->batteryActualPower()); // Note: this is the wrong capacity, as of now not known.
if (kostalConnection->batteryActualPower() == 0) { //batteryThing->setStateValue(kostalBatteryCapacityStateTypeId, kostalConnection->batteryWorkCapacity() / 1000.0); // kWh
double batteryPower = -kostalConnection->batteryActualPower();
batteryThing->setStateValue(kostalBatteryCurrentPowerStateTypeId, batteryPower);
if (batteryPower == 0) {
batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "idle"); batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "idle");
} else if (kostalConnection->batteryActualPower() > 0) { } else if (batteryPower > 0) {
batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "discharging"); batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "discharging");
} else if (kostalConnection->batteryActualPower() < 0) { } else if (batteryPower < 0) {
batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "charging"); batteryThing->setStateValue(kostalBatteryChargingStateStateTypeId, "charging");
} }
} }
// Update the meter if available // Update the meter if available
Things meterThings = myThings().filterByParentId(thing->id()).filterByThingClassId(kostalMeterThingClassId); Things meterThings = myThings().filterByParentId(thing->id()).filterByThingClassId(kostalMeterThingClassId);
if (meterThings.count() == 1) { if (meterThings.count() == 1) {

View File

@ -370,6 +370,24 @@
"defaultValue": 0.00, "defaultValue": 0.00,
"cached": false "cached": false
}, },
{
"id": "176420b8-64b6-42e1-beea-9ce2a12f3261",
"name": "voltage",
"displayName": "Voltage",
"type": "double",
"unit": "Volt",
"defaultValue": 0.00,
"cached": false
},
{
"id": "47b07030-57eb-4c79-a469-87b2474eb312",
"name": "temperature",
"displayName": "Temperature",
"type": "double",
"unit": "DegreeCelsius",
"defaultValue": 0.00,
"cached": false
},
{ {
"id": "98099dbd-3f66-43b3-8192-f2e3fdcd5d62", "id": "98099dbd-3f66-43b3-8192-f2e3fdcd5d62",
"name": "capacity", "name": "capacity",

View File

@ -709,6 +709,34 @@
"access": "RO" "access": "RO"
} }
] ]
},
{
"id": "battery",
"readSchedule": "update",
"registers": [
{
"id": "batteryGrossCapacity",
"address": 512,
"size": 2,
"type": "uint32",
"readSchedule": "update",
"registerType": "holdingRegister",
"description": "Battery gross capacity",
"unit": "Ah",
"access": "RO"
},
{
"id": "batteryStateOfCharge",
"address": 514,
"size": 1,
"type": "uint16",
"readSchedule": "update",
"registerType": "holdingRegister",
"description": "Battery SoC",
"unit": "%",
"access": "RO"
}
]
} }
], ],
"registers": [ "registers": [
@ -830,17 +858,6 @@
"defaultValue": "0", "defaultValue": "0",
"access": "RO" "access": "RO"
}, },
{
"id": "batteryStateOfCharge",
"address": 514,
"size": 1,
"type": "uint16",
"readSchedule": "update",
"registerType": "holdingRegister",
"description": "Battery SoC",
"unit": "%",
"access": "RO"
},
{ {
"id": "batteryManufacturer", "id": "batteryManufacturer",
"address": 517, "address": 517,