HomeStatusDisplay (ESP8266, MQTT, WS2812B)

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

Vorheriges Thema - Nächstes Thema

Tobias

Das blitzen tritt mal gehäuft, mal immer nur einmal aus. Mal einmal pro Stunde, mal einmal pro 10 min.
Trenne ich den Daten Pin vom esp, leuchtet es stabil.
Es tritt auch mal auf, das auf einmal alle LEDs rot sind und rot bleiben, dann hilft nur noch ein Reset

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

Joker

Hm. Gute Frage was da los ist. Was für ein Netzteil verwendest du? Ich kann mir da beim besten Willen kein Software Problem vorstellen.

Das andere, wenn alle LEDs rot sind bedeutet eigentlich dass die Verbindung zum WLAN nicht aufgebaut werden kann bzw. verloren ist. Das müsstest du dann aber in den Logausgaben sehen (sofern am PC angeschlossen) bzw. auch an deinem Router.

Tobias

Ich glaube auch nicht das der efste Fall ein Software Problem ist, allerdings weiß ich no h nicht wo ich hardwareseitig du hin soll. Ich benutze ein 1,5A schaltnetzteil auf 5V, habe 54 LEDs die mit 20% Leistung laufen

Nur das der WLAN reconnect nicht funktioniert macht mich stutzig

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

Tobias

Das mit dem WLAN Reconnect ist merkwürdig. Bei mir eben nach ca 1h ist wieder alles rot, ein AP wurde aufgemacht. Natürlich hängt mein PC nicht an der seriellen SST um ds Log zu sehen :(
BEi Euch funktioniert grundsätzlich ein Reconnect? Steigt der ESP öfters mal aus dem WLAN aus?
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

Ja also bei mir funktioniert das Reconnect. Dass der ESP öfters mal aussteigt kann ich jetzt nicht sagen... wäre mir zumindest noch nie aufgefallen.

Tobias

warscheinlich habe ich die Lösung gefunden, zumindest thoretisch, praktisch steht der  test noch aus. Die WS2812b benötigen als Datenspannung mindestens 0.7*VCC, das sind 3.5V.  Mit 3.3V wird es schon zu eng. Zumindest wurde in verschiedenen Beiträgen von meinen Flackerproblemem berichtet wenn kein LevelShifter dranhängt.

Warscheinlich scheint es nur von minimalen Faktoren abzuhängen dass eurer stripes zufällig funktionieren und andere  nicht... Ich besorg mir jetzt einen Levelshifter und dann muss ich weiter testen
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

Interessant, das war mir tatsächlich so nicht bewußt. Leider findet man da ohne Ende Beispiele dafür wo das ohne Shifter gemacht wird und blöderweise auch noch funktioniert  ;D

Also wenn es sich herausstellt dass dies das Problem behebt werde ich das mindestens in die Doku aufnehmen mit dringender Empfehlung Levelshifter einzubauen. Interessanterweise tritt das Problem nur bei sehr wenigen auf (mir sind aktuell nur du und noch ein User bekannt, ich habe dem gegenüber aber unzählige Rückmeldungen von Usern die keine Probleme haben).

Tobias

Antwort: Der LevelShifter hilft 100%. ICh habe den von Adafruit empfohlenen Levelshifter verbaut: TXS0108E 8 Kanal Pegelwandler bidirektional Logic Level Converter I2C TTL SPI
Jetzt ist die Anzeige ENDLICH stabil!!
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

Coole Sache!
Danke für deinen Test und das Feedback.

Wie genau hast du den LevelShifter verbaut?
- Vcca = 3.3V vom wemos
- Vccb = 5V vom wemos
- A1 = output vom wemos
- B1 = data vom Stripe
- Oe = Vcca

?

Tobias

Korrekt, plus GND natürlich.
Ich habe keinen Wemos sondern eine normalen ESP8266 NodeMCU. Hatte ich rumliegen von einem anderen Projekt als Ausschuss und konnte ich hier wiederverwenden
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

#70
Ich habe jetzt nur noch das Problem das ca alle 6h alle LEDs rot leuchten - also WLAN Connect verloren. Nach ca 1,5h wird wieder automatisch in den normalen Modus zurück gewechselt. Schaue ich dann auf die Status-Page, wird mir eine Uptime ab dem Reconnect angezeigt.
Ich denke das ist nicht normal, oder?

Edit: so nach ca 160min uptime passierte es wieder :( hier mal das Log
WiFi connection lost.
Starting Wifi connection to MySSID...
Uptime: 164min
Uptime: 165min
Failed to connect WiFi.

Starting access point.
Error starting access point.

Starting access point.
AccessPoint SSID is StatusDisplay
IP: 192.168.4.1
Uptime: 166min
Uptime: 167min
Uptime: 168min
Uptime: 169min
Uptime: 170min
Uptime: 171min
Uptime: 172min
Uptime: 173min
Uptime: 174min
Uptime: 175min
Uptime: 176min
Uptime: 177min
Uptime: 178min
Uptime: 179min
Uptime: 180min
Uptime: 181min
Uptime: 182min
Uptime: 183min
Uptime: 184min
Uptime: 185min
Uptime: 186min
Uptime: 187min
Uptime: 188min

Exception (0):
epc1=0x2f7bf895 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys
sp: 3ffffb60 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffffd00:  0000002a 3fff1428 3fff1adc 401043d1 
3ffffd10:  3fff58ec 40104456 3fff18b4 00000000 
3ffffd20:  00000032 0000001c 3fff584c 3fff145d 
3ffffd30:  3fff1428 3fff1428 3fff58ec 4010453d 
3ffffd40:  4021c72f 3fff58ec 3fff5922 4021c738 
3ffffd50:  00000608 3ffe9c2e 000000e4 02004010 
3ffffd60:  00000000 3fff562c 00000050 3fff145d 
3ffffd70:  3fff5930 00000000 3fff58ec 40222257 
3ffffd80:  3fff1428 3fff145d 3ffe9c2e 3ffe9c28 
3ffffd90:  00000001 3ffeda50 00000000 4000050c 
3ffffda0:  00007fff 90b11b9c 3ffee460 3fff12cc 
3ffffdb0:  3fff1428 00000001 3fff584c 40222442 
3ffffdc0:  3fffff30 00000001 4024c370 3fff589c 
3ffffdd0:  3fff1428 3fffff30 3fff584c 402225f5 
3ffffde0:  00000002 00000000 00000001 3fff57c2 
3ffffdf0:  00000000 00000000 40235907 3fff589c 
3ffffe00:  3fff584c 3fffff30 3fff1428 402227c0 
3ffffe10:  3ffe0000 401042c3 3ffeda78 3ffeaf4a 
3ffffe20:  00000014 3fffff30 3fff584c 40223158 
3ffffe30:  0000000c 00000000 00000020 40100ec6 
3ffffe40:  3fff142c 000000ff 00000000 00000011 
3ffffe50:  3fff13c8 00000004 40000f68 00000000 
3ffffe60:  00000011 00000001 00000000 3fff584c 
3ffffe70:  3fffff30 3fff58b0 3fff194c 402231e6 
3ffffe80:  3fff1428 00000000 00000000 402238bb 
3ffffe90:  00000000 00000000 0000001f 4021fdc7 
3ffffea0:  3fff1428 3fff4c62 3ffea161 402237e0 
3ffffeb0:  3fff584c 3fff1428 3fff142c 0000007b 
3ffffec0:  0000005a 00000030 3fff13d4 401004d8 
3ffffed0:  3fff191c 402012dc 00000000 3fff1084 
3ffffee0:  3fffff30 0000007b 3fff194c 4021fe34 
3ffffef0:  fffffffc 3fffdcb0 3ffef2b0 4021fea8 
3fffff00:  3fff584c 3fffff30 0000007e 3fff1084 
3fffff10:  3fffff30 3fff58b8 3fff584c 4022360b 
3fffff20:  40223640 3fff1088 3fff13d4 4022367c 
3fffff30:  010aa8c0 3fff1088 3ffe9cb4 4021c7fa 
3fffff40:  40104d8b d2639b26 0000001e 4021d844 
3fffff50:  00000000 3ffe9e24 d2639b26 00000000 
3fffff60:  4023bcb0 3ffef268 3ffef290 60000600 
3fffff70:  a1401723 3ffef290 3ffef268 4023bcbd 
3fffff80:  4023bd02 3fffdab0 00000000 3fffdcb0 
3fffff90:  3ffef2a0 3fffdad0 3ffeffd8 4021420f 
3fffffa0:  40000f49 40000f49 3fffdab0 40000f49 
<<<stack<<<

ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v4ceabea9
~ld


Initializing config.
Mounted file system.
Reading config file /config.json
File size is 331 bytes
Main config data successfully parsed.
JSON length is 331
[...]


Ich denke das Problem ist u.a., wenn der erste Reconnect fehlschlägt, warum auch immer, wird der accesspoint aufgemacht und nicht weiter versucht sich ans Wifi zu connecten. Warum dann eine Exeption auftritt und den ESP zum Reboot zwingt weiß ich auch nicht...
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

Habe jetzt in der wifi.cpp den Aufruf "createAccesspoint()" gegen ein ESP.restart() ausgetauscht. Damit hab ich zwar das Wifi-connectionLost Problem nicht gelöst, aber das Display arbeitet jetzt wie gewünscht :)

Hatte mal weiter geforscht, wenn die Wifi Connection verloren ging, hat der ESP es auch nach Stunden nicht hinbekomen die WLAN Verbindung neu aufzubauen. Da hilf nur ein Restart. Hatte testweise den createAP() Aufruf gelöscht damit er permanent versucht sich ins WLAN wieder neu einzuloggen - ohne Erfolg

Mich wundert es nur das es bei Euch funktioniert :(

Edit: Hatte das Phänomen bei meinen ESP32 auch, das musste aber ein Bug im core gewesen sein, habe die lib aktualisert und schon funktionierte ein reconnect. Hier beim ESP8266 hat ein update leider nicht geholfen....
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

Zitat von: Tobias am 05 Februar 2018, 19:47:32

Mich wundert es nur das es bei Euch funktioniert :(


Du bist nicht alleine.
Bei mir geht das Display auch unregelmäßig in den "roten" Zustand. Irgendwann fängt es sich dann wieder, oder ich muss es neu starten.
Ich weiß nicht genau, woran es liegt und teste mal einen anderen Wlan-Zugang.
Wenn das nicht funktioniert werde ich Deinen Tipp ausprobieren:
Zitat von: Tobias am 05 Februar 2018, 19:47:32
Habe jetzt in der wifi.cpp den Aufruf "createAccesspoint()" gegen ein ESP.restart() ausgetauscht.

Tobias

#73
Hi jogi, das "irgendwann fängt es sich wieder" war bei mir auch, das war aber ein restart des esp durch einen Kernel error hervorgerufen.
Habe ich auch nur rausbekommen weil ich mein Laptop mal einen Tag an der seriellen Schnittstelle hab mitlaufen lassen ;)

Mit welcher ESP code lib arbeitest du? Ich habe die 2.4.0
Mich würde es interessieren mit welcher Version der lib der Sketch kompiliert wurde der keine derartigen Probleme hat

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

marco-f

Hi Bernd,

neben den Anmerkungen zu Deiner tollen Anleitung auf deiner Homepage, die ich in den Kommentaren hinterlassen habe, habe ich noch weitere Anmerkungen und Fragen zum Display an sich. Aufgrund der besseren Interaktion komme ich mal damit hierher, ggf. kann ja den beschriebenen Fehler ja auch mal noch jemand anderes bei sich prüfen, nicht dass der aus irgendwelchen Gründen nur bei mir auftritt.

Mein Display zeigt in der Access Point Funktion ein Verhalten was ich so nicht erwarte und welches ich auch Nachvollziehen bzw. Nachstellen kann. Nach der "Erstinstallation" auf dem Wemos wird ja der AP aufgemacht, damit man sich einloggen und seine Einstellungen vornehmen kann. Zum Zeitpunkt meiner Erstinbetriebnahme hatte ich mein WiFi nicht in der Nähe, weswegen ich erstmal nur die LED Anzahl und den Datenpin eingerichtet habe, dann die Einstellungen abgespeichert habe und mich als ersten Erfolg daran erfreut habe, dass alle LEDs rot leuchten. Als ich dann bei meinem WiFi war, hab ich das Display wieder angesteckt, auf den AP gewartet, mich mit diesem verbunden, aber noch bevor ich die richtigen WiFi Einstellungen eintragen konnte war der AP nach wenigen Sekunden wieder zu und die Verbindung getrennt. Egal womit ich mich verbunden habe, Smartphone, Laptop, immer wurde der AP binnen weniger Sekunden nach dem Einloggen wieder geschlossen. In meiner Verzweiflung habe ich den ESP dann wieder komplett gelöscht und neu bespielt. Hier habe ich erstmal ohne jegliche Einstellungen einige Male neu gestartet, und immer konnte ich mich problemlos auf den AP einloggen und blieb auch drin. Sobald ich aber irgendwelche ,,General" Einstellungen abgespeichert habe, ohne dabei die Richtigen WiFi Einstellungen mit drin zu haben, trat bereits erwähntes Phänomen auf. Im dritten Anlauf habe ich dann gleich als Erstes die korrekten WiFi Einstellungen mit eingetragen und die Verbindung wurde korrekt aufgebaut. Wenn ich jetzt allerdings das Display testweise mal an einem Punkt starte, an dem mein eingerichtetes WiFi nicht erreichbar ist, habe ich wieder das Problem! Ich würde hier erwarten, dass in dem Fall dass immer wenn mit den abgespeicherten Daten keine WiFi Verbindung hergestellt werden kann, der AP sauber läuft.

So wie ich das Ganze derzeit interpretiere, sperrt man sich selbst aus wenn man beim ersten Save der General Configuration keine oder falsche SSID/Password Eingaben abspeichert. Ggf. sollte man hier mal Ursachenforschung betreiben, da falsche Eingaben schnell mal abgespeichert sind.

Ein anderes Thema betrifft meine eigene Netzwerkordnung. Ich habe meinen heimischen IP Bereich nach ,,Themengebieten" (Netzwerk Infrastruktur, feste PC's, Home Entertainment, Heimautomatisierung, Überwachungstechnik, DHCP) aufgeteilt und verteile bei mir, außer bei mobilen Endgeräten, grundsätzlich nur feste IPs. Aus diesem Grund, du kannst es Dir sicher denken, sollen auch die geplanten Displays alle ihre feste IP erhalten, und das Geräteseitig. Für's Erste hab ich mir schon selbst geholfen, in dem ich die HSDWifi.cpp entsprechend modifiziert habe.

       if(m_numConnectRetriesDone == 0)
        {
          Serial.print(F("Starting Wifi connection to "));
          Serial.print(m_config.getWifiSSID());
          Serial.println(F("..."));

          // NETWORK: Static IP details...
          IPAddress ip(192, 168, x, x);
          IPAddress gateway(192, 168, x, x);
          IPAddress subnet(255, 255, x, x);
     
          WiFi.config(ip, gateway, subnet);
         
          WiFi.mode(WIFI_STA);
 
          WiFi.begin(m_config.getWifiSSID(), m_config.getWifiPSK());
     
          m_numConnectRetriesDone++;
        }


Für die Ersteinrichtung ist das nur ein minimaler Aufwand, aber bei einem bei einem Upgrade auf eine neue Version wäre eine Möglichkeit in der General Configuration zwischen automatischer IP Vergabe und fester IP zu wählen die schönere Lösung. Meinst Du das wäre ggf. implementierbar?

Und noch ein Thema, womit ich aber sicher ziemlich allein dastehe, was aber sehr schön wäre, wäre das anlegen von zwei WiFi Zugängen. Ich hab bei mir zwei AP's und zwei SSIDs. Aktuell muss ich das Display je nach Einsaztzort auf eine SSID einrichten und vor dem Versetzen an einen anderen Ort anpassen. Ansonsten sperre ich mich ja wegen zuerst genanntem Problem wieder aus. Luxus wäre hier eine Grundeinrichtung auf beide SSIDs damit ich das Display jederzeit überall daheim in Betrieb setzen kann.

MfG
Marco