Ich möchte ein Gerät bauen, das die Ortszeit von einem Telefon oder Laptop über BLE abruft. Mein idealer Interaktionsfluss wäre:
- Drücken Sie eine "Set Time" -Taste am Gerät, um Werbung zu starten
- Öffnen Sie die Bluetooth-Einstellungen oder das Bedienfeld des Telefons / Computers, suchen Sie das Gerät und tippen Sie auf, um eine Verbindung herzustellen
- Das Gerät verwendet den aktuellen Zeitdienst, um die Uhrzeit vom Telefon anzufordern. Anschließend wird die Verbindung getrennt und die Werbung gestoppt
Der gesamte Umfang der Interaktion besteht darin, die Ortszeit zu ermitteln, ohne dass eine manuelle Anpassung erforderlich ist und ohne komplexere Konnektivität wie WLAN für die Verwendung von NTP hinzuzufügen.
Ist dieser Interaktionsfluss mit BLE möglich? Kann ein Peripheriegerät allein von der Zentrale aus den aktuellen Zeitdienst lesen? Wenn nicht, muss eine Begleit-App auf dem Telefon in die aktuelle Zeitdienstkennlinie auf dem Peripheriegerät schreiben?
Antworten:
Da Sie nicht beabsichtigen, weiter mit dem Partnergerät zu kommunizieren, ist die Genauigkeit der eingestellten Zeit in einem Genauigkeitsbereich von wenigen Sekunden für Sie in Ordnung. Wenn Sie präziser werden möchten, müssen Sie viel mehr berücksichtigen (Verzögerungen, Latenz, Protokolle niedrigerer Ebene und dergleichen).
Im Allgemeinen ist BLE ein Kommunikationsprotokoll. Sie können auf alle Funktionen zugreifen, die das Endgerät bereitstellt. Wenn Sie also einen Computer / ein Telefon haben, der NTP-Anforderungen zulässt, können Sie eine NTP-Anforderung über BLE stellen. Das erfordert sicherlich eine Konfiguration oder ein zusätzliches Programm.
Sie können die Scananforderung und die Scanantwort verwenden, um die Zeit während des Werbeprozesses zu liefern. Dazu müssten Sie natürlich ein minimales BLE-Gegenstück bereitstellen. Der Vorteil wäre, dass Sie nicht einmal eine vollständige Paarung durchführen müssen. Dies erfordert natürlich einen gewissen Zugriff auf das BLE-Verhalten auf beiden Seiten, den Sie wahrscheinlich nicht auf einem Smartphone haben, wenn Sie die Zeit von einem Pi oder einer anderen besser steuerbaren Instanz erhalten, die möglicherweise funktioniert.
Wenn Sie nicht schüchtern sind, ein Android zu rooten , können Sie auch Cheepsync verwenden , wo genau das getan wurde. Hier ist es auf Github.
quelle
Haben Sie sich Web Bluetooth angesehen ? Dies kann verwendet werden, um auf das Gerät zu schreiben, ohne dass eine native Client-App erforderlich ist, um die Uhrzeit einzustellen.
Chrome wird auf den meisten Plattformen unterstützt, und andere Browser bieten Unterstützung .
Ich habe an einem Gerät gearbeitet, das Web-Bluetooth verwendet, um die WLAN-Details festzulegen (das Gerät ist eine Uhr, die NTP verwendet, um genau zu bleiben und einige andere Funktionen zu unterstützen).
quelle
Ja.
Nur wenn die Zentrale einen aktuellen Zeitdienst ausführt.
Hängt davon ab, ob die Zentrale bereits einen aktuellen Zeitdienst ausführt. Zum Beispiel hat iOS eine integrierte Funktion, die jede Minute in die aktuelle Zeitcharakteristik auf dem Peripheriegerät schreibt.
Wenn kein Dienst für die aktuelle Zeit integriert ist, können Sie entweder einen hinzufügen oder die aktuelle Zeit auf andere Weise angeben (z. B. generische App und benutzerdefiniertes Protokoll oder Website und Web-Bluetooth ).
quelle