mirror of
https://github.com/nymea/nymea-plugins.git
synced 2026-08-05 03:33:51 +02:00
goe: Improve parallel discovery and IP assignment
This commit is contained in:
parent
1da9322e81
commit
083176f5a6
@ -167,7 +167,7 @@ void GoeDiscovery::checkHostAddressApiV1(const QHostAddress &address)
|
|||||||
GoeDiscovery::Result result;
|
GoeDiscovery::Result result;
|
||||||
result.serialNumber = responseMap.value("sse").toString();
|
result.serialNumber = responseMap.value("sse").toString();
|
||||||
result.firmwareVersion = responseMap.value("fwv").toString();
|
result.firmwareVersion = responseMap.value("fwv").toString();
|
||||||
//result.networkDeviceInfo = networkDeviceInfo;
|
result.address = address;
|
||||||
result.apiAvailableV1 = true;
|
result.apiAvailableV1 = true;
|
||||||
m_discoveryResults[address] = result;
|
m_discoveryResults[address] = result;
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ void GoeDiscovery::checkHostAddressApiV2(const QHostAddress &address)
|
|||||||
result.manufacturer = responseMap.value("oem").toString();
|
result.manufacturer = responseMap.value("oem").toString();
|
||||||
result.product = responseMap.value("typ").toString();
|
result.product = responseMap.value("typ").toString();
|
||||||
result.friendlyName = responseMap.value("fna").toString();
|
result.friendlyName = responseMap.value("fna").toString();
|
||||||
//result.networkDeviceInfo = networkDeviceInfo;
|
result.address = address;
|
||||||
result.discoveryMethod = DiscoveryMethodNetwork;
|
result.discoveryMethod = DiscoveryMethodNetwork;
|
||||||
result.apiAvailableV2 = true;
|
result.apiAvailableV2 = true;
|
||||||
|
|
||||||
|
|||||||
@ -50,9 +50,9 @@ public:
|
|||||||
QString friendlyName;
|
QString friendlyName;
|
||||||
QString serialNumber;
|
QString serialNumber;
|
||||||
QString firmwareVersion;
|
QString firmwareVersion;
|
||||||
DiscoveryMethod discoveryMethod;
|
DiscoveryMethod discoveryMethod = DiscoveryMethodNetwork;
|
||||||
NetworkDeviceInfo networkDeviceInfo; // Network discovery
|
NetworkDeviceInfo networkDeviceInfo; // Network discovery
|
||||||
QHostAddress address; // ZeroConf
|
QHostAddress address;
|
||||||
bool apiAvailableV1 = false;
|
bool apiAvailableV1 = false;
|
||||||
bool apiAvailableV2 = false;
|
bool apiAvailableV2 = false;
|
||||||
} Result;
|
} Result;
|
||||||
|
|||||||
@ -82,12 +82,13 @@ void IntegrationPluginGoECharger::discoverThings(ThingDiscoveryInfo *info)
|
|||||||
ParamList params;
|
ParamList params;
|
||||||
|
|
||||||
QString description = "Serial: " + result.serialNumber + ", V: " + result.firmwareVersion;
|
QString description = "Serial: " + result.serialNumber + ", V: " + result.firmwareVersion;
|
||||||
if (result.discoveryMethod == GoeDiscovery::DiscoveryMethodNetwork) {
|
if (result.networkDeviceInfo.isValid()) {
|
||||||
params << Param(goeHomeThingMacAddressParamTypeId, result.networkDeviceInfo.thingParamValueMacAddress());
|
params << Param(goeHomeThingMacAddressParamTypeId, result.networkDeviceInfo.thingParamValueMacAddress());
|
||||||
params << Param(goeHomeThingHostNameParamTypeId, result.networkDeviceInfo.thingParamValueHostName());
|
params << Param(goeHomeThingHostNameParamTypeId, result.networkDeviceInfo.thingParamValueHostName());
|
||||||
params << Param(goeHomeThingAddressParamTypeId, result.networkDeviceInfo.thingParamValueAddress());
|
params << Param(goeHomeThingAddressParamTypeId, result.networkDeviceInfo.thingParamValueAddress());
|
||||||
description.append(" - " + result.networkDeviceInfo.address().toString());
|
description.append(" - " + result.networkDeviceInfo.address().toString());
|
||||||
} else {
|
} else if (!result.address.isNull()) {
|
||||||
|
params << Param(goeHomeThingAddressParamTypeId, result.address.toString());
|
||||||
description.append(" - " + result.address.toString());
|
description.append(" - " + result.address.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,8 +576,15 @@ QNetworkRequest IntegrationPluginGoECharger::buildStatusRequest(Thing *thing, bo
|
|||||||
|
|
||||||
QHostAddress IntegrationPluginGoECharger::getHostAddress(Thing *thing)
|
QHostAddress IntegrationPluginGoECharger::getHostAddress(Thing *thing)
|
||||||
{
|
{
|
||||||
if (m_monitors.contains(thing))
|
if (m_monitors.contains(thing)) {
|
||||||
return m_monitors.value(thing)->networkDeviceInfo().address();
|
QHostAddress address = m_monitors.value(thing)->networkDeviceInfo().address();
|
||||||
|
if (!address.isNull())
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
|
||||||
|
QHostAddress address(thing->paramValue(goeHomeThingAddressParamTypeId).toString());
|
||||||
|
if (!address.isNull())
|
||||||
|
return address;
|
||||||
|
|
||||||
foreach (const ZeroConfServiceEntry &serviceEntry, m_serviceBrowser->serviceEntries()) {
|
foreach (const ZeroConfServiceEntry &serviceEntry, m_serviceBrowser->serviceEntries()) {
|
||||||
if (GoeDiscovery::isGoeCharger(serviceEntry) && serviceEntry.protocol() == QAbstractSocket::IPv4Protocol) {
|
if (GoeDiscovery::isGoeCharger(serviceEntry) && serviceEntry.protocol() == QAbstractSocket::IPv4Protocol) {
|
||||||
@ -1714,4 +1722,3 @@ void IntegrationPluginGoECharger::markAsDisconnected(Thing *thing)
|
|||||||
thing->setStateValue("currentPowerPhaseC", 0);
|
thing->setStateValue("currentPowerPhaseC", 0);
|
||||||
thing->setStateValue("frequency", 0);
|
thing->setStateValue("frequency", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user