HomeStatusDisplay (ESP8266, MQTT, WS2812B)

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

Vorheriges Thema - Nächstes Thema

Jochen1977

Hallo,

nachdem mein HSD nun lange und problemlos gelaufen ist bin ich an die Grenze von 37 Einträgen im Device Mapping gekommen. Das ist mir gar nicht aufgefallen dass die LED Anzahl zwar im Webinterface auf 57 gesetzt werden kann aber die Einträge in der Software auf 37 begrenzt sind. Nun wollte ich die Firmware neu kompilieren aber leider lässt sich die neu kompilierte Firmware nicht auf dem Wemos starten. Da ich meinen PC neu aufgesetzt habe ist vermutlich bei den Updates der Arduino Software etwas neu hinzugekommen daß den Firmwarestart verhindert. Zum Thema Firmware mache ich mal einen neuen Thread auf damit das hier nicht unübersichtlich wird. -> Hier lang https://forum.fhem.de/index.php/topic,122226.0.html

chfroening

#226
Hei,

ich nutze auch einen AZ, der Code kompiliert ohne Probleme aber ich bekomme ständig exceptions.
Gibt es irgendwo eine Info (ich habe sie jedenfalls noch nicht gefunden) mit welchen IDE/Bibliotheksversionen der Sketch funktioniert? Mit den Firmware die hier im Thread verfügbar sind klappt es, es ist somit kein HW Problem.

Danke und Grüße

Christian

maclovlin


chfroening

Zitat von: maclovlin am 16 Januar 2022, 09:12:55
Hi,

hier: https://gitlab.com/djusha/homestatusmonitor
unter compile oder in der Platform.ini

Danke,

ich bekomme das auch mit den Angaben nicht kompiliert, sowohl in der Arduino IDE als auch mit einem extra installierten PlatformIO.
VSCode bringt den Fehler

no return statement in function returning non-void [-Werror=return-type] [218,1]
no return statement in function returning non-void [-Werror=return-type] [272,1]

Ich habe mit Git heute den Code auf meinen Rechner kopiert.
Kannst Du mir da einen Tip geben? Gerne auch per PM um den Thread nicht zu kapern ...

Grüße

Christian

maclovlin

Clone nochmal die Repo und probiere es nochmal, müsste jetzt durchlaufen, mit ner Menge Warnings ;-)
Denk an die korrekte Config

JudgeDredd

Hallo Zusammen,

ich habe mir das hübsche Projekt auch angesehen und plane aktuell die Umsetzung.
Allerdings müsste ich die Einstellungen doch "etwas" aufbohren, da bei mir ca. 80 LEDs zur kompletten Anzeige benötigt werden
und ich gerne die erforderliche Speichergröße berechnen möchte.

Wo ich noch nicht ganz dahintergestiegen bin, ist das Verhältnis zwischen
MAX_SIZE_DEVICE_MAPPING_CONFIG_FILE
und
JSON_BUFFER_DEVICE_MAPPING_CONFIG_FILE

ich habe in den Sketch mal ein paar Debugzeilen eingearbeitet.
Der Inhalt von der Datei "devicemapping.json" lautet:
{
"0":{"n":"1234567890123456789012345","t":1,"l":0},
"1":{"n":"1234567890123456789012345","t":1,"l":1},
"2":{"n":"1234567890123456789012345","t":1,"l":2}
... etc.
}

Würde also bedeuten das ich bei voller Nutzung aller LEDs (35 Stück) und max. Länge des Devicenamens (25 Zeichen) + 2 Klammern auf
1732 Zeichen komme.
Im Code steht nun:
static const int MAX_SIZE_DEVICE_MAPPING_CONFIG_FILE = 1900;    // 1801 exactly
static const int JSON_BUFFER_DEVICE_MAPPING_CONFIG_FILE = 4000; // 3908 exactly

Demnach habe ich beim ConfigFile (1801 exactly) 69 Zeichen Differenz (sofern der Comment im Code stimmt), die ich mir nicht erklären kann.
Ebenso unklar ist mir die Bedeutung/Errechnung des Buffers.

Kann mich da Jemand erhellen ?

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Jochen1977

Hallo,

letzte Woche habe ich ein paar neue Funktionen auf die LED zugeordnet. Zuerst hatte ich das Problem dass das Devicemapping gelöscht wurde wenn ich neue Definitionen eingetragen hatte. Das lag wohl daran dass der Speicher zu Ende war (57 LEDs). Um das zu umgehen habe ich die Namen gekürzt. Also statt Alle_Fenster ist der Device Name nun A_Fe. Somit habe ich genug Platz um alle gewünschten LEDs zu benennen.

Nun ist es aber so daß nach einiger Betriebszeit alle LEDs dunkel werden und dann erst beim nächsten Publish wieder anzeigen.

Vermutlich liegt hier also das selbe Problem vor dass der Speicher zu Ende ist.

Jetzt wollte ich die Firmware neu kompilieren und bekommen hier die Fehlermeldung:

Compilation error: no return statement in function returning non-void [-Werror=return-type]
in der Zeile bool HSDConfig::readColorMappingConfigFile()
{
  bool success = false;
....
der Datei HSDConfig.cpp

beim letzten mal hat diese Version funktioniert. Das ArduinuJson habe ich im Arduino IDE von Version 6 auf 5 zurückgestellt da mir das zuvor als Fehler angezeigt wurde.

Könnte mir bitte jemand sagen was hier falsch läuft?

Danke und Gruß Jochen

maclovlin

Moin Jochen,

bei mir kompiliert die Firmware einwandfrei.

Muss dazu sagen, das ich mein Repo genommen habe und mit PaltformIO kompiliert habe.

Bin aber aus einem anderen Grund hier und zwar kam ja mal der Wunsch auf, den Rahmen automatisch neu zu starten.

Ich benutze mittlerweile HomeAssistant und habe es so gelöst:
config.yaml
shell_command:
  reboot_led_frame: 'curl -X Post -m 2 -s http://192.168.178.120/?reset=Reboot > /dev/null'

automations.yaml
- id: '1688710085020'
  alias: WHZ Reboot LED Frame
  description: ''
  trigger:
  - platform: time
    at: 00:01:00
  condition: []
  action:
  - service: shell_command.reboot_led_frame
    data: {}
  - service: notify.signal
    data:
      message: LED Frame neugestartet
  mode: single

Jogi

#233
Hallo,
ich nutze das Homestatusdisplay seit einigen Jahren und finde es echt toll.
Leider bin ich jetzt gezwungen ein neues System aufzusetzen und habe da so meine Probleme, denn ich bekomme beim Hochladen des Sketch mit Arduino IDE ständig Fehlermeldungen.
Ich habe mir extra ein neues Linuxsystem aufgesetzt und Arduino neu installiert.
Ich bin exakt (soweit das mit den neueren Softwareversionen möglich ist) nach der Installationsanleitung vorgegangen (mehrfach!):
https://www.bernd-schubart.de/homestatusdisplay-smart-home-status-immer-im-blick/
Nach einem ersten Hinweis über Google-Suche habe ich die ArduinoJson-Version heruntergesetzt. Dann bekam ich andere Fehlermeldungen. Wieder eine neue ArdunioJson-Version, wieder andere Fehlermeldungen.
Mein laienhafter Verstand sagt mir, dass es wahrscheinlich mit irgendwelchen Softwareständen zu tun hat. Ich bin aber nicht sicher.
Seit der Anleitung in dem Link hat sich einiges verändert. Sowohl Arduino IDE selbst, als auch die ganzen Softwarepakete sehen alle anders aus.
Daher weiß ich nicht, was ich wo genau einstellen muss. LEIDER nutze ich Arduino IDE auch nur ca. alle 2 Jahre mal, so dass ich mich damit nicht gut auskenne.
kann mir jemand sagen, was genau ich wo einstellen muss, um einen Wemos D2 mini zu flashen und welche Softwareversionen ich einstellen soll?

Vielen Dank!

Edit: 24.12.2023
Ich habe jetzt mit einigen Versionen herumprobiert und eine Lösung für mich gefunden. Ich dokumentiere sie hier, denn vielleicht hat ja irgendwer irgendwann das gleiche Problem.
Folgendes funktioniert bei mir:
Arduino DIE 1.8.19
ESP8266 Version: 2.5.2
Adafruit_NeoPixel: https://github.com/adafruit/Adafruit_NeoPixel Version: 1.8.2 
PubSubClient: https://github.com/knolleary/pubsubclient Version: 2.5.0
ArduinoJson: https://github.com/bblanchon/ArduinoJson Version: 5.12.0

Die Einstellungen unter "Werkzeuge" hänge ich als Screenshot an.




JanHH

Ziemlich genau so etwas habe ich letztes Jahr als "Internet-Ampel" für meine >80jährige Mutter gebaut. Das Teil prüft, ob WLAN geht, die Fritzbox-Homepage und ein paar andere strategische URLs und Ports (SMTP Submission, IMAPS) funktionieren. Das hat meinen Remote-Support-Aufwand massiv verringert.

Als Gehäuse für so etwas ist ein Ikea-Bilderrahmen (SANNAHED) hervorragend geeignet. Bei dem lässt sich die Kunststoffscheibe samt Passepartout an die Front verschieben, dann hat man genug Tiefe für die Elektronik.
Die Frontbeschriftung habe ich einfach auf Papier gedruckt. Dahinter eine dünne Pappe, vor den LEDs habe ich ein Loch in die Pappe, aber nicht ins Frontpapier gestanzt. Damit dient das Frontpaier als Diffusor und alles sieht ordentlich aus.

Tobias

Bei mir läuft das Display seit sehr vielen Jahren auch schon fast problemlos. Bei mir läuft es jedenfalls in einem IKEA Bilderrahmen mit 52 LEDs. Das Problem ist, wenn man die 37 LED Grenze überschreitet, kommt man sehr schnell in Speicher Probleme. Damit der ESP das selbst merkt und einen Neustart auslöst Habe ich die Software auch etwas angepasst, aber das Gelbe vom Ei ist es nicht. Circa alle 3-4 Stunden startet der ESP neu, so dass der Bilderrahmen von komplett rot über gelb bis in den Normalzustand übergeht.

Um es eigentlich richtig zu machen, muss man das ganze Projekt einmal komplett aktualisieren, zum Beispiel ist die json Library mittlerweile in der Version 7 verfügbar, und auf ein esp32 portieren. Dieser hat genug power.
Hatte ich mir auch mal vorgenommen, aber zu Gunsten meiner anderen Projekte ist dieses immer nach hinten gerutscht.
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

JudgeDredd

Zitat von: Tobias am 17 Juni 2024, 19:48:59auf ein esp32 portieren. Dieser hat genug power.
Hatte ich mir auch mal vorgenommen, aber zu Gunsten meiner anderen Projekte ist dieses immer nach hinten gerutscht.
Also an einer Protierung auf den ESP32 wäre ich auch interessiert. Da es bei mir aber sehr zuverlässig läuft, habe ich da leider auch nicht die Zeit mich rein zu arbeiten.

Zitat von: Tobias am 17 Juni 2024, 19:48:59wenn man die 37 LED Grenze überschreitet, kommt man sehr schnell in Speicher Probleme
Das Problem kenne ich, daher habe ich einfach 2 ESP-12F im Bilderrahmen verbaut.
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)