FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: horni am 16 November 2025, 22:38:14

Titel: Systembefehl echo
Beitrag von: horni am 16 November 2025, 22:38:14
Ich komm einfach nicht weiter. Villeicht kann mir mal ja jemand sagen wo mein Fehler ist . Ich will doch nur das er 2 Zahlen ausließt und diese untereinander in eine Datei schreibt. Ich bekomme es einfach nicht hin..

lacross_draussen_busch:.* {
my $wgt1 = minNum( ReadingsNum("lacross_draussen_busch","temperature",20), ReadingsNum("Tempdraussen","temperature",20));
my $wgt2 = ReadingsNum("lacross_draussen_busch","humidity",20)
system('echo "outsidewert = $wgt1 \noutfeuchtewert = $wgt2 "> /tmp/technolineouttemp.txt')}

So schreibt er zumindestens schon mal untereinander die Zeilen

outsidewert =
outfeuchtewert =

aber die $wgt strings bleiben in der Datei leer. Ich verstehe es einfach nicht. Ärgert mich

So schreibt er mir eine Zeile mit dem Wert aber da geht \n nicht
system("echo outsidewert = $wgt1 > /tmp/technolineouttemp.txt")}
Titel: Aw: Systembefehl echo
Beitrag von: TomLee am 16 November 2025, 22:55:22
Hallo,

ohne es jetzt nachvollzogen zu haben, würde ich vermuten das in qq() die Variablen aufgelöst werden.

system(qq(echo "outsidewert = $wgt1 \noutfeuchtewert = $wgt2 "> /tmp/technolineouttemp.txt))}
Gruß Thomas

edit:

ausprobiert, sollte funzen.
Titel: Aw: Systembefehl echo
Beitrag von: horni am 16 November 2025, 23:07:01
Ja super. Besten Dank.. Da wäre ich Anfänger ja nie drauf gekommen. Funktioniert dann gleich ohne Probleme.
Titel: Aw: Systembefehl echo
Beitrag von: Prof. Dr. Peter Henning am 17 November 2025, 09:12:35
Das liegt einfach daran, dass Perl innerhalb von '..' keine Variablensubstitution macht, es benötigt also qq(..) oder ".."

LG

pah
Titel: Aw: Systembefehl echo
Beitrag von: betateilchen am 17 November 2025, 11:08:19
Man könnte das auch einfach mit FileWrite() und somit FHEM-Bordmitteln machen.

my $wgt1 = minNum( ReadingsNum("lacross_draussen_busch","temperature",20), ReadingsNum("Tempdraussen","temperature",20));
my $wgt2 = ReadingsNum("lacross_draussen_busch","humidity",20);
FileWrite("/tmp/technolineouttemp.txt",("outsidewert = $wgt1","outfeuchtewert = $wgt2"));

Achtung:
wer mit configDB arbeitet, findet die Datei danach in der Datenbank.
Ggf. also bei configDB-Nutzung im Funktionsaufruf noch den Parameter forceType setzen, falls auf die Datei von außerhalb FHEM zugegriffen werden soll.