Wert in Text einfügen

Begonnen von satprofi, 11 April 2025, 13:10:24

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Wie schafft man es einen Wert in einen Text einzugeben?

würde gerne die xx fhem("\"python2 /usr/local/bin/xxAmp.py\"");  mit  Wert von
my $cmd = $ladestrom + $Amp;
ersetzen. Ist sicher nicht einfach. Hat wer Tip für mich?
LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TomLee

Hallo,

kann mir vorstellen das es so klappen kann:

fhem(qq(python2 /usr/local/bin/$cmdAmp.py));
Gruß Thomas

frober

Ich hätte eher folgendes vermutet:

ungetestet:
fhem("qq(python2 /usr/local/bin/.$cmd.Amp.py)");
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#3
Warum gehst du über Fhem?

mit
system("python2 /usr/local/bin/.$cmd.Amp.py");sollte es auch funktionieren
evtl. auch ohne ".", sind "nur" Verbinder

P.S. wieso schreibst du den errechneten wert vor das Skript?
Das kann doch so nicht existieren/funktionieren...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

betateilchen

ich geh mal Popcorn machen, das könnte hier noch lustig werden ...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Ehrlich gesagt habe ich die Aufgabe noch nicht völlig verstanden. Aber:
Zitat von: satprofi am 11 April 2025, 13:10:24Hat wer Tip für mich?
  • Ich hatte hier mal ziemlich viele Varianten aufgeschrieben.
  • Man könnte ein Script machen und die Unterschiede als Argument übergeben, anstatt den Namen des Scriptes zu patchen.
  • Ich würde im Perl dann nicht noch FHEM bemühen um einen "system" Aufruf zu machen. Ich würde gleich den system() Aufruf in Perl verwenden.

Ich glaube die bisherigen Vorschläge sind alle nicht getestet? ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frober

Hallo Otto, danke.

Meine Bsp. waren nicht getestet, hatte keine Möglichkeit.
Dann lag ich aber mit system() richtig...

...ich hatte nur die inneren Quotes unterschlagen.
system('python2 /usr/local/bin/'.$cmd.'Amp.py');evtl. muss man doppelte Quotes " verwenden.


Mein erster Vorschlag mit qq() funktioniert nicht, hätte besser meinen ersten Gedanken gepostet...
fhem("\"python2 /usr/local/bin/".$cmd."Amp.py\"")

....Hauptsache @betateilchen wird satt.  8)
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

satprofi

#7
Zitat von: Otto123 am 11 April 2025, 15:40:57Ehrlich gesagt habe ich die Aufgabe noch nicht völlig verstanden. Aber:
Zitat von: satprofi am 11 April 2025, 13:10:24Hat wer Tip für mich?
  • Ich hatte hier mal ziemlich viele Varianten aufgeschrieben.
  • Man könnte ein Script machen und die Unterschiede als Argument übergeben, anstatt den Namen des Scriptes zu patchen.
  • Ich würde im Perl dann nicht noch FHEM bemühen um einen "system" Aufruf zu machen. Ich würde gleich den system() Aufruf in Perl verwenden.

Ich glaube die bisherigen Vorschläge sind alle nicht getestet? ;)

Zumindest wird erstmal richtig ausgegeben

{my $a = "36";;qx "echo ".'/usr/local/bin/'.$a.'Amp.py'}

Jetzt umgemodelt auf

{my $a = "$cmd";;qx "echo ".'/usr/local/bin/'.$a.'Amp.py'}
Muss jetzt nur mehr Echo richtig ersetzen
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

frober

#8
Zitat von: satprofi am 11 April 2025, 17:52:53my $a = "$cmd"

Bei Variablen setzt man keine Quotes
my $a = $cmd;
Quotes sind für Strings...
einfache => String wird 1:1 übernommen
doppelt => Variablen etc. werden ausgewertet (durch den Inhalt ersetzt)

In deinem Fall machst du aus einer Zahl sowieso einen String. Bei Perl funktioniert das.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

satprofi

Habe das Beispiel von Otto herangezogen


{my $a = "test";;qx "echo ".'"'.$a.'"'}
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

frober

Zitat von: satprofi am 11 April 2025, 19:38:18Habe das Beispiel von Otto herangezogen


{my $a = "test";;qx "echo ".'"'.$a.'"'}

"test" ist ein String
$cmd ist eine Variable

...sollte man schon unterscheiden.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

#11
Immer noch mobil, aber kurz nachvollzogen. Bin der Meinung schon nahe an einer funktionierenden Umsetzung gewesen zu sein. In meinem Vorschlag müsste man doch nur die fhem-Funktion durch den system-Befehl ersetzen !?

Und  die blockiert nicht, mein ich.

frober

Zitat von: TomLee am 11 April 2025, 20:26:59Immer noch mobil, aber kurz nachvollzogen. Bin der Meinung schon nahe an einer funktionierenden Umsetzung gewesen zu sein. In meinem Vorschlag müsste man doch nur die fhem-Funktion durch den system-Befehl ersetzen !?

Und  die blockiert nicht, mein ich.

Nach meinem Test, allerdings mit Online-Compiler und print, wird die Variable nicht erkannt. Vermutlich weil sie nicht abgrenzbar ist. D.h. es wird nur der Pfad bis zum Slash ausgegeben.

Das Blockieren muss man wahrscheinlich mit & o.ä. unterbinden. Bei Python habe ich keine Erfahrung...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

Mein Test-Skript wird so ausgeführt:

{my $var = 'test3';;system(qq(python3 $var.py &))}
Darum gehe ich davon aus das mein Vorschlag klappt.

frober

Zitat von: TomLee am 11 April 2025, 21:41:11Mein Test-Skript wird so ausgeführt:

{my $var = 'test3';;system(qq(python3 $var.py &))}
Darum gehe ich davon aus das mein Vorschlag klappt.

Das funktioniert, gerade getestet. Dann musst du aber den Pfad+Variable+Skript vorher zusammen bauen. Ob das einfacher ist...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...