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
Currently this plugin supports all roller shutters, blinds, garage
door, awning drives and lights that are connectable to the TaHoma gateway.
These are Somfy iO devices as well as RTS devices.
door, awning drives, lights and smoke detectors that are connectable to the
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));
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") ||
type.startsWith("internal:")) {
continue;
@ -201,7 +211,8 @@ void IntegrationPluginSomfyTahoma::setupThing(ThingSetupInfo *info)
info->thing()->thingClassId() == venetianblindThingClassId ||
info->thing()->thingClassId() == garagedoorThingClassId ||
info->thing()->thingClassId() == awningThingClassId ||
info->thing()->thingClassId() == lightThingClassId) {
info->thing()->thingClassId() == lightThingClassId ||
info->thing()->thingClassId() == smokedetectorThingClassId) {
info->finish(Thing::ThingErrorNoError);
}
}
@ -315,6 +326,10 @@ void IntegrationPluginSomfyTahoma::handleEvents(const QVariantList &events)
if (thing) {
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()) << qUtf8Printable(QJsonDocument::fromVariant(eventVariant).toJson());
@ -480,6 +495,47 @@ void IntegrationPluginSomfyTahoma::updateThingStates(const QString &deviceUrl, c
}
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)
@ -590,6 +646,8 @@ void IntegrationPluginSomfyTahoma::markDisconnected(Thing *thing)
thing->setStateValue(awningConnectedStateTypeId, false);
} else if (thing->thingClassId() == lightThingClassId) {
thing->setStateValue(lightConnectedStateTypeId, false);
} else if (thing->thingClassId() == smokedetectorThingClassId) {
thing->setStateValue(smokedetectorConnectedStateTypeId, false);
}
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
markDisconnected(child);
@ -610,6 +668,8 @@ void IntegrationPluginSomfyTahoma::restoreChildConnectedState(Thing *thing)
thing->setStateValue(awningConnectedStateTypeId, pluginStorage()->value("connected").toBool());
} else if (thing->thingClassId() == lightThingClassId) {
thing->setStateValue(lightConnectedStateTypeId, pluginStorage()->value("connected").toBool());
} else if (thing->thingClassId() == smokedetectorThingClassId) {
thing->setStateValue(smokedetectorConnectedStateTypeId, pluginStorage()->value("connected").toBool());
}
}
pluginStorage()->endGroup();

View File

@ -444,7 +444,61 @@
"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>
<name>SomfyTahoma</name>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="93"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="96"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="99"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="102"/>
<source>Angle</source>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="99"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="105"/>
<source>Awning</source>
<extracomment>The name of the ThingClass ({d3a3bb40-4b2d-4bdc-989f-5254f03b4c90})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="102"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="105"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="111"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="114"/>
<source>Brightness</source>
<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>
</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="120"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="123"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="126"/>
<source>Close</source>
<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>
</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="132"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="135"/>
<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>
<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
----------
@ -100,13 +103,16 @@ The name of the StateType ({10ebf650-a93a-4ee3-945b-fba10d4e35a5}) of ThingClass
<translation type="unfinished"></translation>
</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="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>
<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})
----------
@ -118,34 +124,34 @@ The name of the ParamType (ThingClass: rollershutter, Type: thing, ID: {b3d20d6a
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="156"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="174"/>
<source>Garage Door</source>
<extracomment>The name of the ThingClass ({cb206d74-b13c-4466-98c6-070b19ebd23a})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="159"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="177"/>
<source>Gateway Id</source>
<extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {e321a7d6-6dcb-4a37-baf1-c7008f2d5bdb})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="165"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="183"/>
<source>Light</source>
<extracomment>The name of the ThingClass ({e569a3cc-6e79-4e24-af35-c5fa327a7314})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="168"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="186"/>
<source>Logged in</source>
<extracomment>The name of the StateType ({97fefa85-db79-4efd-8d83-4a15d72996e1}) of ThingClass tahoma</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="171"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="174"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="177"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="180"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="189"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="192"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="195"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="198"/>
<source>Moving</source>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="183"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="186"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="189"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="192"/>
<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"/>
<source>Open</source>
<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>
</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="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>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="219"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="222"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="237"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="240"/>
<source>Power</source>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="162"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="180"/>
<source>Gateway pin</source>
<extracomment>The name of the ParamType (ThingClass: gateway, Type: thing, ID: {30b73244-e5bb-4c00-9332-702a60c03420})</extracomment>
<translation type="unfinished"></translation>
</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>
<extracomment>The name of the ThingClass ({6b187fe0-a987-462d-90ac-c48efc0d0fc0})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="228"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="246"/>
<source>Set angle</source>
<extracomment>The name of the ActionType ({079c7a80-8a1c-4fd7-b40c-6800120c70fb}) of ThingClass venetianblind</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="231"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="249"/>
<source>Set brightness</source>
<extracomment>The name of the ActionType ({1b51ce68-1f7e-4f06-b68d-bfca2d61b353}) of ThingClass light</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="234"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="237"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="240"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="243"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="252"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="255"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="258"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="261"/>
<source>Set percentage</source>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="246"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="264"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({654ddcdf-b0b7-4c38-a70d-878f0f3857a5}) of ThingClass light</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="249"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="252"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="255"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="258"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="261"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="267"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="270"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="273"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="276"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="279"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="282"/>
<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
----------
@ -271,28 +292,34 @@ The name of the StateType ({67594d96-47a2-4360-a1b8-79e4f22f9ed0}) of ThingClass
<translation type="unfinished"></translation>
</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>
<extracomment>The name of the vendor ({4e42a22a-ccfb-4677-89e3-f7fa16bf6be0})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="267"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="291"/>
<source>Somfy Tahoma</source>
<extracomment>The name of the plugin SomfyTahoma ({4e8be1c1-daa8-4e21-9e85-b2372ab1a450})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="270"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="294"/>
<source>State</source>
<extracomment>The name of the StateType ({12af28f1-475e-4d05-9bbb-adbb86dcd69c}) of ThingClass garagedoor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="273"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="276"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="279"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="282"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="297"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="300"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="303"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="306"/>
<source>Stop</source>
<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>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="285"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="309"/>
<source>Tahoma Account</source>
<extracomment>The name of the ThingClass ({fedd72b8-547d-4e4f-b73e-71344a8ba0c1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="288"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="312"/>
<source>Tahoma Gateway</source>
<extracomment>The name of the ThingClass ({6c09e0b9-f0cc-4dea-9994-9e039eff78f1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="291"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="315"/>
<source>User display name</source>
<extracomment>The name of the StateType ({75609987-be60-4932-94f6-ead791b5fa58}) of ThingClass tahoma</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/somfytahoma/plugininfo.h" line="294"/>
<location filename="../../build/somfytahoma/plugininfo.h" line="318"/>
<source>Venetian Blind</source>
<extracomment>The name of the ThingClass ({c7160205-d864-4194-b418-060fff60f0cb})</extracomment>
<translation type="unfinished"></translation>