Merge PR #729: Shelly: Add support for the Pro 1 PM
This commit is contained in:
commit
2a5dfe5059
@ -6,6 +6,7 @@ The currently supported devices are:
|
|||||||
* Shelly 1
|
* Shelly 1
|
||||||
* Shelly 1PM
|
* Shelly 1PM
|
||||||
* Shelly Plus 1PM
|
* Shelly Plus 1PM
|
||||||
|
* Shelly Pro 1PM
|
||||||
* Shelly 1L
|
* Shelly 1L
|
||||||
* Shelly 2
|
* Shelly 2
|
||||||
* Shelly 2.5
|
* Shelly 2.5
|
||||||
|
|||||||
@ -91,6 +91,8 @@ void IntegrationPluginShelly::discoverThings(ThingDiscoveryInfo *info)
|
|||||||
namePattern = QRegExp("^shelly1pm-[0-9A-Z]+$");
|
namePattern = QRegExp("^shelly1pm-[0-9A-Z]+$");
|
||||||
} else if (info->thingClassId() == shellyPlus1pmThingClassId) {
|
} else if (info->thingClassId() == shellyPlus1pmThingClassId) {
|
||||||
namePattern = QRegExp("^ShellyPlus1PM-[0-9A-Z]+$", Qt::CaseInsensitive);
|
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) {
|
} else if (info->thingClassId() == shelly1lThingClassId) {
|
||||||
namePattern = QRegExp("^shelly1l-[0-9A-Z]+$");
|
namePattern = QRegExp("^shelly1l-[0-9A-Z]+$");
|
||||||
} else if (info->thingClassId() == shellyPlugThingClassId) {
|
} else if (info->thingClassId() == shellyPlugThingClassId) {
|
||||||
@ -1656,7 +1658,7 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
|
|||||||
qCDebug(dcShelly) << "Init response:" << response;
|
qCDebug(dcShelly) << "Init response:" << response;
|
||||||
m_rpcClients.insert(info->thing(), client);
|
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);
|
info->finish(Thing::ThingErrorNoError);
|
||||||
|
|
||||||
@ -1664,6 +1666,12 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
|
|||||||
ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id());
|
ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id());
|
||||||
switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1));
|
switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1));
|
||||||
emit autoThingsAppeared({switchChild});
|
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;
|
return;
|
||||||
}
|
}
|
||||||
@ -1790,7 +1798,7 @@ void IntegrationPluginShelly::setupGen2(ThingSetupInfo *info)
|
|||||||
QString id = key.toString();
|
QString id = key.toString();
|
||||||
if (id == "switch:0") {
|
if (id == "switch:0") {
|
||||||
QVariantMap switch0 = notification.value("switch:0").toMap();
|
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->setStateValue("currentPower", switch0.value("apower").toDouble());
|
||||||
}
|
}
|
||||||
Thing *parentThing = myThings().filterByParentId(thing->id()).findByParams({Param(shellyPowerMeterChannelThingChannelParamTypeId, 1)});
|
Thing *parentThing = myThings().filterByParentId(thing->id()).findByParams({Param(shellyPowerMeterChannelThingChannelParamTypeId, 1)});
|
||||||
|
|||||||
@ -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",
|
"id": "20754114-1591-48b5-af2f-8c9966adb7c4",
|
||||||
"name": "shelly1l",
|
"name": "shelly1l",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user