Me gustaría construir un dispositivo que obtenga la hora local desde un teléfono o computadora portátil a través de BLE. Mi flujo de interacción ideal sería:
- presione un botón "establecer hora" en el dispositivo para que comience a anunciarse
- abra la configuración de Bluetooth o el panel de control en el teléfono / computadora, busque el dispositivo y toque para conectarse
- el dispositivo utiliza el servicio de hora actual para solicitar la hora desde el teléfono, luego se desconecta y deja de anunciar
El alcance total de la interacción es solo para obtener la hora local sin necesidad de ajustes manuales y sin agregar conectividad más compleja como WiFi para usar NTP.
¿Es posible este flujo de interacción con BLE? ¿Puede un periférico, por sí solo, leer desde el servicio horario actual desde la central? Si no, ¿una aplicación complementaria en el teléfono necesita escribir en la característica de servicio de hora actual en el periférico?
Respuestas:
Dado que no tiene la intención de comunicarse más con el dispositivo asociado, supongo que la precisión del tiempo establecido está bien para usted en un rango de precisión de unos pocos segundos. Si desea ser más preciso, tendrá que tener mucho más en cuenta (retrasos, latencia, protocolos de nivel inferior y similares).
En general, BLE es un protocolo de comunicaciones, puede acceder a todas las funciones que proporciona el dispositivo final. Entonces, si tiene una computadora / teléfono que permite solicitudes NTP, puede presentar una solicitud NTP a través de BLE. Eso ciertamente requiere algún tipo de configuración o programa adicional.
Puede usar la solicitud de escaneo y la respuesta de escaneo para entregar el tiempo durante el proceso de publicidad. Por supuesto, para hacer eso tendrías que proporcionar una contraparte BLE mínima. La ventaja sería que ni siquiera tiene que hacer un emparejamiento completo. Eso requiere, por supuesto, un cierto acceso al comportamiento BLE en ambos lados que probablemente no tenga en un teléfono inteligente, si obtiene el tiempo de un Pi o alguna otra instancia más controlable que podría funcionar.
Si no tiene miedo de rootear un Android, también puede usar Cheepsync , donde hicieron exactamente eso. Aquí está en Github.
fuente
¿Has mirado en Web Bluetooth ? Esto se puede usar para escribir en el dispositivo sin necesidad de una aplicación cliente nativa solo para establecer la hora.
Hay soporte en Chrome en la mayoría de las plataformas y otros navegadores están agregando soporte .
He estado trabajando en un dispositivo que usa Web Bluetooth para configurar los detalles de wifi (el dispositivo es un reloj que usará NTP para mantener la precisión y admitir algunas otras funciones)
fuente
Si.
Solo si la central ejecuta un servicio de hora actual.
Depende de si la central ya está ejecutando un servicio de hora actual. Por ejemplo, iOS tiene uno incorporado que escribirá en la característica de tiempo actual en el periférico cada minuto.
Si no hay un Servicio de hora actual incorporado, puede agregar uno o proporcionar la hora actual de otra manera (por ejemplo, aplicación genérica y protocolo personalizado, o sitio web y Bluetooth web ).
fuente