HomeStatusDisplay (ESP8266, MQTT, WS2812B)

Begonnen von Joker, 12 März 2017, 23:48:10

Vorheriges Thema - Nächstes Thema

tschonder

Bei mir war ESP8266 auf Version 2.5.0 habe es geändert auf 2.3.0 , jetzt geht das speichern auf dem Wemos.

Ich bekomme keine Wlan-Verbindung , mein Wlan-Passwort ist 64 Zeichen lang. Ist es möglich die länge im Sketch anzupassen .

Pfriemler

Zitat von: tschonder am 10 August 2019, 12:31:32
Bei mir war ESP8266 auf Version 2.5.0 habe es geändert auf 2.3.0 , jetzt geht das speichern auf dem Wemos.
Ich bekomme keine Wlan-Verbindung , mein Wlan-Passwort ist 64 Zeichen lang. Ist es möglich die länge im Sketch anzupassen .
Blöde Seiteneffekte mit den Versionen. Ich hab schon gar keine Lust mehr auf das Geraffel deswegen.

Habe durch ein wenig Suchen in der HSDConfig.hpp gefunden:
static const int MAX_WIFI_PSK_LEN          = 30;

Ganz davon abgesehen, dass es für 64 Zeichen lange WLAN-Passwörter nach wie vor absolut keinen Grund gibt und Du ständig Probleme haben wirst...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

tschonder


maclovlin

Hallo,

erst mal ein Kompliment, ist ein schönes Stück Software!

Ich habe die Software soweit für mich angepasst, damit es mit FastLed Lib läut und somit auch meine LED's unterstützt ( und noch ein paar mehr :-) ), benutze selber
APA102 mit Data und Clock Pins.

Es funktioniert alles soweit.

Was mich stört, ist ein schönheits Problem , wo ich nicht weiter komme, meine c++ Kenntnisse sind sehr rudimentär.

Die FastLed Lib muss mit konstanten initialisiert werden, sprich es wird mit festen Einstellungen kompiliert und somit hat man keine Möglichkeit mehr
die Pin Einstellungen per Webinterface vorzunehmen.

Kann da mal jemand rüber kucken, vielleicht kann man das irgendwie anders lösen...

Die Sources sind noch ein wenig chaotisch, aber ich denke jemand mit Ahnung steigt da durch.

https://github.com/FastLED/FastLED
https://github.com/FastLED/FastLED/wiki/Basic-usage
https://github.com/FastLED/FastLED/blob/master/examples/Blink/Blink.ino

maclovlin

Sorry, ich sehe gerade das ich im Eifer des Gefechts die falschen source Dateien hochgeladen habe. Sobald ich zu Hause bin, werde ich den Fehler korrigieren.

maclovlin

wie versprochen, hier die richtigen Dateien.

Joker

Hi,
ich habe jetzt gerade Weihnachtsbedingt keine Zeit es mir im Detail anzusehen, aber ich bin gar nicht sicher ob ich das Problem richtig verstehe.
Es geht ja im Prinzip um die Methode begin(), die bei dir jetzt so aussieht:
void HSDLeds::begin()
{
  m_numLeds = m_config.getNumberOfLeds();

  m_ledDataPin = m_config.getLedDataPin();

  m_ledClockPin = m_config.getLedClockPin();
  m_pLedState = new LedState[m_numLeds];

  FastLED.addLeds<LEDTYPE, DATAPIN, CLOCKPIN, COLORORDER>(leds, m_numLeds);

  FastLED.setBrightness(m_config.getLedBrightness());
 
  clear();

}


Was spricht dagegen das so zu schreiben:
void HSDLeds::begin()
{
  m_numLeds = m_config.getNumberOfLeds();

  m_ledDataPin = m_config.getLedDataPin();

  m_ledClockPin = m_config.getLedClockPin();
  m_pLedState = new LedState[m_numLeds];

  FastLED.addLeds<LEDTYPE, m_ledDataPin, m_ledClockPin, COLORORDER>(leds, m_numLeds);

  FastLED.setBrightness(m_config.getLedBrightness());
 
  clear();

}


Also einfach die ausgelesenen Werte aus der Config auch zu übergeben?
Es könnte jetzt noch sein dass man das Array "leds" dynamisch allokieren müsste damit auch eine Neukonfiguration geht, im Prinzip so wie ich das mit "m_pLedState" gemacht habe, mit new und delete.

Sorry falsch ich das Problem noch nicht verstanden haben sollte, konnte wie gesagt nur kurz reinschauen  ;)
In dem Fall bitte einfach noch mal melden  ;)

maclovlin

#142
Zitat
Was spricht dagegen das so zu schreiben:
void HSDLeds::begin()
{
  m_numLeds = m_config.getNumberOfLeds();

  m_ledDataPin = m_config.getLedDataPin();

  m_ledClockPin = m_config.getLedClockPin();
  m_pLedState = new LedState[m_numLeds];

  FastLED.addLeds<LEDTYPE, m_ledDataPin, m_ledClockPin, COLORORDER>(leds, m_numLeds);

  FastLED.setBrightness(m_config.getLedBrightness());
 
  clear();

}


Habe es auch so probiert, die Funktionen habe ich auch implementiert, allerdings meckert der
Compiler über:
src/HSDLeds.cpp:35:84: error: 'this' is not a constant expression

Kann ein falscher Rückgabewert / typ den Fehler verursachen?

Joker

Zitat von: maclovlin am 26 Dezember 2019, 17:21:23
Kann ein falscher Rückgabewert / typ den Fehler verursachen?
Ne, eigentlich nicht. Das hängt irgendwie mit der Instantiierung der Template-Klassen aus dem FastLED zusammen. Eine gute Idee was man da machen kann habe ich aber auch gerade nicht  :(

maclovlin

Zitat von: Joker am 29 Dezember 2019, 09:48:17
Eine gute Idee was man da machen kann habe ich aber auch gerade nicht  :(

Ich noch weniger :-)

Aber ist ja eher ein "kosmetisches" Problem.

Man kann ja immer noch konstanten im Quellcode definieren. Kompilieren muss man die Soft eh...

maclovlin

Ich habe für die von mir geänderte Version ein Gitlab repository eingerichtet.
Zu finden unter https://gitlab.com/djusha/homestatusmonitor

Wir können die Repos auch zusammen führen, wenn dir die Änderungen gefallen.

Folgende Sachen habe ich geändert:

- Webinterface redesignt, damit es auch auf Smartphones gut aussieht (habe mich an dem Design von Tasmota orientiert)

- FastLED LIB eingebaut, damit mehr LED Typen unterstützt werden

- Verbindung zum MQTT Brocker ist jetzt auch mit Benutzername und Kennwort möglich

- Check ob eine SSID vergeben ist, wenn nicht wird sofort der AP Modus gestartet, wenn ja dann halt WLAN, der ESP ist dadurch schneller einsatzbereit.

und noch ein paar Sachen.

Pfriemler

soso... sieht gut aus. Wenn ich das richtig sehe, kann ich das weiterhin für meine WS2812B nutzen? #define HASCLOCKPINANDCOLORORDER
Sonstige Änderungen sind ja wohl kaum am Code?
Ich hatte ja noch Zusatzfarben definiert und die LED-Obergrenze erhöht, gerate da aber offensichtlich an Speicherprobleme. Momentan traue ich mich nicht, die Module anzufassen...
Details ab #113.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Joker

Also mal ganz generell:

Ich nehme gerne Änderungen die allgemein sinnvoll sind in das Repository auf.
Aber das funktioniert NUR, wenn ihr die Repositories als Fork von meinem einrichtet, und dann die einzelnen logischen Änderungen auch einzeln committet. Dann kann ich die Änderungen sehen. So müsste ich ja jetzt das per Hand alles vergleichen und erstmal überlegen was jede Änderung macht und was dazu gehört.

Also der GitHub Workflow ist so:
- Fork des Original Repositories anlegen
- Änderung durchführen (in sich abgeschlossen, nicht mehrere Dinge auf einmal!)
- Pull Request erstellen

Dann sehe ich was ihr gemacht habt, kann es gegebenenfalls noch anpassen und ihr erscheint dann als Contributor im Original repository. Aber wenn das ein komplett losgelösten Repository ist, ist das viel zu viel Aufwand.

maclovlin

Zitat von: Joker am 03 Januar 2020, 11:49:04
Aber das funktioniert NUR, wenn ihr die Repositories als Fork von meinem einrichtet...

Funktioniert das auch mit Gitlab?
Wollte demnächst Github komplett aufgeben...

maclovlin

Zitat von: Pfriemler am 03 Januar 2020, 11:44:55
soso... sieht gut aus. Wenn ich das richtig sehe, kann ich das weiterhin für meine WS2812B nutzen? #define HASCLOCKPINANDCOLORORDER

Sollte an sich klappen.
Du wirst wahrscheinlich deine jetzigen Einstellungen komplett verlieren...

Zitat von: Pfriemler am 03 Januar 2020, 11:44:55
Sonstige Änderungen sind ja wohl kaum am Code?

Doch, musste einiges anpassen, wegen der Passwort Geschichte für MQTT und WLAN.