somfytahoma: Add support for smoke detectors

This commit is contained in:
Christian Fetzer 2022-05-23 17:13:54 +02:00
parent 3f526cbf21
commit 2314335d69
4 changed files with 207 additions and 66 deletions

View File

@ -22,5 +22,5 @@ entering your personal username + password for the Somfy TaHoma API.
## Supported devices ## Supported devices
Currently this plugin supports all roller shutters, blinds, garage Currently this plugin supports all roller shutters, blinds, garage
door, awning drives and lights that are connectable to the TaHoma gateway. door, awning drives, lights and smoke detectors that are connectable to the
These are Somfy iO devices as well as RTS devices. TaHoma gateway. These are Somfy iO devices as well as RTS devices.

View File

@ -183,6 +183,16 @@ void IntegrationPluginSomfyTahoma::setupThing(ThingSetupInfo *info)
descriptor.setParams(ParamList() << Param(lightThingDeviceUrlParamTypeId, deviceUrl)); descriptor.setParams(ParamList() << Param(lightThingDeviceUrlParamTypeId, deviceUrl));
unknownDevices.append(descriptor); unknownDevices.append(descriptor);
} }
} else if (type == QStringLiteral("io:SomfySmokeIOSystemSensor")) {
Thing *thing = myThings().findByParams(ParamList() << Param(smokedetectorThingDeviceUrlParamTypeId, deviceUrl));
if (thing) {
qCDebug(dcSomfyTahoma()) << "Found existing smoke detector:" << label << deviceUrl;
} else {
qCInfo(dcSomfyTahoma()) << "Found new smoke detector:" << label << deviceUrl;
ThingDescriptor descriptor(smokedetectorThingClassId, label, QString(), gatewayId);
descriptor.setParams(ParamList() << Param(smokedetectorThingDeviceUrlParamTypeId, deviceUrl));
unknownDevices.append(descriptor);
}
} else if (type == QStringLiteral("io:StackComponent") || } else if (type == QStringLiteral("io:StackComponent") ||
type.startsWith("internal:")) { type.startsWith("internal:")) {
continue; continue;
@ -201,7 +211,8 @@ void IntegrationPluginSomfyTahoma::setupThing(ThingSetupInfo *info)
info->thing()->thingClassId() == venetianblindThingClassId || info->thing()->thingClassId() == venetianblindThingClassId ||
info->thing()->thingClassId() == garagedoorThingClassId || info->thing()->thingClassId() == garagedoorThingClassId ||
info->thing()->thingClassId() == awningThingClassId || info->thing()->thingClassId() == awningThingClassId ||
info->thing()->thingClassId() == lightThingClassId) { info->thing()->thingClassId() == lightThingClassId ||
info->thing()->thingClassId() == smokedetectorThingClassId) {
info->finish(Thing::ThingErrorNoError); info->finish(Thing::ThingErrorNoError);
} }
} }
@ -315,6 +326,10 @@ void IntegrationPluginSomfyTahoma::handleEvents(const QVariantList &events)
if (thing) { if (thing) {
device = thing->name(); device = thing->name();
} }
thing = myThings().findByParams(ParamList() << Param(smokedetectorThingDeviceUrlParamTypeId, eventMap["deviceURL"]));
if (thing) {
device = thing->name();
}
qCDebug(dcSomfyTahoma()) << "Got event" << eventMap["name"].toString() << "for device" << device; qCDebug(dcSomfyTahoma()) << "Got event" << eventMap["name"].toString() << "for device" << device;
qCDebug(dcSomfyTahoma()) << qUtf8Printable(QJsonDocument::fromVariant(eventVariant).toJson()); qCDebug(dcSomfyTahoma()) << qUtf8Printable(QJsonDocument::fromVariant(eventVariant).toJson());
@ -480,6 +495,47 @@ void IntegrationPluginSomfyTahoma::updateThingStates(const QString &deviceUrl, c
} }
return; return;
} }
thing = myThings().findByParams(ParamList() << Param(smokedetectorThingDeviceUrlParamTypeId, deviceUrl));
if (thing) {
foreach (const QVariant &stateVariant, stateList) {
QVariantMap stateMap = stateVariant.toMap();
if (stateMap["name"] == "core:SmokeState") {
thing->setStateValue(smokedetectorFireDetectedStateTypeId, stateMap["value"] == "detected");
} else if (stateMap["name"] == "core:MaintenanceRadioPartBatteryState") {
QString radioBattery = stateMap["value"].toString();
pluginStorage()->beginGroup(thing->id().toString());
pluginStorage()->setValue("radioBatteryState", stateMap["value"]);
QString sensorBattery = pluginStorage()->value("sensorBatteryState", "normal").toString();
pluginStorage()->endGroup();
if (radioBattery == "normal" && sensorBattery == "normal") {
thing->setStateValue(smokedetectorBatteryCriticalStateTypeId, false);
} else {
qCWarning(dcSomfyTahoma()) << "Smoke Detector" << thing->name() << " radio battery is low!";
thing->setStateValue(smokedetectorBatteryCriticalStateTypeId, true);
}
} else if (stateMap["name"] == "core:MaintenanceSensorPartBatteryState") {
QString sensorBattery = stateMap["value"].toString();
pluginStorage()->beginGroup(thing->id().toString());
pluginStorage()->setValue("radioBatteryState", stateMap["value"]);
QString radioBattery = pluginStorage()->value("radioBatteryState", "normal").toString();
pluginStorage()->endGroup();
if (radioBattery == "normal" && sensorBattery == "normal") {
thing->setStateValue(smokedetectorBatteryCriticalStateTypeId, false);
} else {
qCWarning(dcSomfyTahoma()) << "Smoke Detector" << thing->name() << " sensor battery is low!";
thing->setStateValue(smokedetectorBatteryCriticalStateTypeId, true);
}
} else if (stateMap["name"] == "core:StatusState") {
thing->setStateValue(smokedetectorConnectedStateTypeId, stateMap["value"] == "available");
pluginStorage()->beginGroup(thing->id().toString());
pluginStorage()->setValue("connected", stateMap["value"] == "available");
pluginStorage()->endGroup();
} else if (stateMap["name"] == "core:RSSILevelState") {
thing->setStateValue(smokedetectorSignalStrengthStateTypeId, stateMap["value"]);
}
}
return;
}
} }
void IntegrationPluginSomfyTahoma::executeAction(ThingActionInfo *info) void IntegrationPluginSomfyTahoma::executeAction(ThingActionInfo *info)
@ -590,6 +646,8 @@ void IntegrationPluginSomfyTahoma::markDisconnected(Thing *thing)
thing->setStateValue(awningConnectedStateTypeId, false); thing->setStateValue(awningConnectedStateTypeId, false);
} else if (thing->thingClassId() == lightThingClassId) { } else if (thing->thingClassId() == lightThingClassId) {
thing->setStateValue(lightConnectedStateTypeId, false); thing->setStateValue(lightConnectedStateTypeId, false);
} else if (thing->thingClassId() == smokedetectorThingClassId) {
thing->setStateValue(smokedetectorConnectedStateTypeId, false);
} }
foreach (Thing *child, myThings().filterByParentId(thing->id())) { foreach (Thing *child, myThings().filterByParentId(thing->id())) {
markDisconnected(child); markDisconnected(child);
@ -610,6 +668,8 @@ void IntegrationPluginSomfyTahoma::restoreChildConnectedState(Thing *thing)
thing->setStateValue(awningConnectedStateTypeId, pluginStorage()->value("connected").toBool()); thing->setStateValue(awningConnectedStateTypeId, pluginStorage()->value("connected").toBool());
} else if (thing->thingClassId() == lightThingClassId) { } else if (thing->thingClassId() == lightThingClassId) {
thing->setStateValue(lightConnectedStateTypeId, pluginStorage()->value("connected").toBool()); thing->setStateValue(lightConnectedStateTypeId, pluginStorage()->value("connected").toBool());
} else if (thing->thingClassId() == smokedetectorThingClassId) {
thing->setStateValue(smokedetectorConnectedStateTypeId, pluginStorage()->value("connected").toBool());
} }
} }
pluginStorage()->endGroup(); pluginStorage()->endGroup();

View File

@ -444,7 +444,61 @@
"defaultValue": false "defaultValue": false
} }
] ]
},
{
"id": "e883a8ef-1fb7-4d7f-b40b-9cbc0133e58a",
"name": "smokedetector",
"displayName": "Smoke Detector",
"createMethods": ["auto"],
"interfaces": ["firesensor", "battery", "wirelessconnectable"],
"paramTypes": [
{
"id": "3a41017b-87fe-4690-b148-1f69fac67f91",
"displayName": "Device URL",
"name": "deviceUrl",
"type": "QString"
}
],
"stateTypes": [
{
"id": "6c3ee0ce-fc0f-477c-9a01-be61e061463b",
"name": "fireDetected",
"displayName": "Fire detected",
"displayNameEvent": "Fire detected changed",
"type": "bool",
"defaultValue": false
},
{
"id": "8f67b692-243b-4ce8-9983-0d1206439f16",
"name": "batteryCritical",
"displayName": "Battery critical",
"displayNameEvent": "Battery critical changed",
"type": "bool",
"defaultValue": false
},
{
"id": "47f8506c-af7f-4928-b0ce-8c52ce4f740b",
"name": "signalStrength",
"displayName": "Signal strength",
"type": "uint",
"unit": "Percentage",
"displayNameEvent": "Signal strength changed",
"minValue": 0,
"maxValue": 100,
"defaultValue": 0
},
{
"id": "98cf101c-cb0e-47a9-9c27-b6a0cdf9ba4b",
"name": "connected",
"displayName": "Connected",
"type": "bool",
"displayNameEvent": "Connetion state changed",
"defaultValue": false
}
]
} }
] ]
} }
] ]

View File

@ -37,8 +37,8 @@
<context> <context>
<name>SomfyTahoma</name> <name>SomfyTahoma</name>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="93"/> <location filename="../../build/somfytahoma/plugininfo.h" line="99"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="96"/> <location filename="../../build/somfytahoma/plugininfo.h" line="102"/>
<source>Angle</source> <source>Angle</source>
<extracomment>The name of the ParamType (ThingClass: venetianblind, ActionType: angle, ID: {079c7a80-8a1c-4fd7-b40c-6800120c70fb}) <extracomment>The name of the ParamType (ThingClass: venetianblind, ActionType: angle, ID: {079c7a80-8a1c-4fd7-b40c-6800120c70fb})
---------- ----------
@ -46,14 +46,14 @@ The name of the StateType ({079c7a80-8a1c-4fd7-b40c-6800120c70fb}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="99"/> <location filename="../../build/somfytahoma/plugininfo.h" line="105"/>
<source>Awning</source> <source>Awning</source>
<extracomment>The name of the ThingClass ({d3a3bb40-4b2d-4bdc-989f-5254f03b4c90})</extracomment> <extracomment>The name of the ThingClass ({d3a3bb40-4b2d-4bdc-989f-5254f03b4c90})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="102"/> <location filename="../../build/somfytahoma/plugininfo.h" line="111"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="105"/> <location filename="../../build/somfytahoma/plugininfo.h" line="114"/>
<source>Brightness</source> <source>Brightness</source>
<extracomment>The name of the ParamType (ThingClass: light, ActionType: brightness, ID: {1b51ce68-1f7e-4f06-b68d-bfca2d61b353}) <extracomment>The name of the ParamType (ThingClass: light, ActionType: brightness, ID: {1b51ce68-1f7e-4f06-b68d-bfca2d61b353})
---------- ----------
@ -61,10 +61,10 @@ The name of the StateType ({1b51ce68-1f7e-4f06-b68d-bfca2d61b353}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="108"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="111"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="114"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="117"/> <location filename="../../build/somfytahoma/plugininfo.h" line="117"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="120"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="123"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="126"/>
<source>Close</source> <source>Close</source>
<extracomment>The name of the ActionType ({20cae53b-f36d-425b-b937-3e46519893a3}) of ThingClass awning <extracomment>The name of the ActionType ({20cae53b-f36d-425b-b937-3e46519893a3}) of ThingClass awning
---------- ----------
@ -76,15 +76,18 @@ The name of the ActionType ({baf377c6-9fba-44cf-9f14-af0101f874b5}) of ThingClas
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="120"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="123"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="126"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="129"/> <location filename="../../build/somfytahoma/plugininfo.h" line="129"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="132"/> <location filename="../../build/somfytahoma/plugininfo.h" line="132"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="135"/> <location filename="../../build/somfytahoma/plugininfo.h" line="135"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="138"/> <location filename="../../build/somfytahoma/plugininfo.h" line="138"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="141"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="144"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="147"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="150"/>
<source>Connected</source> <source>Connected</source>
<extracomment>The name of the StateType ({fb8dcd84-70ad-4f3e-97c4-93296608e33d}) of ThingClass light <extracomment>The name of the StateType ({98cf101c-cb0e-47a9-9c27-b6a0cdf9ba4b}) of ThingClass smokedetector
----------
The name of the StateType ({fb8dcd84-70ad-4f3e-97c4-93296608e33d}) of ThingClass light
---------- ----------
The name of the StateType ({8f972969-10dd-4954-9c8b-de56070a6668}) of ThingClass awning The name of the StateType ({8f972969-10dd-4954-9c8b-de56070a6668}) of ThingClass awning
---------- ----------
@ -100,13 +103,16 @@ The name of the StateType ({10ebf650-a93a-4ee3-945b-fba10d4e35a5}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="141"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="144"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="147"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="150"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="153"/> <location filename="../../build/somfytahoma/plugininfo.h" line="153"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="156"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="159"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="162"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="165"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="168"/>
<source>Device URL</source> <source>Device URL</source>
<extracomment>The name of the ParamType (ThingClass: light, Type: thing, ID: {9cd2e0f2-a02f-478a-9358-6ff0f5aba9f5}) <extracomment>The name of the ParamType (ThingClass: smokedetector, Type: thing, ID: {3a41017b-87fe-4690-b148-1f69fac67f91})
----------
The name of the ParamType (ThingClass: light, Type: thing, ID: {9cd2e0f2-a02f-478a-9358-6ff0f5aba9f5})
---------- ----------
The name of the ParamType (ThingClass: awning, Type: thing, ID: {ca60f12e-b9da-427a-a149-195922399fd5}) The name of the ParamType (ThingClass: awning, Type: thing, ID: {ca60f12e-b9da-427a-a149-195922399fd5})
---------- ----------
@ -118,34 +124,34 @@ The name of the ParamType (ThingClass: rollershutter, Type: thing, ID: {b3d20d6a
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="156"/> <location filename="../../build/somfytahoma/plugininfo.h" line="174"/>
<source>Garage Door</source> <source>Garage Door</source>
<extracomment>The name of the ThingClass ({cb206d74-b13c-4466-98c6-070b19ebd23a})</extracomment> <extracomment>The name of the ThingClass ({cb206d74-b13c-4466-98c6-070b19ebd23a})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="159"/> <location filename="../../build/somfytahoma/plugininfo.h" line="177"/>
<source>Gateway Id</source> <source>Gateway Id</source>
<extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {e321a7d6-6dcb-4a37-baf1-c7008f2d5bdb})</extracomment> <extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {e321a7d6-6dcb-4a37-baf1-c7008f2d5bdb})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="165"/> <location filename="../../build/somfytahoma/plugininfo.h" line="183"/>
<source>Light</source> <source>Light</source>
<extracomment>The name of the ThingClass ({e569a3cc-6e79-4e24-af35-c5fa327a7314})</extracomment> <extracomment>The name of the ThingClass ({e569a3cc-6e79-4e24-af35-c5fa327a7314})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="168"/> <location filename="../../build/somfytahoma/plugininfo.h" line="186"/>
<source>Logged in</source> <source>Logged in</source>
<extracomment>The name of the StateType ({97fefa85-db79-4efd-8d83-4a15d72996e1}) of ThingClass tahoma</extracomment> <extracomment>The name of the StateType ({97fefa85-db79-4efd-8d83-4a15d72996e1}) of ThingClass tahoma</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="171"/> <location filename="../../build/somfytahoma/plugininfo.h" line="189"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="174"/> <location filename="../../build/somfytahoma/plugininfo.h" line="192"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="177"/> <location filename="../../build/somfytahoma/plugininfo.h" line="195"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="180"/> <location filename="../../build/somfytahoma/plugininfo.h" line="198"/>
<source>Moving</source> <source>Moving</source>
<extracomment>The name of the StateType ({2507ac5a-9658-42cb-80f6-73f673c32771}) of ThingClass awning <extracomment>The name of the StateType ({2507ac5a-9658-42cb-80f6-73f673c32771}) of ThingClass awning
---------- ----------
@ -157,10 +163,10 @@ The name of the StateType ({fa9446ba-da30-4d49-8fb6-f410ecc7dba0}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="183"/> <location filename="../../build/somfytahoma/plugininfo.h" line="201"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="186"/> <location filename="../../build/somfytahoma/plugininfo.h" line="204"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="189"/> <location filename="../../build/somfytahoma/plugininfo.h" line="207"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="192"/> <location filename="../../build/somfytahoma/plugininfo.h" line="210"/>
<source>Open</source> <source>Open</source>
<extracomment>The name of the ActionType ({9612954c-02cb-4159-9a29-f36eaf1c7f6a}) of ThingClass awning <extracomment>The name of the ActionType ({9612954c-02cb-4159-9a29-f36eaf1c7f6a}) of ThingClass awning
---------- ----------
@ -172,14 +178,14 @@ The name of the ActionType ({a0460180-e799-4bc6-83ba-11731ef124a3}) of ThingClas
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="195"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="198"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="201"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="204"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="207"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="210"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="213"/> <location filename="../../build/somfytahoma/plugininfo.h" line="213"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="216"/> <location filename="../../build/somfytahoma/plugininfo.h" line="216"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="219"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="222"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="225"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="228"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="231"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="234"/>
<source>Percentage</source> <source>Percentage</source>
<extracomment>The name of the ParamType (ThingClass: awning, ActionType: percentage, ID: {c409cb9b-82ef-4f59-ae89-eb783d4ebe97}) <extracomment>The name of the ParamType (ThingClass: awning, ActionType: percentage, ID: {c409cb9b-82ef-4f59-ae89-eb783d4ebe97})
---------- ----------
@ -199,8 +205,8 @@ The name of the StateType ({f954ffc7-a6aa-4d30-aee0-0484631c3344}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="219"/> <location filename="../../build/somfytahoma/plugininfo.h" line="237"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="222"/> <location filename="../../build/somfytahoma/plugininfo.h" line="240"/>
<source>Power</source> <source>Power</source>
<extracomment>The name of the ParamType (ThingClass: light, ActionType: power, ID: {654ddcdf-b0b7-4c38-a70d-878f0f3857a5}) <extracomment>The name of the ParamType (ThingClass: light, ActionType: power, ID: {654ddcdf-b0b7-4c38-a70d-878f0f3857a5})
---------- ----------
@ -208,34 +214,46 @@ The name of the StateType ({654ddcdf-b0b7-4c38-a70d-878f0f3857a5}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="162"/> <location filename="../../build/somfytahoma/plugininfo.h" line="180"/>
<source>Gateway pin</source> <source>Gateway pin</source>
<extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {30b73244-e5bb-4c00-9332-702a60c03420})</extracomment> <extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {30b73244-e5bb-4c00-9332-702a60c03420})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="225"/> <location filename="../../build/somfytahoma/plugininfo.h" line="108"/>
<source>Battery critical</source>
<extracomment>The name of the StateType ({8f67b692-243b-4ce8-9983-0d1206439f16}) of ThingClass smokedetector</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="171"/>
<source>Fire detected</source>
<extracomment>The name of the StateType ({6c3ee0ce-fc0f-477c-9a01-be61e061463b}) of ThingClass smokedetector</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="243"/>
<source>Roller Shutter</source> <source>Roller Shutter</source>
<extracomment>The name of the ThingClass ({6b187fe0-a987-462d-90ac-c48efc0d0fc0})</extracomment> <extracomment>The name of the ThingClass ({6b187fe0-a987-462d-90ac-c48efc0d0fc0})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="228"/> <location filename="../../build/somfytahoma/plugininfo.h" line="246"/>
<source>Set angle</source> <source>Set angle</source>
<extracomment>The name of the ActionType ({079c7a80-8a1c-4fd7-b40c-6800120c70fb}) of ThingClass venetianblind</extracomment> <extracomment>The name of the ActionType ({079c7a80-8a1c-4fd7-b40c-6800120c70fb}) of ThingClass venetianblind</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="231"/> <location filename="../../build/somfytahoma/plugininfo.h" line="249"/>
<source>Set brightness</source> <source>Set brightness</source>
<extracomment>The name of the ActionType ({1b51ce68-1f7e-4f06-b68d-bfca2d61b353}) of ThingClass light</extracomment> <extracomment>The name of the ActionType ({1b51ce68-1f7e-4f06-b68d-bfca2d61b353}) of ThingClass light</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="234"/> <location filename="../../build/somfytahoma/plugininfo.h" line="252"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="237"/> <location filename="../../build/somfytahoma/plugininfo.h" line="255"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="240"/> <location filename="../../build/somfytahoma/plugininfo.h" line="258"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="243"/> <location filename="../../build/somfytahoma/plugininfo.h" line="261"/>
<source>Set percentage</source> <source>Set percentage</source>
<extracomment>The name of the ActionType ({c409cb9b-82ef-4f59-ae89-eb783d4ebe97}) of ThingClass awning <extracomment>The name of the ActionType ({c409cb9b-82ef-4f59-ae89-eb783d4ebe97}) of ThingClass awning
---------- ----------
@ -247,19 +265,22 @@ The name of the ActionType ({f954ffc7-a6aa-4d30-aee0-0484631c3344}) of ThingClas
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="246"/> <location filename="../../build/somfytahoma/plugininfo.h" line="264"/>
<source>Set power</source> <source>Set power</source>
<extracomment>The name of the ActionType ({654ddcdf-b0b7-4c38-a70d-878f0f3857a5}) of ThingClass light</extracomment> <extracomment>The name of the ActionType ({654ddcdf-b0b7-4c38-a70d-878f0f3857a5}) of ThingClass light</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="249"/> <location filename="../../build/somfytahoma/plugininfo.h" line="267"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="252"/> <location filename="../../build/somfytahoma/plugininfo.h" line="270"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="255"/> <location filename="../../build/somfytahoma/plugininfo.h" line="273"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="258"/> <location filename="../../build/somfytahoma/plugininfo.h" line="276"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="261"/> <location filename="../../build/somfytahoma/plugininfo.h" line="279"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="282"/>
<source>Signal strength</source> <source>Signal strength</source>
<extracomment>The name of the StateType ({cfaa5533-d26e-4545-9f44-6567c9d7888a}) of ThingClass light <extracomment>The name of the StateType ({47f8506c-af7f-4928-b0ce-8c52ce4f740b}) of ThingClass smokedetector
----------
The name of the StateType ({cfaa5533-d26e-4545-9f44-6567c9d7888a}) of ThingClass light
---------- ----------
The name of the StateType ({b2ad6f4a-c507-45c3-a951-b344603cc3fc}) of ThingClass awning The name of the StateType ({b2ad6f4a-c507-45c3-a951-b344603cc3fc}) of ThingClass awning
---------- ----------
@ -271,28 +292,34 @@ The name of the StateType ({67594d96-47a2-4360-a1b8-79e4f22f9ed0}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="264"/> <location filename="../../build/somfytahoma/plugininfo.h" line="285"/>
<source>Smoke Detector</source>
<extracomment>The name of the ThingClass ({e883a8ef-1fb7-4d7f-b40b-9cbc0133e58a})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="288"/>
<source>Somfy</source> <source>Somfy</source>
<extracomment>The name of the vendor ({4e42a22a-ccfb-4677-89e3-f7fa16bf6be0})</extracomment> <extracomment>The name of the vendor ({4e42a22a-ccfb-4677-89e3-f7fa16bf6be0})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="267"/> <location filename="../../build/somfytahoma/plugininfo.h" line="291"/>
<source>Somfy Tahoma</source> <source>Somfy Tahoma</source>
<extracomment>The name of the plugin SomfyTahoma ({4e8be1c1-daa8-4e21-9e85-b2372ab1a450})</extracomment> <extracomment>The name of the plugin SomfyTahoma ({4e8be1c1-daa8-4e21-9e85-b2372ab1a450})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="270"/> <location filename="../../build/somfytahoma/plugininfo.h" line="294"/>
<source>State</source> <source>State</source>
<extracomment>The name of the StateType ({12af28f1-475e-4d05-9bbb-adbb86dcd69c}) of ThingClass garagedoor</extracomment> <extracomment>The name of the StateType ({12af28f1-475e-4d05-9bbb-adbb86dcd69c}) of ThingClass garagedoor</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="273"/> <location filename="../../build/somfytahoma/plugininfo.h" line="297"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="276"/> <location filename="../../build/somfytahoma/plugininfo.h" line="300"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="279"/> <location filename="../../build/somfytahoma/plugininfo.h" line="303"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="282"/> <location filename="../../build/somfytahoma/plugininfo.h" line="306"/>
<source>Stop</source> <source>Stop</source>
<extracomment>The name of the ActionType ({33bec73b-4d15-493a-b553-bcee32c40ee1}) of ThingClass awning <extracomment>The name of the ActionType ({33bec73b-4d15-493a-b553-bcee32c40ee1}) of ThingClass awning
---------- ----------
@ -304,25 +331,25 @@ The name of the ActionType ({cbccf714-1188-4ac9-9c91-17fe2c99acb3}) of ThingClas
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="285"/> <location filename="../../build/somfytahoma/plugininfo.h" line="309"/>
<source>Tahoma Account</source> <source>Tahoma Account</source>
<extracomment>The name of the ThingClass ({fedd72b8-547d-4e4f-b73e-71344a8ba0c1})</extracomment> <extracomment>The name of the ThingClass ({fedd72b8-547d-4e4f-b73e-71344a8ba0c1})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="288"/> <location filename="../../build/somfytahoma/plugininfo.h" line="312"/>
<source>Tahoma Gateway</source> <source>Tahoma Gateway</source>
<extracomment>The name of the ThingClass ({6c09e0b9-f0cc-4dea-9994-9e039eff78f1})</extracomment> <extracomment>The name of the ThingClass ({6c09e0b9-f0cc-4dea-9994-9e039eff78f1})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="291"/> <location filename="../../build/somfytahoma/plugininfo.h" line="315"/>
<source>User display name</source> <source>User display name</source>
<extracomment>The name of the StateType ({75609987-be60-4932-94f6-ead791b5fa58}) of ThingClass tahoma</extracomment> <extracomment>The name of the StateType ({75609987-be60-4932-94f6-ead791b5fa58}) of ThingClass tahoma</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../build/somfytahoma/plugininfo.h" line="294"/> <location filename="../../build/somfytahoma/plugininfo.h" line="318"/>
<source>Venetian Blind</source> <source>Venetian Blind</source>
<extracomment>The name of the ThingClass ({c7160205-d864-4194-b418-060fff60f0cb})</extracomment> <extracomment>The name of the ThingClass ({c7160205-d864-4194-b418-060fff60f0cb})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>