Ble-Beacon der diew UUID nach einer Zeit x verändert

  • 0 Antworten
  • Letztes Antwortdatum
G

gnome2012

Neues Mitglied
1
Hallo!

Ich habe vor langer Zeit meine Eingangstür mit einem Smart-Lock versehen. Seit einem Jahr öffne ich und meine Familie die Tür bei Annäherung. Dabei wird nicht die zum Smart-Lock (Nuki) gehörende Anwendung benutz, weil mir diese zu unzuverlässig war. Ich benutze dafür lieber eigene Beaconscanner (ESP32), die im Haus verteilt sind. Zusätzlich ist einer direkt hinter meiner Klingel an der Tür. Dieser meldet dann per mqtt, wenn sich ein in meinem System (Node-Red) registrierter Beacon nähert. Noderd öffnet dann die Tür. Damit dies nicht passiert, wenn ich im Haus bin, muss der Beacon eine gewisse Zeit abwesend gewesen sein. D.h. keiner meiner Beaconscanner im Haus darf diesen Beacon in der letzten Zeit erfasst haben. Als Beacon fungieren Android Software-Beacons z.B. Beacon-Simulaor aus dem Playstore. Die UUID wird zur idenfizierung genutzt.
Soweit funktioniert dies alles sehr zufriedenstellend.

Ich hätte aber gerne, dass diese UUID (zumindest ein Teilstring davon) vom Zeitstempel(+x) abhängig ist, sich also z.b minütlich ändert. Dies soll verhindert, damit die UUID nicht einfach gescannt und als "Schlüssel" zur Tür verwendet wird. Also den Beacon mit einem anderen Handy kopiert wird.
Ich habe lange im Netz nach Android Codes gesucht, die ich als Ausgangspunkt verwenden kann. Etwas genau passendes gibt es natürlich nicht. Zumindest habe ich es nicht gefunden. Das einzige, dass ich gefunden hatte, war eine Art Corona tracing-App. Diese App soll wohl gleichzeitig Beacon und Scanner sein.
Ich konnte den Code soweit verändern, dass er die letzten 3 Bytes der Instance ID des gesendeten Eddystones im gewissen Takt änderte. Leider ist es so programmiert, dass nur ein Advetising gestartet wird, welches innerhalb von der App niemals gestoppt wird. Nur das Scannen wird zeitweise ausgewertet.
Nun bin ich Android- und Java-Technisch bestenfalls Programmier-Krutzer. Also wenns um reine Logik geht klappts bei den meisten Programmiersprachen. Deshalb kann ich zwar die UUID des Beacon 0815-verschlüsseln, aber nicht dafür sorgen, dass das Advertising des Beacons in der App sauber unterbrochen wird, um eine neu generierte UUID zu erneut zu senden. Teilweise habe ich es mit der folgenden Repo, wie erwähnt geschafft 3 bytes von der Zeit abhängig zu machen. Auch ist mir gelungen dazu das Advertisung zu stoppen und erneut zu starten. Leider sürtzt die App ab, weil die MainActivity dadurch nicht mehr fortgesetzt wird , das das Starten und Stoppen dies unterbricht. Lasse ich die MainActivity weiterlaufen, komme ich nie mehr zum Starten und Stoppen des Advertising zurück. Zumindest nicht mit meinen Kenntnissen.

Eigentlich suche ich nur einem 0815 Code, ohne Irgendwas keine Buttons oder irgendwas. Es sollte nur eine UUID oder ähnliches im Code zusehen sein, die ich dann abhängig von irgendwas im laufenden Programm ändern kann.

Die genannte Repo (nennt man das eigentlich so?) ist eigentlich recht einfach aufgebaut, soweit ich das sehe, aber aus der MainActivity ist das Advertising nicht zu stoppen. Hier wäre ich für eine Tip dankbar.

Hier der Link:
GitHub - helloworldkr/Bluetooth-ble-beamer-and-scanner-for-tracing-corona-virus-infected-individual: Bluetooth ble beacon beamer and scanner for tracing corona virus infected person similar to Trace Together app

Ich schreibe eigentlich nur, weil ich eine kleine Hoffnung habe, dass jemand etwas ähnliches schon nutzt und mir hier helfen kann. Vielleicht hat ja jemand Lust sich die Corana-App anzuschauen.

Vielen Dank fürs lesen und Danke im Voraus

Gruß Roland


Edit: Habe gemerkt, dass ich in der falschen Sektion gepostet habe. Admin bitte verschieben-danke
 
Zuletzt bearbeitet:

Ähnliche Themen

koje71
Antworten
0
Aufrufe
181
koje71
koje71
wernho
Antworten
11
Aufrufe
1.133
wernho
wernho
M
Antworten
0
Aufrufe
1.248
mglinka99
M
Zurück
Oben Unten