Ich benutze SIM800E . Ich möchte wissen, welcher AT-Befehl an das Modem gesendet werden soll, um Zeit zu bekommen? Dieses Modem hat eine RTC. Aber ich muss es automatisch durch den Zellturm setzen. Der Tower kann die Uhrzeit auf Anforderung über einen AT-Befehl an das Modem senden. Ich habe in vielen Handys gesehen, dass die Uhrzeit bei Übergaben aktualisiert wird.
Das Handbuch enthält diese Informationen nicht.
gsm
at-commands
gpuguy
quelle
quelle
Antworten:
Ich habe den folgenden Befehl verwendet:
die das Datum und die Uhrzeit zurückgibt, wie:
erfolgreich in Produkten mit drei verschiedenen Zellmodulen: Enfora, Telit und Sierra. Die Tatsache, dass ein + -Zeichen nach dem AT verwendet wird, impliziert, dass es ein allgemeiner (im Gegensatz zu proprietären) Befehl ist und auf den meisten, wenn nicht allen Zellenmodulen verfügbar sein sollte. (Proprietäre Befehle verwenden nach dem AT ein herstellerspezifisches Zeichen wie AT $, AT%, AT! Usw.)
Wie ich in einem Kommentar erwähnt habe, besteht eine andere Möglichkeit darin, eine Verbindung zum Netzwerk herzustellen und die Zeit eines Servers mit einem HTTP-Befehl freizugeben, wenn Sie die Zeit mit diesem Befehl nicht ermitteln können (z. B. werden alle Nullen zurückgegeben).
Dabei handelt es sich entweder um Ihren eigenen Server oder um Google.com usw. Dabei wird auch vorausgesetzt, dass index.html die Hauptseite der Website ist (bei Google nicht).
Es wird ein Header wie folgt zurückgegeben:
Soweit ich weiß, sind alle Server verpflichtet, die GMT-Zeit in ihren Headern zurückzugeben.
quelle
HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\n
da ich der Meinung bin, dass sie/
weniger anfällig für 404 ist und HTTP 1.0 unsere (gerätebezogene) Unkenntnis von HTTP besser widerspiegelt. Außerdem sieht das Semikolon wie ein Tippfehler aus. Ansonsten ist das Datum laut Spezifikation GMT / UTC ( siehe auch ).Erstens wird NITZ in vielen Netzwerken schlecht unterstützt (können Sie COST-CUTTING sagen). Ich würde mich überhaupt nicht darauf verlassen, da 1 von 10 Netzwerken es verwendet, insbesondere an weit entfernten Orten.
Zweitens gilt der Befehl + CCLK für die interne RTC des Modems. Einige Modems können diese Uhr über das Netzwerk aktualisieren. Darauf zu vertrauen ist riskant.
Die obige HTTP-Anfrage ist unvollständig, dh sie funktioniert nicht. Früher wusste ich, wie man das macht, also kehre ich zurück, wenn es funktioniert.
Das ist nicht ganz richtig. Es gibt proprietäre Modembefehle, die der AT + -Konvention folgen. Zum Beispiel ist AT + WOPEN ein proprietäres Sierra-Kommando.
Es gibt eine Reihe von Befehlen, die unabhängig vom Modem gleich sind. Diese sind in den 3GPP-Dokumenten definiert. Die proprietären Befehle sind normalerweise in den Benutzerhandbüchern des Herstellers definiert und eindeutig als proprietär gekennzeichnet.
quelle
AT + CLTS = 1 (Get local time stamp) AT & W (Konfiguration speichern)
Modem ausschalten und Modem einschalten (Neustart, um die lokale Zeit vom Netzwerk abzurufen)
Wenn das Modem das nächste Mal hochfährt, sollten Sie in der Lage sein, die Ortszeit über das Netzwerk abzurufen und diese durch Senden zu lesen
AT + CCLK?
Dies funktionierte für mich im SIM800 GSM-Modem lesen Sie AT-Befehlsbeschreibungen für weitere Informationen
quelle
Kitt:
Funktioniert einwandfrei, danach müssen Sie das Ergebnis analysieren und in clk platzieren, da dies nicht automatisch geschieht. (zumindest in meinem Cinterion)
quelle
Verwenden Sie den Befehl AT + CIPGSMLOC. Es funktioniert gut in SIMCOM-Modulen.
Für diesen Befehl muss der GPRS-Dienst angeschlossen sein, bevor Sie ihn verwenden. Verbinden Sie den GPRS-Dienst zuerst mit der entsprechenden Befehlssequenz und rufen Sie dann mit diesem Befehl Datum und Uhrzeit vom GSM-Netz ab.
Zum Anhängen eines GPRS-Dienstes:
CMD:AT+CGATT=1 CMD:AT+SAPBR=3,1,"Contype","GPRS" CMD:AT+SAPBR=3,1,"APN","" CMD:AT+SAPBR=3,1,"USER","" CMD:AT+SAPBR=3,1,"PWD","" CMD:AT+SAPBR=1,1 CMD:AT+SAPBR=2,1 /* to confirm that GPRS is attached. will show IP if attached */
Dann benutze den GSM Location Befehl:
AT+CIPGSMLOC=1,1
Dieser Befehl benötigt viel Zeit (einige Sekunden), um die Informationen aus dem Netzwerk abzurufen. Geben Sie der Befehlsausführungsfunktion daher eine angemessene Zeitüberschreitung.
Dieser Befehl gibt auch die BTS-Position zurück, mit der das Modul verbunden ist. So können Sie auch den ungefähren Standort des GSM-Moduls ermitteln.
Weitere Informationen finden Sie in diesem Handbuch: (Funktioniert auf die gleiche Weise für SIM800)
SIM900_GSM Location AT Command Manual_V1.00
Beachten Sie auch, dass der Befehl AT + CLBS nicht mit diesem Befehl identisch ist. In einigen Regionen funktioniert es möglicherweise nicht. (Ich konnte es nicht benutzen!). Das AT + CIPGSMLOC funktioniert aber immer.
quelle
+CIPGSMLOC: 302<\r><\n>
als AntwortNITZ, wie von RedGrittyBrick herausgestellt, ist die Antwort. Dies ist jedoch eine Nachricht, die nur vom Netzwerk gesendet wird, normalerweise beim Beitritt zum Netzwerk. Einige Fluggesellschaften senden es, andere nicht. Es gibt keine Standardmethode, um dies anzufordern.
quelle
Hier ist die AT-Befehlssequenz zum Abrufen der Mobilfunknetzzeit. Sie funktionierte in meinem UBLOX LEON G-200 GSM-Modul.
quelle
Senden Sie zuerst diesen beiden Befehl
AT + CLTS = 1; & W
AT + CFUN = 1,1 und als AT + CLTS? Überprüfen Sie, ob Sie diese Antwort + clts: 1 erhalten
und dann diesen Befehl AT + CCLK senden.
quelle
{}
Schaltfläche in der Editor-Symbolleiste für Codeblöcke wie in den anderen Antworten. Dadurch erhalten Sie einen grauen Hintergrund und eine Schrift mit fester Breite, sodass Sie leicht erkennen können, wo Ihr Code beginnt und endet.Ich habe NITZ während der Initialisierung erfolgreich verwendet und CCLK, wenn ich die interne RTC lesen möchte. Es kann jedoch ein oder zwei Minuten dauern, bis die Modem-RTC über das Netzwerk eingestellt ist. Es lohnt sich, ein Flag beizubehalten, um anzuzeigen, ob die Uhrzeit tatsächlich gültig ist.
quelle
Ich habe eine Firmware für ein U-Blox LTE entwickelt. Dort habe ich das AT + CCLK benutzt? um die aktuelle Ortszeit vom Modem zu erhalten.
Es gibt eine Zeit in folgendem Format an. Nicht dass es ein synchronisierter Befehl wäre.
Daher wurde vor der Registrierung der folgende AT-Befehl gesendet, um die Uhrzeit mit dem Netzwerk zu synchronisieren
Meine Befehlssequenz lautet also:
Zusätzliche Logik, um sicherzustellen, dass es die richtige Zeit hat:
Hinweis: NITZ wird in einigen Ländern noch nicht unterstützt ( https://en.wikipedia.org/wiki/NITZ ).
Wenn dies in diesem Land nicht unterstützt wird, ist es am besten, eine Backup-Methode zum Aktualisieren der Zeit zu verwenden.
In meinem Fall haben wir ein GPS-Modul, so dass ich Zeitaktualisierungen über GNSS-Daten erhalte.
Darüber hinaus ist das hier nicht relevant, aber für die Zeitsynchronisation nützlich.
quelle