OLED SSD1306 NODES Funktionsweise

Antworten
Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 11.05.2018, 11:05

!!! Achtung, meine Fragen beziehen sich auf die node-Red Standalone-Version!!!!!!

Hallo Node-Red Experten,

ich versuche schon seit zwei Tagen die Nodes für ein Oled SSD1306 zu verstehen. Es will mir einfach nicht gelingen und es kommen immer nur Fehlermeldungen. Leider kann ich dazu auch keine Beispiel-Flows oder sonstige Informationen finden. Ich tappe im Moment absolut im Dunkeln und habe auch keine Idee mehr, was ich noch versuchen könnte.

Das OLED-Display ist von der Hardwareseite richtig angeschlossen und wird auch korrekt angesprochen. Soviel habe ich mit einem kleinen Pythonprogramm schon testen können. Nur mit den Nodes will es leider nicht funktionieren.

Link Nodes : https://flows.nodered.org/node/node-red-contrib-oled
Nodes.JPG
Hardware über Konsole abgefragt:
scan.JPG
scan.JPG (25.44 KiB) 500 mal betrachtet
Folgenden Flow erstellt:
Flow.JPG
Inhalt Function-Node:
Inhalt_FN.JPG
Inhalt_FN.JPG (15.92 KiB) 500 mal betrachtet
Ausgabe Function-Node:
Ausgabe_FN.JPG
Ausgabe_FN.JPG (18.8 KiB) 500 mal betrachtet
Configuration Oled-Node für Textausgabe:
Konfiguration.JPG
Konfiguration.JPG (20.13 KiB) 500 mal betrachtet
configt.JPG
configt.JPG (20.08 KiB) 500 mal betrachtet
Fehlermeldungen:
Error1.JPG
Error1.JPG (14.44 KiB) 500 mal betrachtet
Error2.JPG
Error2.JPG (15.56 KiB) 500 mal betrachtet

Da die Ausgabe an das Display über Python funktioniert, hatte ich mir als Alternative überlegt die Werte aus Node-Red über MQTT an Python zu übergeben und dann darüber die Displayausgabe zu realisieren. Aber auch damit bin ich kläglich gescheitert.

Ich hoffe, ihr könnt mir irgendwie weiterhelfen.

Garf

rewenode
starter
Beiträge: 23
Registriert: 02.11.2017, 02:36

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von rewenode » 16.05.2018, 16:35

Nur mal so ins Blaue... Ich weis jetzt nicht, welche Busadresse das node benötigt. Versuch doch mal 30 als Busadresse, das wäre dann die 7bit Slave-Adresse von 3c.

Nachtrag
Ich seh grad im Source, versuch doch mal die Busadresse leer zu lassen, 0x3c ist ja der Defaultwert:

Code: Alles auswählen

..Auszug
address: {	
	value: 0x3c,
	type: 'number',
	require: true
	}

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 17.05.2018, 14:51

Da bin ich aber platt. Da kommt doch glatt noch der erhoffte Schupps in die richtige Richtung.

Dabei habe ich in der Zwischenzeit schon fast die finale Lösung mit Python und MQTT realisiert.

Neugierig wie ich nun mal bin, habe ich deine beiden Tipps einfach mal schnell getestet.

Der Tipp 1 und der Adresse 30, funktioniert nicht.

Der Tipp 2 mit dem leeren Konfigurationsfeld für die Gerätebusadresse ist goldrichtig. Löscht man die 60 (3c) raus, dann sind alle Fehlermeldungen Geschichte und die Ausgabe auf dem Display erscheint. Ich halte es für einen Bug, da die Felder bereits vorausgefüllt angezeigt werden. Ich habe nur die Plausibilität geprüft und wäre nie auf die Idee gekommen, da einen Wert zu löschen.
Konfig.JPG
Konfig.JPG (20.28 KiB) 454 mal betrachtet
Und hier noch das Ergebnis:
Display.JPG
Display.JPG (19.47 KiB) 454 mal betrachtet
Vielen Dank für deine Hilfe.

Garf

rewenode
starter
Beiträge: 23
Registriert: 02.11.2017, 02:36

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von rewenode » 17.05.2018, 14:55

Ja, Tipp 1 hab ich gegeben, bevor ich mir den Quellcode angesehen habe. Ich hätte ihn löschen sollen ;-(

Da kann ich ja nun auch mal loslegen :D :D :D
Steht bei mir auch seit einiger Zeit auf der Agenda.

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 17.05.2018, 16:30

rewenode hat geschrieben:
17.05.2018, 14:55
Da kann ich ja nun auch mal loslegen :D :D :D
Gut zu lesen. :mrgreen: Dann kann ich mich mit jemanden austauschen.
Bisher habe ich nur das Text-Node in Verwendung.

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 17.05.2018, 18:04

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
Zuletzt geändert von wer weiss was am 17.05.2018, 18:45, insgesamt 1-mal geändert.

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 17.05.2018, 18:35

wer weiss was hat geschrieben:
17.05.2018, 18:04
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.

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 18.05.2018, 06:00

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.

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 18.05.2018, 08:06

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:
Syntax.JPG
Syntax.JPG (19.6 KiB) 409 mal betrachtet
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.
Javascript.JPG

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 18.05.2018, 08:45

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)

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 18.05.2018, 09:14

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.
Flow_BME280.JPG
Dir viel Erfolg bei der Umsetzung und solltest Du noch Fragen haben, einfach hier posten. Irgendwer hilft immer.

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 22.05.2018, 14:31

Herzlichen Dank für deine Hilfe!
Hat mich um"Lichtjaher" weiter gebracht.
:D :D :D :D

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 22.05.2018, 18:46

wer weiss was hat geschrieben:
22.05.2018, 14:31
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.
Zuletzt geändert von Garf am 23.05.2018, 12:22, insgesamt 1-mal geändert.

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 23.05.2018, 10:22

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.

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 23.05.2018, 12:21

Damit wären wir dann schon mal zu zweit. Gut zu wissen.

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 24.05.2018, 20:00

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 hat geschrieben:
23.05.2018, 10:22
Wenn ich was brauchbares zusammengefrickelt habe, gebe ich bescheid.
Wie weit bist Du bisher gekommen?

wer weiss was
Beiträge: 6
Registriert: 17.05.2018, 18:01

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von wer weiss was » 01.06.2018, 09:37

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. ;-)

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 01.06.2018, 13:24

wer weiss was hat geschrieben:
01.06.2018, 09:37
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.

rewenode
starter
Beiträge: 23
Registriert: 02.11.2017, 02:36

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von rewenode » 01.06.2018, 17:03

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)

Garf
professional
Beiträge: 160
Registriert: 28.09.2017, 19:42

Re: OLED SSD1306 NODES Funktionsweise

Beitrag von Garf » 01.06.2018, 19:21

rewenode hat geschrieben:
01.06.2018, 17:03
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. :x

Ich 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:

Antworten