amuttsch / multiqlock

Automatically exported from code.google.com/p/multiqlock
0 stars 0 forks source link

plugin_TaskScheduler #14

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Mir gefällt Jens Idee zu bestimmten Zeiten Aktionen durchführen zu können. 
http://groups.google.com/group/qlocktwo/browse_thread/thread/63d9f4359bd42202/cd
92e330da0bada8?show_docid=cd92e330da0bada8

Eine Realisierung könnte ich mir so vorstellen:
Task-Klasse und eine collection von tasks in ClockHandler die zb in einer 
taskScheduler() abgearbeitet werden. Oder doch in loop()?...

class::Task = ein Task
 - Starttime | e.g. 2013-01-01 00:00:00
 - Action    | {CHANGEMODE|PRESSBUTTON}
 - Value     | {FIREWORK|CLOCK}("define FIREWORK 5" mode=5=firework.)

tasks = array ([0] => task1, [1] => task2);
                ^^ ID, um Task nachher auch wieder löschen zu können

Administration von tasks wäre im ersten Schritt wohl über Serial.read das 
einfachste. Sprich man muss Computer mit Uhr verbinden - und kann mit Arduino / 
Serial Monitor Tasks ändern. 

"Get-Tasks" - zeigt Tabelle von gespeicherten Tasks.
"Remove-Task 5" - Löscht den Task mit der ID 5.
"Add-Task 2012-12-31-23-59-59 CHANGEMODE FIREWORK" //umschalten zu feuerwerk
"Add-Task 2013-01-01-00-00-20 CHANGEMODE CLOCK" //umschalten zu uhrmodus
"Add-Task 2013-01-01-00-00-20 WRITETEXT 'HAPPY BIRTHDAY XY'" //Text '...' 
scrollen
^^ plugin_text vorausgesetzt. 

Vielleicht sollten wir das sowieso so wie bei den großen outdoor-uhren machen: 
alle x sekunden automatisch den Modus wechseln??? > CLOCK > DATE > TEMPERATURE 
> CLOCK > ... 

Ideen für Erweiterungen: 
- Serien-Funktion wie in Outlook (wiederholen alle * m/h/d/m/y)
- leichtere Programmierung: z.B. Hardware-REC-Taste. 
Funktion ähnlich wie der Excel Makro recorder. Solange man REC drückt 
speichert UHR alle vorgenommenen Aktionen und erstellt dann einen Task für 
"jetzt". 
Gewünschte Zeit könnten wir dann wie bei einem "normalen" wecker stellen - 
sprich in mehreren Stufen kann ich sagen was ich will. Dafür wäre ein 
plugin_TextScroll hilfreich... 

Original issue reported on code.google.com by goebernd...@gmail.com on 19 Jan 2012 at 9:47

GoogleCodeExporter commented 9 years ago
Also ich finde die Idee auch nicht schlecht. Ich habe auch schon an ein 
Sylvester "Easteregg" gedacht, dass um Mitternacht das Feuerwerk aktiviert.

Generell sollte dafür ein neuer Handler geschrieben werden, z.B. TaskHandler. 
In die ClockHandler passt das nicht ganz so rein ;)

Ein erster Schritt ist alle Plugins mit eindeutigen IDs zu versehen. Denn die 
Plugins sind ja nicht bei allen gleich angeordnet / aktiv.

Die Konfiguration würde ich nicht per Serial.read() erfolgen lassen. Wenn die 
Uhr einmal keinen Strom hat vergisst sie alle Tasks. Man könnte sie aber im 
EEPROM abspeichern, allerdings wird es denk ich zu wenig Platz haben. Grade 
wenn irgendwelche Lauftexte angezeigt werden sollen wirds schnell knapp mit dem 
1KB Speicher.

Mein Vorschlag ist, dem TaskHandler eine add() Methode zu spendieren, wo man 
als Parameter den Timestamp und die Aktion mitgeben kann.

Den Wechsel der Plugins zeitgesteuert wie bei den Outdooruhren finde ich auch 
gut. Hier müssen wir aber einen guten Weg finden, wie wir dies geschickt 
lösen können (Stichwort IDs). Dies müsste im PluginHandler gelöst werden, 
da dieser für die Verwaltung und Ansteuerung der Plugins verantwortlich ist.

Zu der Serienfuntion: Finde ich gut und sollte bei der Implementierung direkt 
mit berücksichtigt werden

Die Geschichte mit der REC Taste um Macros aufzunehmen wird denke ich auch 
schwierig, bzw. sehe ich jetzt nicht direkt einen Anwendungszweck. Da man ja 
grade zur entsprechenden Zeit die Aktionen "aufnehmen" muss fällt das beim 
Sylvester etwas schwer aus ;) Auch haben wir hier wieder das Problem mit dem 
Speichern und dem Anzeigen von Flusstext.

Apropos Flusstext: Das finde ich auch eine sehr gute Idee für die Tasks. Man 
könnte ja Taskplugins erstellen :)

Soweit meine Ideen.

Gruß Andreas

Original comment by asfa...@googlemail.com on 19 Jan 2012 at 6:12