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
Ankündigung
Einklappen
Keine Ankündigung bisher.
Fritz!Box steuern per Plugin
Einklappen
Dieses Thema ist geschlossen.
X
X
-
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:
damit habe ich aber nur die GA angemeldet. Richtig??Code:my $watch_ga = "0/1/75"; $plugin_subscribe{$watch_ga}{$plugname} = 1;
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:
-
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:
-
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:
-
Ich denke das liegt an den diversen Version & Login-Möglichkeiten:Zitat von tger977 Beitrag anzeigenWenn 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.
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:
-
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:
-
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:
-
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*).Zitat von coolrunnings Beitrag anzeigenAber 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.
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:
-
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 anzeigenAusgeführt auf meinem PC (libwww-perl 6.05):
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>425fd7dd</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo> real 0m0.309s user 0m0.076s sys 0m0.004s
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:
-
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:
-
WWW::Curl::Simple soll angeblich schneller sein. Aber da blick ich noch nicht durch. Evtl. hat da jemand mehr Erfahrung.
Einen Kommentar schreiben:
-
Beide über den selben Gigabit Switch. Daran sollte es nicht liegen (kein WLAN o.ä. im Spiel).
Einen Kommentar schreiben:
-
Hi,
rein Netzwerkteschnisch sind dein PC und das WG gleich ähnlich angebunden?
Viele Grüsse
Jürgen
Einen Kommentar schreiben:
-
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:
Ausgeführt auf meinem PC (libwww-perl 6.05):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 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>425fd7dd</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo> real 0m0.309s user 0m0.076s sys 0m0.004s
Wobei die Runtime auf dem Wiregate von 1,7 bis 2,7 Sekunden schwankt.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
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:
-
Es ist ja bald Wochenende, da werd ich mal sehen, was sich machen lässt
Einen Kommentar schreiben:


Einen Kommentar schreiben: