34. Lektion: NTP/RTCAus Attraktor WikiVersion vom 5. Februar 2024, 22:56 Uhr von Kapest (Diskussion | Beiträge) InhaltsverzeichnisVorbereitungFür diese Lektion muss die Funktion "Synchronisiere die Echtzeituhr des Gerätes" abgeschaltet werden.
Unix-ZeitMicropython verwendet das Zeitkonzept von UNIX/LINUX. Es zählt die Sekunden, die seit dem Beginn der Epoche vergangen sind. Bei UNIX/LINUX ist das der 1.1.1970. In Micropython wird häufig der 1.1.2000 als Epochenbeginn genommen. Beim Pico entspricht die Epoche der von UNIX/LINUX.
MicroPython v1.20.0 on 2023-04-26; Raspberry Pi Pico W with RP2040 >>> import time >>> time.gmtime(0) (1970, 1, 1, 0, 0, 0, 3, 1) >>> MicroPython v1.20.0 on 2023-04-26; ESP32 module with ESP32 >>> import time >>> time.gmtime(0) (2000, 1, 1, 0, 0, 0, 5, 1) >>> NTP/RTCMit Micropython auf unserem Pico haben wir zwei Zeitsysteme zur Verfügung. Das Eine ist die Netzzeit, die wir uns aus dem Internet herunterladen können. Das Andere ist die interne RealTimeClock (RTC) aus der wir das aktuelle Datum und die aktuelle Uhrzeit beziehen können. NTPDa der Pico keine Backup-Batterie an Board hat, so wie der PC, muss die RTC beim Programmstart gestellt werden. Wenn der Pico Kontakt zum Internet hat geht das ganz einfach: # automatisches Stellen der RTC in Thonny wurde abgeschaltet. # Thonny und der Pico wurden neu gestartet. >>> import time >>> import wlantools as wl connecting to network... network config: ('192.168.5.120', '255.255.255.0', '192.168.5.1', '192.168.5.1') >>> time.localtime() (2021, 1, 1, 0, 0, 36, 4, 1) # Hier sind Datum und Uhrzeit falsch. >>> import ntptime >>> ntptime.settime() >>> time.localtime() (2024, 1, 10, 13, 33, 1, 2, 10) # Hier sind Datum und Uhrzeit richtig. >>> Mit >>> ntptime.time() 1704895875 Wenn wir das Ergebnis in einer für uns lesbaren Form darstellen wollen, so geht das so: >>> time.localtime(ntptime.time()) (2024, 1, 10, 14, 24, 47, 2, 10) Das Modul NTP-Server einstellenOb so der NTP-Server eingestellt werden kann muss noch getestet werden: >>> ntptime.host = 'ntp.rz.tu-harburg.de' >>> ntptime.host 'ntp.rz.tu-harburg.de' >>> RTCDie Klasse >>> dir(machine.RTC) ['__class__', '__name__', '__bases__', '__dict__', 'datetime'] Die Methode >>> import machine >>> rtc = machine.RTC() >>> rtc.datetime() (2024, 2, 4, 6, 17, 10, 3, 0) Die Daten werden in einem Tuple übergeben:
Den Wochentag als Namen ausgebenMit einer Liste lassen sich die Namen der Wochentage ausgeben:
Das Module timeDas Modul time bietet 3 Methoden zum Umgang mit Datum und Uhrzeit: gmtime()/localtime()Geben ein Tupel mit den Datums- und Zeitdaten zurück. Das Tuple entspricht nicht ganz dem von >>> import time >>> time.gmtime() (2021, 1, 1, 0, 0, 16, 4, 1) >>> time.localtime() (2021, 1, 1, 0, 0, 41, 4, 1) mktimeDie Methode >>> import time >>> time.mktime(time.localtime()) 1609459860 BeispieleHier folgen 2 Beispiele für die Anwendung der Datums- und Zeitfunktionen in Micropython.
def get_date(): import time date_time = time.localtime() return '-'.join((str(date_time[2]), str(date_time[1]), str(date_time[0]))) Das zweite Beispiel ist eine Funktion die die Uhrzeit als menschemlesbaren String erzeugt: def get_time(): import time date_time = time.localtime() return ':'.join((str(date_time[3]), str(date_time[4]), str(date_time[5]))) Wenn man diese beiden Funktionen in das Modul >>> (year, month, mday, week_of_year, hour, minute, second, milisecond)=rtc.datetime() >>> year 2024 LinksHier ein paar Links zum Thema:
Zurück zur "Micropython Kurs 2023 Teil 2" Startseite |