[abgeschlossen] Zwei LCD via I2C an ESP Easy

Begonnen von FHEm2005, 25 August 2020, 18:23:00

Vorheriges Thema - Nächstes Thema

FHEm2005

Ich versuche seit einigen Tagen FHEM Daten auf zwei unterschiedlichen LCD 2004 anzuzeigen. Leider gehen die Daten alle auf ein und dasselbe Display.
Wie sieht das Ganze bei mir aus:
ESP: zwei Displays auf dem Reiter DEVICE konfiguriert, unterschiedliche I2C-Adressen auf Display eingestellt (Lötbrücken) : 0x26 und 0x27, I2C-Scan zeigt beide Display-Adressen an. Sie  an wurden entsprechend in DEVICE verwendet.
FHEM: Zwei ESP-Easy Devices angelegt. Zusätzlich zwei zuhehörige notify mit denen die Befehle für das ESP gesendet werden.
defmod not_ESP_LCD1 notify http_shine:Energy0.* {\
my ($time) = chr(20)."Strom von ".(ReadingsVal("http_shine","Messung_vom",""));;\
my ($zaehler)= "Zaehler ". (ReadingsVal("http_shine","Zaehlerstand","")). " kWh";;\
my ($aktLeistung) = "Akt. " .chr(20). chr(20). chr(20). chr(20). (ReadingsVal("http_shine","Leistung","")). " W";; \
my ($bezugHeute) = "Heute " .chr(20).chr(20).chr(20).chr(20).chr(20).(ReadingsVal("http_shine","bezug","")). " kWh";;\
fhem("set ESPEasy_Eberhard_1_LCD1 lcd 1 1 $time");;\
fhem("set ESPEasy_Eberhard_1_LCD1 lcd 2 1 $zaehler");;\
fhem("set ESPEasy_Eberhard_1_LCD2 lcd 3 1 $aktLeistung");;\
fhem("set ESPEasy_Eberhard_1_LCD2 lcd 4 1 $bezugHeute");;\


Die Zeilen für LCD1 laufen auf LCD2 auf. Keine Zeichen werden auf LCD1 dargestellt.

Kann es sein, dass ESP-Easy keine zwei Devices von derselben Sorte verträgt? Wo könnte ich noch suchen?

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Nach weiterem Suchen bin ich im LetsControlIt-Forum fündig geworden:

https://www.letscontrolit.com/forum/viewtopic.php?f=5&t=7872&p=45959&hilit=Two+LCD2004#p45959

So wie es aussieht lässt das Plugin 012 keine zwei Instanzen zu. Das führt dann dazu, dass immer nur ein Display angesteuert wird bzw. werden kann.

Wenn ein weiteres Display OLED SSD1306 und I2C (Plugin 023 oder 036) verwendet werden würde, müssten zwei Displays (LCD plus OLED) an einem Wemos mini funktionieren. Ich habe es aber noch nicht ausprobieren können, weil ich nur SPI Display in der Bastelkiste habe.

Damit ist für mich das Thema abgeschlossen. Wenn jemand zwei Displays an einem WEMOS D1mini angeschlossen hat, wäre ich an einen Erfahrungsaustauch interessiert.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Nobbynews

#2
Schon mal über den Umweg MQTT versucht?

Vielleicht ist das hier https://blog.unixweb.de/esp8266-mqtt-oled-display/
mit Anpassung umsetzbar.

Mit zwei Import devices müsste es evtl. gehen.
Nur mal so als Idee.

Edit:
Geht auch nicht. Das Plugin hat wohl Probleme die I2C-Adresse richtig umzusetzen.

Nobbynews

#3
Hallo Eberhard,

ich habe mal ein wenig nachgeforscht und habe das hier gefunden:
https://github.com/letscontrolit/ESPEasy/pull/3226/commits/c19afad2a5237ee6acd46861726136c9b671a6ab
Damit habe ich ESPEasy neu kompiliert und kann jetzt beide Displays getrennt ansprechen.
Über HTTP und das Modul für ESPEasy klappt es nicht, da der Befehl "LCD" keine weitere Unterscheidung zur Auswahl eines der beidenDisplays bietet. Über MQTT geht es . Dann aber leider nur Zahlenwerte.
Der Text muss dann im entsprechenden Display vorgegeben werden.
So z.B.:
Wert 1:   [MQ1#Value1]
Das neue Plugin und die zugehörigen Dateien aus dem Verzeichnis
/src/PluginStructs
habe ich mal angehängt.
Auf Wunsch kann ich Die aber auch die BIN-Datei für D1-Mini zur Verfügung stellen.

Bei mir habe ich allerdings noch ein Display über eine Raspberry-Pi Zero, auf dem auch FHEM läuft, installiert.
Zusammen mit dem Modul DLCD lasse ich über die 4 Zeilen des Displays insgesamt 9 Werte anzeigen und zeilenweise durchscrollen.
Anbindung erfolgt über FHEM2FEHM an die Hauptinstanz.

Norbert