Word-Clock Version 2.0.0

Es gibt eine neue Version der Word-Clock, die ich auf GitHub bereitgestellt habe – ohne MQTT.

In diesem Beitrag geht es um eine neue Software-Version der Word-Clock, die ich bereits in einem älteren Beitrag vorgestellt habe. In dem Beitrag „Eigene Word-Clock bauen“ gibt es mehr Infos über die Uhr. Wer also nicht weiß worum es geht, sollte vorher dort einen Blick drauf werfen.

Neue Word-Clock Software

Ich habe gemerkt, dass MQTT bei der Word-Clock sehr wenig Sinn macht. Es gab auch häufiger Probleme bei der Installation und Nutzung der ersten Version, weshalb ich mich entschlossen habe eine neue Version zu programmieren, die ohne MQTT auskommt und einfach über den Webbrowser gesteuert werden kann.

Neue Funktionen für die Word-Clock

In dem Zuge habe ich die Uhr auch noch um weitere Funktionen ergänzt. Es gibt jetzt die Möglichkeit auch eine Hintergrundfarbe zu setzen und Icons sowie Temperatur-Werte anzuzeigen. Über eine HTTP-Schnittstelle lässt sich das Ganze über ein Hausautomatisierungsprogramm wie z.B. Home-Assistant konfigurieren, dass in einem bestimmten Intervall die aktuelle Temperatur und ein Wetter-Icon dargestellt werden. Ich werde vermutlich für Home-Assistant noch eine Component schreiben, die dann auch auf GitHub zur Verfügung gestellt wird. Die Icons sind zwar aktuell noch nicht die hübschesten, jedoch werde ich da schauen, dass ich die noch etwas besser hinbekomme. Es ist leider nicht ganz so einfach, wenn man nur 11×11 Pixel zur Verfügung hat 🙂

Das GitHub-Repository ist noch das selbe geblieben. Der alte Code ist über den Tag „1.0.1“ abzurufen. Die neue Version findet man im Master-Branch. Dort finden sich auch weitere Informationen zur Installation und Nutzung der Word-clock. Der Code ist zwar noch etwas unaufgeräumt, jedoch wird sich das in Zukunft auch noch ändern. Mir war es jetzt ersteinmal wichtig eine funktionierende Version fertigzustellen. Wer sich am Code oder an den Icons stört darf gerne einen Pull-Request erstellen 🙂 Jeder ist herzlich dazu eingeladen an der Uhr mitzuentwickeln.

Ich hoffe, dass euch der Ansatz für die neue Version gefällt. Vorschläge sind gerne Willkommen und sogar erwünscht.

27 Antworten auf „Word-Clock Version 2.0.0“

  1. Hi und erst mal ein dickes Lob für die tollen Vorlagen und Beschreibungen. Habe mir entsprechende Wortuhr nachgebaut und sie funktioniert sogar (war ich schon begeistert Neuling auf diesem Gebiet).

    Habe nur ein Problem und ich hoffe es kann mir geholfen werden. Meine Uhr läuft, warum auch immer 15 min vor … hat jemand eine Idee?

    1. Hi, vielen Dank für das Lob 🙂 Ich hatte auch ab und zu das Problem, dass die Zeit falsch angezeigt wird. Das kommt darauf an auf welchen NTP-Server (Zeitserver) sich die Uhr verbindet, da es wohl einige Zeitserver gibt, die die falsche Uhrzeit ausliefern. In der Zeile 190 (https://github.com/panbachi/wordclock/blob/master/wordclock/wordclock.ino#L190) ist ein Zeitserver-Pool (pool.ntp.org) angegeben. Dort kannst du mal versuchen „de.pool.ntp.org“ anzugeben. Viele Router sind auch als NTP-Server konfiguriert. Wenn du eine FritzBox verwendest kann du versuchen „fritz.box“ als NTP-Server anzugeben.

      Beste Grüße

  2. Hallo noch mal und Danke für die fixe Antwort. Bringt leider nichts oder habe ich das bisher falsch gesehen? Muss man die Uhr um Zwölf Uhr in Betrieb nehmen, damit die läuft? habe sie bis jetzt mehr mal vom Strom genommen und wieder angeschlossen. In Zeile 190 entsprechen de.pool.ntp.org eingetragen, auch ein Test mit „1.de.pool.ntp.org“ hat nichts gebracht. Der letzte Versuch ist jetzt mit „ptbtime1.ptb.de“ (wohl der Zeitserver von Nürnberg).

    Ansonsten fürs Verständnis, für einen Anfänger wie mich: die Daten welche in den einzelnen libraries hinterlegt sind, lässt man immer in ruhe oder werden daten vom entsprechenden Sketch, wenn man ihn hochlädt mit eingelesen?

    Gruß, Daniel

        1. Da muss ich dann nochmal schauen woran das liegen könnte, dass der die Uhrzeit falsch darstellt, bzw. das der bei dir immer bei zwölf Uhr anfängt.

          Und noch zu der anderen Frage: Ansonsten fürs Verständnis, für einen Anfänger wie mich: die Daten welche in den einzelnen libraries hinterlegt sind, lässt man immer in ruhe oder werden daten vom entsprechenden Sketch, wenn man ihn hochlädt mit eingelesen?

          Genau. In der Arduino installierst du die Bibliotheken einfach über den Bibliotheksverwalter und die werden dann beim Kompilieren des Sketches eingebunden.

  3. Konntest du das schon probieren? Ansonten Versuch ich mal ob Version 1.0 läuft. Der Quelltext ist meines Erachtens anders aufgebaut, werde berichten ob der läuft

    1. Ich hatte jetzt am Wochenende nochmal den Quellcode überprüft um herauszufinden woran das liegen könnte. Der einzige Fall womit ich das Problem bislang reproduzieren konnte war, wenn keine Verbindung zum NTP-Server aufgebaut werden konnte, also wenn ich in dem Router der Uhr den Internetzugriff gesperrt hatte. Ist das bei dir der Fall?

      1. Hm, Problem bei der Geschichte ist, dass ich einen Vodafone Router, die „Vodafone Station“ habe… Bin ehrlich gesagt nicht gerade zufrieden mit der Kiste, da man zu wenig Einstellungsmöglichkeiten hat und einem die W-LAN-Geräte, die sich mit dem Router verbinden nicht automatisch angezeigt werden, man muss jedes Gerät selber „umbenennen“, aber Probleme habe ich mit keinem, dass die Internetverbindung untersagt wird, außer mit meinem Repeater, aber das ist sicher noch einmal etwas anderes…

        Hilft es, wenn ich bestimmte Ports freigebe?

  4. Ich hätte zwei Fragen:
    1. Läuft die Uhr standardmäßig (bei Sommerzeit) 2 Stunden hinterher (was ja am Server liegt). – Gibt es eine Möglichkeit, standardmäßig auf Winterzeit einzustellen, sodass man nur noch für Sommerzeit umstellen muss?

    2. Gibt es denn auch einen Code, bei dem wie bei der Originalversion in den Ecken noch die einzelnen Minuten angezeigt werden kann?

    Vielen Dank 🙂

    1. Hi,

      sorry für die späte Antwort, war die letzten Wochen im Urlaub 🙂

      1. Du kannst über die Weboberfläche die Zeitzone anpassen. Im Code ließe sich jedoch fix eine bestimmte Zeitzone einstellen. Dazu musst du den Wert in Sekunden in Zeile 183 (https://github.com/panbachi/wordclock/blob/master/wordclock/wordclock.ino#L183) anpassen. Also offset auf 3600 für eine Stunde bzw. 7200 für 2 Stunden setzen.

      2. Der Code ließe sich dahingehend erweitern. Wenn ich die Zeit finde würde ich schauen ob ich da was ergänze. Ansonsten kann jeder der Interesse hat an dem Code mitwirken.

      Beste Grüße

  5. Hi,

    zuerst ein großes Lob für Dein tolles Projekt, welches auch mich zum Nachbau inspiriert hat, mein Aufbau unterscheidet sich wie folgt:
    Frontplatte aus 3mm schwarzem Plexiglas, dahinter weißes Blatt Papier als Diffusor, Gitter für LED-Unterteilung mittels 3D-Drucker erstellt, LED werden von der Rückseite direkt auf das Gitter geklebt.
    Fazit: Frontplatte dürfte etwas dünner sein, damit verbessert sich der Blickwinkel auf die Uhr – sonst top!

    Dank & Gruß, Thorsten

  6. Das DXF für die plate scheint nicht i.O. zu sein.
    Könntest Du noch mal ein dxf mit nur einem Layer erstellen?
    Beim Import erscheint nämlich nur ein Liniengitter.
    Danke.
    makertobi

  7. Klasse Beschreibung und ein echt tolles Projekt! Ich habe eine Edelstahlplatte gelasert geschenkt bekommen und würde es gerne nun nachbauen. Leider fehlt auf dieser die letzte Buchstabenzeile. Wie müsste ich den Code anpassen um dies zu berücksichtigen? Die Anzahl der LED müsste angepasst werden und was noch?

    vielen Dank schon mal für den kleinen Denkanstoß!

    Viele Grüße

    1. Hi, freut mich, dass dir das Projekt gefällt 🙂

      Das Problem hierbei ist, dass die IDs der LEDs in der letzten Zeit anfangen. Also die unterste, linke LED (wenn man auf die Uhr von vorne schaut, also das „E“) hat den Wert 0, da dort die Kabel angeschlossen werden. Anschließend geht es im Zick-Zack nach oben. Du müsstest das bei dir anders machen. Du müsstest bei dir die LEDs mit umgekehrter Pfeilrichtung anbringen, also so, dass du dann in der letzten Zeit die Kabel nicht links sondern rechts anschließt also auf das „R“ von „UHR“. Damit ersparst du dir dann sehr viel Arbeit was den Code angeht. Beim Code hast du dann zwei Möglichkeiten.

      Entweder (was aber lange dauert und lästig ist) in den Zeilen von 31 bis 177 überall die IDs der LEDs um 11 verringern.

      Oder du nimmst die einfachere Lösung, indem du nur bei dem Zugriff auf die LEDs den Wert um 11 verringerst. Also in den Zeilen:

      264, 285, 290, 296, 313, 318, 329, 333, 337, 341, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, wenn du alle Funktionen der Uhr verwenden möchtest oder in den Zeilen:
      285, 290, 296, wenn du nur die Uhr verwenden möchtest.

      Wenn du die zweite Variante nimmst, dann solltest du auch die Zeilen 543 und 544 auskommentieren. Wenn du die erste Variante nimmst musst du darauf achten, dass der Index auch existiert. Also überall noch eine If-Bedingung drum machen, wie z.B.:


      if((degree_symbol[i] - 11) >= 0) {
      leds[degree_symbol[i] - 11].setRGB(255, 255, 255);
      }

      Ich würde dir aber zu der zweiten Variante raten, da die anderen Module (Temperatur und Icons) auf 11 Zeilen ausgelegt sind.

      Hoffentlich konnte ich dir weiterhelfen.

  8. Hallo und Gute Arbeit gekeistet.
    Würde gerne in html einen button hinzufügen um eine funktion zu tätigen, wie mache ich das?
    das ist die void die ausgelöst werden soll:

    void Test() {
    matrix.begin();
    matrix.setTextWrap(false);
    matrix.setBrightness(40);
    matrix.setTextColor(colors[0]);
    int x = matrix.width();
    int pass = 0;
    matrix.fillScreen(0);
    matrix.setCursor(x, 2);
    matrix.print(F(„Lauftext“));
    if(–x = 3) pass = 0;
    matrix.setTextColor(colors[pass]);
    }
    matrix.show();
    delay(100);
    }

    1. Puh, das ist eine sehr komplizierte Frage. Zum einen ist „void“ nur ein Datentyp, der zurückgegeben wird und „leer“ bedeutet. Was du meinst ist wohl eine Funktion. Aber im Weiteren kommen wir zu einem anderen Problem und zwar, dass ich keine Ahnung habe womit die globale Variable „matrix“ deklariert ist. Es wäre hilfreich, wenn du mir den Link zuschicken könntest wo du den Code-Schnipsel her hast. Dann kann ich schauen in wie weit das in die Software einbaubar ist, da leider sehr viel Kontext feht 🙁

      Beste Grüße

      1. Das wäre echt klasse wenn man das inplementieren könnte,
        das ist aus dem snipsel Adafruit_NeoPixel
        ———————————————————————–
        #include
        #include
        #include
        #define PIN D4

        Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(11, 10, 2, 5, PIN,
        NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT +
        NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
        NEO_GRB + NEO_KHZ800);

        const uint16_t colors[] = {
        matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };

        void setup() {
        matrix.begin();
        matrix.setTextWrap(false);
        matrix.setBrightness(40);
        matrix.setTextColor(colors[0]);
        }

        int x = matrix.width();
        int pass = 0;

        void loop() {
        matrix.fillScreen(0);
        matrix.setCursor(x, 2);
        matrix.print(F(„Ich Liebe Dich mein Schatz“));
        if(–x = 3) pass = 0;
        matrix.setTextColor(colors[pass]);
        }
        matrix.show();
        delay(100);
        }

        1. Leider muss ich dich enttäuschen. Für die Uhr nutze ich die FastLED-Bibliothek und nicht die Adafruit-NeoPixel- bzw. -NeoMatrix -Bibliothek. Die „print“-Funktion existiert so nicht in der FastLED-Bibliothek und müsste programmiert werden. Zum aktuellen Stand wäre das für dich jedoch eine entweder-oder Sache. Also entweder die Laufschrift oder die Uhr. Ich habe es mir jedoch notiert und werde schauen ob ich demnächst mal dazu komme eine Laufschrift für die Uhr einzubauen. Kann da jedoch leider nichts versprechen, da ich zeitlich etwas eingespannt bin 🙁

  9. Hallo, super Arbeit.
    Frage , wie füge ich ein html button um eine funktion auszulösen?
    Das ist die void funktion:
    void setTest() {
    matrix.begin();
    matrix.setTextWrap(false);
    matrix.setBrightness(40);
    matrix.setTextColor(colors[0]);
    int x = matrix.width();
    int pass = 0;
    matrix.fillScreen(0);
    matrix.setCursor(x, 2);
    matrix.print(F(„Lauftext“));
    if(–x = 3) pass = 0;
    matrix.setTextColor(colors[pass]);
    }
    matrix.show();
    delay(100);
    }

  10. Hallo,
    ich habe ein Problem mit der Wlan Verbindung.
    wenn ich die Wlan Funktion auskommentiere läuft die Uhr. natürlich startet die dann um 12 Uhr. Sobald ich die Funktion aber wieder mit rein nehme läuft Garnichts mehr.
    SSID und Passwort sind im Programm hinterlegt.
    Hoffe das du mir vielleicht helfen kannst.

    MfG
    Janik

    1. Hi,

      das Problem gab es bislang nicht. Ich könnte mir nur vorstellen, dass es entwerder ein Problem mit den WLAN-Zugangsdaten gibt (Zahlendreher, Leerzeichen am Anfang oder am Ende) oder die Uhr außerhalb der WLAN-Reichweite ist. Kannst du mal probieren ob die Uhr korrekt läuft, wenn du die in direkter Nähe von deinem WLAN-Router aufstellst? Damit können wir schonmal ein paar Sachen ausschließen. Könntest du zudem einmal in deinem Router schauen ob die Uhr dort angezeigt wird und eine IP-Adresse bekommt?

      Beste Grüße

  11. Hallo und herzlichen Dank für die Anleitung. Ich habe bereits eine große Wordclock gebastelt, da waren aber die Lötarbeiten um ein Vielfaches umfangreicher.

    Inzwischen habe ich die notwendigen Materialien bestellt und versuche auch, die Deckplatte gelasert zu bekommen. Bei der Materialbestellung fiel mir auf, dass drei Stegformate beschreiben sind: small, medium und large. Wofür sind die Mediumstege gedacht? In dem Videotutorial konnte ich sie nicht entdecken.

    Schöne Grüße Detlef

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.