amuttsch / multiqlock

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

Remote control via Serial #11

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Finde die Idee super die Uhr über die serielle Schnittstelle fernsteuern zu 
können. (ich habe gerade keine Buttons an meiner Uhr, daher sehr praktisch)

In Multiqlock 2.3.2 ist es bereits möglich den Modus über die Serielle zu 
ändern. 

Das sollten wir erweitern:
===============================
'?' is no command.
Known commands:
-------------------------------
m    change [m]ode
t    display current [t]ime
s    display time of last [s]ync with dcf77. (since poweron)
+,1  emulate press of button[1] (minute++)
-,2  emulate press of button[2] (hour++)
-------------------------------

Man kann dann zb '+++-t' im SerialMonitor eingeben und Multiqlock erhöht um 
3min und 1h und gibt anschließend die Uhrzeit aus. 
Ich denke es reicht am Anfang einsilbilge Kommandos zu verwenden. Natürlich 
könnten wir auch Get-Time, Set-Time, Get-LastSyncDCF77 verwenden, aber das 
macht es nur unnötig kompliziert. 

s - getLastSync() kann ich leider nicht testen, da mein DCF77-Modul gerade 
nicht funktioniert. 

Erweiterung in multiqlock.pde
==============================

void loop()
{  
  boolean serialModeChange = false;
  boolean serialButton1 = false;
  boolean serialButton2 = false;

  /* ... */

  // Verbindung über Serial Monitor
  if (Serial.available() > 0) {

    // read the incoming byte:
    incomingChar = Serial.read();

    switch (incomingChar)
    {
      case 'm':
        serialModeChange = true;
        break;
      case '+':
      case '1':
        serialButton1 = true;
        break;
      case '-':
      case '2':
        serialButton2 = true;
        break;
      case 't':
        Serial.print("My current time: ");
        Serial.print(getHours());
        Serial.print(":");
        Serial.print(getMinutes());
        Serial.print(":");
        Serial.println(getSeconds());
        break;
      case 's':
        Serial.print("Last sync with DCF77:");
        Serial.println(getLastSync());
        break;
      default: 
        Serial.print("'");
        Serial.print(incomingChar);
        Serial.println("' is no command.");
        Serial.println("Known commands:");
        Serial.println("-------------------------------");
        Serial.println("m    change [m]ode");
        Serial.println("t    display current [t]ime");
        Serial.println("s    display time of last [s]ync with dcf77. (since poweron)");
        Serial.println("+,1  emulate press of button[1] (minute++)");
        Serial.println("-,2  emulate press of button[2] (hour++)");
        Serial.println("-------------------------------");
        break;
    }
  }

  // Taste Minuten++ gedrueckt?
  if (button1.pressed() || serialButton1) {  
    callPluginButton(mode, button1, BUTTON1);
    serialButton1 = false;
  }

  // Taste Stunden++ gedrueckt?
  if (button2.pressed() || serialButton2) {
    callPluginButton(mode, button2, BUTTON2);
    serialButton2 = false;
  }

Um lastSync() zu ermöglichen muss man tiefer greifen. 
Mein Vorschlag den Zeitpunkt in Clockhandler bei erfolgreichem Update in DS1307 
zu speichern. 

Erweiterung in ClockHandler.h
==============================
char* getLastSync();

Erweiterung in ClockHandler.cpp
==============================
char* getLastSync()
{
    return ds1307.getLastSync();
}

void updateClockHandler()
{  
  /* ... */

  // DCF77-Empfaenger abfragen
  if(dcf77.poll()) 
  {
    /* ... */

    if(dcf77.getYear() > 2010) {
      /* ... */
      if(dcf77Helper.samplesOk()) {

        ds1307.setLastSync(dcf77.asString());

  /* ... */
}

Erweiterung in DS1307.h 
==============================
class DS1307 {
public:
  char* getLastSync();

private:
  char* _lastSync;
}

Erweiterung in DS1307.cpp 
==============================
void DS1307::setLastSync(char* timestamp) {
  _lastSync = timestamp;
}

char* DS1307::getLastSync() {
  return _lastSync;
}

lg Bernhard

Original issue reported on code.google.com by goebernd...@gmail.com on 10 Jan 2012 at 10:25

Attachments:

GoogleCodeExporter commented 9 years ago
Hey, super Idee, deine Erweiterungen gefallen mir.

Ich werde deine Anpassungen testen und in die multiqlock übernehmen.

Wird dann in die 2.3.3 zusammen mit dem fix für die AT Version mit einfließen.

Original comment by asfa...@googlemail.com on 11 Jan 2012 at 6:59

GoogleCodeExporter commented 9 years ago
Kleine Ankündigung: Ich habe mein WLAN Modul bekommen, bald wird dies auch 
über WLAN klappen ;)

Original comment by asfa...@googlemail.com on 13 Jan 2012 at 9:12

GoogleCodeExporter commented 9 years ago

Original comment by asfa...@googlemail.com on 13 Jan 2012 at 9:12

GoogleCodeExporter commented 9 years ago
So, ich habe deine Anpassungen in den neuen SerialHandler eingebaut.

Wird dann auch in der nächsten Version drin sein.

Original comment by asfa...@googlemail.com on 20 Jan 2012 at 10:42

GoogleCodeExporter commented 9 years ago
WLAN klingt aber sehr interessant. Was hast Du da bestellt und was schwebt Dir 
genau vor?

Original comment by Tobias.A...@gmail.com on 22 Jan 2012 at 5:16

GoogleCodeExporter commented 9 years ago
http://www.watterott.com/de/Roving-Networks-RN-XV-WiFly-Module

Das Modul habe ich bestellt und damit schon ein wenig herum experimentiert.

Was ich damit genau realisieren will muss ich mir noch überlegen, da der 
Speicher auf dem Arduino auch langsam knapp wird (Haben nur noch ca. 4KB platz 
;) )

Original comment by asfa...@googlemail.com on 22 Jan 2012 at 5:18

GoogleCodeExporter commented 9 years ago
Ausgesprochen schöne Lösung mit SerialHandler in v2.3.3.
Gratulation!

Das Problem mit den langen Zeilen hatte ich auch schon mit 2.3.2. 
Bei mir war das Problem jedoch irgendwo anders und Arduino hat mich nur immer 
hier hin verwiesen. Wäre toll wenn es da noch eine Verbesserung mit sprintf 
o.ä. gäbe. 

Original comment by goebernd...@gmail.com on 22 Jan 2012 at 9:05

GoogleCodeExporter commented 9 years ago
Danke :)

Wegen sprintf muss ich mal schauen, ob es das Problem lösen kann. Ich hoffe es.
Ich werde es die Tage mal testen.

Original comment by asfa...@googlemail.com on 22 Jan 2012 at 10:05

GoogleCodeExporter commented 9 years ago
SerialHandler ist ja soweit fertig, deswegen mach ich die Issue mal zu.

Wegen sprintf werde ich mich noch erkundigen und testen.

Original comment by asfa...@googlemail.com on 28 Jan 2012 at 12:49