Hauptmenü

Fritzbox WLAN EIN/AUS

Begonnen von Guest, 15 September 2011, 17:41:24

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Mit einem kleinen Trick gehts trotzdem

2 Shell scripts erstellen :

#!/bin/sh
echo "ATD#96*1*" | nc 127.0.0.1 1011
sleep 1
echo "ATH#96*1*" | nc 127.0.0.1 1011                     //WLAN EIN

und

#!/bin/sh
echo "ATD#96*0*" | nc 127.0.0.1 1011
sleep 1
echo "ATH#96*0*" | nc 127.0.0.1 1011                   //WLAN AUS


und anschließend in der fhem.cfg  :

define WLAN dummy

define WLAN_switch notify Sender:Btn1.* set WLAN %EVTPART1

define WLAN_set_on notify WLAN:on "WLAN_On.sh"
define WLAN_set_off notify WLAN:off "WLAN_Off.sh"

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

Danke, gehoert ins Wiki :)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi,
offenbar hat AVM zu 84.05.20 das WLAN-switching umgestellt.

/etc/init.d/rc.net wlanstop
funktioniert nicht mehr.

/etc/init.d/rc.wlan stop
funktioniert alleine auch nicht. Ein ps nach einschalten des WLAN über die
konfig-Oberflächte zeigt, dass da nun ein ganzer Haufen scripts aufgerufen
werden.
Um Versions-unabhängig zu sein, wollte ich daher nun auf diesen Weg
umstellen - und krieg's leider nicht hin. Habe die sh-scripts angelegt und
mit chmod u+x WLAN_off.sh ausführbar gemacht.

WLAN_Off.sh wie in diesem post beschrieben liefert
nc: can't connect to remote host (127.0.0.1): Connection refused
'leep: invalid number '1

Auch nach Änderung auf
echo "ATD#96*0*" | nc 127.0.0.1 -p 1011
kommt dieselbe Meldung:
# sh WLAN_off.sh
nc: can't connect to remote host (127.0.0.1): Connection refused
'leep: invalid number '1
BusyBox v1.18.5 (2011-10-27 16:00:43 CEST) multi-call binary.

Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]

Open a pipe to IP:PORT or FILE

Options:
        -e PROG Run PROG after connect
        -l      Listen mode, for inbound connects
                (use -l twice with -e for persistent server)
        -p PORT Local port
        -w SEC  Timeout for connect
        -i SEC  Delay interval for lines sent
        -f FILE Use file (ala /dev/ttyS0) instead of network


Vielleicht hat's ja schon jemand hingebracht und kann die Lösung hier
posten, oder ein Linux-Könner unterstützt hier bitte? Bitte bitte! :)
Ich stell die Lösung dann auch ins Wiki :)

Gruß, Uli


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Sonntag, 18. März 2012 15:48:49 UTC+1 schrieb UliM:
>
> WLAN_Off.sh wie in diesem post beschrieben liefert
> nc: can't connect to remote host (127.0.0.1): Connection refused
> 'leep: invalid number '1
>
>
Das hast Du wohl "leep" statt "sleep" in Deinem Skript.
 

> Auch nach Änderung auf
> echo "ATD#96*0*" | nc 127.0.0.1 -p 1011


gemäß dem Posting oben heisst es

echo "ATD#96*0*" | nc 127.0.0.1 1011

also ohne -p

MfG Willi

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi,
nö, im script steht sleep 1
Da bei der Meldung das s fehlt, dachte ich, dass nc ein Parameter fehlt und hab -p probehalber dazugesetzt, geht aber auch nicht.

Wegen 'Connection refused': vll liegt's an root vs boxuser, weiß aber nicht wie ich das prüfen bzw beeinflussen kann?

Gruß Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Sonntag, 18. März 2012 20:36:58 UTC+1 schrieb UliM:
>
>
> Wegen 'Connection refused': vll liegt's an root vs boxuser, weiß aber
> nicht wie ich das prüfen bzw beeinflussen kann?
>
> Gruß Uli


Ich würde per telnet auf die Box und Dein Skript mal ausführen. Wenn das
geht, kannst Du ja boxuser aus startfhem löschen und die Fritzbox rebooten.

Die Meldung "connection refused" kommt aber m.E. nicht daher, sondern an
dem -p, welches so als Parameter nicht geht. Entweder man kann als User nc
aufrufen oder nicht. Das TCP/IP auf der Fritzbox weiss nicht von welchem
User nc aufgerufen wird. Es kennt nur die IP-Adresse des Aufrufenden.

Bei mir zeigt meine fritzbox (netstat -anp), dass der Port 1011 lokal, aber
nicht über das LAN bzw. WAN nutzbar ist (Bindung an localhost bzw.
127.0.0.1):
tcp        0      0 127.0.0.1:1011          0.0.0.0:*               LISTEN
     759/telefon

Ich glaube daher nicht, dass es an boxuser liegt.

MfG Willi

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi,
vielen Dank so weit.  Leider geht's noch nicht - aber imerhin kleine neue
Erkenntnisse:
*1. *netstat -anp bringt auch bei mir

tcp  0 0 127.0.0.1:1011 0.0.0.0:* LISTEN 743/telefon

*2.* Wenn ich die ath/atd-Beffehle über FB-telnet:21 absetze (also zB echo
"ATD#96*1*" | nc 127.0.0.1 1011 ) , funktionieren sie - keine
Fehlermeldung, WLAN wird erfolgreich ein/ausgeschaltet.

*3. *Die skripte ansich lassen sich in der telnet-session starten - es
kommt keine Fehlermeldung zu fehlender Berechtigung o.ä.

*4. *Dennoch kommt immer noch dieselbe Fehlermeldung:

# sh WLAN_off.sh
nc: can't connect to remote host (127.0.0.1): Connection refused
'leep: invalid number '1
BusyBox v1.18.5 (2011-10-27 16:00:43 CEST) multi-call binary.

Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]

Open a pipe to IP:PORT or FILE

Options:
        -e PROG Run PROG after connect
        -l      Listen mode, for inbound connects
                (use -l twice with -e for persistent server)
        -p PORT Local port
        -w SEC  Timeout for connect
        -i SEC  Delay interval for lines sent
        -f FILE Use file (ala /dev/ttyS0) instead of network

*Hier z.B. das Stop-Skript* WLAN_off.sh:

#!/bin/sh
echo "ATD#96*0*" | nc 127.0.0.1 1011
sleep 1
echo "ATH#96*0*" | nc 127.0.0.1 1011                   //WLAN AUS

Hab ein bischen ge-google-t: *sudo *gibt's auf der FB nicht.  ls-l gibt

-rwxr-xr-x    1 boxusr80 root           125 Mar 19 08:13 WLAN_off.sh

Habe auch für beide Dateien ein chown root ausgeführt - es bleibt beim o.g.
Verhalten :(

Was kann ich tun?

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

also ich weiss nicht genau was da falsch läuft, aber das "'leep" deutet auf
irgendwas seltsames hin, als stimmten da die Zeichen in dem File
nicht...das kommt doch von der "sleep" Zeile...

Ich habe mich nun per SSH auf die Fritz.Box verbunden, dort per vi das
Script erstellt als test.sh und dann "sh test.sh" ausgeführt -> geht.

Am Donnerstag, 15. September 2011 17:41:24 UTC+2 schrieb Nylon:
>
> Mit einem kleinen Trick gehts trotzdem
>
> 2 Shell scripts erstellen :
>
> #!/bin/sh
> echo "ATD#96*1*" | nc 127.0.0.1 1011
> sleep 1
> echo "ATH#96*1*" | nc 127.0.0.1 1011                     //WLAN EIN
>
> und
>
> #!/bin/sh
> echo "ATD#96*0*" | nc 127.0.0.1 1011
> sleep 1
> echo "ATH#96*0*" | nc 127.0.0.1 1011                   //WLAN AUS
>
>
> und anschließend in der fhem.cfg  :
>
> define WLAN dummy
>
> define WLAN_switch notify Sender:Btn1.* set WLAN %EVTPART1
>
> define WLAN_set_on notify WLAN:on "WLAN_On.sh"
> define WLAN_set_off notify WLAN:off "WLAN_Off.sh"

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi,
vielen Dank für's Nachschauen - ok, ein Ansatz :)
Ich nutze Notepad++
Vorhin habe ich (auf Grund desselben Gedankens) alle Zeilenumbrüche im
script (mittels Notepad++) gelöscht und neu gesetzt.
vi hab ich zuletzt im Studium benutzt - kenne die ganzen kryptischen
Bedienkürzel nicht mehr.
Versuche mal mir das zusammenzugoogeln.
Bzw - Luxusversion - kannst Du mir Dein script mailen?  ;-)
Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

borsti67

                                                 

Hi Oskar,

> [-f FILE|IPADDR PORT]

stimmt, ich hatte übersehen, dass das "-f" innerhalb der Klammer steht. :(

Gruss
Torsten

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

Guest

Originally posted by: <email address deleted>

Hi,
so, kaum probiert man 2 Stunden rum, schon geht's ;-)
Da mir (und vll auch Anderen) das Bearbeiten im vi zu blöd war, hab ich's
nun in ein Progrämmchen gepackt, das man zB in seine 99_myUtils stecken
kann.
Geht bestimmt auch kürzer, es funktioniert aber. Freue mich mch über
updates wenn's jemand kürzer/hübscher hinbekommt. Ich stell's sonst die
nächsten Tage ins Wiki.
Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

######## Switch FB WLAN on/off ############
# call from notify with {doWLANswitch("%")}
sub
doWLANswitch($) {
   my $cmd = shift;
   my $ret = "";
   if ($cmd =~ m"on"i) {            # on or ON
      $ret .= "ATD: " . `echo "ATD#96*1*" | nc 127.0.0.1 1011` ;
      sleep 1 ;
      $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
   }
   if ($cmd =~ m"off"i) {           # off or OFF
      $ret .= "ATD: " . `echo "ATD#96*0*" | nc 127.0.0.1 1011` ;
      sleep 1 ;
      $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
   }   $ret =~ s,[\r\n]*,,g;        # remove CR from return-string
   Log 1, "doWLANswitch($cmd) returned: $ret";
}

Guest

Originally posted by: <email address deleted>

Hi,
Wiki-Eintrag erstellt:
http://fhemwiki.de/wiki/Fritzbox:_WLAN_ein/ausschalten
Gruß, Uil

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi Uli!
Das funktioniert aber nur, wenn FHEM direkt auf der FRIZ!Box läuft
(127.0.0.1) und nicht wie in meinem Falle auf einer anderen Maschine (SuSE).

Am Mittwoch, 21. März 2012 14:16:24 UTC+1 schrieb UliM:
>
> Hi,
> Wiki-Eintrag erstellt:
> http://fhemwiki.de/wiki/Fritzbox:_WLAN_ein/ausschalten
> Gruß, Uil
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Mittwoch, 21. März 2012 18:03:02 UTC+1 schrieb ilmtuelp0815:
>
> Hi Uli!
> nur, wenn FHEM direkt auf der FRIZ!Box läuft (127.0.0.1)
>
>
Hi,
stimmt - gar nicht bedacht - das sollte doch aber der Standardfall sein?  
ich schreib's trotzdem dazu, danke!
Gruß, Ul
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

csaba

                                               

Hi

Ich versuche jetzt den Skript anzupassen so das es auch von meinem
Guruplug zum Fritzbox geht.
Dazu habe ich root's public key vom Guruplug auf die Fritzbox
unter .ssh/authorized_keys kopiert.
Somit kann sich "ssh fritzbox_ip" ohne passwortabfrage einloggen.

Der geanderte Skript sieht so aus:

######## Switch FB WLAN on/off ############
# call from notify with {doWLANswitch("%")}
sub
doWLANswitch($) {
 my $cmd = shift;
 my $ret = "";
 if ($cmd =~ m"on"i) {            # on or ON
  $ret .= "ATD: " . `ssh fritzbox_ip "echo "ATD#96*1*" | nc 127.0.0.1
1011"` ;
  sleep 1 ;
  $ret .= " ATH: " . `ssh fritzbox_ip "echo "ATH" | nc 127.0.0.1
1011"` ;
 }
 if ($cmd =~ m"off"i) {           # off or OFF
  $ret .= "ATD: " . `ssh fritzbox_ip "echo "ATD#96*0*" | nc 127.0.0.1
1011"` ;
  sleep 1 ;
  $ret .= " ATH: " . `ssh fritzbox_ip "echo "ATH" | nc 127.0.0.1
1011"` ;
 }
 $ret =~ s,[\r\n]*,,g;        # remove CR from return-string
 Log 1, "doWLANswitch($cmd) returned: $ret";
}

Leider habe ich ein Problem:

wenn ich trigger WLANSwitch on eingebe kriege ich die Fehlermeldung:

WLANSwitch return value: Bareword "on" not allowed while "strict subs"
in use at (eval 23) line 1.

aber trigger WLANSwitch "on" oder trigger WLANSwitch "off" gehen
einwandfrei mit ein und ausschalten des WLANs auf der Fritzbox.

die define sieht so aus in fhem.cfg:

define WLANSwitch notify WLANSwitch {doWLANswitch(%)}

Jemand  eine Idee?

Oder anders formuliert funktioniert es bei euch genauso wie es im wiki
drin ist?
Das kann ich nicht testen da mein fhem nicht direkt auf der Fritzbox
ist.

Gruss,

Csaba

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com