Tengo una placa integrada donde la distribución en ella es una distribución de Linux personalizada basada en Yocto.
He agregado ntp
y ntpd
sincronizaré el tiempo con los grupos ntp comunes, ya sea a través de dongle UMTS 3G o Ethernet.
Esta placa junto con algunas placas ESP32 PoE de Olimex están conectadas a través de un conmutador no administrado.
Propósito
Las placas ESP32 tienen sensores que recopilan información, les agregan una marca de tiempo y las envían al InfluxDB que se ejecuta en la placa integrada principal a través de Ethernet, lo que la convierte en una red de sensores con cable. Estas placas ESP32 también tienen un RTC DS3231, así que quiero que primero obtengan el tiempo de un servidor NTP que se ejecuta en esta placa integrada para sincronizar el RTC y luego enviar información a InfluxDB.
Preguntas
¿Cómo se crea un servidor NTP en la placa integrada? ¿Puedo agregar una línea en el
ntp.conf
archivo que pueda usarse para intensificar un servidor con, por ejemplo, un servidor NTP en192.168.4.11
? Usando esta dirección IP en mi código arduino, puedo pedir las marcas de tiempoEn caso de prueba, si de alguna manera configuro un servidor NTP en la placa integrada, ¿cómo puedo probar inicialmente el tiempo que viene de él? ¿Existe una utilidad de línea de comando para sondear el servidor NTP y ver si la hora que viene es correcta o no en una computadora normal?
time_stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
. A menos que necesite precisión de microsegundos, el código de la base de datos ya está escrito y bien depurado; ¿Por qué codificar mis propios errores?Respuestas:
Descripción precisa de la consulta
Sincronización inicial de hora NTP
En el sistema de compilación Yocto en
conf/local.conf
agregarntp
receta de la siguiente manera:en el tablero de Target inicialmente detenga el
systemd
servicio:Suponiendo que la placa esté conectada a Internet:
Información : Verifique el tiempo usando
date
Para el lado seguro, también sincronice el reloj de hardware con la hora NTP:
Reiniciar el
systemd
servicioConfigurar un servidor NTP local en la placa integrada
Detener el
systemd
servicio:Edite el
/etc/ntp.conf
para hacer que la placa integrada transmita las marcas de tiempo NTP en el puerto 123. Agregue la siguiente línea:Reiniciar el
systemd
servicio:Lograr sincronización de tiempo con nodos de sensor
Suponiendo que uno tenga tableros que se puedan programar con Arduino; Descargue la
NTPClient
Biblioteca Arduino.En su Sketch use el
NTPClient
constructor para conectarse a su servidor NTP local a través de su dirección IPy obtener las marcas de tiempo del servidor NTP local
Referencias
fuente
Para responder a su primera pregunta, apuntaré a esta pregunta a Ubuntu:
/ubuntu/14558/how-do-i-setup-a-local-ntp-server
Es específico de Ubuntu, pero debería indicarle en la dirección correcta qué paquetes buscar en Yocto.
para el segundo,
ntpdate <ip address of ntp server>
se puede usar para consultar la fecha en un servidor ntp.fuente