HomeStatusDisplay (ESP8266, MQTT, WS2812B)

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

Vorheriges Thema - Nächstes Thema

Tobias

#45
stehe vor einem merkwürdigem Verhalten, nach dem Flashen verbinde ich mich mit dem AP und gebe alle möglichen Daten ein. Nach einem Reboot verbindet sich der ESP leider nicht mit meinem WIFI, das Pass habe ich per Copy und Paste eingegeben. Mag sein - ev hat sich ein Leerzeichen eingeschlichen.

Nach ca 60sek erfolglosem Connect wird der AP aufgemacht. Jetzt Kann ich wieder dort connecten ABER jetzt bricht der AP zusammen sobald ich versuche mich mit der SID "StatusDisplay" zu verbinden. Ich kann mich ab jetzt bis zu einem Reboot nicht mehr verbinden bzw die SID ist "weg", im Serial Log steht nix dazu

Wie kann ich die vorher eingegebene und gespeicherte Config manuell wieder löschen?

Edit: mit einem anderen ESP klappt der erneute AP-Connect
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

#46
Hi,
anscheinend habe ich jetzt einen wirklichen, echten kleinen Bug entdeckt. Mein Paswort ist 64 Zeichen lang.
In der WebForm werden nur 40 Zeichen angenommen, bzw per nach dem SaveButton nur die ersten 40 Zeichen des Passwortes in der URL übertragen. Im ESP werden nur 30 Zeichen gespeichert. Hatte mir dazu in der PrintMainConfigFile Prozedur das gespeicherte Passwort audgeben lassen.

Könntest du dir das mal bitte anschauen ob ich richtig liege?

Edit: Habe angepasst:
HSDConfig.cpp, Zeile 253:
static const int MAX_WIFI_PSK_LEN          = 64;

HSDWebserver.cpp, zeile 73:
html += F("' size='64' maxlength='64' placeholder='Password'></td></tr>");

Kannst du das bei dir ins Github einpflegen? Nach diesen beiden Änderungen klappt es auch  mit dem WiFi Connect ;)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Joker

Zitat von: Tobias am 03 Januar 2018, 20:26:38
Edit: Problem gelöst, mit der Arduino IDE 1.6.5 gibt es Probleme, erst ab Version 1.6.6. werden hpp files unterstützt. Mit der aktuellen 1.8.5 Version kompiliert es sauber durch.
Wäre ev. ein Hinweis im GitHub ReadMe und auf deiner Webseite wert :)
Danke, werde ich so aufnehmen.

Zitat von: Tobias am 05 Januar 2018, 19:53:55
Könntest du dir das mal bitte anschauen ob ich richtig liege?

Edit: Habe angepasst:
HSDConfig.cpp, Zeile 253:
static const int MAX_WIFI_PSK_LEN          = 64;

HSDWebserver.cpp, zeile 73:
html += F("' size='64' maxlength='64' placeholder='Password'></td></tr>");

Kannst du das bei dir ins Github einpflegen? Nach diesen beiden Änderungen klappt es auch  mit dem WiFi Connect ;)
Ja das passt so, ich werde es übernehmen. Kann ein paar Tage dauern da ich im Moment einiges anderes um die Ohren habe. Ich muss nochmal checken dass man dann da nicht in Probleme läuft da auch die maximale Größe eines Config-Files festgelegt ist.
Ich hatte das so streng limitiert da ich am Anfang enorme Speicherprobleme hatte wenn die Webseiten aufgebaut werden. Aber der Hauptspeicherfresser ist hier die Anzahl an LEDs und Behaviors und die MQTT-Strings.

Tobias

Danke dir. Ich habe zb. 54 Led´s.
Alternativ macht es ev. Sinn den Sketch auf einen ESP32 zu portieren.

Mal was anderes: hat schonmal jemand einen Rolladenstatus darüber angezeigt?
Meine Idee wäre bisher nur diesen über den windows type zu visualisieren (zu=off, offen=on, irgendetwas dazwischen=tilted)
Gibts eine bessere idee?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

SO sieht mein Statusdisplay aus. Das Ganze ist ca 15mm dick. Der ESP verschwindet in einer dahinterliegenden UNterputzdose. Aber auch ohne diese dose würde er von der höhe noch dahinterpassen da ohne die Stiftleiste dieser selbst auch nur 5mm dick ist
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Joker

Zitat von: Tobias am 12 Januar 2018, 09:58:52
SO sieht mein Statusdisplay aus. Das Ganze ist ca 15mm dick. Der ESP verschwindet in einer dahinterliegenden UNterputzdose. Aber auch ohne diese dose würde er von der höhe noch dahinterpassen da ohne die Stiftleiste dieser selbst auch nur 5mm dick ist
Sieht super aus! Ist das ein fertiger Rahmen oder sind das selber zugeschnittene Aluprofile?

Zitat von: Tobias am 09 Januar 2018, 14:08:30
Danke dir. Ich habe zb. 54 Led´s.
Alternativ macht es ev. Sinn den Sketch auf einen ESP32 zu portieren.
Hm, was mir dazu noch einfällt: Aktuell ist aufgrund der Speicherprobleme die Anzahl der Einträge im Color Mapping auf 30 beschränkt, und die Anzahl der Einträge im Device Mapping auf 35. D.h. du wirst da vermutlich Probleme bekommen alles so einzurichten wie du willst. Hierzu sei noch gesagt, das Speicherproblem ist hauptsächlich wegen der Konfiguration über die Webseite, d.h. die Webseite wird aufgrund der vielen Einträge so groß dass der Speicher ausgeht. Würde man das Config-File z.B. offline editieren und direkt ins Flash legen, könnte man auch wesentlich mehr Einträge zulassen- verliert dadurch aber die komfortable Editiermöglichkeit und kann Probleme bekommen wenn die Syntax im editierten Config-File nicht stimmt.
Wenn jemand einen Weg kennt den Speicherverbrauch mit der Webseite zu limitieren oder andere Lösungsmöglichkeiten für dieses Problem, bin ich für Vorschläge, am liebsten direkt in Form von Pull-Requests sehr dankbar.
Ich kann aufgrund sehr wenig verfügbarer Zeit allerdings da leider nicht maßgeblich dran mitwirken. Ich habe aktuell auch kein Testsystem mit entsprechend großen Konfigurationen (größer als meine eigene meine ich damit).

ZitatMal was anderes: hat schonmal jemand einen Rolladenstatus darüber angezeigt?
Meine Idee wäre bisher nur diesen über den windows type zu visualisieren (zu=off, offen=on, irgendetwas dazwischen=tilted)
Gibts eine bessere idee?
Wäre so möglich, habe ich selber aber noch nicht gemacht. Prinzipiell könnte man auch einen Device Type "Generic" oder sowas einführen, damit das nicht so seltsam aussieht. Vielleicht ist diese ganze Aufteilung wie ich das gemacht habe auch nicht so gut (Color/Device Map Konfiguration). Wenn hier jemand bessere Ideen hat bin ich da durchaus offen  ;)

Tobias

#51
Das ist ein fertiger Bilderrahmen, siehe ein paar Postings von mir weiter oben

Meine Ideee ist als erstes, das Ganze auf ESP32 zu portieren, der hat bei weitem mehr Speicher.
Erstes Problem ist, das ESP8266WebServer und ESP8266HTTPUpdateServer im ESP32 nicht mehr gibt. Dort wird alles über WiFi.h abgewickelt.

Als Alternative oder QuickWin / Workaround wäre ev. ein Export und Import der jeweiligen Datei möglich.
Leider bekomme ich das nicht selbst hin.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Joker

Mein Problem ist, dass ich außer dem HomeStatusDisplay auch noch keine "größeren" Projekte auf dem ESP8266 selbst entwickelt habe, und auf dem ESP32 noch gar nichts.

Daher kann ich z.B. nicht einschätzen ob man den Speicherverbrauch vielleicht deutlich reduzieren könnte. Wenn ich mir andere Projekte wie ESPEasy, Sonoff-Tasmota oder das Sming Framework anschaue, können diese ja DEUTLICH mehr als das Projekt hier, also wäre die Frage wieso habe ich mit dem kleinen Projekt hier so große Speicherprobleme?

Was den ESP32 angeht, bestimmt kriegt man es hin das Projekt zu portieren, aber das muss dann so geschehen dass man den ESP8266 Support nicht abschneidet, denn die allermeisten nutzen diesen. Das könnte dann bedeuten, dass man auf dem ESP8266 z.B. nur 30 LEDs nutzen kann, auf dem ESP32 aber 100 oder sowas. In jedem Fall sollte man aber den Speicherverbrauch überprüfen, denn eventuell kann man sich dann die Portierung auch komplett sparen, oder hätte zumindest funktionell keine Unterschiede.

Tobias

Hi,
ich habe mal den sketch so erweitert, dass man 55 Einträge im Devicemapping machen kann um einen Speicherfehler zu provozieren. Ich habe alle 54 Einträge angelegt, aber keinen ESP-Absturz oder sonstige Auffälligkeiten festgestellt.
@Joker: inwiefern hat sich die Speicherproblematik gezeigt??

Adding or editing device mapping entry at index 54 with name test24, type 0, LED number 0
Header size: 1297
Page size: 6977
Free RAM: 21104
Need to save device mapping config
Preparing to write device mapping config file index 0
Preparing to write device mapping config file index 1
Preparing to write device mapping config file index 2
Preparing to write device mapping config file index 3
Preparing to write device mapping config file index 4
Preparing to write device mapping config file index 5
Preparing to write device mapping config file index 6
Preparing to write device mapping config file index 7
Preparing to write device mapping config file index 8
Preparing to write device mapping config file index 9
Preparing to write device mapping config file index 10
Preparing to write device mapping config file index 11
Preparing to write device mapping config file index 12
Preparing to write device mapping config file index 13
Preparing to write device mapping config file index 14
Preparing to write device mapping config file index 15
Preparing to write device mapping config file index 16
Preparing to write device mapping config file index 17
Preparing to write device mapping config file index 18
Preparing to write device mapping config file index 19
Preparing to write device mapping config file index 20
Preparing to write device mapping config file index 21
Preparing to write device mapping config file index 22
Preparing to write device mapping config file index 23
Preparing to write device mapping config file index 24
Preparing to write device mapping config file index 25
Preparing to write device mapping config file index 26
Preparing to write device mapping config file index 27
Preparing to write device mapping config file index 28
Preparing to write device mapping config file index 29
Preparing to write device mapping config file index 30
Preparing to write device mapping config file index 31
Preparing to write device mapping config file index 32
Preparing to write device mapping config file index 33
Preparing to write device mapping config file index 34
Preparing to write device mapping config file index 35
Preparing to write device mapping config file index 36
Preparing to write device mapping config file index 37
Preparing to write device mapping config file index 38
Preparing to write device mapping config file index 39
Preparing to write device mapping config file index 40
Preparing to write device mapping config file index 41
Preparing to write device mapping config file index 42
Preparing to write device mapping config file index 43
Preparing to write device mapping config file index 44
Preparing to write device mapping config file index 45
Preparing to write device mapping config file index 46
Preparing to write device mapping config file index 47
Preparing to write device mapping config file index 48
Preparing to write device mapping config file index 49
Preparing to write device mapping config file index 50
Preparing to write device mapping config file index 51
Preparing to write device mapping config file index 52
Preparing to write device mapping config file index 53
Preparing to write device mapping config file index 54
Writing config file /devicemapping.json
Header size: 1297
Page size: 6701
Free RAM: 22064
Uptime: 17min
Uptime: 18min
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

machmal kommt es vor das alle definierten LEDs in allen mögliche Farben mit 100% Helligkeit aufblitzen. Wie ein Regenbogengewitter , alle LEDs gleichzeitig isn derselben Farbe.
Kennt das jemand? Ich habe keine Ahnung wo ich suchen soll.
Ich habe den Elko und den Widerstand (510 Ohm) drin.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Jogi

Hallo,
ich habe mir das HomeStatusDisplay in den letzten Tagen mal vorgenommen und möchte ein ähnliches Display bauen.
Allerdings habe ich jetzt nach der Einrichtung von Wemos und MQTT ein Problem mit dem Verbindungsaufbau und weiß nicht, was ich falsch mache.
Wemos funktioniert und ich kann per Intranet darauf zugreifen. Die LED´s gehen von rot auf gelb.
Die Webpage des HomeStatusDisplay zeigt folgendes an:
Device is connected to WLAN JS
IP address is 192.168.178.74

Device is not connected to an MQTT broker


In FHEM sieht es so aus:
Das MQTT Device steht auf opened:
mqtt
opened

Die Readings:
connection
active
2018-01-20 16:30:24
state
opened
2018-01-20 16:21:24

Ein Tesdevice, dass ich angelegt habe zeigt folgendes Reading:
transmission-state
outgoing publish sent
2018-01-20 16:23:13


Allerdings tut sich am Wemos/RGB-Stripe nichts.

Ich weiß nicht, warum der Status
Device is not connected to an MQTT broker
lautet.
Es könnte sein, dass es an den Einstellungen unter "General" liegt, denn ich weiß nicht wirklich was ich unter "Server" eingeben soll?
Sorry, wenn die Frage doof ist:
Soll ich da die IP und das Passwort von FHEM eingeben?
Oder vom Raspberry?



Tobias

Du musst die IP des Servers eintragen wo der mqtt Server läuft. User und password kannst du leer lassen wenn du dieses beim mqtt Server nicht explizit eingestellt hast

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Jogi

Das ist genau meine Frage?
Muss ich die IP des Raspi eingeben, auf dem MQTT läuft, oder muss ich -das habe ich in entsprechenden Beiträgen gefunden- 127.0.0.1:1883 eingeben.
Beides funktioniert bei mir nicht. Ich bekomme keine Verbindung.

Ich suche seit Stunden.
Kann es evtl. daran liegen, dass ich auf meinem Raspi Pihole laufen habe?

Jogi

#58
Zitat von: Jogi am 20 Januar 2018, 17:56:48
Das ist genau meine Frage?
Muss ich die IP des Raspi eingeben, auf dem MQTT läuft, oder muss ich -das habe ich in entsprechenden Beiträgen gefunden- 127.0.0.1:1883 eingeben.
Beides funktioniert bei mir nicht. Ich bekomme keine Verbindung.

Ich suche seit Stunden.
Kann es evtl. daran liegen, dass ich auf meinem Raspi Pihole laufen habe?

Ich habe es jetzt gelöst.
Ich musste bei Server "raspberrypi" eingeben. Ob ich das vergeben habe und wann, weiß ich nicht mehr.
Über den Befehl "hostname" per SSH auf dem Pi ist das aber herauszufinden (für alle Anfänger wie mich!).
Die direkte IP mit dem Port hat nicht funktioniert. Keine Ahnung, ob das mit Pihole zusammen hängt.

@Joker:
Vielen Dank für diese coole Anwendung!!! Ich werde jetzt mit dem Einrichten all meiner Meldungen beginnen, aber es macht schon jetzt eine Menge Spaß!

Joker

Zitat von: Tobias am 14 Januar 2018, 15:41:50
Hi,
ich habe mal den sketch so erweitert, dass man 55 Einträge im Devicemapping machen kann um einen Speicherfehler zu provozieren. Ich habe alle 54 Einträge angelegt, aber keinen ESP-Absturz oder sonstige Auffälligkeiten festgestellt.
@Joker: inwiefern hat sich die Speicherproblematik gezeigt??
Die Speicherproblematik hat sich insbesondere beim Konfigurieren über die Webseite gezeigt. Also Einträge hinzufügen, Weglöschen, ändern, etc. und das öfter hintereinander. Irgendwann war es dann so, dass der Speicher (im Log "Free RAM") beim Aufrufen einer Seite weniger wurde. Der freie Speicher sollte eigentlich beim erneuten Aufrufen einer Seite immer gleich sein. Dann kommt es dazu dass die Webseite nicht mehr vollständig dargestellt werden kann und irgendwann das Config-File korrupt ist.

Zitat von: Tobias am 19 Januar 2018, 11:44:32
machmal kommt es vor das alle definierten LEDs in allen mögliche Farben mit 100% Helligkeit aufblitzen. Wie ein Regenbogengewitter , alle LEDs gleichzeitig isn derselben Farbe.
Kennt das jemand? Ich habe keine Ahnung wo ich suchen soll.
Ich habe den Elko und den Widerstand (510 Ohm) drin.
In einem Kommentar auf meiner Webseite hat ein User dieses Verhalten ebenso beschrieben, oder zumindest ähnlich: Er schrieb, es blitzen ca. 1x pro Stunde alle definierten LEDs einmal kurz mit voller Helligkeit auf. Wir hatten uns darüber eine Zeitlang per Mail ausgetauscht, aber ich habe leider keine Ahnung was die Ursache sein kann. Ich vermute ein elektrisches Problem, denn in der Software wüßte ich keinen Grund was dazu führen kann. Ich selber konnte das bei mir noch nie beobachten. Wenn es dazu irgendwelche Erkentnisse gibt bin ich sehr interessiert daran  :)
Ist das Blitzen bei dir auch 1x oder dauerhaft?

@Jogi:
Freut mich dass es soweit funktioniert. Warum es in deinem Fall per IP nicht funktioniert, kann ich nicht sagen. Prinzipiell funktioniert beides. Es muss nur die IP-Adresse ohne Port eingegeben werden. Als Port wird immer 1883 genommen.