From ec07bb3fdb05e150d2b13c0327bd6ebc01ebb364 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 6 Aug 2021 14:42:59 +0200 Subject: [PATCH] Fix smartmeter interfaces --- libnymea-app/types/interfaces.cpp | 15 ++++++++------- nymea-app/ui/Nymea.qml | 4 ++-- nymea-app/ui/StyleBase.qml | 5 ++--- nymea-app/ui/delegates/InterfaceTile.qml | 1 + .../SmartMeterDeviceListPage.qml | 18 ++++++------------ 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/libnymea-app/types/interfaces.cpp b/libnymea-app/types/interfaces.cpp index 96910a36..f2a7aede 100644 --- a/libnymea-app/types/interfaces.cpp +++ b/libnymea-app/types/interfaces.cpp @@ -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")); diff --git a/nymea-app/ui/Nymea.qml b/nymea-app/ui/Nymea.qml index 65f987d0..9b87fa7b 100644 --- a/nymea-app/ui/Nymea.qml +++ b/nymea-app/ui/Nymea.qml @@ -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": diff --git a/nymea-app/ui/StyleBase.qml b/nymea-app/ui/StyleBase.qml index 53ce2dd3..96368b79 100644 --- a/nymea-app/ui/StyleBase.qml +++ b/nymea-app/ui/StyleBase.qml @@ -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", diff --git a/nymea-app/ui/delegates/InterfaceTile.qml b/nymea-app/ui/delegates/InterfaceTile.qml index c399b828..8800ac74 100644 --- a/nymea-app/ui/delegates/InterfaceTile.qml +++ b/nymea-app/ui/delegates/InterfaceTile.qml @@ -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" } diff --git a/nymea-app/ui/devicelistpages/SmartMeterDeviceListPage.qml b/nymea-app/ui/devicelistpages/SmartMeterDeviceListPage.qml index 9ed29a9b..854512c4 100644 --- a/nymea-app/ui/devicelistpages/SmartMeterDeviceListPage.qml +++ b/nymea-app/ui/devicelistpages/SmartMeterDeviceListPage.qml @@ -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)