Fix smartmeter interfaces

pull/627/head
Michael Zanetti 2021-08-06 14:42:59 +02:00
parent 0d60c17c28
commit ec07bb3fdb
5 changed files with 19 additions and 24 deletions

View File

@ -170,16 +170,17 @@ Interfaces::Interfaces(QObject *parent) : QAbstractListModel(parent)
addInterface("smartmeter", tr("Smart meter"));
addInterface("smartmeterconsumer", tr("Smart meters"), {"smartmeter"});
addStateType("smartmeterconsumer", "totalEnergyConsumed", QVariant::Double, false, tr("Total energy consumed"), tr("Total energy consumed changed"));
addInterface("extendedsmartmeterconsumer", tr("Smart meters"), {"smartmeterconsumer"});
addStateType("extendedsmartmeterconsumer", "currentPower", QVariant::Double, false, tr("Current power"), tr("Current power changed"));
addStateType("smartmeterconsumer", "totalEnergyConsumed", QVariant::Double, false, tr("Total energy consumed"), tr("Total consumed energy changed"));
addStateType("smartmeterconsumer", "currentPower", QVariant::Double, false, tr("Current power"), tr("Current power changed"));
addInterface("smartmeterproducer", tr("Smart meters"), {"smartmeter"});
addStateType("smartmeterproducer", "totalEnergyProduced", QVariant::Double, false, tr("Total energy producedd"), tr("Total energy produced changed"));
addStateType("smartmeterproducer", "totalEnergyProduced", QVariant::Double, false, tr("Total energy produced"), tr("Total produced energy changed"));
addStateType("smartmeterproducer", "currentPower", QVariant::Double, false, tr("Current power"), tr("Current power changed"));
addInterface("extendedsmartmeterproducer", tr("Smart meters"), {"smartmeterproducer"});
addStateType("extendedsmartmeterproducer", "currentPower", QVariant::Double, false, tr("Current power"), tr("Current power changed"));
addInterface("energymeter", tr("Smart meters"), {"smartmeter"});
addStateType("energymeter", "totalEnergyConsumed", QVariant::Double, false, tr("Total energy consumed"), tr("Total consumed energy changed"));
addStateType("energymeter", "totalEnergyProduced", QVariant::Double, false, tr("Total energy produced"), tr("Total produced energy changed"));
addStateType("energymeter", "currentPower", QVariant::Double, false, tr("Current power"), tr("Current power changed"));
addInterface("useraccesscontrol", tr("User access control systems"), {"accesscontrol"});
addStateType("useraccesscontrol", "users", QVariant::StringList, false, tr("Users"), tr("Users changed"));

View File

@ -353,9 +353,9 @@ ApplicationWindow {
case "smartmeter":
case "smartmeterconsumer":
case "smartmeterproducer":
case "extendedsmartmeterconsumer":
case "extendedsmartmeterproducer":
return Qt.resolvedUrl("images/smartmeter.svg")
case "energymeter":
return Qt.resolvedUrl("images/energy.svg")
case "heating":
return Qt.resolvedUrl("images/thermostat/heating.svg")
case "cooling":

View File

@ -78,10 +78,9 @@ Item {
"daylightsensor": "gold",
"presencesensor": "darkblue",
"closablesensor": "green",
"smartmeterconsumer": "orange",
"smartmeterproducer": "lightgreen",
"extendedsmartmeterproducer": "lightgreen",
"smartmeterconsumer": "deepskyblue",
"extendedsmartmeterconsumer": "deepskyblue",
"energymeter": "deepskyblue",
"heating" : "gainsboro",
"thermostat": "dodgerblue",
"irrigation": "lightblue",

View File

@ -665,6 +665,7 @@ MainPageTile {
ListElement { ifaceName: "noisesensor"; stateName: "noise" }
ListElement { ifaceName: "smartmeterconsumer"; stateName: "totalEnergyConsumed" }
ListElement { ifaceName: "smartmeterproducer"; stateName: "totalEnergyProduced" }
ListElement { ifaceName: "energymeter"; stateName: "currentPower" }
ListElement { ifaceName: "thermostat"; stateName: "targetTemperature" }
ListElement { ifaceName: "heating"; stateName: "power" }
ListElement { ifaceName: "extendedHeating"; stateName: "percentage" }

View File

@ -74,26 +74,20 @@ ThingsListPageBase {
Repeater {
model: ListModel {
Component.onCompleted: {
if (itemDelegate.thing.thingClass.interfaces.indexOf("smartmeterproducer") >= 0) {
append( {interfaceName: "smartmeterproducer", stateName: "totalEnergyProduced" })
if (itemDelegate.thing.thingClass.stateTypes.findByName("totalEnergyConsumed") !== null) {
append( {stateName: "totalEnergyConsumed" })
}
if (itemDelegate.thing.thingClass.interfaces.indexOf("smartmeterconsumer") >= 0) {
append( {interfaceName: "smartmeterconsumer", stateName: "totalEnergyConsumed" })
if (itemDelegate.thing.thingClass.stateTypes.findByName("totalEnergyProduced") !== null) {
append( {stateName: "totalEnergyProduced" })
}
var added = false;
if (itemDelegate.thing.thingClass.interfaces.indexOf("extendedsmartmeterproducer") >= 0) {
append({interfaceName: "extendedsmartmeterconsumer", stateName: "currentPower"});
added = true;
}
if (!added && itemDelegate.thing.thingClass.interfaces.indexOf("extendedsmartmeterconsumer") >= 0) {
append({interfaceName: "extendedsmartmeterconsumer", stateName: "currentPower"});
if (itemDelegate.thing.thingClass.stateTypes.findByName("currentPower") !== null) {
append({stateName: "currentPower"});
}
}
}
delegate: RowLayout {
id: sensorValueDelegate
visible: itemDelegate.thing.thingClass.interfaces.indexOf(model.interfaceName) >= 0
Layout.preferredWidth: contentItem.width / dataGrid.columns
property StateType stateType: itemDelegate.thing.thingClass.stateTypes.findByName(model.stateName)