NEWS
OLED SSD1306 NODES Funktionsweise
-
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: