FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Paul am 01 Mai 2013, 18:47:34

Titel: [Gelöst] Befehle per telnet
Beitrag von: Paul am 01 Mai 2013, 18:47:34
Sorry bin reiner Anfänger in Fhem. Ich benutze die fritzbox 7390 und fs20  Produkte. Ist es möglich mit Druck auf einer Taste
der fs20 Fernbedienung eine "telnet-Befehl " abzusenden?

Wenn es möglich ist, wie müsste dann der Befehl aussehen, wenn ich an  192.178.xxx.xxx ,Port 5012 eine Zeichenfolge "xyz" senden möchte?
Titel: Aw: Befehle per telnet
Beitrag von: Dragonfly am 02 Mai 2013, 19:44:19
Muss es Telnet sein?
Schreib mal was du erreichen willst.
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 02 Mai 2013, 20:07:35
Muss es nicht, aber mit Putty habe ich es ohne Fhem hinbekommen.

Ich möchte erreichen, dass ich an meinem Receiver die Lautsprecher umstellen kann.

Mit Putty "öffne" ich den Receiver und gebe ein Zeichenfolge ein und jetzt wollte ich wissen ob man das auch über Fhem bewerkstelligen kann.
Titel: Aw: Befehle per telnet
Beitrag von: Dragonfly am 02 Mai 2013, 20:17:03
Da muss ich leider passen.
Über http: wäre es einfach, sorry.

Tom
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 02 Mai 2013, 20:27:38
Und wie ginge es über http?
Titel: Aw: Befehle per telnet
Beitrag von: Dragonfly am 02 Mai 2013, 20:39:58
Über ein Notify:
define FBDECT_16_ntfy notify (FBDECT_16:on.*|FBDECT_16:off.*) {\
  GetFileFromURL "http://192.168.1.1:8181/blabla"\
}

Schalter hab ich leider keinen - das Beispiel bezieht sich auf einen Aktor, der bei ein bzw. aus einen http: Befehl absetzt.
Titel: Aw: Befehle per telnet
Beitrag von: Hanky am 02 Mai 2013, 21:15:34
Telnetbefehle lassen sich von der Fritzbox mit dem Modul Net::Telnet(); aus fhem heraus ohne Probleme absetzen.

Kanal_Umschalten()
{
    use Net::Telnet();
    my $tab = new Net::Telnet (Timeout => 50);
    #my $fh1 = $tab->dump_log("telnetclient.txt"); <-- macht zum debuggen Sinn.
    #my $fh2 = $tab->input_log("telnetclient_input.txt"); <-- macht zum debuggen Sinn.
    #my $fh3 = $tab->output_log("telnetclient_output.txt"); <-- macht zum debuggen Sinn.

    $tab->open("192.168.1.103");
    $tab->print("xyz");
}

wie man den Port angibt muss ich nochmal nachsehen.

Grüße

Titel: Aw: Befehle per telnet
Beitrag von: Paul am 25 Juni 2013, 20:53:16
Brauche leider weitere Hilfe
Habe jetzt folgendes geschrieben:

define schalteron notify (FS20_4b841b:on){GetFileFromURL "http://192.168.178.23:8102/vu\n2spk (//192.168.178.23:8102/vu%5Cn2spk)"}
define schalteroff notify (FS20_4b841b:off){GetFileFromURL "http://192.168.178.23:8102/vu\n1spk (//192.168.178.23:8102/vu%5Cn1spk)"}

Leider wird wohl nichts gesendet.
Titel: Aw: Befehle per telnet
Beitrag von: UliM am 26 Juni 2013, 21:19:01
da fehlt zumindest ne Leerstelle zwischen runder und geschweifter Klammer.
Titel: Aw: Befehle per telnet
Beitrag von: Zrrronggg! am 27 Juni 2013, 00:35:33
Zitatdefine schalteron notify (FS20_4b841b:on){GetFileFromURL "http://192.168.178.23:8102/vu\n2spk (//192.168.178.23:8102/vu%5Cn2spk)"}
muss das so?

Ich würde ja denken das müsste

define schalteron notify FS20_4b841b:on {GetFileFromURL "http://192.168.178.23:8102/vu\n2spk"}

heissen. Wozu soll die Klammer um den Gerätenamen und den notify trigger dienen?
Titel: Aw: Befehle per telnet
Beitrag von: Erasor am 27 Juni 2013, 09:06:11
Geht das Absenden von telnet-Befehlen auch ohne FritzBox?
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 09:16:53
Was heißt ohne Fritzbox? Mein Heimnetz läuft über eine Fritzbox und wenn ich dort über Kitty den Befehl sende wird mein Receiver auch geschaltet. Nur mit dem Fhemcode bekomme ich es nicht hin.
Titel: Aw: Befehle per telnet
Beitrag von: Erasor am 27 Juni 2013, 09:22:28
Hi,

mein fhem läuft auf einem Raspberry. Daher kann ich die in der FritzBox integrierten Funktionen nicht benutzen. Würde aber auch gern telnet-Befehle absetzen.
Wenn du aber eine Fritzbox hast, solltest du mit dem Code von Hanky weiterkommen:
ZitatTelnetbefehle lassen sich von der Fritzbox mit dem Modul Net::Telnet(); aus fhem heraus ohne Probleme absetzen.

Kanal_Umschalten()
{
use Net::Telnet();
my $tab = new Net::Telnet (Timeout => 50);
#my $fh1 = $tab->dump_log("telnetclient.txt"); <-- macht zum debuggen Sinn.
#my $fh2 = $tab->input_log("telnetclient_input.txt"); <-- macht zum debuggen Sinn.
#my $fh3 = $tab->output_log("telnetclient_output.txt"); <-- macht zum debuggen Sinn.

$tab->open("192.168.1.103");
$tab->print("xyz");
}

wie man den Port angibt muss ich nochmal nachsehen.

Grüße
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 10:56:00
Problem wie gebe ich den Port an?
Titel: Aw: Befehle per telnet
Beitrag von: Erasor am 27 Juni 2013, 13:19:01
Probier mal
$tab->open("192.178.xxx.xxx 5012");
Titel: Aw: Befehle per telnet
Beitrag von: Hanky am 27 Juni 2013, 14:15:04
Hallo,

bitte mal mit folgendem probieren:

Kanal_Umschalten()
{
use Net::Telnet();
my $tab = new Net::Telnet (Timeout => 50,Port => 5012);
#my $fh1 = $tab->dump_log("telnetclient.txt"); <-- macht zum debuggen Sinn.
#my $fh2 = $tab->input_log("telnetclient_input.txt"); <-- macht zum debuggen Sinn.
#my $fh3 = $tab->output_log("telnetclient_output.txt"); <-- macht zum debuggen Sinn.

$tab->open("192.168.1.103");
$tab->print("xyz");
}

standard ist port 23. Die Doku ist hier zu finden --> http://search.cpan.org/~jrogers/Net-Telnet-3.04/lib/Net/Telnet.pm (//search.cpan.org/~jrogers/Net-Telnet-3.04/lib/Net/Telnet.pm)

Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 19:28:13
Habe jetzt folgendes probiert:

define schalteron notify FS20_4b841b:on
{
use Net::Telnet();
my $tab = new Net::Telnet (Timeout => 50,Port => 8102);
my $fh1 = $tab->dump_log("telnetclient.txt");
my $fh2 = $tab->input_log("telnetclient_input.txt");
my $fh3 = $tab->output_log("telnetclient_output.txt");
 
$tab->open("192.168.178.23");
$tab->print("vu\n2spk");
}

aber da bekomme ich schon beim abspeichern viele Fehler.

Usage: define notify Unknown command {, try help Unknown command use, try help Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command $tab->open("192.168.178.23"), try help Unknown command $tab->print("vu\n2spk"), try help Unknown command }, try help

muß ich hinter jeder Zeile ein \ setzen????
Titel: Aw: Befehle per telnet
Beitrag von: Puschel74 am 27 Juni 2013, 19:30:02
Hallo,

das müsste auch so sein:

define schalteron notify FS20_4b841b:on {
use Net::Telnet();
my $tab = new Net::Telnet (Timeout => 50,Port => 8102);
my $fh1 = $tab->dump_log("telnetclient.txt");
my $fh2 = $tab->input_log("telnetclient_input.txt");
my $fh3 = $tab->output_log("telnetclient_output.txt");
$tab->open("192.168.178.23");
$tab->print("vu\n2spk");
}
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 19:47:52
Mensch seit ihr schnell

Jetzt habe ich so:

define schalteron notify FS20_4b841b:on {
use Net::Telnet();
my $tab = new Net::Telnet (Timeout => 50,Port => 8102);
my $fh1 = $tab->dump_log("telnetclient.txt");
my $fh2 = $tab->input_log("telnetclient_input.txt");
my $fh3 = $tab->output_log("telnetclient_output.txt");
$tab->open("192.168.178.23");
$tab->print("vu\n2spk");
}

und wieder diese Fehler:

Unknown command use, try help Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command $tab->open("192.168.178.23"), try help Unknown command $tab->print("vu\n2spk"), try help Unknown command }, try help

muss ich noch etwas machen damit Net::Telnet auf der FB läuft oder ist das automatisch wenn ich Fhem draufgepackt habe?
Titel: Aw: Befehle per telnet
Beitrag von: Puschel74 am 27 Juni 2013, 19:53:24
Hallo,

achso - ja.

Ich glaub nicht das use in einem notify klappt.
Das ist eher etwas für die 99_myUtils.pm
Dort kann dann per use auf "Fremdpakete" verwiesen werden die dann benutzt werden können.
(Ich hoff das ist so einigermaßen richtig).

Grüße
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 19:58:19
ich glaube jetzt verstehe ich nur noch Bahnhof. Trotzdem ich hier schon viel ggelesen habe und auch FHEM für einsteiger gelesen habe. Ich glaube ich habe wieder mehr Freizeit und keine schlaflose Nächte wenn ich den Cul wieder aus der Fritzbox ziehe.
Titel: Aw: Befehle per telnet
Beitrag von: Hanky am 27 Juni 2013, 20:33:07
Oh ja genau... das gehört in die MyUtils.. und muss als Funktion aufgerufen werden. So ist es bei mir auch.

Also speicher es anstatt in die fhem.cfg in eine Datei 99_MyUtils.pm ab. Das geht wenn du über den "Edit files" Dialog die Datei 99_MyUtils öffnest, alles raus löschst und diese unter 99_MyUtils.pm speicherst. Dort kannst du dann den Code von hier abspeichern. Bin dummerweise einfach davon ausgegangen, dass es nach Funktion aussieht durch den FUnktionsnamen mit den nachfolgenden Klammern.

Aufrufen tust du die Funktion mit dem Notify in der fhem.cfg --> define schalteron notify FS20_4b841b:on {fhem("{Kanal_Umschalten}")}

Ich verwende dieses telnetmodul um mein NAS runter zu fahren wenn es nicht mehr benötigt wird. Bei mir hat es auf der Fritzbox ohne etwas zu ändern funktioniert.
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 27 Juni 2013, 20:50:49
Besten Dank, ziehe doch nicht den Cul -)

es klappt !!!!!
Titel: Aw: Befehle per telnet
Beitrag von: Erasor am 28 Juni 2013, 13:18:04
Hi!
Hat vielleicht auch noch einer von euch eine Idee, wie das ohne Fritzbox aussehen müsste?

Das wär echt super.

Vielen Dank

Erasor
Titel: Aw: Befehle per telnet
Beitrag von: Paul am 28 Juni 2013, 18:30:52
Net::telnet ist glaube ich nicht auf die fritzbox beschränkt.

Schau doch mal hier http://powerforen.de/forum/showthread.php?t=190640 (//powerforen.de/forum/showthread.php?t=190640)
Titel: Aw: Befehle per telnet
Beitrag von: Hanky am 28 Juni 2013, 21:17:55
Hallo,

ich würde auch behaupten, dass dieses Modul bei den meisten Perl Paketen dabei ist. Einfach ausprobieren.
Titel: Antw:Befehle per telnet
Beitrag von: tom_1000 am 28 Mai 2017, 22:11:23
Danke für die Hinweise aus dem Beitrag. Konnte so erfolgreich die Anbindung von ZoneMinder vornehmen.

Bei meiner Ubuntu-Installation war das Perl-Telnet-Modul übrigens defaultmäßig leider nicht installiert und so bekam ich erstmal einen Fehler nachdem ich die Definition in der 99_myUtils.pm vorgenommen hab. Da es für Ubuntu direkt ein Paket gibt konnte ich es mit dem Befehl sudo apt-get install libnet-telnet-perl direkt nachinstallieren und danach ging auch gleich die Definition in der 99_myUtils.pm und hat keine Fehler mehr gebracht.
Titel: Antw:Befehle per telnet
Beitrag von: KernSani am 28 Mai 2017, 22:22:13
da ich nicht annehme, dass der ursprüngliche TE hier noch mit liest, daher setze ich das Ding mal auf gelöst ;-)
Titel: Antw:[Gelöst] Befehle per telnet
Beitrag von: mroschk am 16 Mai 2019, 16:12:08
Hallo,

ich versuche auch gerade etwas per telnet zu senden, leider bekomme ich folgende fehlermeldung:

Zitat
Can't locate Telnet.pm in @INC (you may need to install the Telnet module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM ./FHEM/lib) at ./FHEM/99_myUtils.pm line 12. BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 12.

in die 99_myUtils hab ich nur folgendes einfügen wollen:


Licht_an()
{
    use Net::Telnet();
    my $tab = new Net::Telnet (Timeout => 50);
    #my $fh1 = $tab->dump_log("telnetclient.txt");
    #my $fh2 = $tab->input_log("telnetclient_input.txt");
    #my $fh3 = $tab->output_log("telnetclient_output.txt");

    $tab->open("192.168.220.57");
    $tab->print("set MQTT2_DVES_AEF3E7 on");

}


anscheinend fehlt ja die Telnet.pm irgendiwe. Telnet ist aber installiert und funktioniert auch. Also ich kann mich per telnet auf den raspi einloggen und dann per telnet das licht an/aus schalten.

Wie installiere ich denn Telnet.pm??

Matthias
Titel: Antw:[Gelöst] Befehle per telnet
Beitrag von: mroschk am 16 Mai 2019, 18:33:57
Hallo, 

habs grad gefunden ,

das hier hat gefehlt:


sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl
sudo apt-get install libnet-telnet-perl


Matthias