-         
Ergebnis 1 bis 6 von 6

Thema: Modulare Wandlampe RGB, gesteuert über MQTT

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    52
    Beiträge
    1.879

    Modulare Wandlampe RGB, gesteuert über MQTT

    Anzeige

    Viel ist nicht zu sagen..der MQTT-Broker läuft im Hintergrund auf einem Raspi(3er, der eigentlich ne Art Wetterstation ist), Bedienung momentan noch provisorisch (ich warte noch auf ein spezielles LED-Display aus China, in meiner Wunschfarbe sind die hierzulande nicht zu kriegen) mit einem NodeMCU (das wird auch ein Wemos D1 mini, später) und nem Touch-Button.

    Die Lampe kann:
    -beim einschalten (also Stecker rein) selbständig nach Updates auf meinem Server schauen, die, falls verfügbar (ich muss dazu in der Firmware eine Nummer ändern, und auf dem Server diese Nummer auch in ner kleinen *.txt-Datei hinterlegen) installieren und dann neu starten.
    Auf diese Weise spar ich mir das Kabelgedöns zum flashen...und man kann die auch an "unerreichbaren" Stellen montieren.

    -ihren Status ("ich bin AN oder AUS") auf dem MQTT-Server hinterlegen (bei Unterbrechung der Stromversorgung weiss sie so, was gerade gefragt war und stellt den vorherigen Zustand wieder ein, man kann diese Info aber auch anderweitig nutzen.

    -auf Kommando vom MQTT-Server an-oder aus gehen.
    Aktuell (ich hab derzeit nur einen Button in Betrieb) wird der Modus bei jedem Ausschalten gewechselt, später will ich aus mehreren Buttons ein komplettes Touchfeld bauen, damit man auch im Betrieb Helligkeit und Leucht-Modus beliebig wechseln kann.
    Wenn ich Zeit und Lust hab, kann ich problemlos weitere Betriebsarten hinzufügen, da noch reichlich Speicher frei ist.

    Auch kann man die Lampe eigentlich beliebig erweitern-die 3D-gedruckten Gehäuse (das sind alles einzelne, identische Elemente bis auf das Kleine rechts) lassen sich an allen Längsseiten untereinander verbinden (zwei Schrauben, M4, glaub ich), man kann damit komplette Flächen bedecken, oder Muster bauen....(mir schwebt da noch ne dazu passende Analoguhr vor, mit LED-Ringen als Zeiger, mal gucken).

    Durch MQTT ist es möglich, beliebige "Eingabegeräte" zu benutzen, um die Lampe zu steuern, theoretisch kann der Raspi die auch einfach Uhrzeit-gesteuert an-oder ausschalten. Auch ein Handy könnte man als Client benutzen..
    Mein Schalter soll aber noch einiges mehr können später, dazu aber brauche ich erst dieses LED-Display (ich weiss noch nicht, ob das beim Wemos an beliebigen Pins funktioniert).

    Allerdings: aktuell läuft sie mit nem 3A-USB-Netzteil, das reicht nicht aus, um alle 64 LED's z.B. weiss und hell genug aufleuchten zu lassen. Da werd ich mir wohl mal was stärkeres besorgen müssen.

    Und so schauts im Betrieb ungefähr (Kamera und LED's als Gegenlicht....in Wirklichkeit wirkt es besser) aus:



    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2004
    Beiträge
    538
    Ein schönes Projekt!
    Wie machst du das mit dem selbstständigen Update?

    Also das gucken nach einem Update ist das Eine, aber wie wird dann die Firmware geflasht?

    Crypi

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    52
    Beiträge
    1.879
    Die Funktion ist in der ESP8266WiFi.h eingebaut.
    Ich mach es so:

    Code:
    void FirmwareUpdate()
    {
      // Überprüfen der Firmwareversion des Programmms auf dem Server
      int FirmwareNeu = 0;
      http.begin(URL_Mit_VersionsInfo);     // Textdatei mit Version aufrufen
      int httpCode = http.GET();            // Antwort des Servers einlesen
      if (httpCode == HTTP_CODE_OK)         // Wenn Antwort OK
      {
        String payload = http.getString();  // text einlesen
        FirmwareNeu = payload.toInt();      // Zahl aus Sting bilden
      } 
      http.end();
      
      if (FirmwareNeu > FirmwareVer)        // Firmwareversion mit aktueller vergleichen
      {
        Serial.println("Neue Firmware verfuegbar");
        Serial.println("Starte Download");
        ESPhttpUpdate.rebootOnUpdate(false);// reboot abschalten, wir wollen erst Meldungen ausgeben
        t_httpUpdate_return ret = ESPhttpUpdate.update(URL_Mit_Firmware);
        switch (ret)
        {
          case HTTP_UPDATE_FAILED:
            Serial.printf("Update fehlgeschlagen. Fehler: (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
            break;
          case HTTP_UPDATE_OK:
            Serial.println("Update erfolgreich");
            Serial.flush();
            Serial.println("Reset");
            Serial.flush();
            delay(1);
            ESP.reset();
            delay(100);
            break;
        }
      } 
      else
      {
        Serial.println("keine neue Version gefunden");
      }
      Serial.println("Wir koennen loslegen...");
    }
    Das kann man noch um einiges einkürzen, wenn man die ganzen Meldungen nicht haben will.
    Auf dem Server liegen zwei Dateien:
    einmal eine *.txt, die nichts weiter enthält, als die Versionsnummer (ansonsten muss die wirklich leer sein).
    zum anderen die Firmware.bin, die man aus Arduino ja raus exportieren kann.
    In der muss die gleiche Versionsnummer hinterlegt sein, wie in der *.txt:

    Code:
    #define FirmwareVer  11
    Nun baut der ESP zuerst eine Verbindung zum Server auf, schaut sich die Textdatei an, extrahiert die Zahl aus dem Inhalt und vergleicht die mit FirmwareVer.
    Wenn die aus der Textdatei grösser ist, wird das Update ausgelöst...danach kommt ein bisschen Serieller Zauber (macht sich beim debuggen ganz gut), und ein Reboot-fertig.
    Falls kein Update vorliegt, wird der Updater übersprungen und einfach zum normalen Betrieb übergegangen.
    Die beiden URL's zur Textdatei und der *.bin sind ebenfalls als Konstanten definiert.

    Das Ganze kann man sich einrichten, wie man will- bei mir wird die Funktion bei jedem Neustart aufgerufen (einfach in der setup()), man kann das aber beliebig machen, auch z.B. zeitgesteuert (jede Stunde mal nachsehen oder so), oder nen Taster für vorsehen..was eben gerade passt.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2004
    Beiträge
    538
    Vielen Dank für die Erläuterungen und den Quelltext!
    Klasse!
    Das wird bestimmt mal Einzug in eines meiner Projekte finden!

    Crypi

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    52
    Beiträge
    1.879
    Die Lampe braucht natürlich auch einen (Fern-) Schalter, also hab ich da mal ein bisschen getestet.
    Inspiriert hat mich das Touch Nightlight Air von Loxone.

    Mein "Schalter" soll im Wesentlichen am Ende das selbe können, mit dem Unterschied, dass ich da gern auch Akkus drin hätte, damit das Ding auch dort funktioniert, wo ich kein USB-Kabel hab (am Bett zum Beispiel).
    Dazu bau ich mir dann einfach ne Ladeschale, wo ich das Teil tagsüber wieder aufladen kann.
    Momentan läuft es seit Mitternacht ungefähr schon an ner kleinen Powerbank (2600mAh), ich denke also, dass die Laufzeit ausreicht, wenn man nen 18650er Akku verbaut, die gibts ja inzwischen auch mit 3500mAh.

    Loxone verwendet schick Glas für die Front-das krieg ich so gut nicht hin.

    Also drucken wir einfach mal schnell was:

    Klicke auf die Grafik für eine größere Ansicht

Name:	test.jpg
Hits:	4
Größe:	42,9 KB
ID:	35549

    Ein kleines Test-Teil zeigt: es geht. Die Oberfläche vor dem Display ist 0.5mm dünn, und einfach mit schwarzem PLA gedruckt auf Flussglas.
    Das Display ist hervorragend zu erkennen (ich werd später vielleicht ein weisses benutzen, das ist aber reine Geschmackssache, die gibts in weiss, blau, rot, grün, gelb), und die Touch-Buttons können rings um das Display angeordnet werden.

    Die nächste Gehäuse-Version, die mein Drucker gerade macht, wird optisch etwas besser aussehen (abgeschrägte Kanten z.B. und mehr Tiefe nach hinten, das Ding auf dem Foto steht zwar, aber recht kippelig), und wird Halterungen für vier Touch-Buttons um das Display herum haben.
    Akkus kommen noch nicht rein, auch die Nachtlicht-Funktion ist in der jetztigen Version noch nicht da (hab ich noch keinen rechten Plan, wie ich das optisch ausreichend gut hinkrieg), aber es geht voran.
    Dass die Touch-Buttons auch hinter der Frontplatte einwandfrei funktionieren, hab ich schon getestet: die Version im Bild hat den einen, den ich bisher verbaut hab, schon drin.
    Mit vier davon kann man dann alles Mögliche anstellen, da man damit dann Wischgesten oder so auch realisieren kann.

    Die Uhrzeit holt sich der NodeMCU übrigens auch von meinem MQTT-Server. Auch das kann man erweitern, Loxone gibt auf Wunsch auch die Aussentemperatur aus- kann man dann alles machen.
    Das Display ist ein fertiges, mit dem TM1367 hinten drauf, die Dinger gibts beim Chinesen für 1.50 oder sowas- in Deutschland hab ich die leider nur in rot gefunden, daher musste ich direkt in China ordern...
    Wird einfach über zwei Leitungen (Clock, Data (im Gegensatz zu I2C tun es beliebige Pins)) angesteuert und kann zusätzlich zu den vier 7-Segment-Anzeigen noch Dezimalpunkte und nen Doppelpunkt in der Mitte.
    Meiner blinkt im Sekundentakt...
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    52
    Beiträge
    1.879
    Inzwischen gibts ein richtiges Gehäuse.
    Das kann man nun auch vernünftig auf den Tisch stellen, und es hat vier Touch-Buttons eingebaut.

    Klicke auf die Grafik für eine größere Ansicht

Name:	20210802_143116.jpg
Hits:	3
Größe:	24,5 KB
ID:	35550

    Hinten ist (noch) der USB-Anschluss. Diese Version wird noch nicht mit Akku laufen (könnte reinpassen, wird aber eng, mit ner Powerbank kann man sie aber natürlich betreiben), die soll erst andere clevere Dinge tun:
    mit den vier Touchbuttons möchte ich meine Wandlampe nicht nur ein-und ausschalten können (das geht ja schon), sondern auch die Betriebsart im laufenden Betrieb ändern können.
    Vielleicht auch noch dimmen.

    Ausserdem: das Original von Loxone kann man auch als Wecker benutzen, das hätt ich auch gerne noch.
    Nen Piezosummer da rein zu bauen, ist ja nicht weiter kompliziert...Transistor, Widerstand (die Pins der ESP können nur max 12mA, das scheint mir für nen Buzzer ein wenig knapp) und nen Buzzer.
    Da die ESP so schön viel Speicher haben, kann man vielleicht auch Melodien...mal gucken.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Ähnliche Themen

  1. Suche ein Treiber IC für RGB Leds das über i2c gesteuert wird
    Von HannoHupmann im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 07.11.2012, 14:18
  2. Projekt: Wandlampe [Stillgelegt]
    Von Furay im Forum Elektronik
    Antworten: 24
    Letzter Beitrag: 13.03.2010, 18:57
  3. modulare Steuerung via PC
    Von alago im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 23.02.2010, 11:07
  4. Roboter über Laptop gesteuert ohne Microcontroller?
    Von KussMar im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 8
    Letzter Beitrag: 28.09.2007, 17:48
  5. Antworten: 13
    Letzter Beitrag: 11.02.2007, 20:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •