NEWS
OLED SSD1306 NODES Funktionsweise
-
Da kann ich ja nun auch mal loslegen `
Gut zu lesen. :mrgreen: Dann kann ich mich mit jemanden austauschen.Bisher habe ich nur das Text-Node in Verwendung.
-
Hallo zusammen,
was bin ich froh als neuling in sachen node red diese Lösung gefunden zu haben.
Ich hab mehrfach an mir gezweifelt! Herzlichen Dank!!
Edit.
Leider bekomme ich nur die erste Zeile angezeigt.
@Garf, wie bekomme ich deine Anzeige hin? Ich möchte nahezu das gleiche angezeigt bekommen wie es auf deinem Bild zu sehen ist.
Besten Dank
-
@wer weiss was:Ich hab mehrfach an mir gezweifelt! `
Willkommen im Club. Ich war auch nach zwei Tagen des Versuchens am Ende meiner Nerven. An eine Lösung hatte ich schon nicht mehr geglaubt. Deshalb habe ich mich dann auch auf den Lösungsweg mit Python und MQTT gemacht. Funktioniert jetzt auch soweit sehr gut, aber über das Text-Node ist es doch deutlich einfacher. -
Danke für die Willkommensgrüsse!!
Leider bekomme ich nur die erste Zeile hin. Textumbruch und Einbindung der Temperatur ist noch ein Buch mit 7 Siegeln.
Könnt mir da einer auf die Sprünge helfen? Leider ist per Google wenig bis nichts zu finden was mir helfen könnte.
Im Endefeckt soll es deiner Anzeige ziemlich ähnlich sein.
Herzlichen Dank auf jeden Fall schonmal bis hier hin.
-
Leider schreibst DU recht wenig darüber was Du so gemacht hast.
Die Syntax für die Ausgabe sollte klar sein? Ansonsten hättest Du ja nichts auf dem Display stehen.
Syntax:
Mein Messwert für den Luftdruck steht in der Variablen msg.payload.pressure_hPa, die Ausgabe startet in Spalte 1 und der Zeile 54. Für jede Textzeile habe ich ein Textnode angelegt.
-
Du hast föllig Recht!
Mein ganzes "Projekt" besteht aus mehreren Raspberrys, KNX, OpenHab 2, Node Red, Schaltern, Tastern, DHT22, DS18B20, IR Sendern und Enpfängern, 433 Mhz Sendern, Rolladen, Windmessern, Schwimmerschaltungen, Relais usw…
Also son Mischmasch aus allen möglichen Kleinigkeiten die irgendwie und irgendwann mal "Sinn" ergeben sollen.
Ist halt ein Hobby.
Und um jetzt die ganzen "wichtigen" Messdaten für meine Familie sichtbar zu machen wollte ich eben ein paar OLED`s im Haus verteilen damit jeder weiss ob er eine Jacke beim verlassen des Hauses braucht oder nicht. (Tür öffnen und fühlen wäre zu einfach ;-))
Den Transport der Messdaten hab ich mittlerweile Node Red und MQTT übergeben.
Jetzt möchte ich ein paar Temperaturen und Luftfeuchten auf die OLED´s bringen.
Also mehtere Temperatur oder Luftfeuchte per MQTT empfangen und im 10sec Takt auf das OLED bringen.
Was mir jetzt noch fehlt ist halt die Temp aufs OLED zu bringen.
Aber dein letzter Post hat mich da schon weiter gebracht.
Herzlichen Dank!!
Was mich immer wider wundert, ist das bei meiner Ahnungslosigkeit der ganze Kram funktioniert. (glaube ich)
-
Die Ähnlichkeiten der Projekte ist schon irgendwie verblüffend.
Ich habe auch schon mehrere Raspis im Einsatz und nun will ich mir eigene Meßstellen mit einer Displayanzeige bauen. Als Grundlage für die Meßstellen kommt dann ein Orange Pi Zero zum Einsatz. Irgendwann soll dann auch mein Kleintraktor einen digitalen Tacho bekommen.
Hier mein Flow bzgl. der Displayanzeige. Bitte nicht wundern, der BME280 ist zur Zeit abgeklemmt, deshalb zeigt das Node einen Fehler an.
Dir viel Erfolg bei der Umsetzung und solltest Du noch Fragen haben, einfach hier posten. Irgendwer hilft immer.
-
Herzlichen Dank für deine Hilfe!
Hat mich um"Lichtjaher" weiter gebracht.
-
@wer weiss was:Herzlichen Dank für deine Hilfe! `
Gerne geschehen.
Dagegen ist bei mir der absolute Stillstandand eingetreten. Mir war das 0,96" Display ein wenig zu klein. Also für Testzwecke das 1,3" Display bestellt.
Und schon geht mit den OLED Nodes nichts mehr. Das 1,3" Display (SH1106) benötigt andere Treiber um Texte und Grafiken darstellen zu können.
Also habe ich mich wieder auf den Weg mit Python gemacht. Leider bin ich kein Experte in der Pythonprogrammierung und tue mich deshalb einigermaßen schwer damit, die einzelnen Komponeten zusammenzufügen. DIe Displayausgabe im Grundsatz habe ich hinbekommen, ebenso das Auslesen des BME280 über MQTT. Jetzt suche ich noch nach der Lösung die beiden Pythonprogramme zusammenzufügen und die zeitgesteuerte Ausgabe auf das Display zu realisieren. Ich glaube so ganz ohne Hilfe wird es mir wohl nicht gelingen. Deshalb bleibe ich vorerst bei dem kleinen 0,96" Display, leider. Die Schriftgröße bei dem 1,3" Display ist für mich schon deutlich besser abzulesen.
Würde mich über jedes Hilfeangebot freuen.
-
Es ist zum schießen,
Anscheinend könne wir uns zusammentuen, was keinen von uns weiterbringen würde, denn ich bräuchte deinen Text nur kopieren und würde damit meine Situation exakt beschreiben.
Wenn ich was brauchbares zusammengefrickelt habe, gebe ich bescheid.
-
Damit wären wir dann schon mal zu zweit. Gut zu wissen.
-
Nachdem ich mir in den vergangenen Nächten einige Python Tutorials auf Youtube reingezogen habe, bin ich nun ein gutes Stück weitergekommen.
Es wird nun auf dem 1,3" OLED Display das aktuelle Datum mit der Zeit und den drei Messwerten ausgegeben. Als Trigger verwende ich im Moment noch Node-Red. Dadurch bedingt wird die Uhrzeit nicht sekundengenau angezeigt. Aber wer braucht dies schon. Wenn ich wieder Zeit habe werde ich das Pythonprogramm in Hinblick auf diesen Makel noch einmal überarbeiten. Ziel wird es sein, am Ende auf Node-Red ganz verzichten zu können.
@wer weiss was:Wenn ich was brauchbares zusammengefrickelt habe, gebe ich bescheid. ` Wie weit bist Du bisher gekommen?
-
Das hört sich doch schonmal ganz gut an.
Bei mir hat sich in der Richtung noch nichts weiter getan.
Der nette Chinese hat mir 4 St. H801 rgbw Controller zukommen lassen mit denen und der node H801 beschäftige ich mich grade mit mäßigem Erfolg.
Es giebt 1000 Anleitungen um das Teil zu flashen und den ESP direkt zu Steuern. Will ich aber nich. :roll:
Aber der Weg ist das Ziel.
-
@wer weiss was:Das hört sich doch schonmal ganz gut an.
Bei mir hat sich in der Richtung noch nichts weiter getan. `
Nicht gut zu hören(lesen). Ich bin nun wohl auch in der Realität in Bezug auf die Pythonprogrammierung angekommen. Mit der Programmierung habe ich mich fast die gesamte Woche beschäfigt und komme einfach zu keinem brauchbaren Ergebnis. Einzeln funktioniert alles. Gleiches gilt für die Ansteuerung über Node-Red, Uhrzeit und Messwerte werden auf dem Display ausgegeben. Aber alles über ein Pythonprogramm, oder auch über ein Pythonprogramm und zwei Module will einfach nicht funktionieren.Wahrscheinlich liegt es daran, dass das Auslesen der drei Messwerte über MQTT nicht innerhalb von einer Sekunde statt findet. Meine letzte Hoffnung liegt nun auf der Möglichkeit über Threading eine eigene Instanz für das Auslesen der Messwerte anzulegen und diese dann an die Funktion für die Displayausgabe zeitgerecht zur Verfügung zu stellen. Vereinfacht gesagt, es laufen zwei Programme quasi zeitgleich nebeneinander. Erste Versuche mit Threading sehen vielversprechend aus, aber so etwas hatte ich wohl auch schon einmal in der Vergangenheit geschrieben.
Eins ist mir schon einmal klar geworden, sich im Selbststudium die Pythonprogrammierung beibringen zu wollen ist wohl eher illusorisch und das Scheitern für den Laien ab einem gewissen Schwierigkeitsgrad vorprogrammiert. Da zeigen sich die Vorzüge von Node-Red, mit den richtigen Nodes kann auch der Laie etwas brauchbares zu Stande bringen.
In der Zwischenzeit sind auch die OLED 0,96" Yello/Blue Displays aus China angekommen. Die hellblau Schrift gefällt mir nicht so gut und läßt sich auch nicht so gut ablesen wie die OLED's mit der weißen Schrift.
Da in den letzten Tagen so einiges liegen geblieben und der Urlaub auch schon wieder zu Ende ist, lege ich das Projekt nun vorerst auf Eis.
-
> Wahrscheinlich liegt es daran, dass das Auslesen der drei Messwerte über MQTT nicht innerhalb von einer Sekunde statt findet
Ohne Dein Programm und die Randbedingungen zu kennen, kann man da wenig sagen.Kannst du nicht die Messwerte nacheinander auslesen, Zwischenspeichern (z.B. in einem Array) und nach dem 3. Messwert erst die Display-Ausgabe starten? Falls das dann überhaupt nötig ist(Messwerte sich geändert haben)
-
Ohne Dein Programm und die Randbedingungen zu kennen, kann man da wenig sagen. `
Ist schon klar. Ich hatte auch nicht mehr gehofft noch irgendwo Hilfe zu finden und deshalb das Problem auch nicht weiter beschrieben. Im Python-Forum hatte ich mich die Tage auch schon mal umgesehen, aber da wird primär an den geposteten Programmen herumkritisiert. Macht auf mich so den Eindruck als würden da zwei Welten aufeinander treffen. Absoluter Anfänger trifft auf Profi. :xIch habe so einige Lösungen im Netz gefunden. Aber keine in der drei Messwerte über MQTT ausgelesen und ausgegeben werden inkl. der sekundengenauen Uhrzeit. Dann hatte die von mir verwendet SSD1306 Python-Libary auch noch so seine Eigenarten. Bei jedem Schleifendurchlauf wird ein CLS ausgegeben, was dazu führt dass die Anzeige des Displays an und aus geht (blinkt). Sieht total blöd aus. Mit diesem Problem stehe ich übrigens nicht alleine da, wie ich auf Youtube lesen konnte.
Zum Glück ist die Libary für das 1,3" Display auch für das 0,96" geeignet. Die Libary kommt ohne ein "oled.cls" aus. Seitdem ich diese verwende, ist das Blinken schon einmal weg.
Ich beschreibe mal kurz was ich gerne hätte:
In der 1. Zeile soll das Datum und die sekundengenaue Uhrzeit dargestellt werden.
In der 2. Zeile soll die Temoeratur in °C stehen
In der 3. Zeile soll die Luftfeuchtigkeit stehen
In der 4. Zeile soll der Luftdruck stehen.
Die Messwerte sollen alle 60 Sekunden über Phao MQTT aktualisiert werden. Wahrscheinlich wären auch alle 10 Minuten ausreichend.
Gebe ich jedes für sich aus, also Uhrzeit/Datum oder Messwerte, dann funktioiert alles soweit. Nur in der Kombination eben nicht. Leider muss die Ausgabe auf das Display wohl in einem Zug erfolgen.
Die von dir vorgeschlagene Array ging mir auch schon durch den Kopf, aber die Befüllung darf scheinbar nicht im Hauptprogramm oder in einem Modul erfolgen. Damit unterbricht man die sekundengenau Ausgabe und es kommt zu Darstellungsfehler auf dem Display. Wenn ich alles richtig verstanden habe, könnte hier das Threading eine Lösungsmöglichkeit sein. Die ersten Versuche damit sahen, auch sehr vielversprechend aus. Aber wenn ich damit weiter machen würde, dann geht da sicher wieder sehr viel Zeit drauf. Und so ganz ohne ist das Threading wohl auch nicht. Eher wohl nicht so für Python-Anfänger, wie mich, geeignet. :roll: