Temperatur an OLED-Display anzeigen

Begonnen von yamfhem, 11 November 2016, 22:34:01

Vorheriges Thema - Nächstes Thema

yamfhem

Hallo,
ich möchte an einem OLED, das an einem ESP8266 mit ESPEasy angeschlossen ist, per :oled eine Temperatur anzeigen. Leider gelingt mir die Syntax mit dem Variablen-Inhalt nicht so recht


    define ESPEasy_wemos1_display ESPEasy 192.168.178.41 80 espBridge wemos1_display
    attr ESPEasy_wemos1_display IODev espBridge
    attr ESPEasy_wemos1_display Interval 300
    attr ESPEasy_wemos1_display group ESPEasy Device


"set ESPEasy_wemos1_display oled 3 1 $Wasser"

zeigt mir am Oled immer nur $Wasser an, aber nicht den Inhalt der Variablen!? Was muss ich tun?

Ich bitte um Hilfe!!!

dev0

Ein notify benutzen und $EVTPARTx an den set Befehl übergeben.
http://fhem.de/commandref.html#notify

yamfhem

#2
.... so, falls andere FHEM'ler das auch interessieren sollte, hab ich hier mal die Lösung, wie sie jetzt bei mir läuft:

ein notify jede Minute, das mittels Kommandos wie diesem:

set ESPEasy_wemos1_display [b]oled[/b] 1 1 [OLED_1:Line1]

in die 1. Zeile, 1. Spalte den Inhalt von [OLED_1:Line1] schickt. Sieht dann wie folgt aus:


Auszug aus der fhem.cfg (werde ich noch in die my_LCD.cfg verschieben)


define ESPEasy_wemos1_display ESPEasy 192.168.178.41 80 espBridge wemos1_display
attr ESPEasy_wemos1_display IODev espBridge
attr ESPEasy_wemos1_display Interval 300
attr ESPEasy_wemos1_display event-min-interval 1
attr ESPEasy_wemos1_display group ESPEasy Device
attr ESPEasy_wemos1_display room ESPEasy
define OLED_1_notify at +*00:01:00 set ESPEasy_wemos1_display oled 1 1 [OLED_1:Line1];;\
set ESPEasy_wemos1_display oled 4 1 [OLED_1:Line4];;\
set ESPEasy_wemos1_display oled 5 1 [OLED_1:Line5];;\
set ESPEasy_wemos1_display oled 6 1 [OLED_1:Line6]
attr OLED_1_notify room ESPEasy


Weiterhin habe ich mittels DLCD Modul (manuell nachinstallieren!) den Inhalt zusammengestellt, der in die Zeilen geschrieben werden soll:


#######################################################
##### my_LCD.cfg - DLCD
#######################################################
define OLED_1 DLCD
attr OLED_1 dlcdCols 8
attr OLED_1 dlcdLine1 Wass..%1%
attr OLED_1 dlcdLine4 Au-EG-OG
attr OLED_1 dlcdLine5 %2%.%3%.%4%
attr OLED_1 dlcdLine6 %5%.%6%.%7%
attr OLED_1 dlcdPhysicalRows 4
attr OLED_1 dlcdRows 6
attr OLED_1 dlcdVal1 ESPEasy_Wemos_Temp_Wasser:Wasser
attr OLED_1 dlcdVal1formatnum 2+0
attr OLED_1 dlcdVal2 Temp4_Aussen:temperature
attr OLED_1 dlcdVal2formatnum 2+0+-
attr OLED_1 dlcdVal3 Temp1_WoZi:temperature
attr OLED_1 dlcdVal3formatnum 2+0
attr OLED_1 dlcdVal4 Temp2_BadOG:temperature
attr OLED_1 dlcdVal4formatnum 2+0
attr OLED_1 dlcdVal5 Temp4_Aussen:humidity
attr OLED_1 dlcdVal5formatnum 2+0
attr OLED_1 dlcdVal6 Temp1_WoZi:humidity
attr OLED_1 dlcdVal6formatnum 2+0
attr OLED_1 dlcdVal7 Temp2_BadOG:humidity
attr OLED_1 dlcdVal7formatnum 2+0
attr OLED_1 room ESPEasy
attr OLED_1 stateFormat state<br>Line1<br><br>Line4<br>Line5<br>Line6
attr OLED_1 verbose 0


... und das Ergebnis sieht dann wie folgt aus (die Punkte habe ich aktuell als Trenner, weil ich noch nicht weiss, wie ich da Leerzeichen reinkriege ;-):

ernst1024

Es ist immer wieder interessant zu sehen wie viele Wege tatsächlich nach Rom führen :-)
Bei mir sieht das z.B so aus:

define t_oled_at at +*00:02:00 { system('curl http://192.168.2.107/control?cmd=oled,3,1,' . "T%20" . ReadingsVal("8266_f_Aussen","temperature",0) . "%20H%20" . ReadingsVal("8266_f_Aussen","humidity",0))}
Gruß Ernst

yamfhem

... genau das:

system('curl http://192.168.2.107/control?cmd=oled,3,1,

wollte ich absichtlich nicht machen, weil ich unbedingt die Funktionen vom ESPEasy Modul nutzen wollte.
Das DLCD finde ich auch insgesamt übersichtlicher, auch wenn der Code deutlich umfangreicher geworden ist, als Dein Extrakt.

%20 ist das Leerzeichen?

ernst1024

Gruß Ernst