Ich habe ein Embedded Board, auf dem die Distribution eine benutzerdefinierte Linux-Distribution ist, die auf Yocto basiert.
Ich habe hinzugefügt ntp
und über werde ntpd
ich die Zeit mit den gängigen NTP-Pools entweder über UMTS 3G Dongle oder Ethernet synchronisieren.
Diese Karte ist zusammen mit einigen ESP32 PoE-Karten von Olimex über einen nicht verwalteten Switch verbunden.
Zweck
Die ESP32-Karten verfügen über Sensoren, die Informationen erfassen, einen Zeitstempel hinzufügen und diese über Ethernet an die InfluxDB senden, die auf der eingebetteten Hauptkarte ausgeführt wird, wodurch sie zu einem kabelgebundenen Sensornetzwerk werden. Diese ESP32-Karten haben auch eine RTC DS3231, daher möchte ich, dass sie zuerst die Zeit von einem NTP-Server erhalten, der auf dieser eingebetteten Karte ausgeführt wird, um die RTC zu synchronisieren und dann Informationen an die InfluxDB zu senden.
Fragen
Wie erstellt man einen NTP-Server auf dem Embedded Board? Kann ich der
ntp.conf
Datei eine Zeile hinzufügen, mit der ein Server für z. B. einen NTP-Server umgeschaltet werden kann192.168.4.11
? Mit dieser IP-Adresse in meinem Arduino-Code kann ich nach den Zeitstempeln fragenWenn ich im Falle eines Tests einen NTP-Server auf der eingebetteten Karte einrichte, wie kann ich dann zunächst die daraus resultierende Zeit testen? Gibt es ein Befehlszeilenprogramm, mit dem Sie den NTP-Server abfragen und feststellen können, ob die kommende Zeit auf einem normalen Computer korrekt ist oder nicht?
time_stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
. Sofern ich keine Mikrosekundengenauigkeit benötige, ist der Datenbankcode bereits geschrieben und gut getestet. Warum meine eigenen Fehler codieren?Antworten:
Genaue Beschreibung für die Abfrage
Anfängliche NTP-Zeitsynchronisation
Im Yocto-Build-System unter Rezept wie folgt
conf/local.conf
hinzufügenntp
:auf der Zielplatine beenden Sie zunächst den
systemd
Dienst:Angenommen, das Board ist mit dem Internet verbunden:
Info : Zeit mit prüfen
date
Synchronisieren Sie zur Sicherheit auch die Hardware-Uhr mit der NTP-Zeit:
Starten Sie den
systemd
Dienst neuRichten Sie einen lokalen NTP-Server auf der eingebetteten Karte ein
Beenden Sie den
systemd
Dienst:Bearbeiten Sie das
/etc/ntp.conf
, damit die eingebettete Karte die NTP-Zeitstempel an Port 123 sendet. Fügen Sie die folgende Zeile hinzu:Starten Sie den
systemd
Dienst neu:Zeitsynchronisation mit Sensorknoten erreichen
Angenommen, man hat Boards, die mit Arduino programmiert werden können; Laden Sie die
NTPClient
Arduino Library herunter .Verwenden Sie in Ihrer Skizze den
NTPClient
Konstruktor, um über seine IP-Adresse eine Verbindung zu Ihrem lokalen NTP-Server herzustellenund erhalten Sie die Zeitstempel vom lokalen NTP-Server
Verweise
quelle
Um Ihre erste Frage zu beantworten, werde ich auf diese Antwort von Ask Ubuntu verweisen:
/ubuntu/14558/how-do-i-setup-a-local-ntp-server
Es ist Ubuntu-spezifisch, sollte aber in die richtige Richtung weisen, nach welchen Paketen auf Yocto gesucht werden soll.
Zum zweiten
ntpdate <ip address of ntp server>
kann ein NTP-Server nach dem Datum abgefragt werden.quelle