Ankündigung

Einklappen
Keine Ankündigung bisher.

Fritz!Box steuern per Plugin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mivola
    antwortet
    Da geht ja genau in die Richtung die ich in #18 beschrieben habe. Ich halte ein Plugin für die zyklische Statusabfrage (auch wg langer Laufzeiten) eher ungeeignet. Das sollte in einem unabhängigen Prozess laufen und die gewünschten/interessanten Werte auf den Bus schreiben. Dann kann Visu/Plugin auf entsprechende Werte reagieren...

    VG
    Micha

    Einen Kommentar schreiben:


  • strippe186
    antwortet
    Sehr schönes Plugin - der WAF steigt, da meine Frau jetzt in der Lage ist per VISU das GAST-WLAN zu schalten. Das Feedback benötigt nur bis zum nächsten Plugindurchlauf.

    Was mir also fehlt ist das starten des Plugins, wenn z.B. an der Visu das WLAN eingeschaltet wurde. Die zyklische Abfrage möchte ich eigentlich auf ein Minimum reduzieren.
    folgendes habe ich eingefügt:
    Code:
    my $watch_ga = "0/1/75";
    $plugin_subscribe{$watch_ga}{$plugname} = 1;
    damit habe ich aber nur die GA angemeldet. Richtig??
    Was muss ich noch einfügen, damit das Plugin bei einer 1 auf GA0/1/75 ausgeführt wird? abonieren der zu überwachenden GA - nur wie genau in diesem Beispiel?
    Wäre toll, wenn mir jemand unter die Arme greifen könnte.

    Gruß
    Bernd

    Einen Kommentar schreiben:


  • mivola
    antwortet
    Danke, das Perl-Programm werde ich mir mal anschauen.

    Was ich mich allerdings generell frage: wie löst man mit einem Plugin das Problem der Statusabfrage/anzeige? Ich meine: wenn ich in der Visu das WLAN oder die Klingelsperre ein- und ausschalten kann ist das ja gut. Aber wenn ich (oder jemand anderes) dies parallel dazu über die FritzBox (oder andere Wege) direkt macht, sehe ich in der Visu diesen Statuswechsel gar nicht. Dann werden in der Visu ja falsche Werte/Status angezeigt.
    Müsste man die ganze Kommunikation zw Bus und FritzBox nicht evtl ähnlich aufsetzen wie den ebusd? Ein (Perl-)Hintergrundprozess der auf bestimmte GAs hört und diese zu Befehlen an die FB übersetzt+abschickt und selbst wiederum periodisch alle relevanten Status abfragt und auf den Bus schickt.

    Das würde auch das Problem der (zu) langen Laufzeit des Plugins lösen...

    Was meint ihr dazu?

    VG
    Micha

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Nicht als Plugin (aber Perl) hatte ich das mit dem Passwort und der SID mal so geschrieben:

    https://knx-user-forum.de/code-schni...fbereiten.html

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • mivola
    antwortet
    Zitat von tger977 Beitrag anzeigen
    Wenn ich mir das aktuelle SVN Plugin von Amaridian (Telfonklingel) ansehe sind dort auch ganz andere Pfade bei der init sub drin als hier im Plugin.
    Ich denke das liegt an den diversen Version & Login-Möglichkeiten:
    1) FritzBox mit Version <5.5
    2) FritzBox mit Version ab 5.5 und "Nur-Passwort"
    3) FritzBox mit Version ab 5.5 und "Username/Passwort"

    Hier gibts dazu auch ein paar Infos: http://212.42.244.80/de/Extern/files...Session_ID.pdf

    Ich suche noch nach einer Implementierung für 2) Ich habe versucht Amaridians Lösung anzupassen, aber bisher leider erfolglos...

    VG
    Micha

    Einen Kommentar schreiben:


  • tger977
    antwortet
    habe nun mal versucht das Plugin von #1 zum Laufen zu bringen.

    Es scheitert bei mir wohl immer am Login der Fritzbox, da ich immer eine SID mit 0 bekomme.

    Wenn ich mir das aktuelle SVN Plugin von Amaridian (Telfonklingel) ansehe sind dort auch ganz andere Pfade bei der init sub drin als hier im Plugin.

    Hat das Plugin hier jemand am Laufen und kann eine aktuelle Version nochmal hier posten, da es im SVN keine Version gibt?

    Gruß
    Andi

    Einen Kommentar schreiben:


  • tger977
    antwortet
    Hallo,

    hole den Thread hier mal wieder hoch, da ich gerade nach einer Lösung Suche per Plugin das WLAN meiner Fritzbox ein und aus zu schalten.

    Gibt es bezüglich der langen Laufzeiten weitere Neuigkeiten?

    Gruß
    Andi

    Einen Kommentar schreiben:


  • XueSheng
    antwortet
    Zitat von coolrunnings Beitrag anzeigen
    Aber besteht evtl. die Möglichkeit perl zu updaten? Oder verträgt sich das nicht mit den installierten Debian?

    Weil mit der aktuelleren Version von libwww-perl lieft ja das Skript anscheinend auch schneller.
    Ein Update könnte man sicherlich durchführen. Grundsätzlich könnte man dadurch aber auch Probleme mit zukünftigen "offiziellen" Updates bekommen (wobei sich die "Update-Flut" beim Wiregate stark in Grenzen hält, *hust*).
    Das Thema mit den "veralteten" Paketen auf dem Wiregate wurde ja mittlerweile oft genug geführt. Hier hatte StefanW mal angedeutet, dass da was neues kommen könnte (kostenpflichtig).

    Einen Kommentar schreiben:


  • coolrunnings
    antwortet
    Ich kram das Ganze hier nochmal raus. Bisher habe ich leider noch keine Möglichkeit gefunden das Skript zu optimieren.
    Aber besteht evtl. die Möglichkeit perl zu updaten? Oder verträgt sich das nicht mit den installierten Debian?

    Weil mit der aktuelleren Version von libwww-perl lieft ja das Skript anscheinend auch schneller.

    Zitat von XueSheng Beitrag anzeigen
    Ausgeführt auf meinem PC (libwww-perl 6.05):
    Code:
    $ time perl perl-testing9.pl 
    http_response: <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>425fd7dd</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
    
    real    0m0.309s
    user    0m0.076s
    sys    0m0.004s
    Ausgeführt auf meinem Wiregate (libwww-perl 5.813):
    Code:
    # time perl perl-testing9.pl 
    http_response: <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>dcc1f2bb</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
    
    real    0m2.759s
    user    0m0.988s
    sys    0m0.060s

    Einen Kommentar schreiben:


  • XueSheng
    antwortet
    WWW::Curl::Simple scheint nicht im repo des Wiregate zu sein. Stattdessen habe ich das Skript mal auf WWW::Curl::Easy umgebaut. Der Umbau war etwas nervig, weil WWW::Curl an sich schon kompliziert genug ist und zudem die veraltete Version auf dem Wiregate noch eine Sonderbehandlung braucht (Stichwort filehandle und scalar reference... da gabs wohl ein paar Umbauten).

    Das Holen der sid geht nun wesentlich flotter (0.7 anstatt bis zu 2.7 Sekunden), jedoch braucht der Post Request länger... Unterm Strich sind es also für die komplette Abfrage 6 Sekunden (bei LWP waren es 6.5 Sekunden).

    Für mich ist das Thema vorerst durch.

    Einen Kommentar schreiben:


  • coolrunnings
    antwortet
    WWW::Curl::Simple soll angeblich schneller sein. Aber da blick ich noch nicht durch. Evtl. hat da jemand mehr Erfahrung.

    Einen Kommentar schreiben:


  • XueSheng
    antwortet
    Beide über den selben Gigabit Switch. Daran sollte es nicht liegen (kein WLAN o.ä. im Spiel).

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi,
    rein Netzwerkteschnisch sind dein PC und das WG gleich ähnlich angebunden?
    Viele Grüsse
    Jürgen

    Einen Kommentar schreiben:


  • XueSheng
    antwortet
    Dass alleine das Holen der sid so ewig dauert, fuchst mich.

    Hier das gekürzte Test-Skript, das nur den ersten http_request durchführt:

    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use LWP;
    
    my $fritz_ip = "192.168.0.1";
    my $fritz_user = "user";
    my $fritz_pw = "pass";
    
    my $ua = LWP::UserAgent->new;
    my $http_response = $ua->get("http://$fritz_ip/login_sid.lua");
    
    print "http_response: ".$http_response->content."\n";
    Ausgeführt auf meinem PC (libwww-perl 6.05):
    Code:
    $ time perl perl-testing9.pl 
    http_response: <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>425fd7dd</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
    
    real    0m0.309s
    user    0m0.076s
    sys    0m0.004s
    Ausgeführt auf meinem Wiregate (libwww-perl 5.813):
    Code:
    # time perl perl-testing9.pl 
    http_response: <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>dcc1f2bb</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
    
    real    0m2.759s
    user    0m0.988s
    sys    0m0.060s
    Wobei die Runtime auf dem Wiregate von 1,7 bis 2,7 Sekunden schwankt.
    Wenn ich aber "LWP::Simple" verwende, dauert das "get" auch auf dem Wiregate nur 0.3 Sekunden!

    Ob das jetzt an den älteren Paketen auf dem wiregate liegt oder eine andere Ursache hat, weiss ich nicht.

    Aber falls jemand einen guten Tip zur Beschleunigung hat, immer her damit .

    Einen Kommentar schreiben:


  • coolrunnings
    antwortet
    Es ist ja bald Wochenende, da werd ich mal sehen, was sich machen lässt

    Einen Kommentar schreiben:

Lädt...
X