Skip to content

Commit

Permalink
Started adding support for OSRAM Lightify Switch Mini.
Browse files Browse the repository at this point in the history
  • Loading branch information
olicooper committed Apr 29, 2020
1 parent b3086c6 commit 70e42e9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 4 deletions.
24 changes: 21 additions & 3 deletions bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1180,6 +1180,13 @@ bool DeRestPluginPrivate::sendConfigureReportingRequest(BindingTask &bt)
rq.maxInterval = 43200; // according to technical manual
rq.reportableChange8bit = 0;
}
else if (sensor && (sensor->modelId() == QLatin1String("Lightify Switch Mini")) // OSRAM Lightify Switch Mini
{
rq.attributeId = 0x0020; // battery voltage
rq.minInterval = 300;
rq.maxInterval = 60 * 45;
rq.reportableChange8bit = 1;
}
else
{
rq.minInterval = 300;
Expand Down Expand Up @@ -1998,7 +2005,9 @@ bool DeRestPluginPrivate::checkSensorBindingsForAttributeReporting(Sensor *senso
sensor->modelId().startsWith(QLatin1String("1116-S")) ||
sensor->modelId().startsWith(QLatin1String("1117-S")) ||
// Hive
sensor->modelId() == QLatin1String("MOT003"))
sensor->modelId() == QLatin1String("MOT003") ||
// OSRAM
sensor->modelId() == QLatin1String("Lightify Switch Mini"))
{
deviceSupported = true;
if (!sensor->node()->nodeDescriptor().receiverOnWhenIdle() ||
Expand Down Expand Up @@ -2116,7 +2125,8 @@ bool DeRestPluginPrivate::checkSensorBindingsForAttributeReporting(Sensor *senso
sensor->modelId().startsWith(QLatin1String("1117-S")) ||
sensor->modelId().startsWith(QLatin1String("3326-L")) ||
sensor->modelId().startsWith(QLatin1String("3305-S")) ||
sensor->modelId() == QLatin1String("113D"))
sensor->modelId() == QLatin1String("113D") ||
sensor->modelId() == QLatin1String("Lightify Switch Mini"))
{
val = sensor->getZclValue(*i, 0x0020); // battery voltage
}
Expand Down Expand Up @@ -2539,6 +2549,13 @@ bool DeRestPluginPrivate::checkSensorBindingsForClientClusters(Sensor *sensor)
clusters.push_back(LEVEL_CLUSTER_ID);
srcEndpoints.push_back(sensor->fingerPrint().endpoint);
}
// OSRAM Lightify Switch Mini
else if (sensor->modelId() == QLatin1String("Lightify Switch Mini"))
{
clusters.push_back(ONOFF_CLUSTER_ID);
clusters.push_back(LEVEL_CLUSTER_ID);
srcEndpoints.push_back(sensor->fingerPrint().endpoint);
}
else
{
return false;
Expand Down Expand Up @@ -2661,7 +2678,8 @@ void DeRestPluginPrivate::checkSensorGroup(Sensor *sensor)
sensor->modelId().startsWith(QLatin1String("TRADFRI remote control")) ||
sensor->modelId().startsWith(QLatin1String("TRADFRI wireless dimmer")) ||
sensor->modelId().startsWith(QLatin1String("SYMFONISK")) ||
sensor->modelId().startsWith(QLatin1String("902010/23"))) // bitron remote
sensor->modelId().startsWith(QLatin1String("902010/23")) || // bitron remote
sensor->modelId() == QLatin1String("Lightify Switch Mini"))
{

}
Expand Down
6 changes: 5 additions & 1 deletion de_web_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ const quint64 samjinMacPrefix = 0x286d970000000000ULL;
const quint64 sinopeMacPrefix = 0x500b910000000000ULL;
const quint64 ecozyMacPrefix = 0x70b3d50000000000ULL;
const quint64 osramMacPrefix = 0x8418260000000000ULL;
const quint64 osram2MacPrefix = 0x000D6F0000000000ULL;
const quint64 osram3MacPrefix = 0x7CB03E0000000000ULL;
const quint64 silabsMacPrefix = 0x90fd9f0000000000ULL;
const quint64 silabs2MacPrefix = 0xcccccc0000000000ULL;
const quint64 silabs3MacPrefix = 0xec1bbd0000000000ULL;
Expand Down Expand Up @@ -195,6 +197,7 @@ static const SupportedDevice supportedDevices[] = {
{ VENDOR_UBISYS, "S1", ubisysMacPrefix },
{ VENDOR_UBISYS, "S2", ubisysMacPrefix },
{ VENDOR_NONE, "Z716A", netvoxMacPrefix },
{ VENDOR_OSRAM, "Lightify Switch Mini", osram2MacPrefix }, // OSRAM Lightify Switch Mini
// { VENDOR_OSRAM_STACK, "Plug", osramMacPrefix }, // OSRAM plug - exposed only as light
{ VENDOR_OSRAM_STACK, "CO_", heimanMacPrefix }, // Heiman CO sensor
{ VENDOR_OSRAM_STACK, "DOOR_", heimanMacPrefix }, // Heiman door/window sensor - older model
Expand Down Expand Up @@ -14435,7 +14438,8 @@ void DeRestPluginPrivate::delayedFastEnddeviceProbe(const deCONZ::NodeEvent *eve
}
}
else if (sensor->modelId() == QLatin1String("Remote switch") || // Legrand switch
sensor->modelId() == QLatin1String("Shutters central remote switch")) // Legrand switch
sensor->modelId() == QLatin1String("Shutters central remote switch") || // Legrand switch
sensor->modelId() == QLatin1String("Lightify Switch Mini"))
{
checkSensorGroup(sensor);
checkSensorBindingsForClientClusters(sensor);
Expand Down
4 changes: 4 additions & 0 deletions de_web_plugin_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,8 @@ extern const quint64 keenhomeMacPrefix;
extern const quint64 lutronMacPrefix;
extern const quint64 netvoxMacPrefix;
extern const quint64 osramMacPrefix;
extern const quint64 osram2MacPrefix;
extern const quint64 osram3MacPrefix;
extern const quint64 philipsMacPrefix;
extern const quint64 sinopeMacPrefix;
extern const quint64 stMacPrefix;
Expand Down Expand Up @@ -494,6 +496,8 @@ inline bool checkMacVendor(quint64 addr, quint16 vendor)
case VENDOR_OSRAM:
case VENDOR_OSRAM_STACK:
return prefix == osramMacPrefix ||
prefix == osram2MacPrefix ||
prefix == osram3MacPrefix ||
prefix == heimanMacPrefix;
case VENDOR_PHILIPS:
return prefix == philipsMacPrefix;
Expand Down

0 comments on commit 70e42e9

Please sign in to comment.