TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
wie du beim Starten eines Programms das aktuelle Datum und die Uhrzeit erhalten kannst. Bei vielen Echtzeitanwendungen ist es wichtig, dass jedem Messwert ein Zeitstempel (timestamp) zugeordnet wird, damit man nachvollziehen kann, zu welchem Zeitpunkt die Messung erfolgt ist. |
MUSTERBEISPIELE |
|
![]() |
Der RTC-Chip speichert die aktuelle Datumzeit (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag). Wie üblich kapselt ein Treiber ds3231 die I2C-Kommunikation. Mit dem Aufruf von setDateTime(yy, mm, dd, h, m, s, w) setzt du die aktuelle Datumzeit. Solange die Stromversorgung durch die Knopfzelle erhalten bleibt, wird die Datumzeit automatisch vorgerückt und du kannst sie mit getDateTime() abrufen. In diesem Fall benötigst du also die interne RTC des ESP nicht.
In deinem Programm kannst du zuerst die auskommentierte Zeile verwenden, um die aktuelle Datumzeit zu setzen. Nachher musst du die Zeile wieder auskommentieren, damit das Programm bei jedem Start die aktuelle Zeit auf dem LED-Display ausschreibt.
Programm:
from oxocard import * from ds3231 import DS3231 from time import sleep def show(): display(h) sleep(2) display(m) sleep(2) display(s) sleep(2) display("::") sleep(5) rtc = DS3231() # year, month, day, hours, minutes, seconds,dayOfWeek = 0 for monday #rtc.setDateTime(2019, 1, 22, 8, 10, 0, 3) while True: yy, mm, dd, h, m, s, w = rtc.getDateTime() print("%04d-%02d-%02d - %d:%02d:%02d" %(yy, mm, dd, h, m, s)) show()
Internet-Zeitserver bieten Zeitdienste für weltweit mehrere hundert Millionen Systeme an. Sie benützen ein standardisiertes Datenformat, das Netwerk Time Protocol (NTP). Ein Client macht einen NTP-Request an einen bestimmten Host und erhält die Datumzeit zurück, die aus Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag und Jahrestag (Anzahl Tage seit Jahresbeginn) besteht. Im nachfolgenden Programm synchronisierst du mit dieser Information die im ESP eingebaute RTC.
Um auf das Internet zu gelangen, loggt sich die Oxocard auf einem Access Point ein, holt sich die Zeitinformation vom Server pool.ntp.orgt und setzt damit die interne RTC. Nachher wird die Verbindung zum Access Point geschlossen und die Zeit periodisch angezeigt.
Programm:
import ntptime, utime from oxocard import * def show(): mez = h + 1 # time zone shift display(mez) sleep(2) display("%02d" % m) sleep(2) display("%02d" % s) sleep(2) display("::") sleep(5) ssid = "mySSID" pwd = "myPassword" rc = Wlan.connect(ssid, pwd) ntptime.settime() Wlan.disconnect() while True: yy, mm, dd, h, m, s, w, b = utime.localtime() show()
MERKE DIR... |
Meist müssen Messwerte der aktuellen Zeit zugeordnet werden. Damit diese Information verfügbar bleibt, auch wenn das Messsystem neu gestartet wird, verwendet man eine batteriebgebufferte Realtime-Clock oder bezieht die Zeit über das Internet von einem NTP-Server. |
ZUM SELBST LÖSEN |
|