Rename devices to things

This commit is contained in:
Michael Zanetti 2020-03-04 17:32:40 +01:00
parent 9826276079
commit 430092a742
12 changed files with 286 additions and 287 deletions

View File

@ -1,11 +1,11 @@
include(../plugins.pri) include(../plugins.pri)
TARGET = $$qtLibraryTarget(nymea_deviceplugingenericelements) TARGET = $$qtLibraryTarget(nymea_integrationplugingenericelements)
SOURCES += \ SOURCES += \
deviceplugingenericelements.cpp integrationplugingenericelements.cpp
HEADERS += \ HEADERS += \
deviceplugingenericelements.h integrationplugingenericelements.h

View File

@ -28,39 +28,39 @@
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "deviceplugingenericelements.h" #include "integrationplugingenericelements.h"
#include "plugininfo.h" #include "plugininfo.h"
#include <QDebug> #include <QDebug>
DevicePluginGenericElements::DevicePluginGenericElements() IntegrationPluginGenericElements::IntegrationPluginGenericElements()
{ {
} }
void DevicePluginGenericElements::setupDevice(DeviceSetupInfo *info) void IntegrationPluginGenericElements::setupThing(ThingSetupInfo *info)
{ {
info->finish(Device::DeviceErrorNoError); info->finish(Thing::ThingErrorNoError);
} }
void DevicePluginGenericElements::executeAction(DeviceActionInfo *info) void IntegrationPluginGenericElements::executeAction(ThingActionInfo *info)
{ {
Device *device = info->device(); Thing *thing = info->thing();
Action action = info->action(); Action action = info->action();
// Toggle Button // Toggle Button
if (action.actionTypeId() == toggleButtonStateActionTypeId) { if (action.actionTypeId() == toggleButtonStateActionTypeId) {
device->setStateValue(toggleButtonStateStateTypeId, action.params().paramValue(toggleButtonStateActionStateParamTypeId).toBool()); thing->setStateValue(toggleButtonStateStateTypeId, action.params().paramValue(toggleButtonStateActionStateParamTypeId).toBool());
} }
// Button // Button
if (action.actionTypeId() == buttonButtonPressActionTypeId) { if (action.actionTypeId() == buttonButtonPressActionTypeId) {
emit emitEvent(Event(buttonButtonPressedEventTypeId, device->id())); emit emitEvent(Event(buttonButtonPressedEventTypeId, thing->id()));
} }
// ON/OFF Button // ON/OFF Button
if (action.actionTypeId() == onOffButtonOnActionTypeId) { if (action.actionTypeId() == onOffButtonOnActionTypeId) {
emit emitEvent(Event(onOffButtonOnEventTypeId, device->id())); emit emitEvent(Event(onOffButtonOnEventTypeId, thing->id()));
} }
if (action.actionTypeId() == onOffButtonOffActionTypeId) { if (action.actionTypeId() == onOffButtonOffActionTypeId) {
emit emitEvent(Event(onOffButtonOffEventTypeId, device->id())); emit emitEvent(Event(onOffButtonOffEventTypeId, thing->id()));
} }
info->finish(Device::DeviceErrorNoError); info->finish(Thing::ThingErrorNoError);
} }

View File

@ -28,25 +28,25 @@
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef DEVICEPLUGINGENERICELEMENTS_H #ifndef INTEGRATIONPLUGINGENERICELEMENTS_H
#define DEVICEPLUGINGENERICELEMENTS_H #define INTEGRATIONPLUGINGENERICELEMENTS_H
#include "devices/deviceplugin.h" #include "integrations/integrationplugin.h"
class DevicePluginGenericElements : public DevicePlugin class IntegrationPluginGenericElements : public IntegrationPlugin
{ {
Q_OBJECT Q_OBJECT
Q_PLUGIN_METADATA(IID "io.nymea.DevicePlugin" FILE "deviceplugingenericelements.json") Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationplugingenericelements.json")
Q_INTERFACES(DevicePlugin) Q_INTERFACES(IntegrationPlugin)
public: public:
explicit DevicePluginGenericElements(); explicit IntegrationPluginGenericElements();
void setupDevice(DeviceSetupInfo *info) override; void setupThing(ThingSetupInfo *info) override;
public slots: public slots:
void executeAction(DeviceActionInfo *info) override; void executeAction(ThingActionInfo *info) override;
}; };
#endif // DEVICEPLUGINGENERICELEMENTS_H #endif // INTEGRATIONPLUGINGENERICELEMENTS_H

View File

@ -7,7 +7,7 @@
"name": "nymea", "name": "nymea",
"displayName": "nymea", "displayName": "nymea",
"id": "2062d64d-3232-433c-88bc-0d33c0ba2ba6", "id": "2062d64d-3232-433c-88bc-0d33c0ba2ba6",
"deviceClasses": [ "thingClasses": [
{ {
"id": "c0f511f9-70f5-499b-bd70-2c0e9ddd68c4", "id": "c0f511f9-70f5-499b-bd70-2c0e9ddd68c4",
"name": "toggleButton", "name": "toggleButton",

View File

@ -18,13 +18,13 @@
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="54"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="54"/>
<source>Toggle Button</source> <source>Toggle Button</source>
<extracomment>The name of the DeviceClass ({c0f511f9-70f5-499b-bd70-2c0e9ddd68c4})</extracomment> <extracomment>The name of the ThingClass ({c0f511f9-70f5-499b-bd70-2c0e9ddd68c4})</extracomment>
<translation>Toggle Taster</translation> <translation>Toggle Taster</translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="81"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="81"/>
<source>state changed</source> <source>state changed</source>
<extracomment>The name of the EventType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> <extracomment>The name of the EventType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -32,65 +32,65 @@
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="75"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="78"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="78"/>
<source>state</source> <source>state</source>
<extracomment>The name of the ParamType (DeviceClass: toggleButton, ActionType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) <extracomment>The name of the ParamType (ThingClass: toggleButton, ActionType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5})
---------- ----------
The name of the ParamType (DeviceClass: toggleButton, EventType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) The name of the ParamType (ThingClass: toggleButton, EventType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5})
---------- ----------
The name of the StateType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> The name of the StateType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="51"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="51"/>
<source>Set state</source> <source>Set state</source>
<extracomment>The name of the ActionType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> <extracomment>The name of the ActionType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="36"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="36"/>
<source>Button</source> <source>Button</source>
<extracomment>The name of the DeviceClass ({820b2f2d-0d92-48c8-8fd4-f94ce8fc4103})</extracomment> <extracomment>The name of the ThingClass ({820b2f2d-0d92-48c8-8fd4-f94ce8fc4103})</extracomment>
<translation>Taster</translation> <translation>Taster</translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="63"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="63"/>
<source>press</source> <source>press</source>
<extracomment>The name of the ActionType ({01f38af1-b2ab-4ec3-844e-ef52f0f229a9}) of DeviceClass button</extracomment> <extracomment>The name of the ActionType ({01f38af1-b2ab-4ec3-844e-ef52f0f229a9}) of ThingClass button</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="57"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="57"/>
<source>button pressed</source> <source>button pressed</source>
<extracomment>The name of the EventType ({effdbc2d-e467-4b0b-80a9-9dda251bfa5c}) of DeviceClass button</extracomment> <extracomment>The name of the EventType ({effdbc2d-e467-4b0b-80a9-9dda251bfa5c}) of ThingClass button</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="48"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="48"/>
<source>ON/OFF Button</source> <source>ON/OFF Button</source>
<extracomment>The name of the DeviceClass ({430d188c-476d-4825-a9bd-86dfa3094b56})</extracomment> <extracomment>The name of the ThingClass ({430d188c-476d-4825-a9bd-86dfa3094b56})</extracomment>
<translation>An/Aus Taster</translation> <translation>An/Aus Taster</translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="69"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="69"/>
<source>press ON</source> <source>press ON</source>
<extracomment>The name of the ActionType ({892596d2-0863-4807-97da-469b9f7003f2}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the ActionType ({892596d2-0863-4807-97da-469b9f7003f2}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="66"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="66"/>
<source>press OFF</source> <source>press OFF</source>
<extracomment>The name of the ActionType ({a8d64050-0b58-4ccf-b052-77ce2b7368ad}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the ActionType ({a8d64050-0b58-4ccf-b052-77ce2b7368ad}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="45"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="45"/>
<source>ON pressed</source> <source>ON pressed</source>
<extracomment>The name of the EventType ({4eeba6a2-e4c7-4a2e-8360-2797d98114e6}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the EventType ({4eeba6a2-e4c7-4a2e-8360-2797d98114e6}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="42"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="42"/>
<source>OFF pressed</source> <source>OFF pressed</source>
<extracomment>The name of the EventType ({b636c5f3-2eb0-4682-96d4-88a4aa9d2c12}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the EventType ({b636c5f3-2eb0-4682-96d4-88a4aa9d2c12}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>

View File

@ -18,13 +18,13 @@
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="54"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="54"/>
<source>Toggle Button</source> <source>Toggle Button</source>
<extracomment>The name of the DeviceClass ({c0f511f9-70f5-499b-bd70-2c0e9ddd68c4})</extracomment> <extracomment>The name of the ThingClass ({c0f511f9-70f5-499b-bd70-2c0e9ddd68c4})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="81"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="81"/>
<source>state changed</source> <source>state changed</source>
<extracomment>The name of the EventType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> <extracomment>The name of the EventType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -32,65 +32,65 @@
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="75"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="78"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="78"/>
<source>state</source> <source>state</source>
<extracomment>The name of the ParamType (DeviceClass: toggleButton, ActionType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) <extracomment>The name of the ParamType (ThingClass: toggleButton, ActionType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5})
---------- ----------
The name of the ParamType (DeviceClass: toggleButton, EventType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) The name of the ParamType (ThingClass: toggleButton, EventType: state, ID: {b5e90567-54aa-49bd-a78a-3c19fb38aaf5})
---------- ----------
The name of the StateType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> The name of the StateType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="51"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="51"/>
<source>Set state</source> <source>Set state</source>
<extracomment>The name of the ActionType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of DeviceClass toggleButton</extracomment> <extracomment>The name of the ActionType ({b5e90567-54aa-49bd-a78a-3c19fb38aaf5}) of ThingClass toggleButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="36"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="36"/>
<source>Button</source> <source>Button</source>
<extracomment>The name of the DeviceClass ({820b2f2d-0d92-48c8-8fd4-f94ce8fc4103})</extracomment> <extracomment>The name of the ThingClass ({820b2f2d-0d92-48c8-8fd4-f94ce8fc4103})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="63"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="63"/>
<source>press</source> <source>press</source>
<extracomment>The name of the ActionType ({01f38af1-b2ab-4ec3-844e-ef52f0f229a9}) of DeviceClass button</extracomment> <extracomment>The name of the ActionType ({01f38af1-b2ab-4ec3-844e-ef52f0f229a9}) of ThingClass button</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="57"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="57"/>
<source>button pressed</source> <source>button pressed</source>
<extracomment>The name of the EventType ({effdbc2d-e467-4b0b-80a9-9dda251bfa5c}) of DeviceClass button</extracomment> <extracomment>The name of the EventType ({effdbc2d-e467-4b0b-80a9-9dda251bfa5c}) of ThingClass button</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="48"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="48"/>
<source>ON/OFF Button</source> <source>ON/OFF Button</source>
<extracomment>The name of the DeviceClass ({430d188c-476d-4825-a9bd-86dfa3094b56})</extracomment> <extracomment>The name of the ThingClass ({430d188c-476d-4825-a9bd-86dfa3094b56})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="69"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="69"/>
<source>press ON</source> <source>press ON</source>
<extracomment>The name of the ActionType ({892596d2-0863-4807-97da-469b9f7003f2}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the ActionType ({892596d2-0863-4807-97da-469b9f7003f2}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="66"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="66"/>
<source>press OFF</source> <source>press OFF</source>
<extracomment>The name of the ActionType ({a8d64050-0b58-4ccf-b052-77ce2b7368ad}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the ActionType ({a8d64050-0b58-4ccf-b052-77ce2b7368ad}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="45"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="45"/>
<source>ON pressed</source> <source>ON pressed</source>
<extracomment>The name of the EventType ({4eeba6a2-e4c7-4a2e-8360-2797d98114e6}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the EventType ({4eeba6a2-e4c7-4a2e-8360-2797d98114e6}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="42"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/genericelements/plugininfo.h" line="42"/>
<source>OFF pressed</source> <source>OFF pressed</source>
<extracomment>The name of the EventType ({b636c5f3-2eb0-4682-96d4-88a4aa9d2c12}) of DeviceClass onOffButton</extracomment> <extracomment>The name of the EventType ({b636c5f3-2eb0-4682-96d4-88a4aa9d2c12}) of ThingClass onOffButton</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>

View File

@ -1,163 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*!
\page genericinterfaces.html
\title Generic interfaces
\brief Common interfaces to test the rule engine.
\ingroup plugins
\ingroup nymea-tests
The generic interfaces plugin allows you create virtual buttons, which can be connected with a rule. This gives you
the possibility to execute multiple \l{Action}{Actions} with one signal. Without a rule this generic interfaces are
useless.
\chapter Plugin properties
Following JSON file contains the definition and the description of all available \l{DeviceClass}{DeviceClasses}
and \l{Vendor}{Vendors} of this \l{DevicePlugin}.
For more details how to read this JSON file please check out the documentation for \l{The plugin JSON File}.
\quotefile plugins/deviceplugins/genericinterfaces/deviceplugingenericinterfaces.json
*/
#include "deviceplugingenericinterfaces.h"
#include "devices/devicemanager.h"
#include "plugininfo.h"
#include <QDebug>
DevicePluginGenericInterfaces::DevicePluginGenericInterfaces()
{
}
void DevicePluginGenericInterfaces::setupDevice(DeviceSetupInfo *info)
{
info->finish(Device::DeviceErrorNoError);
}
void DevicePluginGenericInterfaces::executeAction(DeviceActionInfo *info)
{
Device *device = info->device();
Action action = info->action();
if (device->deviceClassId() == awningDeviceClassId) {
if (action.actionTypeId() == awningOpenActionTypeId) {
device->setStateValue(awningStatusStateTypeId, "Opening");
device->setStateValue(awningClosingOutputStateTypeId, false);
device->setStateValue(awningOpeningOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == awningStopActionTypeId) {
device->setStateValue(awningStatusStateTypeId, "Stopped");
device->setStateValue(awningOpeningOutputStateTypeId, false);
device->setStateValue(awningClosingOutputStateTypeId, false);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == awningCloseActionTypeId) {
device->setStateValue(awningStatusStateTypeId, "Closing");
device->setStateValue(awningOpeningOutputStateTypeId, false);
device->setStateValue(awningClosingOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
if (device->deviceClassId() == blindDeviceClassId ) {
if (action.actionTypeId() == blindOpenActionTypeId) {
device->setStateValue(blindStatusStateTypeId, "Opening");
device->setStateValue(blindClosingOutputStateTypeId, false);
device->setStateValue(blindOpeningOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == blindStopActionTypeId) {
device->setStateValue(blindStatusStateTypeId, "Stopped");
device->setStateValue(blindOpeningOutputStateTypeId, false);
device->setStateValue(blindClosingOutputStateTypeId, false);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == blindCloseActionTypeId) {
device->setStateValue(blindStatusStateTypeId, "Closing");
device->setStateValue(blindOpeningOutputStateTypeId, false);
device->setStateValue(blindClosingOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
if (device->deviceClassId() == shutterDeviceClassId) {
if (action.actionTypeId() == shutterOpenActionTypeId) {
device->setStateValue(shutterStatusStateTypeId, "Opening");
device->setStateValue(shutterClosingOutputStateTypeId, false);
device->setStateValue(shutterOpeningOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == shutterStopActionTypeId) {
device->setStateValue(shutterStatusStateTypeId, "Stopped");
device->setStateValue(shutterOpeningOutputStateTypeId, false);
device->setStateValue(shutterClosingOutputStateTypeId, false);
return info->finish(Device::DeviceErrorNoError);
}
if (action.actionTypeId() == shutterCloseActionTypeId) {
device->setStateValue(shutterStatusStateTypeId, "Closing");
device->setStateValue(shutterOpeningOutputStateTypeId, false);
device->setStateValue(shutterClosingOutputStateTypeId, true);
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
if (device->deviceClassId() == socketDeviceClassId) {
if (action.actionTypeId() == socketPowerActionTypeId) {
device->setStateValue(socketPowerStateTypeId, action.param(socketPowerActionPowerParamTypeId).value());
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
if (device->deviceClassId() == lightDeviceClassId) {
if (action.actionTypeId() == lightPowerActionTypeId) {
device->setStateValue(lightPowerStateTypeId, action.param(lightPowerActionPowerParamTypeId).value());
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
if (device->deviceClassId() == heatingDeviceClassId) {
if (action.actionTypeId() == heatingPowerActionTypeId) {
device->setStateValue(heatingPowerStateTypeId, action.param(heatingPowerActionPowerParamTypeId).value());
return info->finish(Device::DeviceErrorNoError);
}
return info->finish(Device::DeviceErrorActionTypeNotFound);
}
return info->finish(Device::DeviceErrorDeviceClassNotFound);
}

View File

@ -1,12 +1,12 @@
include(../plugins.pri) include(../plugins.pri)
TARGET = $$qtLibraryTarget(nymea_deviceplugingenericinterfaces) TARGET = $$qtLibraryTarget(nymea_integrationplugingenericinterfaces)
SOURCES += \ SOURCES += \
deviceplugingenericinterfaces.cpp integrationplugingenericinterfaces.cpp
HEADERS += \ HEADERS += \
deviceplugingenericinterfaces.h integrationplugingenericinterfaces.h

View File

@ -0,0 +1,162 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*!
\page genericinterfaces.html
\title Generic interfaces
\brief Common interfaces to test the rule engine.
\ingroup plugins
\ingroup nymea-tests
The generic interfaces plugin allows you create virtual buttons, which can be connected with a rule. This gives you
the possibility to execute multiple \l{Action}{Actions} with one signal. Without a rule this generic interfaces are
useless.
\chapter Plugin properties
Following JSON file contains the definition and the description of all available \l{ThingClass}{DeviceClasses}
and \l{Vendor}{Vendors} of this \l{DevicePlugin}.
For more details how to read this JSON file please check out the documentation for \l{The plugin JSON File}.
\quotefile plugins/deviceplugins/genericinterfaces/deviceplugingenericinterfaces.json
*/
#include "integrationplugingenericinterfaces.h"
#include "plugininfo.h"
#include <QDebug>
IntegrationPluginGenericInterfaces::IntegrationPluginGenericInterfaces()
{
}
void IntegrationPluginGenericInterfaces::setupThing(ThingSetupInfo *info)
{
info->finish(Thing::ThingErrorNoError);
}
void IntegrationPluginGenericInterfaces::executeAction(ThingActionInfo *info)
{
Thing *thing = info->thing();
Action action = info->action();
if (thing->thingClassId() == awningThingClassId) {
if (action.actionTypeId() == awningOpenActionTypeId) {
thing->setStateValue(awningStatusStateTypeId, "Opening");
thing->setStateValue(awningClosingOutputStateTypeId, false);
thing->setStateValue(awningOpeningOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == awningStopActionTypeId) {
thing->setStateValue(awningStatusStateTypeId, "Stopped");
thing->setStateValue(awningOpeningOutputStateTypeId, false);
thing->setStateValue(awningClosingOutputStateTypeId, false);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == awningCloseActionTypeId) {
thing->setStateValue(awningStatusStateTypeId, "Closing");
thing->setStateValue(awningOpeningOutputStateTypeId, false);
thing->setStateValue(awningClosingOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == blindThingClassId ) {
if (action.actionTypeId() == blindOpenActionTypeId) {
thing->setStateValue(blindStatusStateTypeId, "Opening");
thing->setStateValue(blindClosingOutputStateTypeId, false);
thing->setStateValue(blindOpeningOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == blindStopActionTypeId) {
thing->setStateValue(blindStatusStateTypeId, "Stopped");
thing->setStateValue(blindOpeningOutputStateTypeId, false);
thing->setStateValue(blindClosingOutputStateTypeId, false);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == blindCloseActionTypeId) {
thing->setStateValue(blindStatusStateTypeId, "Closing");
thing->setStateValue(blindOpeningOutputStateTypeId, false);
thing->setStateValue(blindClosingOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == shutterThingClassId) {
if (action.actionTypeId() == shutterOpenActionTypeId) {
thing->setStateValue(shutterStatusStateTypeId, "Opening");
thing->setStateValue(shutterClosingOutputStateTypeId, false);
thing->setStateValue(shutterOpeningOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == shutterStopActionTypeId) {
thing->setStateValue(shutterStatusStateTypeId, "Stopped");
thing->setStateValue(shutterOpeningOutputStateTypeId, false);
thing->setStateValue(shutterClosingOutputStateTypeId, false);
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == shutterCloseActionTypeId) {
thing->setStateValue(shutterStatusStateTypeId, "Closing");
thing->setStateValue(shutterOpeningOutputStateTypeId, false);
thing->setStateValue(shutterClosingOutputStateTypeId, true);
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == socketThingClassId) {
if (action.actionTypeId() == socketPowerActionTypeId) {
thing->setStateValue(socketPowerStateTypeId, action.param(socketPowerActionPowerParamTypeId).value());
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == lightThingClassId) {
if (action.actionTypeId() == lightPowerActionTypeId) {
thing->setStateValue(lightPowerStateTypeId, action.param(lightPowerActionPowerParamTypeId).value());
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == heatingThingClassId) {
if (action.actionTypeId() == heatingPowerActionTypeId) {
thing->setStateValue(heatingPowerStateTypeId, action.param(heatingPowerActionPowerParamTypeId).value());
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
return info->finish(Thing::ThingErrorThingClassNotFound);
}

View File

@ -28,22 +28,22 @@
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef DEVICEPLUGINGENERICINTERFACES_H #ifndef INTEGRATIONPLUGINGENERICINTERFACES_H
#define DEVICEPLUGINGENERICINTERFACES_H #define INTEGRATIONPLUGINGENERICINTERFACES_H
#include "devices/deviceplugin.h" #include "integrations/integrationplugin.h"
class DevicePluginGenericInterfaces : public DevicePlugin class IntegrationPluginGenericInterfaces : public IntegrationPlugin
{ {
Q_OBJECT Q_OBJECT
Q_PLUGIN_METADATA(IID "io.nymea.DevicePlugin" FILE "deviceplugingenericinterfaces.json") Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationplugingenericinterfaces.json")
Q_INTERFACES(DevicePlugin) Q_INTERFACES(IntegrationPlugin)
public: public:
explicit DevicePluginGenericInterfaces(); explicit IntegrationPluginGenericInterfaces();
void setupDevice(DeviceSetupInfo *info) override; void setupThing(ThingSetupInfo *info) override;
void executeAction(DeviceActionInfo *info) override; void executeAction(ThingActionInfo *info) override;
}; };
#endif // DEVICEPLUGINGENERICINTERFACES_H #endif // INTEGRATIONPLUGINGENERICINTERFACES_H

View File

@ -7,7 +7,7 @@
"name": "nymea", "name": "nymea",
"displayName": "nymea", "displayName": "nymea",
"id": "2062d64d-3232-433c-88bc-0d33c0ba2ba6", "id": "2062d64d-3232-433c-88bc-0d33c0ba2ba6",
"deviceClasses": [ "thingClasses": [
{ {
"id": "9e69585f-90ba-44e4-ad90-5b4bffbe345a", "id": "9e69585f-90ba-44e4-ad90-5b4bffbe345a",
"name": "awning", "name": "awning",

View File

@ -5,45 +5,45 @@
<name>GenericInterfaces</name> <name>GenericInterfaces</name>
<message> <message>
<source>Awning interface</source> <source>Awning interface</source>
<extracomment>The name of the DeviceClass ({9e69585f-90ba-44e4-ad90-5b4bffbe345a})</extracomment> <extracomment>The name of the ThingClass ({9e69585f-90ba-44e4-ad90-5b4bffbe345a})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Blind interface</source> <source>Blind interface</source>
<extracomment>The name of the DeviceClass ({17ee3657-6ad8-4ae2-8959-3cf66cec8d13})</extracomment> <extracomment>The name of the ThingClass ({17ee3657-6ad8-4ae2-8959-3cf66cec8d13})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Close</source> <source>Close</source>
<extracomment>The name of the ActionType ({cf5303f1-67c7-4cef-b11c-eb9de6fc8a87}) of DeviceClass shutter <extracomment>The name of the ActionType ({cf5303f1-67c7-4cef-b11c-eb9de6fc8a87}) of ThingClass shutter
---------- ----------
The name of the ActionType ({86e9cf21-7487-47c4-b4be-4a940d7235fb}) of DeviceClass blind The name of the ActionType ({86e9cf21-7487-47c4-b4be-4a940d7235fb}) of ThingClass blind
---------- ----------
The name of the ActionType ({53b5ba77-9a34-4cd6-ad24-fb01fc465f98}) of DeviceClass awning</extracomment> The name of the ActionType ({53b5ba77-9a34-4cd6-ad24-fb01fc465f98}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Closing output</source> <source>Closing output</source>
<extracomment>The name of the ParamType (DeviceClass: shutter, EventType: closingOutput, ID: {1c35df0e-4c41-455f-893a-0145377952a0}) <extracomment>The name of the ParamType (ThingClass: shutter, EventType: closingOutput, ID: {1c35df0e-4c41-455f-893a-0145377952a0})
---------- ----------
The name of the StateType ({1c35df0e-4c41-455f-893a-0145377952a0}) of DeviceClass shutter The name of the StateType ({1c35df0e-4c41-455f-893a-0145377952a0}) of ThingClass shutter
---------- ----------
The name of the ParamType (DeviceClass: blind, EventType: closingOutput, ID: {9b673430-572d-4a9c-85d3-dafadbe541cd}) The name of the ParamType (ThingClass: blind, EventType: closingOutput, ID: {9b673430-572d-4a9c-85d3-dafadbe541cd})
---------- ----------
The name of the StateType ({9b673430-572d-4a9c-85d3-dafadbe541cd}) of DeviceClass blind The name of the StateType ({9b673430-572d-4a9c-85d3-dafadbe541cd}) of ThingClass blind
---------- ----------
The name of the ParamType (DeviceClass: awning, EventType: closingOutput, ID: {59bfd575-709f-4e43-9726-de26e6d4ca8b}) The name of the ParamType (ThingClass: awning, EventType: closingOutput, ID: {59bfd575-709f-4e43-9726-de26e6d4ca8b})
---------- ----------
The name of the StateType ({59bfd575-709f-4e43-9726-de26e6d4ca8b}) of DeviceClass awning</extracomment> The name of the StateType ({59bfd575-709f-4e43-9726-de26e6d4ca8b}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Closing output changed</source> <source>Closing output changed</source>
<extracomment>The name of the EventType ({1c35df0e-4c41-455f-893a-0145377952a0}) of DeviceClass shutter <extracomment>The name of the EventType ({1c35df0e-4c41-455f-893a-0145377952a0}) of ThingClass shutter
---------- ----------
The name of the EventType ({9b673430-572d-4a9c-85d3-dafadbe541cd}) of DeviceClass blind The name of the EventType ({9b673430-572d-4a9c-85d3-dafadbe541cd}) of ThingClass blind
---------- ----------
The name of the EventType ({59bfd575-709f-4e43-9726-de26e6d4ca8b}) of DeviceClass awning</extracomment> The name of the EventType ({59bfd575-709f-4e43-9726-de26e6d4ca8b}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -53,127 +53,127 @@ The name of the EventType ({59bfd575-709f-4e43-9726-de26e6d4ca8b}) of DeviceClas
</message> </message>
<message> <message>
<source>Heating interface</source> <source>Heating interface</source>
<extracomment>The name of the DeviceClass ({392854c4-3d14-4cf8-96cd-d933526bd197})</extracomment> <extracomment>The name of the ThingClass ({392854c4-3d14-4cf8-96cd-d933526bd197})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Light interface</source> <source>Light interface</source>
<extracomment>The name of the DeviceClass ({c50d3216-f307-4f9f-8190-4391510c385c})</extracomment> <extracomment>The name of the ThingClass ({c50d3216-f307-4f9f-8190-4391510c385c})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Open</source> <source>Open</source>
<extracomment>The name of the ActionType ({9deb662d-2378-4345-a898-8742d41e43c1}) of DeviceClass shutter <extracomment>The name of the ActionType ({9deb662d-2378-4345-a898-8742d41e43c1}) of ThingClass shutter
---------- ----------
The name of the ActionType ({120dc265-dbbb-4f19-9d31-c372c23479c0}) of DeviceClass blind The name of the ActionType ({120dc265-dbbb-4f19-9d31-c372c23479c0}) of ThingClass blind
---------- ----------
The name of the ActionType ({979e9c51-5a93-4635-85e3-01874306b229}) of DeviceClass awning</extracomment> The name of the ActionType ({979e9c51-5a93-4635-85e3-01874306b229}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Opening output</source> <source>Opening output</source>
<extracomment>The name of the ParamType (DeviceClass: shutter, EventType: openingOutput, ID: {cc547728-b309-4695-b355-49748ef2521c}) <extracomment>The name of the ParamType (ThingClass: shutter, EventType: openingOutput, ID: {cc547728-b309-4695-b355-49748ef2521c})
---------- ----------
The name of the StateType ({cc547728-b309-4695-b355-49748ef2521c}) of DeviceClass shutter The name of the StateType ({cc547728-b309-4695-b355-49748ef2521c}) of ThingClass shutter
---------- ----------
The name of the ParamType (DeviceClass: blind, EventType: openingOutput, ID: {b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b}) The name of the ParamType (ThingClass: blind, EventType: openingOutput, ID: {b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b})
---------- ----------
The name of the StateType ({b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b}) of DeviceClass blind The name of the StateType ({b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b}) of ThingClass blind
---------- ----------
The name of the ParamType (DeviceClass: awning, EventType: openingOutput, ID: {4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4}) The name of the ParamType (ThingClass: awning, EventType: openingOutput, ID: {4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4})
---------- ----------
The name of the StateType ({4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4}) of DeviceClass awning</extracomment> The name of the StateType ({4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Opening output changed</source> <source>Opening output changed</source>
<extracomment>The name of the EventType ({cc547728-b309-4695-b355-49748ef2521c}) of DeviceClass shutter <extracomment>The name of the EventType ({cc547728-b309-4695-b355-49748ef2521c}) of ThingClass shutter
---------- ----------
The name of the EventType ({b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b}) of DeviceClass blind The name of the EventType ({b2dbf25c-27e5-4f7e-a57d-2ef6d087fa2b}) of ThingClass blind
---------- ----------
The name of the EventType ({4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4}) of DeviceClass awning</extracomment> The name of the EventType ({4bb951a4-ea23-4cf0-9269-41d2c4eaf5a4}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Power</source> <source>Power</source>
<extracomment>The name of the ParamType (DeviceClass: heating, ActionType: power, ID: {409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) <extracomment>The name of the ParamType (ThingClass: heating, ActionType: power, ID: {409b635e-a754-4b5c-b3f0-d1c5a0fb3f03})
---------- ----------
The name of the ParamType (DeviceClass: heating, EventType: power, ID: {409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) The name of the ParamType (ThingClass: heating, EventType: power, ID: {409b635e-a754-4b5c-b3f0-d1c5a0fb3f03})
---------- ----------
The name of the StateType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of DeviceClass heating The name of the StateType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of ThingClass heating
---------- ----------
The name of the ParamType (DeviceClass: light, ActionType: power, ID: {8b6e4a67-6522-408b-b676-8d2f09ed2d54}) The name of the ParamType (ThingClass: light, ActionType: power, ID: {8b6e4a67-6522-408b-b676-8d2f09ed2d54})
---------- ----------
The name of the ParamType (DeviceClass: light, EventType: power, ID: {8b6e4a67-6522-408b-b676-8d2f09ed2d54}) The name of the ParamType (ThingClass: light, EventType: power, ID: {8b6e4a67-6522-408b-b676-8d2f09ed2d54})
---------- ----------
The name of the StateType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of DeviceClass light The name of the StateType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of ThingClass light
---------- ----------
The name of the ParamType (DeviceClass: socket, ActionType: power, ID: {018038d7-1d02-4b17-8fe3-babca044b087}) The name of the ParamType (ThingClass: socket, ActionType: power, ID: {018038d7-1d02-4b17-8fe3-babca044b087})
---------- ----------
The name of the ParamType (DeviceClass: socket, EventType: power, ID: {018038d7-1d02-4b17-8fe3-babca044b087}) The name of the ParamType (ThingClass: socket, EventType: power, ID: {018038d7-1d02-4b17-8fe3-babca044b087})
---------- ----------
The name of the StateType ({018038d7-1d02-4b17-8fe3-babca044b087}) of DeviceClass socket</extracomment> The name of the StateType ({018038d7-1d02-4b17-8fe3-babca044b087}) of ThingClass socket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Power changed</source> <source>Power changed</source>
<extracomment>The name of the EventType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of DeviceClass heating <extracomment>The name of the EventType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of ThingClass heating
---------- ----------
The name of the EventType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of DeviceClass light The name of the EventType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of ThingClass light
---------- ----------
The name of the EventType ({018038d7-1d02-4b17-8fe3-babca044b087}) of DeviceClass socket</extracomment> The name of the EventType ({018038d7-1d02-4b17-8fe3-babca044b087}) of ThingClass socket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Set power</source> <source>Set power</source>
<extracomment>The name of the ActionType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of DeviceClass heating <extracomment>The name of the ActionType ({409b635e-a754-4b5c-b3f0-d1c5a0fb3f03}) of ThingClass heating
---------- ----------
The name of the ActionType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of DeviceClass light The name of the ActionType ({8b6e4a67-6522-408b-b676-8d2f09ed2d54}) of ThingClass light
---------- ----------
The name of the ActionType ({018038d7-1d02-4b17-8fe3-babca044b087}) of DeviceClass socket</extracomment> The name of the ActionType ({018038d7-1d02-4b17-8fe3-babca044b087}) of ThingClass socket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Shutter interface</source> <source>Shutter interface</source>
<extracomment>The name of the DeviceClass ({7917c2e7-d7d2-4c47-a38d-41f7dd7693d9})</extracomment> <extracomment>The name of the ThingClass ({7917c2e7-d7d2-4c47-a38d-41f7dd7693d9})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Socket interface</source> <source>Socket interface</source>
<extracomment>The name of the DeviceClass ({4e7261af-a27b-4446-8346-914ea59f7547})</extracomment> <extracomment>The name of the ThingClass ({4e7261af-a27b-4446-8346-914ea59f7547})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Status</source> <source>Status</source>
<extracomment>The name of the ParamType (DeviceClass: shutter, EventType: status, ID: {6d6e72dc-4d2b-4ec1-82c2-54405a682711}) <extracomment>The name of the ParamType (ThingClass: shutter, EventType: status, ID: {6d6e72dc-4d2b-4ec1-82c2-54405a682711})
---------- ----------
The name of the StateType ({6d6e72dc-4d2b-4ec1-82c2-54405a682711}) of DeviceClass shutter The name of the StateType ({6d6e72dc-4d2b-4ec1-82c2-54405a682711}) of ThingClass shutter
---------- ----------
The name of the ParamType (DeviceClass: blind, EventType: status, ID: {5fdec1e0-51f6-48b9-b743-ba572504b2c1}) The name of the ParamType (ThingClass: blind, EventType: status, ID: {5fdec1e0-51f6-48b9-b743-ba572504b2c1})
---------- ----------
The name of the StateType ({5fdec1e0-51f6-48b9-b743-ba572504b2c1}) of DeviceClass blind The name of the StateType ({5fdec1e0-51f6-48b9-b743-ba572504b2c1}) of ThingClass blind
---------- ----------
The name of the ParamType (DeviceClass: awning, EventType: status, ID: {ff6f2565-2a2e-4d34-b10f-d3f73b676399}) The name of the ParamType (ThingClass: awning, EventType: status, ID: {ff6f2565-2a2e-4d34-b10f-d3f73b676399})
---------- ----------
The name of the StateType ({ff6f2565-2a2e-4d34-b10f-d3f73b676399}) of DeviceClass awning</extracomment> The name of the StateType ({ff6f2565-2a2e-4d34-b10f-d3f73b676399}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Status changed</source> <source>Status changed</source>
<extracomment>The name of the EventType ({6d6e72dc-4d2b-4ec1-82c2-54405a682711}) of DeviceClass shutter <extracomment>The name of the EventType ({6d6e72dc-4d2b-4ec1-82c2-54405a682711}) of ThingClass shutter
---------- ----------
The name of the EventType ({5fdec1e0-51f6-48b9-b743-ba572504b2c1}) of DeviceClass blind The name of the EventType ({5fdec1e0-51f6-48b9-b743-ba572504b2c1}) of ThingClass blind
---------- ----------
The name of the EventType ({ff6f2565-2a2e-4d34-b10f-d3f73b676399}) of DeviceClass awning</extracomment> The name of the EventType ({ff6f2565-2a2e-4d34-b10f-d3f73b676399}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Stop</source> <source>Stop</source>
<extracomment>The name of the ActionType ({db5f3332-1f4e-4f9e-84d2-93c5d7de315c}) of DeviceClass shutter <extracomment>The name of the ActionType ({db5f3332-1f4e-4f9e-84d2-93c5d7de315c}) of ThingClass shutter
---------- ----------
The name of the ActionType ({1a924c9a-5dcb-4b1c-8fd6-ab101098e007}) of DeviceClass blind The name of the ActionType ({1a924c9a-5dcb-4b1c-8fd6-ab101098e007}) of ThingClass blind
---------- ----------
The name of the ActionType ({555cafe4-bd12-42c6-bab1-8cd59af6468e}) of DeviceClass awning</extracomment> The name of the ActionType ({555cafe4-bd12-42c6-bab1-8cd59af6468e}) of ThingClass awning</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>