FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rodnic am 12 Februar 2020, 17:01:10

Titel: esp8266 D1 mini Display tasmota
Beitrag von: rodnic am 12 Februar 2020, 17:01:10
Hallo zusammen,

ich möchte gern im FHEM per MQTT2 ein Display (Gosear 0,96 Zoll I2C IIC SPI serielle 128 x 64 OLED LCD LED Display-Modul) welches an einem ESP8266 angeschlossen ist beschreiben.
Dazu habe ich Tasmota auf dem ESP geflasht und das Display angeschlossen.
Brauche ich eine spezielle tasmota Version?
Im FHEM taucht das MQTT2 device auch als Gerät auf.
Nun könnte ich noch ein Template im MQTT2 Device vergeben, aber welches und mit welchem Atribut bzw. Reading kann ich nun auf das Display schreiben?

Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: Beta-User am 12 Februar 2020, 17:17:03
Ein wirklich passendes attrTemplate für ein display gibt es (noch...) nicht, aber die Vorgehensweise ist eigentlich nicht besonders schwer:
Du nutzt die in https://github.com/arendst/Tasmota/wiki/Commands#displays aufgeführten Kommandos, berücksichtigst, was unter https://github.com/arendst/Tasmota/wiki/Displays#displaytext-use steht und erstellst dafür setList-Einträge...

Als "Insiration" für die Freitextfelder würde ich mal einen Blick in die attrTemplate zu tasmota_ir, tasmota_rf und zigbee2mqtt_bridge anregen...
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: rodnic am 12 Februar 2020, 17:25:54
Hm, danke für den Hinweis.
Hättest du ein Beispiel? Da ich leider überhaupt nicht weiß wie ich anfangen soll.
Das Display ist verdrahtet, bleibt aber dunkel.
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: Beta-User am 12 Februar 2020, 18:00:18
Sorry, aber das kann vermutlich von hier aus niemand beantworten:
In den verlinkten Infos steht z.B., dass man den Displaytyp angeben muß, damit überhaupt was passiert. Kann sein, dass der Anschaltbefehl für alle Arten Displays noch gleich ist, aber das war es auch schon...

Kurz: Liefere vernünftigen Input, dann kann vielleicht jemand helfen, mit der Art Fragestellung vergraulst du m.E. nur potentielle Helfer...
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: rodnic am 12 Februar 2020, 18:16:16
Displaytyp ist: Gosear 0,96 Zoll I2C IIC SPI serielle 128 x 64 OLED LCD LED Display-Modul
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: steffen83 am 12 Februar 2020, 18:17:53
Ich mache das über ESP easy das funktioniert dort echt leicht.

Gesendet von meinem MI 8 mit Tapatalk

Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: rodnic am 12 Februar 2020, 18:25:06
verrätst du mir wie das dort geht, bitte
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: steffen83 am 12 Februar 2020, 18:26:18
Flash dir Mal die aktuelle ESP easy Version auf dein d1 Mini

Gesendet von meinem MI 8 mit Tapatalk

Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: steffen83 am 12 Februar 2020, 18:49:24
Ich Versuche dir das morgen Mal zusammen zu schreiben

Gesendet von meinem MI 8 mit Tapatalk

Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: rodnic am 12 Februar 2020, 22:39:24
bin schon fündig geworden danke für den Tip mit ESP easy
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: steffen83 am 13 Februar 2020, 06:14:35
Klappt es schon?

Gesendet von meinem MI 8 mit Tapatalk

Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: Tabadorer am 17 April 2020, 10:47:22
Ich habe das Heltect WifiKit 8 (128x32 pixel)
https://heltec.org/project/wifi-kit-8/

Auf dem lasse ich mir meine Daten der Solaranlage anzeigen


Auf dem Heltec ist Tasmota 8.2-display installiert. Die normale standard Version kennt die notwendigen Displaybefehle nicht. In Fhem sieht das Gerät so aus.

defmod oled1 TASMOTA_DEVICE oleddisplay %prefix%/%topic%/
attr oled1 IODev MQTTBroker
attr oled1 comment https://tasmota.github.io/docs/Displays/#display-commands
attr oled1 devStateIcon on:light_ceiling@#ffa500:off off:light_ceiling_off:on offline:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr oled1 icon hm-dis-wm55
attr oled1 publishSet on off toggle cmnd/oleddisplay/POWER
attr oled1 publishSet_mode 0 1 2 3 4 5 cmnd/oleddisplay/displaymode
attr oled1 publishSet_rotate 0 1 2 3 cmnd/oleddisplay/displayrotate
attr oled1 publishSet_text cmnd/oleddisplay/displaytext
attr oled1 room MQTT
attr oled1 stateFormat {lc ReadingsVal($name,"oleddisplay","") eq "offline" ? "offline" : lc ReadingsVal($name,"oleddisplay","")}



Um dann die Ausgabe so wie auf dem Bild hinzubekommen, nutze ich ein AT Timer, der dann dieses Kommando über MQTT an das Display sendet:

set oled1 text [zc1l1f0]Einspeisung:[c15][Sonnenstrom:L1_FeedIn][c1l2]Verbrauch:[c15][Sonnenstrom:L1_TotalConsumption][c1l3]PV:[c15][rr:state][c1l4]Kaufstrom:[c15][Sonnenstrom:L1_GridConsumption]


Ferner habe ich auf dem Gerät auf der Konsole einen Pulsetimer aktiviert.
pulsetime 430

OLED neigen dazu einzubrennen, wenn statischer Inhalt zulange angezeigt wird. Daher geht das Display nach einer gewissen Zeit immer von alleine aus. Das spart darüber hinaus noch strom. Das Display verbraucht keine 20mA und ist daher gut für den Betrieb an einem Akku geeignet. Auf der Platine ist ein Taster verbaut, der mit GPIO0 verbunden ist. Wenn man den in Tasmota korrekt einstellt, kann man das Display damit ein- und ausschalten.


Vielleicht hilft das jemandem.

PS: Liniendiagramme sind auch möglich, aber das habe ich noch nicht probiert.
Titel: Antw:esp8266 D1 mini Display tasmota
Beitrag von: klaus_nase am 04 April 2021, 11:59:18
Hallo Tabadorer,

vielen Dank für Deinen Post, welcher mir das letzte Puzzle-Stück für meinen Aufbau geliefert hat.

Ich habe eine WEMOS D1 mit OLED-Display aufgebaut und diesen mit Tasmota-Display-bestückt.
Deine Befehlszeile zum Absetzen des Display-Inhalts war für mich absolut hilfreich, da ich mit der
Tasmota-Anleitung nicht klargekommen bin.

Mittels notify registriere ich nun die Zustandsänderungen meiner Steckdosen und lasse mit eine
Übersicht der Zustände auf dem OLED darstellen. Das funktioniert einwandfrei.

define ServerOLED MQTT2_DEVICE DVES_A36065
setuuid ServerOLED 60694a3d-f33f-9a71-175f-85905780374d2dd8
attr ServerOLED IODev MQTT2
attr ServerOLED devStateIcon on:ios-on-green off:ios-off
attr ServerOLED readingList /Wemos_D1/Server/Server_Status/tele/LWT:.* LWT\
/Wemos_D1/Server/Server_Status/tele/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
/Wemos_D1/Server/Server_Status/stat/POWER:.* state
attr ServerOLED room Display
attr ServerOLED setList on:noArg /Wemos_D1/Server/Server_Status/cmnd/POWER1 1\
off:noArg /Wemos_D1/Server/Server_Status/cmnd/POWER1 0\
clear:noArg /Wemos_D1/Server/Server_Status/cmnd/displaytext [z]\
displaytext  /Wemos_D1/Server/Server_Status/cmnd/displaytext\


Mittels notify schicke ich dann das entsprechende "displaytext" and das OLED.
Zusammen mit dem displaytext schicke ich auch ein on-for-timer, damit das Display immer
nur bei Zustandsänderungen aktiviert wird.

Gruß
KN