[Gelöst]I2C_LCD Text Var Maskeiren

Begonnen von fadi1, 24 Februar 2021, 13:46:19

Vorheriges Thema - Nächstes Thema

fadi1

Hallo
ich habe erfolgreich ein 2004er Display mit I2C_LCD eingebunden

ich kann über set <Name> Text einen beliebigen Text anzeigen lassen.

die Frage ist wie ich da eine Variable rein bekomme  :-\

ich habe das probiert
my $temp=ReadingsVal("Temp_1","temperature","24.00");
set Oled2 writeXY 1,0,16, Temp = $temp;

in der Var $temp steht der richtige Wert.
am Display kommt nur.
Temp = $temp

wie muss ich Die Variable maskieren das der Wert übernommen wird

danke für eure Hilfe 

Nobbynews


Beta-User

Zitat von: Nobbynews am 24 Februar 2021, 14:15:29
Ich würde das Modul DLCD dafür benutzen.

https://forum.fhem.de/index.php/topic,24519.0.html
Das mag ja uU. hilfreich sein, aber das "Problem" liegt hier m.E. auf einer ganz anderen Ebene, hier wird ein Perl-Schnipsel mit einem "Pseudo-fhem"-Kommando vermischt: https://fhem.de/commandref_modular.html#command

Für die Kommandozeile zum Testen (und Weiterdenken, wenn es funktioniert):
{ my $temp=ReadingsNum('Temp_1','temperature','24.00');; fhem("set Oled2 writeXY 1,0,16, Temp = $temp") }

Was "Interpolation" etc. angeht gleich noch ein Link: https://www.perlmonks.org/?node_id=401006 (Suchbegriff: "Quotes in Perl")
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Nobbynews

Zitat von: Beta-User am 24 Februar 2021, 14:36:59
Das mag ja uU. hilfreich sein, aber das "Problem" liegt hier m.E. auf einer ganz anderen Ebene, hier wird ein Perl-Schnipsel mit einem "Pseudo-fhem"-Kommando vermischt: https://fhem.de/commandref_modular.html#command

Für die Kommandozeile zum Testen (und Weiterdenken, wenn es funktioniert):
{ my $temp=ReadingsNum('Temp_1','temperature','24.00');; fhem("set Oled2 writeXY 1,0,16, Temp = $temp") }

Was "Interpolation" etc. angeht gleich noch ein Link: https://www.perlmonks.org/?node_id=401006 (Suchbegriff: "Quotes in Perl")
Sicherlich ein guter Hinweis, nur wenn ich mich richtig an die Installation bei mir erinnere, dann wertet das Modul I2C_LCD den <text> nicht aus, sondern nimmt es nur so als reinen Text an.
Da hilft dann alles Maskieren, Interpolieren usw. nicht weiter.
Kann mich aber irren und lasse mich gerne belehren.

fadi1

Hallo
ZitatFür die Kommandozeile zum Testen (und Weiterdenken, wenn es funktioniert)
{ my $temp=ReadingsNum('Temp_1','temperature','24.00');; fhem("set Oled2 writeXY 1,0,16, Temp = $temp") }:

das ist genau das was ich gesucht habe

Danke

Beta-User

Zitat von: fadi1 am 24 Februar 2021, 14:51:39
Hallo
das ist genau das was ich gesucht habe

Danke
Gerne.

Markierst du den Thread dann bitte noch als "[gelöst]"? (Anleitung im untersten angepinnten Thread hier).

Bitte aber auch die Links nochmal nachbereiten, das kommt nämlich in vielfacher Weise immer wieder ;) .

[OT @Nobbynews]
Es mag sein, dass einem DLCD da die Arbeit erleichtert, allerdings ist der "Preis" für Automatismen erfahrungsgemäß teilweise relativ hoch (ich kenne beide Module nicht und habe nicht in den Quelltext geschaut!). Nicht selten ist es lohnend, mal den Fußweg zu nehmen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

DeeSPe

Nur als Ergänzung, es funktioniert auch ohne es vorher in eine Variable zu schreiben:
fhem "set Oled2 writeXY 1,0,16, Temp = ".ReadingsNum('Temp_1','temperature','24.00');

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

fadi1

Hallo


{
my $temp=ReadingsNum('Temp_1','temperature','24.00');
my $hum=ReadingsNum('Luftdruck','humidity','100.00');
my $pres=ReadingsNum('Luftdruck','pressure','1000.00');
my $lux=ReadingsNum('Licht','luminosity','24.00');

fhem("set Oled2 clear");

fhem("set Oled2 writeXY 3,0,17, Temp = $temp C");
fhem("set Oled2 writeXY 0,1,16, Feuchte = $hum %");
fhem("set Oled2 writeXY 2,2,17, Druck = $pres mP");
fhem("set Oled2 writeXY 2,3,16, Licht = $lux Lux");
}


Das lauft perfekt. danke nochmal  :) 8)

Nobbynews

#8
Zitat von: Beta-User am 24 Februar 2021, 15:16:25
[OT @Nobbynews]
Es mag sein, dass einem DLCD da die Arbeit erleichtert, allerdings ist der "Preis" für Automatismen erfahrungsgemäß teilweise relativ hoch (ich kenne beide Module nicht und habe nicht in den Quelltext geschaut!). Nicht selten ist es lohnend, mal den Fußweg zu nehmen...
Da kann ich nur zustimmen. Besser man versteht, warum etwas geht, als nur stupide abzukupfern.

Zitat von: DeeSPe am 24 Februar 2021, 15:23:20
Nur als Ergänzung, es funktioniert auch ohne es vorher in eine Variable zu schreiben:
fhem "set Oled2 writeXY 1,0,16, Temp = ".ReadingsNum('Temp_1','temperature','24.00');
Wieder etwas dazugelernt.
DLCD hat aber imho noch den Vorteil, dass man logische Zeilen definiert und dann durch Scrollen mehr als die physikalischen Zeilen darstellen kann.
Geht anders natürlich auch, aber dann muss man sich halt um das Scrollen selber kümmern.
Wie immer, viele Wege führen zum Ziel.

Edit: Beim Refresh werden die Readings von DLCD automatisch übernommen und man muss nicht jedesmal set xyz ... ausführen.

Beta-User

Zitat von: fadi1 am 24 Februar 2021, 15:38:29
Das lauft perfekt. danke nochmal  :) 8)
:)

Vielleicht noch eine Anmerkung: Jeder Aufruf des Wrappers "fhem" kostet etwas Performance. Imo wäre es perfekter, alles in einen Aufruf zu packen ;) .

Künftig wäre es ggf. hilfreich, ein list oÄ. zu liefern, da kann man einfacher sehen, wo das Perl-Schnippselchen hin soll bzw. her ist...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files