Skip to content

Commit

Permalink
last seen in device topics
Browse files Browse the repository at this point in the history
  • Loading branch information
Илья Титов committed Jan 17, 2024
1 parent 881c868 commit 1de5080
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
7 changes: 4 additions & 3 deletions controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,11 @@ void Controller::updateAvailability(void)

it.value()->setAvailability(it.value()->active() ? time - it.value()->lastSeen() <= timeout ? Availability::Online : Availability::Offline : Availability::Inactive);

if (it.value()->availability() == check)
if (it.value()->availability() == check && m_lastSeen.value(it.value()->ieeeAddress()) == it.value()->lastSeen())
continue;

mqttPublish(mqttTopic("device/zigbee/%1").arg(m_zigbee->devices()->names() ? it.value()->name() : it.value()->ieeeAddress().toHex(':')), {{"status", it.value()->availability() == Availability::Online ? "online" : "offline"}}, true);
mqttPublish(mqttTopic("device/zigbee/%1").arg(m_zigbee->devices()->names() ? it.value()->name() : it.value()->ieeeAddress().toHex(':')), {{"lastSeen", it.value()->lastSeen()}, {"status", it.value()->availability() == Availability::Online ? "online" : "offline"}}, true);
m_lastSeen.insert(it.value()->ieeeAddress(), it.value()->lastSeen());
}
}

Expand Down Expand Up @@ -220,7 +221,7 @@ void Controller::deviceEvent(DeviceObject *device, ZigBee::Event event, const QJ
break;

case ZigBee::Event::deviceUpdated:
mqttPublish(mqttTopic("device/zigbee/%1").arg(m_zigbee->devices()->names() ? device->name() : device->ieeeAddress().toHex(':')), {{"status", device->availability() == Availability::Online ? "online" : "offline"}}, true);
mqttPublish(mqttTopic("device/zigbee/%1").arg(m_zigbee->devices()->names() ? device->name() : device->ieeeAddress().toHex(':')), {{"lastSeen", device->lastSeen()}, {"status", device->availability() == Availability::Online ? "online" : "offline"}}, true);
break;

default:
Expand Down
1 change: 1 addition & 0 deletions controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class Controller : public HOMEd

QMetaEnum m_commands;
QString m_haStatus;
QMap <QByteArray, qint64> m_lastSeen;

void publishExposes(DeviceObject *device, bool remove = false);

Expand Down

0 comments on commit 1de5080

Please sign in to comment.