Hallo zusammen,
ich habe FHEM auf einem Raspberry laufen. Auf diesem logge ich mich per SSH ein und möchte folgenden FHEM Befehl über die Shell abschicken.
perl fhem.pl localhost:7072 "set Bewegungsalarm 1"
Bewegungsalarm ist ein Dummy Device. Wenn ich set Bewegungsalarm 1
über das Eingabefeld des Webinterfaces eingeben, dann wird der Befehl ausgeführt. Wenn ich ihn über die Shell schicken, dann steht im FHEM Log folgender Eintrag:
2017.10.28 00:04:59 4: Connection accepted from telnetPort_127.0.0.1_60071
Es scheint als erreiche ich den FHEM Server, aber aus irgendeinem Grund wird mein Befehl ignoriert. Fehlt mir irgendeine Konfiguration am FHEM?
Wäre super wenn jemand einen Tipp für mich hätte, ich finde den Fehler einfach nicht.
Danke!
wie wärs mitperl /opt/fhem/fhem.pl localhost:7072 "set Bewegungsalarm 1"
Selbes Ergebnis:
2017.10.28 11:03:37 4: Connection accepted from telnetPort_127.0.0.1_33039
Aber der Wert hat sich nicht geändert sprich der Befehl wurde nicht ausgeführt.
Ich bin beim oben genannten Beispiel auch vorher in den Ordner /opt/fhem navigiert, damit er die fhem.pl findet.
Grüße,
Tobelix
gib mal bitte ein list vom dummy Bewegungsalarm und ein list vom telnet Device
Installier Dir ncat, dann
echo 'set Licht_Buero off' | nc 127.0.0.1 7072 2>/dev/null
Hier die beiden Lists:
Internals:
CFGFN
NAME Bewegungsalarm
NR 1530
STATE 0
TYPE dummy
READINGS:
2017-10-27 23:35:03 state 0
Attributes:
verbose 5
Internals:
CONNECTS 173
DEF 7072 global
FD 6
NAME telnetPort
NR 18
NTFY_ORDER 50-telnetPort
PORT 7072
STATE Initialized
TYPE telnet
Attributes:
Bei mir funktioniert (über Putty)
perl /opt/fhem/fhem.pl 7072 "setreading myW_Bonn temp_c 14"
also im Prinzip ohne das localhost
Hi Ernst, danke fürs testen.
funktioniert bei mir leider auch nicht. selbes Ergebnis. Ich benutze übrigens auch putty.
Wie sehen eure telnet Devices aus? Habt ihr irgendeine Einstellung, die bei mir fehlt? Das seltsame ist ja, dass laut Logfile die Verbindung akzeptiert wird, aber der Befehl nicht ausgeführt wird. Muss ich irgendwo noch in der FHEM Konfig Befehle über telnet explizit erlauben? Ich habe in der commandref leider nicht gefunden.
Aus meiner fhem.cfg
define telnetPort telnet 7072 global
attr telnetPort room system
define allowed_telnetPort allowed
attr allowed_telnetPort room system
attr allowed_telnetPort validFor telnetPort
Kannst j mal vergleichen obwohl das wohl die Standard Einstellung ist, jedenfalls habe ich da nix geändert
Vielleicht mit Passwort?
echo -e "passwort\n\nset Bewegungsalarm 1\nexit" | nc localhost 7072
Oh man... ich hab den Fehler gefunden.
Mir hat das Perl modul Net::Telnet gefehlt.
Die Fehlermeldung wurde mir eben erst angezeigt, nachdem ich in der fhem.cfg mal das telnet Passwort auskommentiert habe, da Ernst das in seinem Device scheinbar nicht drin hat?
Hab das Modul schnell über apt-get install libnet-telnet-perl
installiert und schon funktionieren die Befehle.
Danke für eure Hilfe!
Eine kurze Frage hab ich noch. Ich hab jetzt das telnet Passwort auskommentiert. Wenn ich nur von Localhost aus die Befehle ausführe, dann mcaht es auch nicht viel Sinn oder? Weiß jemand aus dem Stehgreif wie die Syntax aussehen muss, wenn ich mit Passwort den Befehl ausführen will?
@kroman: Bei deiner Variante bekam ich den Fehler "Unknown command" wenn ich an der entsprechenden Stelle deiner Zeile das entsprechende Passwort eingebe.
Wahrscheinlich hast du nc nicht installiert, oder?
sudo apt-get install netcat
Zitat von: tobelix am 28 Oktober 2017, 17:07:18
Die Fehlermeldung wurde mir eben erst angezeigt, nachdem ich in der fhem.cfg mal das telnet Passwort auskommentiert habe, da Ernst das in seinem Device scheinbar nicht drin hat?
genau, habe ich temporär auskommentiert
So geht's übrigens auch:
perl /opt/fhem/fhem.pl 7072 passwort "set Bewegungsalarm 1"
Ja,so habe ich es jetzt auch umgesetzt. Danke euch