ich würde gerne die Daten für die Gezeiten vom BSH nutzen. Da kann sich jeder eine TXT-Datei herunterladen. Ich möchte die Date nutzen, um mit einem NeoPixel-Streifen die Gezeiten als eine Art Kalender anzeigen zu lassen. Dafür will ich einen ESP oder RasPi Pico mit Micropython nutzen. Ich dachte, ich nutze einen NTP-Server für die aktuelle Zeit und Datum und suche dann in der Datei nach den Hoch und Tiefstand des Wassers. Die TXT sieht wie folgt aus:
Code: Alles auswählen
I_E#DE__798P2023#
A01#Hersteller :#M1103/BSH-Hamburg, 29.09.2021 08:31:00#
A02#Daten-Art :#Vorausberechnungen#
A03#PegelNr. :#DE__798P#
A04#GT-Name :#Borkum, S¸dstrand#
A06#GT-Jahr :# 2023#
A07#Def.-Jahr :#2020#19#
A08#Position :#53∞34'37''N 6∞39'41''E WGS84#
A11#Zeitzone :#UTC+ 1h00min (MEZ)#
A12#Position GK:# 25 43850.72 R 59 38584.00 H#
A13#Messstelle :#9340030 #
C01#Analyse-Ber:#selbstst‰ndig# #39 39#
C02#Datenumfang:#Zeiten u. Hˆhen: HW NW #
C03#Hˆhenniveau:#PNP#
C04#EinheitZeit:#StdMin#
C05#EinheitHˆhe:# m#
C12#VB-Methode :#HDdU (HW/NW)#
D01#PNP u. NHN :#- 5.02 #
D02#SKN u. NHN :#- 1.79 #
D03#SKN ¸. PNP :# 3.23 #
F01#MHWI :# 9:29 #
F02#MNWI :#15:54 #
G01#MHW :# 6.10 #
G02#MNW :# 3.76 #
LLL#
VB2#DE__798P# #H#So# 1. 1.2023# 5:39# 6.22 # # 1#+ 1:00# 25760# 1#2459945.693419#
VB2#DE__798P# #N#So# 1. 1.2023#12:08# 4.01 # # 1#+ 1:00# 25760# 2#2459945.963949#
VB2#DE__798P# #H#So# 1. 1.2023#18:26# 5.90 # # 1#+ 1:00# 25760# 3#2459946.226667#
VB2#DE__798P# #N#Mo# 2. 1.2023# 0:29# 4.02 # # 2#+ 1:00# 25760# 4#2459946.478812#
VB2#DE__798P# #H#Mo# 2. 1.2023# 6:46# 6.16 # # 2#+ 1:00# 25761# 1#2459946.740542#
VB2#DE__798P# #N#Mo# 2. 1.2023#13:13# 4.04 # # 2#+ 1:00# 25761# 2#2459947.008928#
VB2#DE__798P# #H#Mo# 2. 1.2023#19:29# 5.95 # # 2#+ 1:00# 25761# 3#2459947.270425#
VB2#DE__798P# #N#Di# 3. 1.2023# 1:42# 4.03 # # 3#+ 1:00# 25761# 4#2459947.529475#
VB2#DE__798P# #H#Di# 3. 1.2023# 7:53# 6.14 # # 3#+ 1:00# 25762# 1#2459947.787045#
VB2#DE__798P# #N#Di# 3. 1.2023#14:17# 4.05 # # 3#+ 1:00# 25762# 2#2459948.053569#
VB2#DE__798P# #H#Di# 3. 1.2023#20:28# 6.04 # # 3#+ 1:00# 25762# 3#2459948.310968
Mein Ansatz ist nach der Spalte mit den Zeiten zu suchen und dann die Zeilennummern als Tagesnummer im Jahr zu nutzen. Aber irgendwie ist das so umelegant. Habt ihr da eine Idee?
Mein Code bisher:
Code: Alles auswählen
import datetime
# open file for reading
with open('data.txt', 'r') as file:
# read all lines
lines = file.readlines()
# get the last line starting with 'VB1'
vb1_line = [line for line in lines if line.startswith('VB1')][-1]
# extract the 7th column after LLL#
time_strings = [x.strip() for x in vb1_line.split('LLL#')[-1].split('#') if x]
time_strings = time_strings[6::7]
# convert time strings to datetime objects
times = [datetime.datetime.strptime(x, '%H:%M') for x in time_strings]
# do something with the datetime objects, e.g. print them
for time in times:
print(time)