Auswertung Ereignisliste
Verfasst: Donnerstag 6. August 2009, 10:54
Hallo,
ich habe in meiner Hauselektrik ein Gerät (Gira Homeserver), das über Logikbausteine programmiert werden kann, um bestimmte Aufgaben zu erledigen. Unter anderem kann dieses Gerät einen Bildschirm ansteuern, auf dem die Zustände der Hauselektrik visualisiert werden. Auf diesem Bildschirm möchte ich ein Liste der nächsten anstehenden Ereignisse anzeigen (z.B. Müllabfuhr, Geburtstage usw). Die Ereignisse sollen aus einer Textdatei eingelesen werden. Inhalt als Beispiel:
17.01. Anna Geburtstag
05.02. Stefan Geburtstag
23.03. Michael Geburtstag
17.04. Tine Geburtstag
20.05. Peter Geburtstag
10.06. Müllabfuhr
13.ß7. Anja Geburtstag
05.08. Jonathan Geburtstag
06.08. Müllabfuhr
17.09. Susanne Geburtstag
17.09. Petra Geburtstag
22.10. Katharina Geburtstag
22.10. Müllabfuhr
22.10. Holger Geburtstag
14.11. Constantin Geburtstag
23.12. Tina Geburtstag
Jetzt zum eigentlichen Problem: Der Logikbaustein, der aus der Textdatei die nächsten 10 Ereignisse liest, exisitiert noch nicht. Es gibt aber die Möglichkeit, selber Logikbausteine zu erstellen, die für komplexere Aufgaben auf Python zurückgreifen. Damit bin ich allerdings überfordert.
Hier meine Bitte an Euch: Kann jemand ein Skript erstellen, das diese Aufgaben erledigt:
1. Einlesen der Textdatei
2. Speichern der nächsten 10 Ereignisse ab heute in einem Array
3. Gegen Jahresende sollen natürlich dann ggfls die Termine ab Januar berücksichtigt werden, wenn die restlichen Ereignisse des Jahres weniger als 10 sind.
Leider gibt es einige blöde Randbedingungen:
1. Das Gerät kennt nur die module 'time' und 'string' (neben builtin)
2. Das Gerät kennt nur einen streng linearen Ablauf, d.h. for-Schleifen sind nicht möglich.
3. Ergebnisse können pro Zeile in einer Variablen gespeichert werden, die auch eine Liste sein kann.
Hier mal ein Beispiel einer Zeile, die das Gerät verarbeiten kann (habe ich einem anderen Logikbaustein entnommen):
map( lambda x:x.strip().split(chr(124),1)[0].strip(), EN[2].split('\n') ).index( __import__('time').strftime('%d.%m') )
EN[2] ist hierbei die Speicherstelle, in der die eingelesene Textdatei liegt. Das Ergebnis wird in einer anderen Liste gespeichert
Wäre toll, wenn sich jemand hier herausgefordert fühlt, diese Aufgabe zu lösen.
Vielen Dank schonmal im Voraus.
Gruß
Alex
ich habe in meiner Hauselektrik ein Gerät (Gira Homeserver), das über Logikbausteine programmiert werden kann, um bestimmte Aufgaben zu erledigen. Unter anderem kann dieses Gerät einen Bildschirm ansteuern, auf dem die Zustände der Hauselektrik visualisiert werden. Auf diesem Bildschirm möchte ich ein Liste der nächsten anstehenden Ereignisse anzeigen (z.B. Müllabfuhr, Geburtstage usw). Die Ereignisse sollen aus einer Textdatei eingelesen werden. Inhalt als Beispiel:
17.01. Anna Geburtstag
05.02. Stefan Geburtstag
23.03. Michael Geburtstag
17.04. Tine Geburtstag
20.05. Peter Geburtstag
10.06. Müllabfuhr
13.ß7. Anja Geburtstag
05.08. Jonathan Geburtstag
06.08. Müllabfuhr
17.09. Susanne Geburtstag
17.09. Petra Geburtstag
22.10. Katharina Geburtstag
22.10. Müllabfuhr
22.10. Holger Geburtstag
14.11. Constantin Geburtstag
23.12. Tina Geburtstag
Jetzt zum eigentlichen Problem: Der Logikbaustein, der aus der Textdatei die nächsten 10 Ereignisse liest, exisitiert noch nicht. Es gibt aber die Möglichkeit, selber Logikbausteine zu erstellen, die für komplexere Aufgaben auf Python zurückgreifen. Damit bin ich allerdings überfordert.
Hier meine Bitte an Euch: Kann jemand ein Skript erstellen, das diese Aufgaben erledigt:
1. Einlesen der Textdatei
2. Speichern der nächsten 10 Ereignisse ab heute in einem Array
3. Gegen Jahresende sollen natürlich dann ggfls die Termine ab Januar berücksichtigt werden, wenn die restlichen Ereignisse des Jahres weniger als 10 sind.
Leider gibt es einige blöde Randbedingungen:
1. Das Gerät kennt nur die module 'time' und 'string' (neben builtin)
2. Das Gerät kennt nur einen streng linearen Ablauf, d.h. for-Schleifen sind nicht möglich.
3. Ergebnisse können pro Zeile in einer Variablen gespeichert werden, die auch eine Liste sein kann.
Hier mal ein Beispiel einer Zeile, die das Gerät verarbeiten kann (habe ich einem anderen Logikbaustein entnommen):
map( lambda x:x.strip().split(chr(124),1)[0].strip(), EN[2].split('\n') ).index( __import__('time').strftime('%d.%m') )
EN[2] ist hierbei die Speicherstelle, in der die eingelesene Textdatei liegt. Das Ergebnis wird in einer anderen Liste gespeichert
Wäre toll, wenn sich jemand hier herausgefordert fühlt, diese Aufgabe zu lösen.
Vielen Dank schonmal im Voraus.
Gruß
Alex