Display für LaCrosseGateway

Begonnen von HCS, 02 Mai 2016, 09:20:29

Vorheriges Thema - Nächstes Thema

HCS

Da amunra hier
https://forum.fhem.de/index.php/topic,45594.msg446513.html#msg446513
ein Beispiel für ein Display am LGW gezeigt hat, diskutieren wir das Thema mal, ob das ein Feature werden könnte und wenn ja, wie genau.

Wzut

ach nun doch  ... im Dezember warst du da noch anderer Meinung :
Zitat von: HCS am 07 Dezember 2015, 22:47:32
Coole Sache. Auch auf die Gefahr hin, dass ich die permanente Spaßbremse bin, was ist denn da der use case?
anbei nochmal das damalige Foto
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

HCS

Zitat von: Wzut am 02 Mai 2016, 13:22:10
ach nun doch  ... im Dezember warst du da noch anderer Meinung
1. Ich kann meine Meinung beliebig ändern
2. Noch habe ich keine konkrete Meinung
3. Dieser Thread dient der Meinungsbildung

amunra

#3
@Wzut: Genau darauf habe ich mich bezogen und wollte keinesfalls damit Unruhe stiften ;) Ich fand die Idee damals schon interessant, und das nicht nur, weil ich die Displays in der Schublade hatte.

@HCS: Zunächst Danke für die Interesse und den neuen Thread. Die Einstellung verworfene, und damals vielleicht nicht benötigte/sinnlose, Dinge wieder aufzugreifen gut! – also, auch hier wieder Daumen hoch. ;)

So nun zum Thema – ich versuche es kurz zu machen, Details können bei Bedarf immer noch geklärt werden.

Bei dem Display handelt es sich um einen:
0.96" Yellow & Blue 128X64 OLED I2C IIC Serial LCD LED Display Module for Arduino
Angaben findet man z.B. hier
Ich habe leider keine Bezugsquelle mehr, weil die Beschaffung schon etwas länger (ca. 1 Jahr) zurück liegt. Preis lag damals bei ca. 5$. Original Bilder (vorhin zwischen durch mal geschossen) habe ich angehängt.
Verstanden habe ich, dass I2C Interface bevorzugt wird, was die Implementierung einfach macht/machen soll, dieses OLED erfüllt diese Voraussetzungen.
Das Display gibt es in zwei Varianten: ,,Yellow & Blue" und ,,Blue"

Beschaltung:
D1(GPIO5) = SCL und D2 (GPIO4) = SDA VCC=3,3V GRD=GND und wie auf den Bildern/Video zu sehen mit zwei 4,7K Widerständen an 3.3V für Stabilität gesorgt.
Kurzfassung: Entspricht einer BMP180/BME280 Beschaltung.

Was fehlt noch.....?

Software:
Ist eher uninteressant und würde es offen lassen, es ist ja eine Diskussion ,,ob" und ,,was" und ,,überhaupt"?
Versucht habe ich u8glib, nach ca. 1 Stunde aufgegeben, weil ich es nicht zum Laufen gebracht habe – was aber nichts heißen muss.
Am Ende ist es der Klassiker ,,ESP8266 Weather Station" geworden.

Warum?
Erfüllt ,,meine" bisherigen Anforderungen: ,,String Print" ,,BMP Print" ,,Fonts integrierbar" und mehr... .
Schlank und kein Overkill (wenn auch nicht so gut und breiter aufgestellt als u8glib) für mein Vorhaben und ich habe nur diese Display Variante!

Anforderungen:
Möglichst die bisherigen Funktionen nicht tangieren. Spricht, wird/soll es Laufzeitprobleme geben, dann ziehe ich die bisherige Basis-Funktionalität vor.

Warum dieses Display:
-   Weil ich nichts anderes in der Bestellkiste gefunden habe.
-   Aufgrund der Bauform des Displays würde dieses Display gut passen ;) *ja, kann man diskutieren
-   Stromverbrauch gering *Ja, es gibt bessere, aber auch mit Abstrichen.
Nachteile: skip ;)

Grundsätzliches:
-   Ich denke ein Display würde ein LGW aufwerten und die Sache rund machen. Es ist nicht vorgesehen/ausgelegt ihn in Batteriebetrieb zu betreiben.

Ideen:
-   Boot Sequenz Darstellung (Wifi Verbindung erfolgreich ja/nein etc.).
-   Darstellung von WiFi-Signalstäke
-   Nach Boot Sequenz, Display nicht grundsätzlich aktiviert laufen lassen, sondern via ,,push Button" ein paar Informationen zu entlocken
-   [Spielerei=auch nicht die Zielsetzung von LGW] Im Falle eines Terrassen Temp/Hum/Pres Sensors auch mal Zyklische Darstellung von Werten (Konfigurierbar über WEB oder aber auch Advanced-Mode Jahres abhängig: Winter nur Daten an FHEM übermitteln, keine Display Darstellung.... ) Detailierungsgrad kann man diskutieren.....
-   Ich finde noch mehr mögliche Einsatzszenarien.... (Zeitbedingt nur Kurzfassung)

Ich hoffe jetzt können wir diskutieren?

Viele Grüße
Arthur

HCS

Zitat von: amunra am 02 Mai 2016, 22:23:06
Ich hoffe jetzt können wir diskutieren?
Wir können  :)

Ich schreibe mal meine Gedanken (und mehr darf man da erst mal nicht reininterpretieren) zu dem Thema in ungeordneter und ungewichteter Reihenfolge runter.

Sind wir auf genau dieses Display gebunden (und wollen das) oder gehen auch andere Displays (ohne jedes explizit zu implementieren)

I2C ist OK, aber wie schon angesprochen, müssen wir auf die LoopTime der main loop achten, um nicht Timings von PCA301 usw. zu ruinieren. Besonders, wenn ein SC16IS750-Clone zum Einsatz käme und die I2C-Clock auf 100 kHz runter muss, ist die Kommunikation nicht mehr so rasend schnell

PushButton: in der Grundvariante eines LGW gibt es als einzig freien Port am ESP-12E noch den Analogeingang A0.
Da könnte ggf. ein Button dran oder über ein R-Netzwerk sogar mehrere (Up, Down, ...) um das Display oder sonstwas zu steuern.

Für die Idee, den LGW-Status (hat es einen Connect zum AP bekommen, RSSI, ...) darzustellen, was einem aktuell die LED hinblinkt, kann ich mich erwärmen

Temperatur, Feuchte und Luftdruck des internen Sensors dann halt auch, wenn man es cool findet

Wenn ich eine Display-Class Rumpfimplementierung bereitstelle, die ich mit neuen Log-Einträgen und neuen Werten des internen Sensors benachrichtige und ggf. mit Einstellungen der Setup-Page versorge, würde die dann jemand mit Leben füllen und ggf. auch pflegen?

Sehe ich auf Deiner Hardcopy den SerialMonitor von VisualMicro? Ich liebe das Tool :-)

Das Display hat ein immenses Potenzial für unsägliche Wünsche (kann dies und das noch drauf, ich will lieber Arial, kann es denn Charts für Temperatur und Feuchte)
Das darf nicht dahin führen, das wir irgend wann im Wesentlichen an einem LGD (LaCrosseDisplay) arbeiten

Kannst Du mir mal einen Link auf die Display-Lib posten, die Du eingebunden hast?

Wzut

Zitat von: HCS am 05 Mai 2016, 08:50:35
Kannst Du mir mal einen Link auf die Display-Lib posten, die Du eingebunden hast?
IMHO habe ich das gleiche Display wie amunra und ich hatte die beiden eingebunden:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Basisadresse das Displays : 0x3c
Ausgaben auf dem Display sind ja erst nach Wire.begin möglich, da ist aber das Thema WiFi, DHCP bereits komplett durch.
Wäre schön wenn man Wire.begin vllt. etwas vorziehen könnte.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Maxel

FHEM auf Banana Pi
CUL V3 (FS20), Homematic, MAX, 1-Wire, Lacrosse (LaCrosseGateway)

AxelSchweiss

ich habe mir mal das hier gekauft
http://www.aliexpress.com/item/1Pcs-white-128X64-OLED-LCD-LED-Display-Module-For-Arduino-0-96-I2C-IIC-SPI-Serial/32610191383.html
Das sieht auf der Rückseite genau so aus. Es fehlt auch der Address-Selector.
Ich bekomme das Ding aber bis jetzt nicht zu laufen.
Man sollte mit den OLED aufpassen ... es gibt anscheinend verschiedene Chipsätze die sich aber im Aussehen sehr ähnlich sind.

amunra

#8
Zitat von: HCS am 05 Mai 2016, 08:50:35
Sind wir auf genau dieses Display gebunden (und wollen das) oder gehen auch andere Displays (ohne jedes explizit zu implementieren)
Technisch natürlich nicht, wenn man u8glib nimmt dann sind nahezu keine Grenzen gesetzt - erhöht jedoch die Komplexität.
- alleine der Support der unterschiedlichen LCDs/OLEDs
- Code müsste generisch und über Web konfigurierbar sein - Stichwort "Komplexität"  :-\
Tendenziell und vor allem zu Gunsten der Stabilität würde ich empfehlen sich auf 1-2 Displays festzulegen. Meine Meinung.

Zitat von: HCS am 05 Mai 2016, 08:50:35
I2C ist OK, aber wie schon angesprochen, müssen wir auf die LoopTime der main loop achten, um nicht Timings von PCA301 usw. zu ruinieren. Besonders, wenn ein SC16IS750-Clone zum Einsatz käme und die I2C-Clock auf 100 kHz runter muss, ist die Kommunikation nicht mehr so rasend schnell
Darauf zielte mein Hinweis mit Funktionalität "vor" Spielerei ab. Ich muss gestehen, dass ich die kritischen Pfade/Komponenten (gar)nicht bis ins Detail getestet habe. Je mehr man auf dem OLED darstellt, umso größer wird die looptime.

Zitat von: HCS am 05 Mai 2016, 08:50:35
Temperatur, Feuchte und Luftdruck des internen Sensors dann halt auch, wenn man es cool findet
Du meinst sicher die Betriebstermperatur des LGWs ;) (Oder, wie Du schon mal erwähnt hattest, man sorgt für die entsprechenden thermischen Voraussetzungen... ;)) - Advanced Mode an (Blende den Programmier- und Testaufwand aus): Über WEB konfigurierbar welche an LGW angebunden Sensoren auf dem OLED angezeigt werden sollen. Advanced Mode aus.

Zitat von: HCS am 05 Mai 2016, 08:50:35
Wenn ich eine Display-Class Rumpfimplementierung bereitstelle, die ich mit neuen Log-Einträgen und neuen Werten des internen Sensors benachrichtige und ggf. mit Einstellungen der Setup-Page versorge, würde die dann jemand mit Leben füllen und ggf. auch pflegen?
So, jetzt wird es spannend :) Freiwillige bitte vor.
Wenn auch ein wichtiger/fundamentaler Punkt, ich würde diesen Punkt "für mich persönlich" unbeantwortet lassen.
Hintergrund:
-  Das Thema ist eher neu für mich und ich kann nicht zuverlässig die dafür notwendige Freizeit aufbringen, um das Thema voranzutreiben :/ - diese Herausforderung müssen wir sicher alle bewältigen.
Ich würde aber jetzt noch nicht die Flinte ins Korn werfen und eher den weiteren Diskussionsverlauf abwarten.

Zitat von: HCS am 05 Mai 2016, 08:50:35
Sehe ich auf Deiner Hardcopy den SerialMonitor von VisualMicro? Ich liebe das Tool :-)
Ja und Dito. ;)

Zitat von: HCS am 05 Mai 2016, 08:50:35
Das Display hat ein immenses Potenzial für unsägliche Wünsche (kann dies und das noch drauf, ich will lieber Arial, kann es denn Charts für Temperatur und Feuchte)
Das darf nicht dahin führen, das wir irgend wann im Wesentlichen an einem LGD (LaCrosseDisplay) arbeiten
Unterscheib. Meine Idee war ein paar Betriebsdaten zu entlocken – alles andere ist nice to have. Der Fokus sollte mMn bei Betriebsdaten liegen.

Zitat von: HCS am 05 Mai 2016, 08:50:35
Kannst Du mir mal einen Link auf die Display-Lib posten, die Du eingebunden hast?
Gerne.

Hier gibt es eigentlich alle Informationen.

Mein Ablauf war:
- Über den Arduino IDE Library Manager den SSD1306 Treiber und die ESP8266 Weather Station installiert
(http://up.picr.de/25448179kb.png)
- Aus dem entsprechenden Verzeichnis die Treiber und die Libs in das LGW-Projekt kopiert und eingebunden.
- LGW Code angepasst...
Falls Fragen aufkommen, dann bitte einfach melden.

Die von Wzut vorgeschlagene Adafruit sollte (ähm, er hat's bereits ausprobiert?!) auch funktionieren, man müsste den Funktionsumfang/ die Performance der beiden Libs abgleichen. Die habe ich bisher nicht im Einsatz gehabt - für meine Demo war Weather Station ideal (Läuft übrigens seit 4 Tagen ohne Probleme).

@Wzut: Mein Display ist auch über die Adresse 0x3c ansprechbar.

@Maxel: Sollte funktionieren (Keine Garantie). Manche Displays haben einen (Löt)Jumper mit dem man die Adresse bestimmen kann, das hat mein OLED nicht.

@AxelSchweiss: Wenn Du magst, dann kann ich dir gerne meine Firmware zusenden, um zu sehen, ob dein OLED hell wird? Ich muss nur schauen wie ich dir das bereitstellen kann.

P.S: @HCS – So jetzt haue ich noch einen raus ;). Wenn Du magst, dann kann ich dir gerne 1-2 von den OELD(s) zusenden (ich habe hier noch 3 liegen.) ;)

HCS

Zitat von: amunra am 05 Mai 2016, 23:04:50
Wenn Du magst, dann kann ich dir gerne 1/2 von den OELD(s) zusenden (ich habe hier noch 3 liegen.) ;)
Ein halbes?  ;D ;D ;D
Nee, klar, super, dann muss ich nicht drei Wochen warten, bis ich was aus China bekomme.
Sonst geht es mir noch wie Wzut und ich habe vergessen, warum ich es bestellt habe  ;D ;D ;D
Vielleicht ist meine Begeisterung ja unermesslich, wenn ich es live vor mir sehe  :)
Ich melde mich per PM.

Zitat von: amunra am 05 Mai 2016, 23:04:50
@AxelSchweiss: Wenn Du magst, dann kann ich dir gerne meine Firmware zusenden, um zu sehen, ob dein OLED hell wird? Ich muss nur schauen wie ich dir das bereitstellen kann.
Zippen und hier anhängen. Würde sie auch gerne mal anschauen (also den Source)
Am besten Du hängst sowohl den Source als auch das bin dran.

PS: den ganzen Tag frage ich mich, ob ich wohl etwas zu Vatertag bekomme. Und kurz bevor er rum ist: ein OLED Display  8) 8) ;D
Aber im Ernst: ich bezahle es natürlich.


AxelSchweiss

Zitat von: amunra am 05 Mai 2016, 23:04:50
@AxelSchweiss: Wenn Du magst, dann kann ich dir gerne meine Firmware zusenden, um zu sehen, ob dein OLED hell wird? Ich muss nur schauen wie ich dir das bereitstellen kann.

Cool ... vielleicht bekomme ich das Ding dann ja mal zum Laufen.
Wenn nix dagegen spricht hänge den Code doch als Zip an den Thread an oder schicke mir ne PN ... wenn man da ZIPs dranhängen kann.


amunra

:D :D :D
Wenn ich richtig gezählt habe – ich war nämlich heute Morgen spät dran und musste noch die Kinder in den Kindergarten bringen - und den horizontalen Schnitt richtig gesetzt habe, dann sind gerade 4096 Pixel inkl. Anschlußpins zu dir unterwegs. :D
Wegen dem Code melde ich mich, ich hoffe, dass ich heute Abend dazu komme? Eines Vorab, den habe ich in ca. 3 Stunden zusammengetackert, wehe ihr steht mit Mistgabel und Peitsche an meiner Haustür :D
Viele Grüße
Arthur

HCS

Zitat von: amunra am 06 Mai 2016, 09:18:45
... dann sind gerade 4096 Pixel inkl. Anschlußpins zu dir unterwegs.
Prima, dann kann ich ja die untere Hälfte mal implementieren.

Zitat von: amunra am 06 Mai 2016, 09:18:45
Eines Vorab, den habe ich in ca. 3 Stunden zusammengetackert, wehe ihr steht mit Mistgabel und Peitsche an meiner Haustür :D
Ganz entspannt bleiben, das ist nicht das entscheidende Kriterium. Ich werde es eh dann so implementieren, wie ich so was halt implementiere  :)

Kaum zu fassen, jetzt ist es bei mir auch so weit  :o ich denke gerade darüber nach, ob es Sinn macht, dem Display von FHEM aus Meldungen zu schicken ...

amunra

#13
so dritter Anlauf  >:( das FORUM will meine Dateien nicht  :-[ :-\
vierter Anlauf, die Files liegen auf meinem Repo.


so bitte (siehe Anhang):

Ich habe mal durch den Code durchgekehrt und hoffe, dass ich nicht zu viel davon entfernt habe, wenn auch mein mini-Test erfolgreich war.

Hinweise:
- SDK 1.5.2 und nicht wie im original LGW SDK: 1.5.1(e67da894) - daher keine Aussage über Funktionalität und Stabilität in full blown Aussattung.
- OLED ist fest auf 0x3C eingestellt - im Terminal sieht man einen Scanner der alle I2C Devices auflistet (wird sicher nicht so bleiben - ist nur eine Hilfestellung - war nur ein dirty hack). Also, nichts mit Autoerkennung.
- Flip/Slide funktioniert bisher nur mit BME280 @AxelSchweiss: Solltest Du keinen haben, dann sollte dein OLED Test hoffentlich trotzdem etwas anzeigen (Bootvorgang).
- Bootvorgang wird, wenn auch nicht vollständig, auf dem OLED Dargestellt, ich habe in der Demo Version 2000 milisec. Delay eingebaut (siehe Funktion "oledDrawBoot"), damit man überhaut etwas sieht, den habe ich reausgenommen, also Speedy Gonzales Mode an, sprich schnell schauen was drauf steht.
... den Rest, nun ja ihr seid ja groß genug und werdet es herausfinden ;) sonst bei Fragen einfach hier melden.

Viel Spaß
Arthur.

EDIT: So, habe es doch noch geschafft die Files anzuhängen.

HCS

Du hast es geschafft, dass die Pixel heute bei mir angekommen sind  8)
Vielen Dank!

Jetzt brauche ich mal ein Zeit lang, um es kennen und lieben zu lernen ...