WLan An/Aus und Statusabfrage?

Sevensworld

Neuer User
Mitglied seit
6 Aug 2008
Beiträge
26
Punkte für Reaktionen
0
Punkte
1
Hallo Leute,

ich habe jetzt die letzten 2 Tage hier im Forum gelesen und komme leider ohne zu fragen nicht weiter.
Mein Ziel ist es das WLan per Batchdatei zu starten oder zu stoppen und wenn möglich irgendwie den Status des WLan abzufragen, also ob an oder aus, da die Box leider auf dem Dachboden sitzt (auf Grund der Struktur der Kabelverlegung nicht anders möglich).
Am besten wäre natürlich eine Auswertung per LAN Schnittstelle, damit ich das direkt in php weiter verwerten kann, aber das ist wohl nicht möglich .. oder etwa doch?

Ideal wäre eine URL um das WL zu starten oder stoppen, aber eine Batch Datei geht auch ... nur kann ich damit den Status nicht auslesen :(.

Nach einigen Postings hier im Forum, habe ich festgestellt das es Lösungen gibt, aber leider keine die unter Windows laufen ... oder aber ich muß zusätzliche Software (Python) installieren. Auch hat ein User ein Tool fertiggestellt, das diese Umschaltung ermöglicht, aber ich möchte es eben nicht von Hand ausführen und noch bestätigen müssen, sondern von einem Tool einen einzigen Befehl ausführen lassen.

Per Telnet gehts ja auch, aber kann man das dann nicht per Batchdatei lösen? Entweder direkt Telnet oder evtl. auch mit Putty ... nur wie löst man so etwas genau? Ich habe leider noch keine fertige Lösung hier im Forum gefunden :(

Im Notfall würde ich mich auch auf das Einloggen auf die Box ohne Paßwort einlassen und dann evtl. per Textparser den Zustand auslesen, aber schalten kann ich damit dann immer noch nicht.


Eine andere Lösung wäre vielleicht auch der FB_Control Mod, aber der ist ja nur für die DBox und nicht für die Dreambox ...

Ich hoffe ihr habt einen Lösungsvorschlag für mich!?


*edit*
Kann ich die Telefoncodes auch per Capi an die Box senden und somit das WLAN an/aus schalten? Müßte doch evtl. klappen, da ich darüber ja auch wählen kann, oder? Ja, nein, vielleicht?


Gruß
Jens
 
Zuletzt bearbeitet:
Hallo Jens,

über die LAN-Schnittstelle geht's, per HTTP: Du kannst dir einfach anschauen, wie die Weboberfläche von AVM das macht und die entsprechenden Requests erzeugen, z.B.:

WLAN starten: POST-Request (Content-Type: application/x-www-form-urlencoded) an http://fritz.box/cgi-bin/webcm mit Inhalt
Code:
wlan:settings/ap_enabled=1
WLAN stoppen:
Code:
wlan:settings/ap_enabled=0
WLAN-Status abfragen: GET-Request an dieselbe Adresse mit folgenden URL-Parametern
Code:
getpage=../html/query.txt
var:cnt=1
var:n0=wlan:settings/ap_enabled
(Falls du ein Passwort gesetzt hast, brauchst du noch einen Request für den Login.)

Viele Grüße,
Andreas
 
Hallo Andreas,

vielen Dank für deine Hilfe. Ich mußte zwar noch ein wenig knobeln, aber die Abfrage nach dem Status hat dann schnell geklappt.

:groesste:

Mit dem POST Request hat es etwas länger gedauert, habe dann aber folgendes gefunden und angepaßt:

PHP:
function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host, 80);
  printf("Open!\n");
  fputs($fp, "POST $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n");
  fputs($fp, "Referer: $referer\r\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  fputs($fp, $data_to_send);
  printf("Sent!\n");
  while(!feof($fp)) {
      $res = fgets($fp, 128);
  }
  printf("Done!\n");
  fclose($fp);

  return $res;
}

$data = "wlan:settings/ap_enabled=0";

printf("Go!\n");
$x = PostToHost(
              "fritz.box",
              "/cgi-bin/webcm",
              "http://fritz.box/cgi-bin/webcm",
              $data
               );

Somit kann ich das direkt per PHP abschicken .. quasi genau das was ich gesucht habe (obwohl ich nicht genau weiß was da eigentlich abläuft ;)).

Was könnte man jetzt noch weg lassen, oder werden alle Zeilen benötigt? Außerdem wird der Request abgesendet, egal ob ich eingeloggt bin oder nicht ... daher würde mich interessieren, wie ich eine Abfrage danach machen kann, um sicher zu gehen das es wirklich funktioniert hat!?

Und zu guter Letzt ... es funktioniert zwar jetzt, aber wie muss nun ein POST Login aussehen? :confused::confused:

Ich hoffe du kannst mir da auch noch mal weiter helfen .. zumindest was die Login Sache an geht!?
Ich denke mal das ich das hier irgendwie benötige:
Code:
login:command/password

Nur wo hinterlege ich das Passwort dann, oder ersetze ich "password" einfach mit meinem Passwort oder hinter password ein = und dann mein Passwort und verarbeite den Request wie oben?


Gruß
Jens
 
Zuletzt bearbeitet:
Ja, "login:command/password=PASSWORD" in einem eigenen Request vorne weg. Hast du in PHP keine Bibliothek, um einfach HTTP-Requests zu erzeugen? Das wäre deutlich weniger fehlerträchtig, als es auf unterster Ebene selbst zusammenzubasteln.

Gruß,
Andreas

PS: Das sieht doch gut aus: http://de.php.net/manual/de/book.http.php
 
Zuletzt bearbeitet:
Ich weiß nicht genau .. muss mich mal erkundigen wie ich so eine Bibliothek einbinde, vorausgesetzt ich finde eine passende!?
Meinst du die Befehle http_get und http_post_data ? Habe mal auf der Seite nachgesehen und das wären die Beiden, die meiner Meinung nach dafür zu verwenden sind!??


*edit*
Ok, .dll ist eingebunden und geht auch ... nur weiß ich jetzt leider nicht wie ich die Befehle einsetzen muss. Alle bisherigen Versuche sind leider fehlgeschlagen :(


Gruß
Jens
 
Zuletzt bearbeitet:
http_post_fields sieht praktischer aus für deinen Zweck als http_post_data. Das dürfte z.B. so aussehen:
Code:
$response = http_post_fields("http://fritz.box/cgi-bin/webcm", array('login:command/password' => $password));
Andreas
 
Hallo Andreas,

vielen dank dafür .. scheint zu klappen ;) , jetzt muss ich nur noch testen wie schnell die Anfragen kommen dürfen, ansonsten bau ich mir noch ne Verzögerun ein.

Hast du vielleicht noch ne Idee, wie ich bei der Funktion zum aktivieren/deaktivieren des Wlan, die Abfrage nach einer erfolgreichen Änderung realisieren kann? Denn so wird das Kommando abgesetzt, egal ob ich mich vorher angemeldet habe *hmpf*

Gruß
Jens
 
wie ich bei der Funktion zum aktivieren/deaktivieren des Wlan, die Abfrage nach einer erfolgreichen Änderung realisieren kann? Denn so wird das Kommando abgesetzt, egal ob ich mich vorher angemeldet habe *hmpf*
Könntest du das bitte noch mal umformulieren oder erklären? Ich verstehe die Frage bzw. die Situation überhaupt nicht.

Gruß,
Andreas
 
WLAN kann man doch per Telefon schalten:
Einschalten: #96*1*
Ausschalten: #96*0*
Gruß
Michael
 
@Michael .. danke ich weiß, aber das Ganze wird in die Homeautomatisation eingebunden, daher über php. Würde das auch über die Capi gehen, also wenn ich mit der Lancapi die Kombination wählen lasse?

@Andreas:

Die Funktion weiter oben PostToHost bzw. das ganze Script sendet das Signal zum Abschalten oder Einschalten.
Ich bekomme da aber keine Rückmeldung ob es geklappt hat, bzw. ob die Box das Kommando bekommen hat, weil es dem Script scheinbar egal ist ob ich mit Paßwort eingeloggt bin oder nicht. Was bedeutet, das ein Ausführen OHNE Login möglich ist, aber nix bewirkt ... ich aber gern eine Bestätigung haben möchte ob der Befehl tatsächlich etwas bewirkt hat.

Das Script selbst habe ich im Netz gefunden, ich weiß nur das es so funktioniert, kann es aber leider nicht anpassen oder beurteilen :(


*edit*
Ich Dussel war vorhin scheinbar ein wenig schwer von Begriff ... natürlich kann ich den Aufruf auch nutzen um das Wlan ein und auszuschalten, funktioniert auch ;) , aber wie kann ich abfragen ob das auch geklappt hat?
Mein "altes" Script benötige ich dann ja nicht mehr .. also vergiß meine Frage einfach ;)


Gruß
Jens
 
Zuletzt bearbeitet:
@Michael .. danke ich weiß, aber das Ganze wird in die Homeautomatisation eingebunden, daher über php. Würde das auch über die Capi gehen, also wenn ich mit der Lancapi die Kombination wählen lasse?
Hi Jens,
warum sollte das nicht gehen, beim FAXoverCapi kann ich doch auch Steuersignale senden. Getestet hab ichs jedoch nur mit *111# und *121#, aber WLAN ein/aus per FAX-Capi kannste ja problemlos testen...
Gruß
Michael
 
aber wie kann ich abfragen ob das auch geklappt hat?
Egal, wie du nun die Umschaltung erledigst (ob per Wählen oder per Webinterface), den Status kannst du doch in jedem Fall hinterher per Webinterface abfragen (2 Requests: Login + Status-Abruf (s.o.)). Und dann siehst du, ob du den gewünschten Zustand erreicht hast.

Gruß,
Andreas
 
Guten Morgen!

Das mit der Capi werde ich auch mal testen ... was aber die Statusabfrage an geht, da müßte es aber doch möglich sein die Antwort des Servers irgendwie zu verarbeiten!? Klar kann man das mit einer weiteren Abfrage lösen, aber ich möchte gern die Antwort wissen ohne das ich noch wieder weitere requests absetzen muss.
In
PHP:
$response
steht ja die Antwort. Aus der müßte doch irgendwie hervorgehen ob es geklappt hat oder nicht!?

Gruß
Jens
 
Zuletzt bearbeitet:
Na, dann schau dir doch die Antwort einfach an :gruebel:. Als ich zum letzten Mal nachgeschaut habe, wies in der Antwort eines Post-Request nichts auf Erfolg oder Misserfolg hin (ist auch etwas schwierig, weil man sehr viele Einstellungen gleichzeitig mit einem Request ändern kann).

Andreas
 
Zuletzt bearbeitet:
Ja .. das wäre nun die Frage gewesen, ob man irgendwie die Möglichkeit hat ein Request so abzusetzen, das als Antwort etwas kommt wie TRUE oder FALSE ... ansonsten bleibt nur die Möglichkeit die Antwort mit einem Textparser nach einem bestimmten Wort oder Satz zu durchsuchen.


Jens
 
Ja, bei der Statusabfrage schon ... aber sollte mal die Anmeldung fehlschlagen, dann kommt keine 0 oder 1 sondern nur ein Kopf mit Doctype usw. ... So bleibt dann nur die Lösung nach dem Umschalten (ein oder aus) noch zusätzlich den Status abzufragen und mit dem Ergebnis dann eine kleine Auswertung zu basteln.


Jens
 
Ok, das stimmt, falls wirklich der Login fehlschlägt (was eigentlich nur passieren kann, wenn du nur auf der einen Seite das Passwort änderst), bekommst du die Login-Seite statt dem Ergebnis. Aber die kann man ja leicht erkennen.

Andreas
 
Noch einmal vielen Dank für die Hilfe, das Ganze funktioniert mit meiner 7170 einwandfrei. Wie ist das eigentlich jetzt bei einer 7270, ich wollte das gleich Script wie bei mir auch bei einem Bekannten einsetzen, aber leider bekomme ich da kein Ergebnis ... weder ne 0 noch ne 1.
Muss der Aufruf ein anderer sein, weil das Verzeichnis ein anderes ist??


Gruß
Jens
 
Zuletzt bearbeitet:
Hi,

bei der 7270 (und das wird sich vermutlich auf weitere neue Firmwares übertragen lassen), hat sich die Schnittstelle für query.txt geändert.

Früher war es für k Variablen:
query.txt?var:cnt=k&var:n0=...&var:n1=...&...&var:k-1=...

Jetzt ist es
query.txt?var:n[0]=...&var:n[1]=...&...&var:n[k-1]=...

Gruß,
Andreas
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.