Używam SIM800E . Chcę wiedzieć, jakie polecenie AT należy wysłać do modemu, aby uzyskać czas? Ten modem ma RTC. Ale muszę ustawić to automatycznie przez wieżę komórkową. Wieża może wysłać czas do modemu na żądanie za pomocą polecenia AT. Widziałem w wielu telefonach, że czas jest aktualizowany podczas przekazywania.
Instrukcja nie ma tej informacji.
gsm
at-commands
gpuguy
źródło
źródło
Odpowiedzi:
Użyłem następującego polecenia:
która zwraca datę i godzinę, na przykład:
z powodzeniem w produktach wykorzystujących trzy różne moduły komórkowe: Enfora, Telit i Sierra. Fakt, że używa AT po znaku AT, sugeruje, że jest to powszechne (w przeciwieństwie do zastrzeżonych) polecenie i powinno być dostępne w większości, jeśli nie we wszystkich modułach komórkowych. (Polecenia zastrzeżone używają znaku AT po dostawcy, np. AT $, AT%, AT! Itd.)
Jak wspomniałem w komentarzu, jeśli nie możesz uzyskać czasu za pomocą tego polecenia (na przykład zwraca wszystkie zera), to innym sposobem jest połączenie się z siecią i zwolnienie czasu z serwera za pomocą polecenia HTTP.
gdzie somehost jest albo własnym serwerem, albo Google.com itp. Zakłada się również, że index.html jest główną stroną witryny (nie dotyczy to Google).
Zwróci nagłówek taki jak:
O ile mi wiadomo, wszystkie serwery są zobowiązane do zwrócenia czasu GMT w swoich nagłówkach.
źródło
HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\n
uważam, że/
jest mniej podatny na 404s i że HTTP 1.0 lepiej reprezentuje naszą (pod względem urządzenia) ignorancję HTTP. Poza tym średnik wygląda jak literówka. Poza tym datą jest GMT / UTC według specyfikacji ( patrz także ).Przede wszystkim NITZ jest słabo obsługiwany w wielu sieciach (czy można powiedzieć CUT-CUTTING). Nie polegałbym na tym wcale, ponieważ korzysta z niego 1 na 10 sieci, szczególnie w odległych miejscach.
Po drugie, polecenie + CCLK dotyczy wewnętrznego RTC modemu. Niektóre modemy mają możliwość aktualizacji tego zegara z sieci. Poleganie na tym jest ryzykowne.
Powyższe żądanie HTTP jest niekompletne, tzn. Nie działa. Wcześniej wiedziałem, jak to zrobić, więc wrócę, gdy zadziała.
To nie do końca prawda. Istnieją zastrzeżone polecenia modemowe zgodne z konwencją AT +. Na przykład AT + WOPEN jest zastrzeżonym poleceniem Sierra.
Istnieje pewien zestaw poleceń, które są takie same niezależnie od modemu. Są one zdefiniowane w dokumentach 3GPP. Polecenia zastrzeżone są zwykle zdefiniowane w instrukcjach obsługi dostawcy i wyraźnie oznaczone jako zastrzeżone.
źródło
AT + CLTS = 1 (Uzyskaj lokalny znacznik czasu) AT&W (Zapisz konfigurację)
Wyłącz modem i włącz modem (uruchom ponownie, aby uzyskać czas lokalny z sieci)
Następnym razem, gdy modem się uruchomi, powinieneś być w stanie uzyskać czas lokalny przez sieć i można go odczytać, wysyłając
AT + CCLK?
To zadziałało dla mnie za pomocą modemu SIM800 GSM czytać opisy poleceń AT, aby uzyskać więcej informacji
źródło
Kit:
Działa idealnie, po czym musisz przeanalizować wynik i umieścić go w clk, ponieważ nie dzieje się to automatycznie. (przynajmniej w moim Cinterionie)
źródło
Użyj polecenia AT + CIPGSMLOC. Działa dobrze w modułach SIMCOM.
To polecenie wymaga dołączenia usługi GPRS przed użyciem. Najpierw podłącz usługę GPRS, używając odpowiedniej sekwencji poleceń, a następnie użyj tego polecenia, aby uzyskać datę i godzinę z sieci GSM.
Aby dołączyć usługę GPRS:
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 */
Następnie użyj polecenia Lokalizacja GSM:
AT+CIPGSMLOC=1,1
Ta komenda potrzebuje dużo czasu (kilku sekund), aby uzyskać informacje z sieci, dlatego należy odpowiednio ustawić limit czasu dla funkcji wykonywania komendy.
To polecenie zwraca również lokalizację BTS, do której moduł jest podłączony. Dzięki temu możesz uzyskać z grubsza dokładną lokalizację modułu GSM.
Więcej informacji można znaleźć w tym podręczniku: (działa tak samo dla SIM800)
SIM900_GSM Location AT Command Manual_V1.00
Zauważ również, że polecenie AT + CLBS nie jest tym samym, co to polecenie. Może nie działać w niektórych regionach. (Nie byłem w stanie tego użyć!). Ale AT + CIPGSMLOC zawsze działa.
źródło
+CIPGSMLOC: 302<\r><\n>
odpowiedźNITZ, jak wskazał RedGrittyBrick, jest odpowiedzią. Jest to jednak wiadomość wysyłana tylko przez sieć, zwykle po dołączeniu do sieci. Niektórzy przewoźnicy to wysyłają, inni nie. Nie ma standardowego sposobu, aby o to poprosić.
źródło
Oto sekwencja poleceń AT, aby uzyskać czas w sieci komórkowej. Działa w moim module GSM UBLOX LEON G-200 .
źródło
najpierw wyślij te dwa polecenia
AT + CLTS = 1; & W
AT + CFUN = 1,1 i niż AT + CLTS? sprawdzić, czy otrzymałeś tę odpowiedź + clts: 1,
a następnie wysłać to polecenie AT + CCLK?
źródło
{}
przycisku na pasku narzędzi edytora do bloków kodu, jak w innych odpowiedziach. To da szare tło i czcionkę o stałej szerokości, dzięki czemu łatwiej będzie zobaczyć, gdzie zaczyna się i kończy kod.Z powodzeniem korzystałem z NITZ podczas inicjalizacji i CCLK, gdy chcę odczytać wewnętrzny RTC. JEDNAK może zająć minutę lub dwie, zanim modem RTC zostanie ustawiony z sieci. Warto zachować flagę, aby wskazać, czy czas rzeczywiście jest ważny.
źródło
Opracowałem oprogramowanie układowe dla U-Blox LTE. Czy użyłem AT + CCLK? aby uzyskać bieżący czas lokalny z modemu.
Daje czas w następującym formacie. Nie dlatego, że jest to polecenie zsynchronizowane.
Dlatego przed rejestracją wysłano następujące polecenie AT, aby zsynchronizować czas z siecią
Więc moja sekwencja poleceń to:
Dodatkowa logika zapewniająca właściwy czas:
Uwaga: NITZ jest jeszcze obsługiwany w ograniczonym zestawie krajów ( https://en.wikipedia.org/wiki/NITZ )
Dlatego najlepiej jest mieć zapasowy sposób aktualizacji czasu, jeśli nie jest obsługiwany w tym kraju.
W moim przypadku mamy moduł GPS, więc otrzymuję aktualizacje czasu za pośrednictwem danych GNSS.
Dodatkowo, co nie jest tu istotne, ale uważane za przydatne do synchronizacji czasu.
źródło