Wie ich in ZigBee2Mqtt das last_seen aktivieren kann, habe ich gefunden. Im Mqtt-Explorer sehe ich es auch.
Icvh hätte irgendwie erwartet, dass mir der Wert dann auch als Entität oder in den Attributen der Geräte angeboten wird. Da habe ich aber nichts gefunden. Habe ich da was übersehen?
Natärlich kann ich mir jeweils den entsprechenden Topic abbonieren, dann komme ich an last_seen ran. Nur wird die Nachricht aber nicht “retained” ausgesendet, so dass last_seen nach einem Neustart nicht zur Verfügung steht. Wie man eventuell “alle” Nachrichten von ZigBee2Mqtt als “retained” einstellen kann, habe ich auch nicht gefunden.
Bei Tasmota konnte ich die Status-Nachrichten als Retained versenden, somit sind alle Werte bei Neustart verfügbar. Ich bemerke aber auch, dass manche Icons, die durch ZigBee2Mqtt bestimmt werden, nach einem Neustart etwas brauchen, bis sie sich richtig zeigen. Welcher “Mechanismus” bewirkt das? Würde das auch bei last_seen dann einfach funktionieren?
Ich will die Diskussion noch mal aufmachen.
Nachdem hier der Hinweis kam, dass last_seen noch deaktiviert ist, habe ich es bei einem Gerät mal versucht und es hat geklappt. Nun wollte ich mich später darum für weitere Geräte kümmern.
Aufgrund anderer Probleme mit der März-Version habe ich ein Backup eingespielt, wodurch mein Versuch natürlich verloren gegangen ist. Nun habe ich last_seen in ZigBee2Mqtt wieder aktiviert und kann es auch in den Payloads im MQTT sehen.
Nur bekomme ich jetzt bei keinem Gerät in den Diagnosen “Last seen” angeboten. Auch wenn defnitiv das Geräte, wo ich es erwarten würde, schon etwas gesendet hat.
Ich habe das gleiche Problem. Ich habe last_seen nach einem Backup auch neu aktivieren müssen.
Jetzt fehlt der last_seen Eintrag leider genau bei allen batteriebetriebenen Geräten. Bei den Steckdosen oder Lampen gibt es den Eintrag.
Ich würde es mal damit versuchen den Mosquitto broker neu zu starten. Ich hatte mit den “last_seen” Entitäten ähnliche Probleme und bin dann irgendwann nicht mehr weiter gekommen. Das war mir dann auch zu komplex - bei jedem Gerät zu schauen, ob aktiviert und funktioniert.
Was möchtest Du mit den Daten machen? Mir ging es darum zu sehen, welches Gerät verfügbar ist und welches evtl. die Verbindung verloren hat. Das habe ich nun mit einem Template Sensor gelöst.
Wenn Du z.B. sehen möchtest welche Zigbee-Leuchten gerade unavailable sind, würde der Code für Dein Template so ausehen:
{% set output = namespace(sensors=[]) %}
{% for state in states.light %}
{% if state.state == 'unavailable' %}
{% set output.sensors = output.sensors + [state.name] %}
{% endif %}
{% endfor %}
{{ output.sensors | list }}
Du kannst auch “count”, statt List schreiben, dann bekommst Du die ANzahl der Lichtentitäten, die gerade unavailable sind.. also so:
{% set output = namespace(sensors=[]) %}
{% for state in states.light %}
{% if state.state == 'unavailable' %}
{% set output.sensors = output.sensors + [state.name] %}
{% endif %}
{% endfor %}
{{ output.sensors | count }}
Das Gleiche geht dann natürlich auch mit “states.binary_sensor” oder “states.sensor” (also immer in Zeile 2) Wenn Du andere Domains überwachen willst
Ich verwende es für eine Blueprint-Automation (“Offline detection for Z2M devices with last_seen”), die mir eine Nachricht schickt, wenn ein Gerät sich schon länger nicht gemeldet hat.
Das hat eigentlich gut funktioniert aber jetzt habe ich gemerkt, dass bei allen batteriebetriebenen Zigbee-Geräten das "last_seen fehlt.
Innerhalb des Z2M–Addons gibt es das last_seen bei allen Geräten und in MQTT nur bei den Geräten mit festem Stromanschluss.