Treppenbeleuchtung die 50

Keine Ahnung, da ich nicht weiß, welche elektromagnetischen Informationen bei Dir durch die Luft sausen, um zu stören.

Verstanden :man_facepalming:
Werde mir dann mal geschirmte Audiokabel kaufen.

Bei dem Netzteil in der Box bin mir ich mir noch immer etwas unsicher. Einerseits werden die LED-Streifen nur kurz und selten leuchten, andererseits sind wahrscheinlich nicht um sonst so viele Löcher im Gehäuse des Netzteils. Macht es da nicht Sinn, den Lüfter immer dann anzusteuern, wenn die LEDs aktiviert werden (alternativ sogar mit einem Temperatursensor?)?

So eins habe ich noch nie benutzt, daher würde ich es einfach mal testen.

So Du einen Lüfter benötigst, nur bei Bedarf lüften, dann hast Du auch gleich einen Nachlauf.

Ich habe mich nochmal an den Code versucht und glaube, dass ich da einiges falsch durchmische. Daher nochmal alle gekürzt, damit das nicht zu peinlich wird :see_no_evil:
Beleuchtung.ino:

> [#include "FastLED.h"
> 
> #define LED_TYPE   WS2812
> #define COLOR_ORDER   GRB
> #define DATA_PIN       27
> #define DATA_PIN2       14
> #define BRIGHTNESS     50 
> const int NUM_PIXEL = 100;
> const int NUM_PIXEL2 = 300;
> CRGB leds[NUM_PIXEL];
> CRGB leds[NUM_PIXEL2];
> const int pirPinOben = 39;   // VP
> const int pirPinMitte = 34;  // VN
> const int pirPinUnten = 35;  // 34
> 
> void setup_Beleuchtung() {
>   FastLED.addLeds<LED_TYPE, DATA_PIN, DATA_PIN2, COLOR_ORDER>(leds, NUM_PIXEL);
>   FastLED.setBrightness( BRIGHTNESS );
>   FastLED.show();
>   anzeigeOLED("Beleuchtung bereit");
>   pinMode(pirPinOben, INPUT);
>   pinMode(pirPinMitte, INPUT);
>   pinMode(pirPinUnten, INPUT);
> }
> 
> void loop_Beleuchtung() {
>   uint32_t jetzt = millis();
>   static uint32_t vorhin = 0;
>   enum {WARTEN, OBEN_AKTIV, UNTEN_AKTIV};
>   static int schritt = WARTEN;
>   bool oben_akt = digitalRead(pirPinOben);
>   bool mitte_akt = digitalRead(pirPinMitte);
>   bool unten_akt = digitalRead(pirPinUnten);
> 
>   switch (schritt) {
>     case WARTEN:
>       if (oben_akt) {
>         vorhin = jetzt;
>         anzeigeOLED("oben aktiv");
>         schritt = OBEN_AKTIV;
>       }
>       if (unten_akt) {
>         vorhin = jetzt;
>         anzeigeOLED("unten aktiv");
>         schritt = UNTEN_AKTIV;
>       }
>       break;
>     case OBEN_AKTIV:
>       if (jetzt - vorhin > 500) {
>         anzeigeOLED("warten");
>         schritt = WARTEN;
>       }
>       break;
>     case UNTEN_AKTIV:
>       if (jetzt - vorhin > 500) {
>         anzeigeOLED("warten");
>         schritt = WARTEN;
>       }
>       break;
>     default:
>       schritt = WARTEN;
>   }
> }
> 
> bool rauf(bool an) {
>   static uint32_t vorhin = 0;
>   static uint16_t led = 0;
>   if (jetzt - vorhin >= intervall) {
>     vorhin = jetzt;
>     if (an) {
>       leds[led] = CRGB::White;
>     } else {
>       leds[led] = CRGB::Black;
>     }
>     FastLED.show();
>     if (led < NUM_PIXEL) {
>       led++;
>     } else {
>       led = 0;
>       return true;
>     }
>   }
>   return false;
> }
> bool runter(bool an) {
>   static uint32_t vorhin = 0;
>   static uint16_t led = NUM_PIXEL - 1;
>   if (jetzt - vorhin >= intervall) {
>     vorhin = jetzt;
>     if (an) {
>       leds[led] = CRGB::White;
>     } else {
>       leds[led] = CRGB::Black;
>     }
>     FastLED.show();
>     if (led > 0) {
>       led--;
>     } else {
>       led = NUM_PIXEL - 1;
>       return true;
>     }
>   }
>   return false;
> }

Da fehlte, wenn ich mich nicht irre, der Teil mit FastLED und das Hoch- und Runterzählen. Da ich zwei Sektoren mit den LED-Streifen habe, brauche ich zwei Datenpins und muss das Pixelzählen zwei Mal definieren, richtig? Kann ich das mit einander "vermischen", wie ich es in void setup_Beleuchtung() gemacht habe oder muss der Abschnitt (sowie das Hoch- und Runterzählen ein zweites Mal für den zweiten Sektor neu beschrieben werden?
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.

Absichtlich, weil ohne LEDs das Testen doch etwas theoretisch ist.

Das mit zwei Pins in einem addLeds ist syntaktisch so nicht möglich.

Nö, ich würde eher eine Funktion vorschlagen, die die Richtung teilweise umdreht.

Ohne LEDs könntest Du den ESP32 kennenlernen. Funktioniert OTA auch bei der Treppe?

Moin! Bei zwei seperat angeschlossenen Streifen? Hab das gegoogelt aber nichts dazu gefunden, wie ich das anders umsetzen könnte.

Hab, was für mich jetzt möglich ist, schon etwas rumprobiert. LED leuchten, blinken und faden lassen, habe ich zumindest hinbekommen :smiley:

Jep, Hochladen funktioniert am geplanten Platz. Fritzbox zeit im OS, dass ich da noch ca. 3/5 (ohne Box) Empfang habe.

Moin!

Ja, so funktioniert es (ich habe ja LED-Streifen zum Testen):

int richtung(int pix) {
  if (pix < NUM_PIXEL_STRIP_U) {
    return NUM_PIXEL_STRIP_U - 1 - pix;
  } else {
    return pix;
  }
}

:+1:

Du möchtest doch bestimmt irgendwas zeitlich steuern, also Pausenanimation nur bis 22 Uhr oder so? Dann könntest Du Dich mit " Esp32 Spiffs Datei Manager", " Esp32 Admin Webinterface", "Esp32 Lokalzeit Tab" in Verbindung mit " Esp32 Zeitschaltuhr Singel Tab" von Fips beschäftigen.

Ja, das mit den LEDs juckt Dir mehr unter den Fingern, aber Trockenübungen ohne LED-Streifen sind blöd, finde ich.

Oder?

Ist das nächster auf meiner ToDo Liste :+1:

Ein paar Trockenübungen habe ich gemacht, nur da kann ich nicht kontrollieren, ob ich mir quatsch zusammenfriemel oder ob das in der Praxis funktionieren würde, oder wie sind Trockenübungen gemeint? :slight_smile:

Genau so :slightly_smiling_face:

Darf ich Dich etwas nach vorne schubsen?

Das Dateisystem SPIFFS und die Admin-Seite sind dann die nächsten Ziele. Der ESP32 läuft als Server und Du kannst Dir HTML-Seiten im Dateisystem des ESP32 ansehen. Dazu müssen die Dateien ins Dateisystem, vorher aber natürlich die ino.Dateien kompilieren und laufen lassen:

ESP_Treppe_20220112.zip (16,4 KB)

Ermittle die vom Router vergebene IP und rufe im Browser mit Deiner IP http://192.168.178.27/spiffs.html auf. Dann solltest Du dies sehen:
grafik

Lade nacheinander style32.css, spiffs.html, favicon.ico und admin.html hoch. Bei FireFox/Datei hochladen funktioniert der Doppelklick nicht! Nun solltest Du dies sehen:
grafik

Wenn Du auf admin.html klicks, gelangst Du zur Admin-Seite:

Bei "neuer Hostname" habe ich "treppe" eingegeben, dann wird eine neue Datei config.json angelegt und Du kannst nach einem ESP-Restart anstelle der IP auch http://treppe.local/ verwenden:
grafik

Bin gespannt, ob es bei Dir geht!

PS.: Wenn Du möchtest, kannst Du Beleuchtung.ino nach Deinen Vorstellungen ausbauen, ich wollte nur TwinkleFox als Pausenanimation ausprobieren, klappte nicht so auf Anhieb. Ich lasse das in meiner Kellerbar laufen, etwas Musik und ich träume. Mein Wunsch: Deine Kids sitzen ganz ruhig auf der Treppe, um sich die Pausenanimation anzusehen :rofl:

Da reden wir aber bitte erst drüber, wenn Deine LEDs angekommen sind :blush:

Da bin ich gespannt :sweat_smile:

Hat alles soweit geklappt, nur das Aufrufen der treppe.local bzw. treppe.local/spiffs.html klappt noch nicht. Die Datei config.json wird angelegt (beim Draufklicken steht "0: "treppe").

Vielen lieben Dank!! Nur die LED-Streifen brauchen noch so lange :see_no_evil:

Funktioniert http://IP.des.esp.32/spiffs.html?

Gruß Tommy

Bei mir ging das erst nach "ESP Restart" auf der Admin-Seite. Wird da "Hostname: treppe" angezeigt?

Hat auch vorher funktioniert, ja :+1:

Daran hat es gelegen, nun geht es, danke! :+1:

Moin!

Dann können wir ja zur Lokalzeit und Zeitschaltuhr von Fips kommen :slightly_smiling_face:

ESP_Treppe_20220113.zip (22,7 KB)

Zwei neue Dateien wollen in das Dateisystem SPIFFS übertragen werden:

Da NTP-Server eine neue Zeit nur alle 5 Minuten oder so abgeben wollen, eignet sich die Fritz!Box bestens als NTP-Server, also ntpServer[0]. Geht das auch bei Dir?

Neu ist die Datei zugangsdaten.h, die ich dann zukünftig nicht mehr mitschicke.

Wenn das neue Programm übertragen ist, kann man sich die Uhrzeit ansehen:

grafik

Oder Du läßt Dir die Zeitschaltuhr anzeigen:

Den Ausgang, der später auch nur ein Merker sein kann, habe ich auf GPIO27 (Streifen an GPIO12 und GPIO14 angeschlossen) gelegt und die möglichen Schaltzeiten von 20 auf 8 reduziert.

Läuft das bei Dir?


In #56 hast Du eine Plastikkiste abgebildet, wo die Elektronik rein soll.

  1. Ich empfehle Dir dringend ein gegenüber dem Gutachter Deiner Versicherung nachweisbar flammhemmendes Material, das eventuell schmilzt, aber nicht brennt. Man kann nicht so dumm denken, wie es kommen kann!!!!
  2. Ob natürliche oder erzwungene Konvektion kannst Du mit einem Temperatursensor im Gehäuse messen. Das ist auch mein Vorschlag für die Überbrückung der Zeit bis zur Lieferung der LED-Streifen. Welchen Typ von Temperatursensor hast Du in Deiner Bastelkiste? Zum Testen kann man auch die interne Temperatur des ESP32 nutzen. Hast Du da Lust drauf?
1 Like

Cool, funktioniert, danke :sunglasses:
Kann ich die Pins der LED-Streifen definieren und mit der Zeitschaltuhr die Zeit definieren, wann diese aktiv bzw. inaktiv sein sollen? Dann könnte ich mir auch den Lichtsensor sparen.

Über die Box habe ich auch viel nachgedacht, diese ist aus PP, gängige Elektroboxen sind aus ABS. Ggf. Drucke ich mir eine selbst aus ABS/ASA.

Sehr gerne! Taugt der interne Sensor?

Ja, das ist die Idee :slightly_smiling_face:

Im Winter wird es früher dunkel als im Sommer, das müßtest Du dann über eine Tabelle abbilden. Wäre möglich, aber ist da nicht ein Helligkeitssensor einfacher?

Nicht, um die Boxtemperatur zu messen, sondern nur als Lieferant eines Wertes zum Testen der Anzeige. Sonst kannst Du auch random nutzen.

1 Like

Von dem Aufwand kann das sein. Finde es aber gut, dass ich mir nun die Bohrung in der Leiste sparen kann (Im Keller habe ich kein Tageslicht unter der Treppe). Da kann ich ja nun einfach zwei Mal im Jahr die Zeitschaltuhr im Browser verstellen :wink:

Weil das nicht geht, oder war das nur nicht so gemeint? Die CPU Temperatur kann ich auslesen. Könnte ich nicht beispielsweise ab einer Temperatur von 80° (bei einem Test lief die bis 65°) den Lüfter anschmeissen oder macht das wenig sinn? Temperatursensor habe ich sonst keine - würde ich bestellen, falls es mit dem internen nicht funktioniert.

Mich würde das nicht zufriedenstellen, aber wenn das für Dich in Ordnung geht, dann ist das OK.

Ich bin mir nicht sicher, ob man von der CPU-Temperatur (max. 125 °C) auf die Boxtemperatur schließen kann. Natürlich hängen die zusammen, nur finde ich im Datenblatt dazu keine Angaben. Du könntest eine Meßreihe dazu anlegen, braucht aber auch einen weiteren Sensor :wink:

Die Boxtemperatur ist für die maximale Netzteiltemperatur (das Datenblatt habe ich nicht) wichtig. Wenn Du also Boxtemperatur und CPU-Temperatur überwachst, bist Du auf der sicheren Seite und kannst den Lüfter nur bei Bedarf aktivieren.

Allerdings habe ich auch gerade gelesen, manche ESP32 haben wohl keinen Temperatursensor, müßtest Du also testen.

Was mir noch einfällt: Eventuell wird der ESP-Funk vom Schaltnetzteil gestört, mußt Du testen.

Wie auch immer, die Anzeige von irgendeiner Temperatur oder einer Zufallszahl könntest Du schon mal einbauen.


Nochmal nachgedacht:

TCPU → Rth → TBox

Da die CPU ebenso wie das Netzteil unterschiedlich Wärme abgibt, kann man nicht von TCPU auf TBox schließen.

Außerdem wird mir immer der selbe Wert angezeigt, was auf einen nicht vorhandenen Sensor deutet.

Meinen Vorschlag, die interne Temperatur zu messen, ziehe ich daher zurück!

Das tut es zum Testen bis zur Lieferung eines Temperatursensors auch:
random(150, 300) / 10,0;

1 Like

Wollte gerade etwas rumexperementieren aber dann bestelle ich erstmal einen Temperatursensor :+1:
Schönes Wochenende allen :slight_smile:

Moin.

Irgendwann in ferner Zukunft möchtest Du eventuell eine Konfigurationsseite für die Treppenbeleuchtung haben. Da Du noch keine LEDs hast, könntest Du die Wartezeit überbrücken, indem Du Dich in dieser Richtung schon mal warmläufst. Ob Du eine Temperatur oder sonstwas anzeigst, ist dabei nebensächlich. Es geht um die Kommunikation zwischen Client (Webseite) und Server (ESP32).

Ist aber nur eine Idee, muß auch nicht :slightly_smiling_face: