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?
Muss es Telnet sein?
Schreib mal was du erreichen willst.
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.
Da muss ich leider passen.
Über http: wäre es einfach, sorry.
Tom
Und wie ginge es über http?
Ü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.
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
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.
da fehlt zumindest ne Leerstelle zwischen runder und geschweifter Klammer.
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?
Geht das Absenden von telnet-Befehlen auch ohne FritzBox?
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.
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
Problem wie gebe ich den Port an?
Probier mal
$tab->open("192.178.xxx.xxx 5012");
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)
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????
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");
}
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?
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
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.
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.
Besten Dank, ziehe doch nicht den Cul -)
es klappt !!!!!
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
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)
Hallo,
ich würde auch behaupten, dass dieses Modul bei den meisten Perl Paketen dabei ist. Einfach ausprobieren.
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.
da ich nicht annehme, dass der ursprüngliche TE hier noch mit liest, daher setze ich das Ding mal auf gelöst ;-)
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
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