Merge PR #729: Shelly: Add support for the Pro 1 PM

master
jenkins 2024-01-30 12:01:59 +01:00
commit 2a5dfe5059
3 changed files with 110 additions and 2 deletions

View File

@ -6,6 +6,7 @@ The currently supported devices are:
* Shelly 1
* Shelly 1PM
* Shelly Plus 1PM
* Shelly Pro 1PM
* Shelly 1L
* Shelly 2
* Shelly 2.5

View File

@ -91,6 +91,8 @@ void IntegrationPluginShelly::discoverThings(ThingDiscoveryInfo *info)
namePattern = QRegExp("^shelly1pm-[0-9A-Z]+$");
} else if (info->thingClassId() == shellyPlus1pmThingClassId) {
namePattern = QRegExp("^ShellyPlus1PM-[0-9A-Z]+$", Qt::CaseInsensitive);
} else if (info->thingClassId() == shellyPro1PmThingClassId) {
namePattern = QRegExp("^ShellyPro1PM-[0-9A-Z]+$", Qt::CaseInsensitive);
} else if (info->thingClassId() == shelly1lThingClassId) {
namePattern = QRegExp("^shelly1l-[0-9A-Z]+$");
} else if (info->thingClassId() == shellyPlugThingClassId) {
@ -1656,7 +1658,7 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
qCDebug(dcShelly) << "Init response:" << response;
m_rpcClients.insert(info->thing(), client);
if (info->thing()->thingClassId() == shellyPlus1pmThingClassId || info->thing()->thingClassId() == shellyPlus1ThingClassId) {
if (info->thing()->thingClassId() == shellyPlus1pmThingClassId || info->thing()->thingClassId() == shellyPlus1ThingClassId || info->thing()->thingClassId() == shellyPro1PmThingClassId) {
info->finish(Thing::ThingErrorNoError);
@ -1664,6 +1666,12 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id());
switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1));
emit autoThingsAppeared({switchChild});
if (info->thing()->thingClassId() == shellyPro1PmThingClassId) {
ThingDescriptor switchChild2(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id());
switchChild2.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 2));
emit autoThingsAppeared({switchChild2});
}
}
return;
}
@ -1790,7 +1798,7 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
QString id = key.toString();
if (id == "switch:0") {
QVariantMap switch0 = notification.value("switch:0").toMap();
if (switch0.contains("apower") && thing->hasState("currentPower")) { // for shellyplus1pm
if (switch0.contains("apower") && thing->hasState("currentPower")) { // for shelly plus|pro 1pm
thing->setStateValue("currentPower", switch0.value("apower").toDouble());
}
Thing *parentThing = myThings().filterByParentId(thing->id()).findByParams({Param(shellyPowerMeterChannelThingChannelParamTypeId, 1)});

View File

@ -428,6 +428,105 @@
}
]
},
{
"id": "d21a9182-2f5b-47c1-9a27-6dd8ebd50b5f",
"name": "shellyPro1Pm",
"displayName": "Shelly Pro 1PM",
"createMethods": ["discovery"],
"setupMethod": "enterpin",
"interfaces": [ "gateway", "smartmeterconsumer", "wirelessconnectable", "update" ],
"paramTypes": [
{
"id": "4dcdd707-9049-4ee9-bfe5-3424e1628df5",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
}
],
"stateTypes": [
{
"id": "9942b350-9033-4491-8a99-538c042a9251",
"name": "power",
"displayName": "Powered",
"displayNameAction": "Turn on/off",
"type": "bool",
"defaultValue": false,
"writable": true,
"ioType": "digitalOutput"
},
{
"id": "4913d3fd-f6b4-4a23-b495-ae83df8473c8",
"name": "connected",
"displayName": "Connected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "903a1744-5551-4298-bacd-13066acc16a9",
"name": "signalStrength",
"displayName": "Signal strength",
"type": "uint",
"unit": "Percentage",
"minValue": 0,
"maxValue": 100,
"defaultValue": 0,
"cached": false
},
{
"id": "93ab8203-cc26-4ae9-a61e-d8f0182221b0",
"name": "updateStatus",
"displayName": "Update status",
"type": "QString",
"possibleValues": ["idle", "available", "updating"],
"defaultValue": "idle"
},
{
"id": "1dd09d4c-33e4-4496-8dc9-27b62a4092b0",
"name": "currentVersion",
"displayName": "Firmware version",
"type": "QString",
"defaultValue": ""
},
{
"id": "07ca990a-96c7-4213-9af6-d69cb946cc46",
"name": "availableVersion",
"displayName": "Available firmware version",
"type": "QString",
"defaultValue": ""
},
{
"id": "be8ca18d-7417-4e5b-a2b2-2d1c87a5ed34",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"type": "double",
"unit": "KiloWattHour",
"defaultValue": 0
},
{
"id": "d5fd6531-defb-4dac-9025-62a35a20e2c6",
"name": "currentPower",
"displayName": "Current power consumption",
"type": "double",
"unit": "Watt",
"defaultValue": 0,
"cached": false
}
],
"actionTypes": [
{
"id": "faae305a-fa7d-46b9-9ef8-6a7f12455380",
"name": "reboot",
"displayName": "Reboot"
},
{
"id": "89504849-9284-466d-b9d5-498e5f193c50",
"name": "performUpdate",
"displayName": "Update firmware"
}
]
},
{
"id": "20754114-1591-48b5-af2f-8c9966adb7c4",
"name": "shelly1l",