[Gelöst]Unknown command {system

Begonnen von citydweller, 15 November 2014, 17:29:26

Vorheriges Thema - Nächstes Thema

citydweller

Hallo liebe FHEM-Gemeinde,

ich habe aktuell das Problem, dass ich aus FHEM keine Shell-Befehle absetzen kann.
Sobald sich der Status von WaschmaschineBetrieb auf standby ändert, soll ein Shell-Befehl ausgelöst werden: echo "msg Benutzer Der Waschvorgang ist abgeschlossen." | /sbin/telegram/telegram-cli -k /sbin/telegram/server.pub -W

Hier die komplette Definition:
define WaschmaschineWaschvorgangAbgeschlossenPushover notify WaschmaschineBetrieb:standby {system('echo "msg Benutzer Der Waschvorgang ist abgeschlossen." | /sbin/telegram/telegram-cli -k /sbin/telegram/server.pub -W')}

Wenn nun WaschmaschineBetrieb auf Status standby wechselt erhalte ich im Log-File folgende Rückmeldung:
WaschmaschineWaschvorgangAbgeschlossenPushover return value: Unknown command {system('echo, try help.

Was mache ich falsch? Über die Kommandozeile funktioniert es natürlich einwandfrei. FHEM läuft unter einem aktuellen Archlinux auf dem Raspberri Pi.
Vielen Dank für eure Hilfe.

schka17

probiere mal
{system("echo \"msg Benutzer Der Waschvorgang ist abgeschlossen.\" \| /sbin/telegram/telegram-cli -k /sbin/telegram/server.pub -W")}

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

citydweller

#2
Super hat funktioniert. Wert -1.
Jedoch steh ich noch mit telegram-cli auf Kriegsfuß. Mal funktioniert es, mal nicht.
Kannst du mir bitte kurz erklären wie sich deine Befehlssyntax zusammen setzt?

Nachtrag:
Vor jedem Sonderzeichen ein "\" ?

schka17

Mit dem backslash maskierst du Sonderzeichen damit sie nicht von perl interpretiert werden sondern an die shell übergeben werden


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

citydweller


Joesky

Ich habe genau die gleiche Lösung. Leider werden keine Nachrichten geschickt. Der Befehl wird ausgeführt und ich bekomme auch als Antwort den Wert -1, doch es kommt nichts an.
Hast Du das Problem auch gehabt? Kann man den Befehl auch auf der Konsole ausprobieren? Bei mir kommt nach dem Enter immer ein > und es passiert nichts.
_______________
FREI STATT BAYERN

citydweller

Ja, hatte das identische Problem.
Mal ging es, mal nicht.

Wichtig ist das du nicht die identischen Accounts nutzt, sprich zwei verschiedene.

Ich bin mittlerweile auf Jabber ausgewichen/E-Mail, da zuverlässiger.

otto

#7
Hallo hab ein ähnliches Problem :
{system ("echo \"msg user#xxxxxxxx Der Waschvorgang ist abgeschlossen.\" \| /root/tg-for-pytg2/bin/telegram-cli -k /root/tg-for-pytg2/server.pub -W")}oder :
{system('echo "msg user#xxxxx Der Waschvorgang ist abgeschlossen." | /root/tg-for-pytg2/bin/telegram-cli -k /root/tg-for-pytg2/server.pub -W')}bekomm ich diede Fehlermeldung:
Unknown command {system('echo, try help.
Bei Putty geht alles oder wen ich es über ein Skript aufrufe.
so gehts bei Putty: echo "msg user#xxxxx Der Waschvorgang ist abgeschlossen." | /root/tg-for-pytg2/bin/telegram-cli -U -k /root/tg-for-pytg2/server.pub -W

In der 99_myUtils.pm Hab ichs so versucht ... ohne Erfolg:

sub
SendNotificationTelegram($)
{
  my ($str) = @_;
  system ("msg user#xxxxxx \"$str\"" | "/root/tg-for-pytg2/bin/telegram-cli -U -k /root/tg-for-pytg2/server.pub -W");
  Log 1, "Fhem";
}
Wo liegt hier mein Fehler ?

Gruß otto