[GELÖST] WLED als Display nutzen

Begonnen von Dlay, 13 März 2024, 19:54:27

Vorheriges Thema - Nächstes Thema

Dlay

Moin,

seit einiger Zeit kann WLED mit 2D Matrix-Displays z.b. 8x32 WS2812 umgehen.
Ebenfalls existiert bereits ein MQTT2 Modul für WLED.

Über diese Funktion (mit meinem Gerätenamen)
set mqtt2_wled_display seg_name_0 <Text>

Lassen sich auch beliebige Texte ausgeben.
Nun möchte ich aber gern wissen, was ich tun muss, damit z.b. die aktuelle Temperatur eines Temperatur-Sensors angezeigt wird.

Oder noch besser, wie kann man es erreichen, dass sich verschiedene Werte über Zeit abwechselnd auf dem Display zeigen?

Nach langer Suche im Netz und im Forum bin ich nicht fündig geworden.
Hat jemand schon so etwas realisiert?

Viele Grüße

TomLee

Hallo,

ZitatNun möchte ich aber gern wissen, was ich tun muss, damit z.b. die aktuelle Temperatur eines Temperatur-Sensors angezeigt wird.


Oder noch besser, wie kann man es erreichen, dass sich verschiedene Werte über Zeit abwechselnd auf dem Display zeigen?

Eine von vielen Möglichkeiten das anzugehen:

Mehrere setter mit fixem Text in setlist ergänzen/definieren:

  segnamev0:noArg {my $v=ReadingsNum('HF_Aussensensor_Vorderhaus','temperature',-99);return qq(wled/55da2c/api {"seg":[{"id":0,"n":"Aussen $v °C"]}})}
  segnamev1:noArg {my $v=ReadingsNum('DG_Innensensor_Dach_Hinterhaus','temperature',-99);return qq(wled/55da2c/api {"seg":[{"id":0,"n":"Dach1 $v °C"]}})}
  segnamev2:noArg {my $v=ReadingsNum('DG_Innensensor_Dach_Vorderhaus','temperature',-99);return qq(wled/55da2c/api {"seg":[{"id":0,"n":"Dach2 $v °C"]}})}

Und ein at, für die zufällige Wiedergabe:
defmod MeineAktion at +*00:00:30 {my @arr=qw(segnamev0 segnamev1 segnamev2);;fhem('set MQTT2_WLED_TV '.$arr[int(rand(3))])}
Thomas

Dlay

#2
Hallo TomLee,

der erste Teil funktioniert prima, sofern ich die jeweiligen Eintrag über die setList auswähle.

Das at schlägt mit folgender Fehlermeldung fehl:
PERL WARNING: Use of uninitialized value within @arr in concatenation (.) or string at (eval 89009) line 1.
Ok, ich hatte nur zwei anzuzeigende Werte definiert. Daher muss dann auch der Wert in $arr[int(rand(2))] geändert werden.

Dann zeigt mir das Log zwar brav an, wann die nächste Umschaltzeit ansteht, aber es passiert dann nichts. Sprich, die Anzeige wird nicht umgeschaltet.

Hast du eine Idee?

Dlay

Ok, hat sich erledigt. Funktioniert bestens.

Ich habe bei der Anpassung an dieser Stelle (^):
fhem('set mqtt2_wled_display^'.
Das Leerzeichen aus deiner Zeile weggelassen. Schon ging es nicht mehr.

Vielen Dank!