In Version 3 von OwnTracks konnte man die Ereignisse für Ein- und Ausgänge von Zonen abrufen (Waypoints - OwnTracks Booklet)
Die Genauigkeit ist, was sie ist, aber dies ermöglicht die Erkennung, ob ein Benutzer zu Hause ist.
Der Anwendungsfall ist relativ einfach: Ein Benutzer, der OwnTracks über die Open-API konfiguriert hat, sendet ein Ereignis für den Ein- oder Ausgang einer Zone. Eine Szene auf der Gladys-Seite wird dann den Benutzer als anwesend oder nicht markieren. Daraus können zahlreiche Szenarien entstehen.
Owntrack sendet den Standort, wenn ich in die Zone eintrete, wird ein Event ausgelöst, ich kann eine Szene auslösen (z. B. mich als zu Hause markieren, die Außenlichter einschalten usw.).
Für mich muss man das nativ entwickeln, damit man, falls OwnTracks verschwindet oder man eine andere Standort-App nutzen möchte, trotzdem Szenen erstellen kann.
Die gesamte Stack der v3 muss neu entwickelt werden.
Funktionale Spezifikation:
Einen Bereich in der „Karte“-Ansicht mit einem Namen, einer Farbe und einem Radius erstellen
Einen Bereich in der Kartenansicht bearbeiten
Einen Bereich in der Kartenansicht löschen
In den Szenen kann ich einen Trigger „wenn der Benutzer XX in den Bereich YY eintritt“ auswählen
In den Szenen kann ich einen Trigger „wenn der Benutzer XX den Bereich YY verlässt“ auswählen
Ich greife diesen Beitrag auf, falls es jemanden interessiert, ich hatte mit dem Thema Handle_Owntracks_MQTT_messages begonnen und bin dann abgeschweift
Also, momentan bin ich bei:
Aktualisierung der Benutzerposition basierend auf einem MQTT-Topic
Anzeige der Zonen, die in der Datenbank sind
Erstellen einer Zone in der „Karten“-Ansicht (nur Frontend)
Bearbeiten einer Zone in der Kartenansicht (nur Frontend)
Löschen einer Zone in der Kartenansicht (nur Frontend)
To-Do
Es sollte einen „Owntracks“-Dienst in der Benutzeroberfläche geben, der erklärt, wie der Dienst funktioniert (mit Gladys Plus/oder mit MQTT) (wie im Ticket gefordert)
Datenbank mit Area-Events (Erstellen, Bearbeiten, Löschen) beeinflussen
Möglichkeit, einen Namen, eine Farbe und einen Radius zu vergeben (in Arbeit mit einem Popup)
In den Szenen kann ich einen Trigger „wenn der Benutzer XX in die Zone YY eintritt“ auswählen
In den Szenen kann ich einen Trigger „wenn der Benutzer XX die Zone YY verlässt“ auswählen
Technisch:
Aktualisierung von Leaflet auf 1.7
Verwendung von Leaflet-draw zur Verwaltung der Erstellung von Markern & Co
Ich bin nicht besonders fit darin, daher ist das kein Thema, das schnell vorankommt. Sagt mir, ob es weggeworfen werden soll oder ob jemand helfen oder das Thema übernehmen möchte, um schneller voranzukommen.
Ich konnte es heute Abend testen und hier sind meine Anmerkungen:
Wenn man eine Zone erstellt, ist es nicht offensichtlich, dass man auf die Karte klicken muss (und die Fehlermeldung, wenn man es nicht tut, ist nicht sehr aussagekräftig)
Wenn ich es richtig verstehe, ist die Verarbeitung der Events von Gladys Plus entwickelt, aber nicht die von MQTT
Ich habe schnell die Abfrage der Events von MQTT (zum Testen) programmiert und es ist toll, sein Gesicht auf der Karte zu sehen
Die Karte wird nicht in Echtzeit aktualisiert (ich habe das Gefühl, dass es keine Abfrage/Übermittlung der Position per Websocket gibt). Wenn es nicht entwickelt ist, finde ich, dass es eine nette Funktion ist und nicht sehr kompliziert zu entwickeln.
Letzter Punkt, ich finde, dass es langsam kompliziert wird, diese Begriffe zu unterscheiden:
Das Haus ist leer / Das Haus ist nicht mehr leer
Verlassen des Hauses / Rückkehr nach Hause
Benutzer verlässt die Zone / Benutzer betritt die Zone
Für diejenigen, die an Owntracks => MQTT interessiert sind, kann ich diese issue vorantreiben (da ich schon etwas habe, das funktioniert). Aber es bleiben die Tests, die Konfiguration, das Frontend, die Dokumentation…
Nicht dumm, diese Entwicklung wurde schon lange gemacht und tatsächlich gibt es keine WebSockets. Das kann leicht hinzugefügt werden, ich werde das ändern.
Was findest du unklar?
Ich finde die Namen eigentlich recht aussagekräftig.
Allerdings kann es verwirrend sein, den Unterschied zwischen dem « Haus » und den Zonen zu verstehen. Wir müssen dem Benutzer klar machen, dass das Haus ein « Konzept » in Gladys ist, und dass man für ein Szenario, bei dem der Benutzer das Haus über eine Zone betritt/verlässt, zwei Szenarien erstellen muss:
« Wenn der Benutzer die Zone betritt » => Benutzer als im Haus markieren
« Wenn der Benutzer die Zone verlässt » => Benutzer als aus dem Haus markieren
Die Bezeichnungen sind leicht verständlich. Es geht eher darum, wie diese Aktionen ausgelöst werden.
In manchen Fällen geschieht das automatisch (wie bei den Zonen).
In anderen Fällen muss die Aktion über eine Szene ausgelöst werden (Nutzer anwesend über ein Bluetooth-Gerät, wenn ich das richtig verstanden habe).
Ich habe die Nutzerpräsenz und das leere Haus nicht viel genutzt, ich werde es testen.
Im Fall der Erkennung der Anwesenheit im Haus liegt die Wahl beim Benutzer, absolut alles ist möglich:
Bluetooth
MQTT in einem Skript
MQTT auf deinem Android-Telefon, wenn dein Telefon mit dem WLAN des Hauses verbunden wird/verbunden bleibt
Vielleicht wäre ein Link in jedem Kasten zu einer Erklärung in der Dokumentation besser?
Jedenfalls versuche ich, all das in den Videos, die ich in letzter Zeit mache, so gut wie möglich zu erklären. Danach weiß ich nicht, ob man in der UI besser machen kann, die Beschriftungen und die Beschreibungen jedes Kastens scheinen mir recht klar zu sein.
Die Position der Benutzer wird nun live mit WebSockets aktualisiert
Der PR ist hier:
Außerdem gab es einen Bug, den ich beim Verwenden der Funktion bemerkt habe: Die Berechnung der Entfernung zwischen einem Benutzer und einer Zone erfolgte in Kilometern und nicht in Metern, und dadurch funktionierte das Verlassen der Zone nicht (Gladys verglich Meter mit Kilometern.. )
Ich merge das, sobald die Tests durchlaufen, und baue eine neue Dev-Version!