FB via telnet steuern und werte auslesen

Begonnen von pappn, 26 September 2013, 22:49:19

Vorheriges Thema - Nächstes Thema

pappn

Hallo zusammen,

ich hatte das Problem, daß ich das WLAN meiner Slave FB von meiner Master FB mit FHEM schalten wollte, um beide WLAN Netze leichzeitig ein und auschalten zu können. Aus verschiedenen Quellen habe ich mir nun eine Funktion in 99_myUtils erstellt, mit der sich dies via telnet erledigen lässt. Funktioniert auf der 7390, da Modul net::Telnet vorhanden.
Es ergibt sich gleichzeitig die Möglichkeit die Funktion anzupassen um weitere Werte der FB zu setzen oder zu lesen.
Das Prinzip lässt sich auch auf andere Geräte mit Telnet Interface anpassen.

In der 99_myUtils sieht das so aus:
######## Remote_FB_WLANswitch ############################################
# What  : Switches Remote FB WLAN on or off
# Call  : { Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","password","on") } or
#         { Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on") }
#
sub Remote_FB_WLANswitch (@) {
my ($ip,$password,$cmd) = @_;
# my ($ip,$user,$password,$cmd) = @_;        #Wenn User und PW erforderlich
use Net::Telnet;
my $telnet = new Net::Telnet ( Timeout=>15, Errmode=>'die');
$telnet->open($ip);
# $telnet->waitfor('/Fritz!Box user: $/i');  #Wenn User und PW erforderlich
# $telnet->print($user);                     #Wenn User und PW erforderlich
# $telnet->waitfor('/# $/i');                #Wenn User und PW erforderlich
$telnet->waitfor('/password: $/i');
$telnet->print($password);
$telnet->waitfor('/# $/i');
if ($cmd =~ m"on"i) {            # on or ON
  $telnet->print('ctlmgr_ctl w wlan settings/ap_enabled 1');}
if ($cmd =~ m"off"i) {           # off or OFF
  $telnet->print('ctlmgr_ctl w wlan settings/ap_enabled 0');}
  Log 3, "Remote_FB_WLANswitch($cmd)";
$telnet->waitfor('/# $/i');
$telnet->print('exit');
}

Wenn die FB für User und PW configuriert ist, kann man den Befehl login verwenden oder die auskommentierten Zeilen anpassen.

Mit Zeilen wie:

$test = $telnet->cmd("ctlmgr_ctl w wlan settings/ap_enabled");
return $test;

lässt sich z.B. der Status des WLAN auslesen (ein=1/aus=0) oder Rückgabewerte anderer FB Funktionen übernehmen. Details zu den mit "ctlmgr_ctl" auf der FB nutzbaren Befehlen finden sich

hier: http://www.wehavemorefun.de/fritzbox/Ctlmgr_ctl
und hier: http://www.wehavemorefun.de/fritzbox/User-Interface-Module

Über z.B. ein notify in der fhem.cfg lässt sich das Ganze an alles mögliche anbinden. Von meinem FHEM auf der einer 7390 funktioniert es zuverlässig um das WLAN der im Netz hängenden 7270 zu schalten.

Vielleicht hilft es ja jemandem weiter oder gibt einen Denkanstoss.
beste Grüße
Christof
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

PeMue

Hallo Christof,

ich weiß, das ist ein bisschen off topic, aber ich versuche die Funktion auf dem Raspberry Pi zu installieren. Dummerweise weiß ich nicht, wie man das Net::Telnet Perl Module auf dem Raspberry Pi nachinstalliert.

Hat mir jemand einen Tipp?

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

pappn

Hallo PeMue,

wenn ich das ganze aus dem FHEM Howto richtig interpretiere, sollte die Nachinstallation des Moduls mittels CPAN möglich sein. Im Howto ist ein Beispiel bzlg. cpan zur Nachinstallation dargestellt. Danach sollte es evtl. mit dem Befehl "sudo cpan Net::Telnet" gehen.
Ich habe mit cpan selbst allerdings noch nicht experimentiert. Aber einen Versuch ist es sicher wert.

Gruß
Christof
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Harald

Hallo zusammen,

Jörg hat hier angegeben, wie's geht:

sudo apt-get install libnet-telnet-perl

Ich habe das so gemacht und es hat problemlos funktioniert. Ich kann jetzt vom RasPi an meine 7170 Befehle senden.

Ich hoffe, ich konnte Euch auchmal helfen.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

pappn

"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Mitch

#5
Hallo,

beim Aufruf: FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on")

bekomme ich immer unknow command?

Kann es sein, dass mit Remote_FB_WLANswitch aufrufen muss?

Was mach ich denn falsch?
Danke!
FHEM im Proxmox Container

hckoe

Hallo Mitch,

die Funktion FB_WLANswitch ist in FritzBoxUtils.pm definiert. Da dieses Modul nicht automatisch geladen wird, mußt Du in Deiner 99_myUtils.pm folgende Zeile eintragen:
use FritzBoxUtils;

Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

Mitch

Danke Helmut, aber das Problem bleibt bestehen: Unknown command FB_WLANswitch
FHEM im Proxmox Container

pappn

Hallo Mitch,

die Funtion heißt Remote_FB_WLANswitch und ist in 99_myUtils abgelegt und wird auch so aufgerufen.
Mit "Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on")" sollte es funktionieren.
Sorry, war mein Fehler, da der Aufruf in meinem Code falsch beschrieben war. Ist jetzt korrigiert.
FritzBoxUtils brauchst du dann nicht.

Gruß
Pappn
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs