LWT detection and support
parent
f5927619b0
commit
05d8179a55
|
|
@ -42,8 +42,7 @@ void IntegrationPluginGaradget::setupThing(ThingSetupInfo *info)
|
|||
{
|
||||
Thing *thing = info->thing();
|
||||
|
||||
QString device = thing->paramValue(garadgetThingDeviceNameParamTypeId).toString();
|
||||
|
||||
thing->setStateValue(garadgetLWTStateTypeId,false);
|
||||
MqttClient *client = nullptr;
|
||||
client = hardwareManager()->mqttProvider()->createInternalClient(thing->id().toString());
|
||||
m_mqttClients.insert(thing, client);
|
||||
|
|
@ -72,16 +71,15 @@ void IntegrationPluginGaradget::postSetupThing(Thing *thing)
|
|||
connect(m_pluginTimer, &PluginTimer::timeout, this, [=](){
|
||||
m_statuscounter[thing] += 1;
|
||||
foreach (Thing *thing, myThings()) {
|
||||
if ((m_lastActivityTimeStamps[thing].msecsTo(QDateTime::currentDateTime()) > 2000 * updatetime) && (thing->stateValue(garadgetConnectedStateTypeId).toBool() == true)) {
|
||||
if ((thing->stateValue(garadgetLWTStateTypeId) == false) && (m_lastActivityTimeStamps[thing].msecsTo(QDateTime::currentDateTime()) > 2000 * updatetime) && (thing->stateValue(garadgetConnectedStateTypeId).toBool() == true)) {
|
||||
qCDebug(dcGaradget) << "disconnect device" << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString();
|
||||
thing->setStateValue(garadgetConnectedStateTypeId, false);
|
||||
}
|
||||
if ( (thing->stateValue(garadgetConnectedStateTypeId).toBool() == true) || m_statuscounter[thing] > lwtupdatetime) {
|
||||
if ( ((thing->stateValue(garadgetLWTStateTypeId) == false) && (thing->stateValue(garadgetConnectedStateTypeId).toBool() == true)) || m_statuscounter[thing] > lwtupdatetime) {
|
||||
m_mqttClients.value(thing)->publish("garadget/" + thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() + "/command", "get-status");
|
||||
}
|
||||
}
|
||||
if (m_statuscounter[thing] > lwtupdatetime) {
|
||||
qCDebug(dcGaradget) << "reset statusCounter" << m_statuscounter;
|
||||
m_statuscounter[thing] = 1;
|
||||
}
|
||||
});
|
||||
|
|
@ -213,7 +211,7 @@ void IntegrationPluginGaradget::publishReceived(const QString &topic, const QByt
|
|||
}
|
||||
if (topic.endsWith("/status")) {
|
||||
if (thing->stateValue(garadgetConnectedStateTypeId) == false) {
|
||||
qCDebug(dcGaradget) << "Setting" << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() << "to connected" ;
|
||||
qCDebug(dcGaradget) << "Setting" << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() << "to Online" ;
|
||||
thing->setStateValue(garadgetConnectedStateTypeId, true);
|
||||
}
|
||||
m_lastActivityTimeStamps[thing] = QDateTime::currentDateTime();
|
||||
|
|
@ -255,4 +253,22 @@ void IntegrationPluginGaradget::publishReceived(const QString &topic, const QByt
|
|||
qCDebug(dcGaradget) << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() << "Detected change of Broker msg - set connected to false";
|
||||
}
|
||||
}
|
||||
if (topic.endsWith("/LWT")){
|
||||
if (payload.contains("Online") or payload.contains("Offline")) {
|
||||
thing->setStateValue(garadgetLWTStateTypeId,true);
|
||||
qCDebug(dcGaradget()) << "enabling LWT functionality" << thing->stateValue(garadgetLWTStateTypeId);
|
||||
}
|
||||
if (payload.contains("Online")) {
|
||||
if (thing->stateValue(garadgetConnectedStateTypeId) == false) {
|
||||
qCDebug(dcGaradget) << "Setting" << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() << "to Online" ;
|
||||
thing->setStateValue(garadgetConnectedStateTypeId, true);
|
||||
}
|
||||
}
|
||||
if (payload.contains("Offline")) {
|
||||
if (thing->stateValue(garadgetConnectedStateTypeId) == true) {
|
||||
qCDebug(dcGaradget) << "Setting" << thing->paramValue(garadgetThingDeviceNameParamTypeId).toString() << "to Offline" ;
|
||||
thing->setStateValue(garadgetConnectedStateTypeId, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,15 @@
|
|||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "3338c7af-89a0-4db3-aaa4-a01a276396d0",
|
||||
"name": "LWT",
|
||||
"displayName": "LWT Support",
|
||||
"displayNameEvent": "LWT Support",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"writable": false
|
||||
},
|
||||
{
|
||||
"id": "a3d7e6eb-82d0-47ee-b95f-4dde931eb7e2",
|
||||
"name": "connected",
|
||||
|
|
|
|||
Loading…
Reference in New Issue