Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
PS Fritz!Box API - TR-064 Schnittstelle
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Zitat von inflames2k
Hallo,

ja ich arbeite noch da dran, bin aber in den letzten Monaten leider nicht mehr dazu gekommen. Natürlich werden auch die bekannten Probleme behoben. Da ich das Projekt aber privat bearbeite kann ich dir hier keinerlei zeitliche Schiene geben.

Ok danke dir. Vielleicht kommst du ja demnächst dazu.

LG cop
private Nachricht | Beiträge des Benutzers
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Zitat von T-Virus
Gerade auch das Issue mit FritzOS7.10 dürfte noch etwas dauern.
Die Verteilung ist immer noch im Gange.
Für die Cable Boxen gibt es leider auch noch keinen Termin.

T-Virus

Um welches Problem handelt es sich hier? Hat dies mit der FritzOS zu tun? Könnte man diesen Issue in der API von inflames2k fixen oder ist man abhängig von AVM?

LG cop
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1900
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Ich hatte mich auf das Issue im Repository bezogen.
Ansonsten habe ich bereits seit einiger Zeit FritzOS 7.10 auf meiner 6490 Cable und bin soweit zu frieden.
Läuft alles rund und stabil.

T-Virus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Code Beispiel

beantworten | zitieren | melden

Hallo inflames2k!

Ich hätte kurz deine aktuelle API ausprobiert, erziele dabei jedoch keinen Erfolgt.

Verwende ich deinen Code falsch?



FritzDevice device = new DeviceFactory().CreateDeviceAsync(System.Net.IPAddress.Parse("10.0.0.138")).GetAwaiter().GetResult();

ConnectionSettings settings = new ConnectionSettings();
settings.UserName = "username";
settings.Password = "passwort";
settings.BaseUrl = "http://10.0.0.138:49000/";

WLANConfigurationClient client = device.GetServiceClient<WLANConfigurationClient>(settings).GetAwaiter().GetResult();
client.SetEnableAsync(false);



Es tut sich einfach nichts. Vergleichbar jedoch mit einem PHP Skript kann erfolgreich das WLAN geschaltet werden:


$client = new SoapClient(null,array(	'location'		=> "http://10.0.0.138:49000/upnp/control/wlanconfig1",
										'uri'			=> "urn:dslforum-org:service:WLANConfiguration:1",
										'soapaction'	=> "urn:dslforum-org:service:WLANConfiguration:1#SetEnable",
										'noroot'		=> True,
										'login'			=> "username",
										'password'		=> "passwort"
	));

$client->SetEnable(new SoapParam(0, 'NewEnable'));



Lg cop
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von supercop89 am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Was heißt denn, es passiert nichts?
Läuft der Code im Debugger bis zum Clientaufruf durch?

Funktionieren denn andere Anfragem auf den WLanConfigClient?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Zitat von inflames2k
Was heißt denn, es passiert nichts?
Läuft der Code im Debugger bis zum Clientaufruf durch?

Funktionieren denn andere Anfragem auf den WLanConfigClient?

Korrekt es läuft alles im Debugger einwandfrei durch, jedoch bleibt das WLAN auf der Fritzbox aktiv. Jeder Codezeile wird durchlaufen.

Vergleichbar mit dem PHP Skript, wird das WLAN einwandfrei deaktiviert.

Bevor ich hier deine API debugge wollte ich nachfragen, ob der von mir gepostete Code korrekt verwendet wird oder eventuell eine Codeanpassung für die Nutzung deiner API notwendig ist.

Andere Abfragen vom WLanConfigClient habe ich derzeit noch nicht probiert.

LG cop
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von supercop89 am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Grundsätzlich sieht es eigentlich gut aus mit dem Code. Habe ihn mir jetzt aber nicht vollständig angesehen.

Allgemein kommst du wohl sowieso besser, wenn du async/await richtig implementierst statt mit den Awaitern manuell zu arbeiten.

Kann deinen Code allerdings momentan leider nicht ausprobieren, da mein Notebook in der Reparatur ist.

Es wird aber auch keine Exception geworfen?

Wie auch immer, versuch mal den Code umzustellen. Du arbeitest ja bestimmt auf einer Konsolenanwendung für den Anfang.

Probier mal:


        static async void Main(string[] args)
        {
            DeviceFactory factory = new DeviceFactory();
            FritzDevice device = await factory.CreateDeviceAsync(System.Net.IPAddress.Parse("10.0.0.138"));


            ConnectionSettings settings = new ConnectionSettings();
            settings.UserName = "username";
            settings.Password = "passwort";
            settings.BaseUrl = device.Location;

            WLANConfigurationClient client = await device.GetServiceClient<WLANConfigurationClient>(settings);
            await client.SetEnableAsync(false);
        }

Möglicherweise reicht es aber auch schon die BaseUrl wie ich es im obigen Code mache auf "device.Location" zu setzen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16147

beantworten | zitieren | melden

static async Task Main(string[] args) nicht static async void Main(string[] args)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Zitat von Abt
static async Task Main(string[] args) nicht static async void Main(string[] args)

Ok danke für die Aufklärung.

Was aber würde hier den Unterschied machen bezüglich der Funktionalität wenn die Asynchrone Programmierung verwendet wird?

Sollte hier nicht das gleiche Ergebnis sein, sprich es egal ist ob async oder nicht.

LG cop
private Nachricht | Beiträge des Benutzers
Chronos
myCSharp.de - Member



Dabei seit:
Beiträge: 134
Herkunft: NRW

beantworten | zitieren | melden

Hauptsächlich geht's dabei ums ExceptionHandling und ums "Timing" sprich das auf den Abschluss des Tasks gewartet wird was in deinem o.g. Beispiel nicht der Fall war und zu dem Fehler führte.

Wenn du Fiddler nebenher laufen lässt siehst du auch das der Request unvollständig ist.

Siehe: https://msdn.microsoft.com/magazine/jj991977
private Nachricht | Beiträge des Benutzers
supercop89
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Zitat von Abt
static async Task Main(string[] args) nicht static async void Main(string[] args)

Wobei ich dachte mir immer:

Die Methode mit dem async Schlüsselwort muss ein Task-Objekt (seit .Net 4.0) zurückgeben oder void zurückgeben.
Zitat von Chronos
Hauptsächlich geht's dabei ums ExceptionHandling und ums "Timing" sprich das auf den Abschluss des Tasks gewartet wird was in deinem o.g. Beispiel nicht der Fall war und zu dem Fehler führte.

Wenn du Fiddler nebenher laufen lässt siehst du auch das der Request unvollständig ist.

Siehe: https://msdn.microsoft.com/magazine/jj991977

ok danke!

LG cop
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16147

beantworten | zitieren | melden

Zitat von supercop89

Wobei ich dachte mir immer:

Die Methode mit dem async Schlüsselwort muss ein Task-Objekt (seit .Net 4.0) zurückgeben oder void zurückgeben.

Dann schau Dir nochmal async/await an - es gibt nur einen einzigen Fall, bei dem async void erlaubt ist.
Bitte aber nicht hier diskutieren - das ist der Snippet-Bereich.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Ich habe nun eine neue Version (1.2.2) hochgeladen. Diese ist mit FritzOS 7.10 getestet. Soweit konnte ich keine Probleme feststellen.

Folgende Änderungen haben sich ergeben:
[list]
* Korrektur von Datentypen und Schnittstellen
* Schnittstelle für WANDSLIfConfig verfügbar (WANDSInterfaceConfigClient)
* Schnittstelle für 5GHz WLAN Konfiguration verfügbar (WLANConfigurationClient2)
* Schnittstelle für Gäste WLAN Konfiguration verfügbar (WLANConfigurationClient3)
[/list] 
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1900
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Hab meinen Restart Task auch gleich mit der neuen Version bestückt und auch gegen meine Cable 6490 mit 7.10 getestet.
Funktioniert soweit reibungslos ohne Code Anpassungen auf meiner Seite.

T-Virus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Da bin ich ja beruhigt. Allerdings scheint der Reboot die ganze Zeit sauber gelaufen zu sein.

An der Stelle habe ich keine Anpassungen gemacht und lediglich gestern mal getestet wie es sich verhält. Dachte zwar im ersten Moment 'Da seh ich ja wo es knallt' aber als dann einfach die WLAN Verbindung weg war wusste ich, dass es ja grundsätzlich noch funktioniert.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1900
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Jopp läuft super :)
Ohne deine lib hätte ich sonst irgendwas selbst basteln müssen, damit ich die Cable neugestartet kriege.
Ohne den täglichen Restart ist die Box dank Intels PUMA 6/7 Bug nach einigen Tagen einfach nicht mehr nutzbar.
Manchmal ist die Box auch schon nach einem Tag nicht mehr nutzbar, dann hilft eben nur Neustarten.
Und da hat dein Lib mir eine Menge Zeit und Nerven gespart :)

Vielleicht brauche ich später mal ein paar Tools um die Box auch ohne direkten Zugriff etwas zu verwalten.
Aber bis dahin reicht mir der Neustart.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Nur um noch einmal einen aktuellen Stand zu bringen. Aktuell arbeite ich an Version 1.2.4.

Was wird die Version bringen?
  • derzeit fehlende Service-Clients werden vollständig implementiert
  • Optimierungen für Verwendung der Klasse FritzDevice


Für die Klasse FritzDevice ändert sich folgendes:
  • erhält Property für Credentials: Dient der Erzeugung der ServiceClients. Eine Konfiguration von Nutzername und Passwort pro ServiceClient entfällt damit. Auch die Ständige Übergabe der ConnectionSettings.
  • neue Methode GetServiceClient<T> ohne Parameter: Erzeugt auf Basis der Einstellungen (Nutzername, Passwort, Basis URL) den gewünschten Service Client.
  • GetServiceClient<T>(ConnectionSettings) wird als Obsolete gekennzeichnet. - In späteren Versionen (vermutlich 2.0) wird diese entfallen.
  • Die Validierung ob ein Service durch die FritzBox überhaupt bereitgestellt wird entfällt.
  • FritzDevice erhält eine Statische Methode zum Suchen nach FritzBoxen (verwendet intern den bereits vorhandenen DeviceLocator der damit in direkter Verwendung Obsolete wird und spätestens in Version 2.0 entfällt.

Sollte nun noch jemand die ein oder andere Änderung wünschen oder hat fehlende Methoden in den bestehenden Clients gefunden, bitte bescheid geben. Dann kann diese Änderung in der Version mit einfließen.

Hinweis: Die Erzeugung der ServiceClients durch manuelles erzeugen bleibt wie bisher. Wer also ganz ohne Verwendung von FritzDevice die Service Clients nutzt kann das auch weiterhin tun.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
XRhs5
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Hallo zusammen,

ich habe das Projekt herruntergeladen und in Visual Studio versucht zu öffnen. Die API.CMD wird mir auch geöffnet, aber die API Komponente kann nicht geladen werden.

Es kommt die Fehlermeldung "Der MSBuild-XML-Namespace muss der Standard-XML-Namespace des Projekts sein." usw.

Kann mir jemand sagen was ich falsch mache.

Grüße
Eric
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16147

beantworten | zitieren | melden

Der Fehler hört sich danach an, dass Du ein sehr altes Visual Studio verwendest, das den Projekttyp nicht unterstützt.
Da das Projekt hier mit .NET Standard umgesetzt ist, kannst Du zB. kein Visual Studio 2015 verwenden.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
XRhs5
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Danke für die schnelle Antwort.

Ich verwende VS2015. Ich habe ehr die Vermutung gehabt, das ich zu neu bin. Da in der PS.FritzBox.Api.csproj was von DOTNET2.0 steht.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von XRhs5 am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2360

Themenstarter:

beantworten | zitieren | melden

Hallo XRhs5,

dann bleibt dir wohl nur der Umstieg auf die 2017er oder 2019er Version. Gibt es beide als Community Edition. - Entwickelt habe ich das Projekt mit der 2017er.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
XRhs5
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Hab die 2019er installiert und nach einem Konfigurationsproblem mit nuget, klappt es jetzt auch.

Vielen Dank.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von XRhs5 am .
private Nachricht | Beiträge des Benutzers