myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » .NET-Komponenten und C#-Snippets » PS Fritz!Box API - TR-064 Schnittstelle
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Seiten (2): [1] 2 nächste » Antwort erstellen
Zum Ende der Seite springen  

PS Fritz!Box API - TR-064 Schnittstelle

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

PS Fritz!Box API - TR-064 Schnittstelle

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Beschreibung:

Ich stelle hier meine Klassenbibliothek für den Zugriff auf die Fritz!Box bereit. Die Bibliothek enthält Klassen für den Zugriff auf verschiedene TR-064-Schnittstellen der Fritz!Box zur Abfrage von Informationen und zur Ausführung von Aktionen auf dem Gerät.

Projekt Informationen
Die Bibliothekist für .NET Standard Version 2.0 kompiliert und besitzt neben dem Standard SDK derzeit keine weiteren Abhängigkeiten.

Projekt auf Github:  PS.FritzBox.API
Lizenz:  MIT License
NuGet:  PS.FritzBox.API

Hinweis Kabelboxen
Bei den Kabelboxen scheint die TR-064 Schnittstelle deaktiviert zu sein. Bei denen wird die API dann wohl leider nicht funktionieren. - Falls da draußen dennoch eine funktionierende Kabelbox existiert könnt ihr ja mal bescheid geben.

C#-Code (Beispiel Schnittstellenverwendung):
DeviceLocator locator = new DeviceLocator();
var devices = await locater.DiscoverAsync();
if(devices.Count() > 0)
{
    var device = devices.First();
    ConnectionSettings settings = new ConnectionSettings()
    {
       UserName = "inflames2k";
       Password = "secret";
    };

    var client = await device.GetServiceClient<WANCommonInterfaceConfigClient>(settings);
    OnlineMonitorInfo monitor = await client.GetOnlineMonitorAsync(0);
}

Schlagwörter: Fritz!Box, Fritz!Box UPnP, Fritz!Box TR-064, TR-064

Dieser Beitrag wurde 13 mal editiert, zum letzten Mal von inflames2k am 02.09.2019 22:58.

04.11.2017 13:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wäre es auch eine Option das Ganze auf GitHub Open Source zu machen, dass man hier auch aktiv mitmachen kann? Und als NuGet Paket anbieten...? Sharing via ZIP ist ja nicht so das Wahre :-)
Ansonsten fehlt mir hier auch die Angabe einer Lizenz.

Aber: super!
04.11.2017 14:04 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Habe das Projekt auf Github veröffentlicht und mich kurzerhand für die MIT-Lizenz entscheiden. - Link im Eingangsbeitrag. - Ein NuGet-Package habe ich ebenfalls erstellt und direkt bei NuGet veröffentlicht.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 04.11.2017 16:11.

04.11.2017 15:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also ich bekomme es trotz mehrere Anläufe nicht zum Laufen.

Trotz korrekter Settings gemäß Deiner Anleitung bekomme ich nur

Fehlermeldung:
System.Net.Http.HttpRequestException: 'An error occurred while sending the request.'

WinHttpException: A connection with the server could not be established

Und zwar mit Deinem Sample Code

C#-Code:
            WANCommonInterfaceConfigClient client = new WANCommonInterfaceConfigClient("https://fritz.box", 10000);

            client.UserName = "Ben";
            client.Password = "xxxxxxxxxxxxxxxxxxxx";

            OnlineMonitorInfo monitor = await client.GetOnlineMonitor(0);

            Console.ReadKey();

Stelle ich interessehalber von https auf https, passiert einfach bis zum Timeout nichts.
Ich werde wohl ein wenig im Code Debuggen und wenn ich Zeit finde auch den ein oder anderen PR einreichen.
Generell bin ich zum Beispiel ein Freund eine von Connection Pooling statt überall das Passwort mitzugeben.
Ebenso ein paar Parameter Dinge; aber das bei Zeit dann.

Abt hat dieses Bild (verkleinerte Version) angehängt:
2017-11-04 17_38_58-FritzBoxApp1 (Debugging) - Microsoft Visual Studio.png
Volle Bildgröße

04.11.2017 17:38 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ist der Zugriff für Anwendungen auf deine Box aktiviert? Prüfen kannst du das im Webinterface der Box unter Heimnetz => Netzwerkeinstellungen im Bereich Heimnetzfreigaben. Bei mir ist das der Punkt "Zugriff für Anwendungen zulassen".

Ansonsten kann es u.U. auch sein, dass bei dir der Port für die Verbindung erforderlich ist. Probier mal mit der Url "https://fritz.box:49000".
04.11.2017 17:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab eine 6490 Cable; unter System -> Fritz!Box-Benutzer -> Anmeldung im Heimnetz ist der Zugriff erlaubt. Unter Apps sehe ich meine Android App.
Also ja, soweit ich das sehe ist das alles aktiviert. Ich musste dies glaube ich schon für die Android FritzBox-App aktivieren; und die funktioniert.

Die Angabe des Ports war auch erfolglos.
Ich benutze meinen Adminuser.

Mit Port 49443 bekomme ich einen Internal Service Error.
Das is der Port, den ich bei meinen Versuchen damals genutzt hatte; denn 49000 dürfte kein HTTPS sein laut Doku.

fritz.box:49000/igddesc.xml liefert mir aber ein sauberes XML.

Da die Fehlermeldung ja WinHttpException: A security error occurred lautet vermute ich, dass dem HttpClient die Einstellung des Security Protokoll fehlt.
Evtl. ist dies ja bei den Fritzboxen jeweils anders (zB. weil der Provider an der FritzBox rumfingert). Also wahrscheinlich irgendwas wegen HTTPS.
04.11.2017 18:01 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja, laut Doku dürfte der Port 49433 aber auch nicht notwendig sein, wenn man die https-Url verwendet. Nichts desto trotz habe ich mit meiner Fon mal eben getestet was passiert, wenn ich den App-Zugriff deaktivere. - Dann kommt direkt ein Internal Server Error zurück.

Habe aber gerade einmal recherchiert. - Handelt es sich dabei um eine Box von Kabel Deutschland bzw. eine Box die mit einem Installationscode eingerichtet wurde?

Dann trifft eventuell folgendes Zitat:

Zitat:
es ist von Kabel Deutschland nicht vorgesehen, dass Änderungen an der Konfiguration der Fritzbox vorgenommen werden können. Aus diesem Grund ist der Zugriff über TR-064 nicht möglich.

Quelle:  TR064 - 6490 - Entwickleranfrage

Weitere Quelle mit folgendem Zitat:

Zitat:
Bei Fritz!Boxen für den Kabelanschluss (z.B. Kabel Deutschland) scheint neben Telnet auch die TR064-API nicht zu funktionieren. Vermutlich wurde die API von AVM auf Betreiberwunsch deaktiviert, da man sonst Dinge ändern kann, die das gesamte Kabelnetz stören können.

 FHEM - FRITZBOX

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von inflames2k am 04.11.2017 18:21.

04.11.2017 18:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich bin nicht bei Kabel Deutschland, aber die Box ist vom Provider.
Also vielleicht ist tatsächlich der SOAP Zugriff gesperrt (REST geht).

Super. (Du kannst dafür natürlich nichts).
04.11.2017 18:18 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Gibt es zu der REST-API auch irgendwo Informationen?

// EDIT: Ich vermute mal, du beziehst dich da auf die Schnittstelle für die Home-Automation?

Weitere Frage, was erscheint denn wenn du  http://fritz.box:49000/tr64desc.xml aufrufst?

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inflames2k am 04.11.2017 18:28.

04.11.2017 18:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ne war nicht direkt Home Automation, aber war auf alle Fälle diese *.lua API.
fritz.box/login_sid.lua war dazu mein Endpunkt.

REST ist auch zu viel gesagt.
Nennen wir es lieber JSON API.
04.11.2017 18:53 Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 7 Monate.
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich habe eine neue Version der API veröffentlicht. - In der aktuellen Version wurden einige Umstrukturierungen innerhalb der API vorgenommen. Fehlerhafte Schnittstellen wurden korrigiert und neue Schnittstellen hinzugefügt.

Um den Konfigurationsaufwand auf die Nutzerdaten zu beschränken habe ich einen DeviceLocator implementiert. Dieser sucht per UPnP nach Fritzboxen im Netz und liefert diese als FritzDevice-Objekte zurück. - Auf die bereitgestellten Service-Clients kann dann durch die Methode "GetServiceClient" zugegriffen werden. - Die Methode nimmt die Authentifizierungsinformationen entgegen. - Die Angabe der Base URL ist bei Verwendung der FritzDevice-Klasse in Verbindung mit dem DeviceLocator nicht notwendig. - Lediglich Timeout, Nutzername und Passwort müssen gesetzt werden.

@Abt: Aufgrund von mir durchgeführter Anpassungen würde ich dich gern mal bitten, die API noch einmal zu testen. Möglicherweise lag hier doch ein Fehler meinerseits vor.
16.06.2018 17:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi. Jetzz kam ich endlich dazu.

Ich bekomm zwar ein paar Exceptions in der CMD-Testanwendung, aber ich kann mich problemlos einloggen, Device Info und Co abrufen:

GetDeviceInfo
#############################
ManufacturerName: AVM
ManufacturerOUI: 00040E
ModelName: FRITZ!Box 6490 Cable (lgi)
Description: FRITZ!Box 6490 Cable (lgi) 141.06.88
ProductClass: FRITZ!Box
SerialNumber: xxxxxxxx
SoftwareVersion: 141.06.88
HardwareVersion: FRITZ!Box 6490 Cable (lgi)
SpecVersion: 1.0
UpTime: 161071
StartTime: 08.07.2018 23:21:57
DeviceLog:
10.07.18 10:02:55 Internetverbindung wurde erfolgreich hergestellt. IP-Adresse: xxx.xxx.xxx.xxx, DNS-Server: xxx.xxx.xxx.xxx und xxx.xxx.xxx.xxx, Gateway: xxx.xxx.xxx.xxx


PS:

Mir sind beim drüber schauen einige Dinge aufgefallen, die man verbessern könnte (Async-Naming, Task-Pitfalls, Enumeratoren werden mehrmals durchlaufen..)
Wenn ich dazu komm, mach ich Dir nen PR ;-)

Sieht gut aus!
10.07.2018 20:08 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Alles klar, achte aber mit drauf, dass ich ja schon wieder an der nächsten Version arbeite (Development branch). Dort habe ich mir automatisch die "Proxies" generieren lassen und muss dies noch ein wenig Anpassen (doppelte Klassen etc. entfernen). Nicht das wir dann am Ende 2 Zweige haben, die nicht mehr kompatibel sind beim Merge vom Develop zum Master.

PS: Die nächste Version unterscheidet dann zwischen den IGD-Services und den durch AVM im TR064 abgelegten Services. - So können dann unabhängig voneinander die IGD bzw. TR064 Services verwendet werden.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 12.07.2018 15:58.

12.07.2018 15:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Eigne Dir den GitHub-Flow an und arbeite mit Feature-Branches.
Das ist der übliche Weg in Open Source Projekten und ermöglicht erst eine ordentliche Zusammenarbeit.

Dev-Branch ist eher Git-Flow und hat leider nichts mit agiler, schneller Zusammenarbeit zutun ;-)
12.07.2018 16:08 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Naja, werde jetzt sowieso demnächst den Dev-Branch (vermutlich am Wochende) bereinigen, in den Master übertragen und ab dann mit dem von dir beschriebenen Weg fortfahren. - Ich hoffe, du kannst bis dahin noch warten.

Die ganzen AVM-spezifischen Schnittstellen werde ich dann wohl sowieso erstmal wieder raus nehmen und an späterer Stelle wieder einbauen. So dass in der nächsten Version dann erstmal die ganzen WANDevice- und LANDevice Services sauber verfügbar sind.

Die Services wie z.B. das Telefonbuch würde ich dann über den von dir beschriebenen Weg (die Feature-Branches) hinzufügen.
12.07.2018 16:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wäre es eigentlich mit der Schnittstelle Möglich die Box neuzustarten?
Ich verteile an meinem Anschluss per Torrent Linux ISOs.
Hier scheint aber das Problem mit dem PUMA Bug aufzutreten, weshalb mein Upload und Download irgendwann zusammen brechnen und manchmal nur Kabel ziehen hilft.
Hier wäre es hilfreich, wenn ich über die Schnittstelle die Box neustarten könnte.
Dann könnte ich mir einen einfachen Task schreiben um die Box irgendwann in der Nacht mal neustarten zu lassen, wenn es klappt.

Wäre für feedback dankbar.

Nachtrag:
Hab es gefunden und ist möglich :)
Die entsprechende Methode gibt es auch, leider bekomme ich in Version 1.2.1 eine Exeption bei wegen eines unerwarteten content-type.

Stacktrace (verkürzt):

Fehlermeldung:
System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.Xml.XmlException: Unerwartetes Token 'content-type'. Das erwartete Token ist '"' oder '''. Zeile 4, Position 18.
bei System.Xml.XmlTextReaderImpl.Throw(Exception e)
bei System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
bei System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(String expectedToken1, String expectedToken2)
bei System.Xml.XmlTextReaderImpl.ParseAttributes()
bei System.Xml.XmlTextReaderImpl.ParseElement()
bei System.Xml.XmlTextReaderImpl.ParseElementContent()
bei System.Xml.XmlTextReaderImpl.Read()
bei System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
bei System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
bei System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
bei System.Xml.Linq.XDocument.Load(TextReader textReader, LoadOptions options)
bei PS.FritzBox.API.SOAP.SoapClient.<ExecuteAsync>d__2.MoveNext()

Code sieht aktuell so aus

C#-Code:
public static void Main(string[] args)
        {
            try
            {
                RebootAsync().Wait();
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
            }
        }

        private static async Task RebootAsync()
        {
            ConnectionSettings settings = new ConnectionSettings()
            {
                UserName = ConfigurationManager.AppSettings["Username"],
                Password = ConfigurationManager.AppSettings["Password"],
                BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]
            };

            DeviceConfigClient client = new DeviceConfigClient(settings);
            await client.RebootAsync();
        }

T-Virus

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von T-Virus am 16.07.2018 20:19.

16.07.2018 19:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Funktionieren denn andere Schnittstellen oder ist nur die Schnittstelle betroffen?

Probier mal folgendes:

C#-Code:
DeviceLocator locator = new DeviceLocator();
var devices = await locater.DiscoverAsync();
if(devices.Count() > 0)
{
    var device = devices.First();
    ConnectionSettings settings = new ConnectionSettings()
    {
       UserName = "inflames2k";
       Password = "secret";
    };

    var client = await device.GetServiceClient<DeviceConfigClient>(settings);
    await client.RebootAsync();
}

Möglicherweise passt deine Base-Url nicht. Das könnten wir auf diesem Weg ausschließen, da die BaseUrl hier automatisch ermittelt wird.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 18.07.2018 17:00.

18.07.2018 16:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@inflames2k
Habe ich mal probiert, hier gibt es aber auch eine Fehlermeldung.

C#-Code:
System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.Net.Sockets.SocketException: Ein ungültiges Argument wurde angegeben
   bei System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent)
   bei System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue)
   bei PS.FritzBox.API.DeviceLocator.<BeginSendReceiveAsync>d__3.MoveNext()

Nachtrag:
Nicht unwichtig sollte sein, dass ich ebenfalls eine Fritzbox 6490 Cable habe, aber eine eigene ohne Provider Branding/Firmware.

T-Virus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am 18.07.2018 18:44.

18.07.2018 18:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hast du den Zugriff per TR64-API in der Box aktiviert?

Ansonsten, falls du dir bei Github mal den Source gezogen hast versuche mal in den Control-Pfaden "/upnp/" durch "/igdunpn/" zu ändern. - Eventuell funktionieren damit die Zugriffe, habe ich gerade im Internet entdeckt. - Sicher bin ich allerdings nicht, habe auch keine Cable mit der ich das testen kann.

Sollte es der Fall sein, überlege ich mir noch etwas wie man den Control-Pfad dynamischer gestalten kann.

Ich werde mich nun erst mal an das versprochene aufräumen machen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 22.07.2018 11:13.

22.07.2018 11:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von inflames2k:
Sollte es der Fall sein, überlege ich mir noch etwas wie man den Control-Pfad dynamischer gestalten kann.

Wenn ich in IoT Projekten Eigenheiten für gewisse Devices hab, dann erstelle ich Profiles.
Sprich es gibt ein Standardprofile mit Settings; und wenn dann halt nen anderes Device gefunden wurde, wird das Profile gezogen.

Im Prinzip nichts anderes als das neue Konfigurationsmodell von .NET.
Das basiert ja auch auf dem Profile Prinzip.
22.07.2018 11:55 Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Monate.
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Da ich nun wiedererwarten die letzten Monate nicht dazu gekommen bin, starte ich jetzt mit der Weiterarbeit am Projekt. - Den Development Branch lasse ich stehen, der wird aber derzeit keine Anwendung finden.

Weitergearbeitet wird mit dem Stand des Master Branches. Das aus dem Grund, dass damit auch die extremen Breaking Changes aus dem Development Branch entfallen.

@Abt: Das bedeuted jetzt natürlich, dass du auch auf den aktuellen Stand Änderungsvorschläge machen kannst.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 06.10.2018 09:50.

06.10.2018 09:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@inflames2k
Schön zu hören, dass es dort weiter geht :)
Ich habe mitlerweile auch meinen Reboot Task zum laufen bekommen.
Soweit klappt also mit dem aktuellen Stand schon alles was ich brauche.
Wünsche aber denoch viel Erfolg bei der Weiterentwicklung.

T-Virus
06.10.2018 09:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Musstest du denn noch sachen Ändern, um den Reboot-Task auszuführen oder klappte das mit dem aktuellen Code? Das wäre insofern interessant als das ich etwaiige Änderungen für die nächste Version ja übernehmen könnte.
06.10.2018 09:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Der Code war soweit in Ordnung, nur die Url musste ich in der Config umstellen.

Url:
 http://fritz.box:49000

T-Virus
06.10.2018 14:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Monat.
copa017 copa017 ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.11.2018
Beiträge: 2
Entwicklungsumgebung: VS2017
Herkunft: Brandenburg


copa017 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo MyCharp-Mitglieder und Thread-Ersteller,

das ganze klingt super, aber kann ich damit auch die Voip/Call-Methoden aufrufen - wie  hier beschrieben?

Vielen Dank im Voraus!
copa017
30.11.2018 12:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Im aktuellen Ausbaustand ist das leider nicht möglich.

// EDIT:
Da ich aktuell an meinem "FritzBox Manager" weiterarbeite werde ich bei Gelegenheit die VOIP Schnittstelle mit implementieren und eine neue Version der API bereitstellen in der auch die letzten Bugfixes enhalten sind.

Im übrigen: Falls jemand einen Weg findet, das komplette LOG der Box auszulesen per TR064 wäre ich sehr dankbar. - Scheinbar geht das nur für die Internetverbindung selbst, Telefonie und WLAN Logs habe ich bisher nicht lesen können.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am 08.02.2019 15:14.

30.11.2018 17:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 3 Monate.
copa017 copa017 ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.11.2018
Beiträge: 2
Entwicklungsumgebung: VS2017
Herkunft: Brandenburg


copa017 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Daumen hoch Daumen hoch
07.03.2019 21:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Monate.
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo inflames2k!

Kannst du mir bitte kurz einen Status der Entwicklung der FritzboxAPI geben? Werden die vorhandenen Issues ( https://github.com/inflames2k/PS.FritzBox.API/issues) in einer aktuellen Release berücksichtigt beziehungsweise arbeitest du noch an der API?

LG cop
21.05.2019 21:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
22.05.2019 08:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
22.05.2019 22:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
12.06.2019 13:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
12.06.2019 13:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.335
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 12.06.2019 14:23.

12.06.2019 14:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Monate.
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Code Beispiel

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo inflames2k!

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

Verwende ich deinen Code falsch?

C#-Code:
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:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$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 13.08.2019 09:34.

13.08.2019 09:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 13.08.2019 12:42.

13.08.2019 12:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 13.08.2019 14:34.

13.08.2019 14:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.213
Entwicklungsumgebung: Visual Studio 2010 Express

Themenstarter Thema begonnen von inflames2k

inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

C#-Code:
        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 13.08.2019 15:01.

13.08.2019 15:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.079
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

static async Task Main(string[] args) nicht static async void Main(string[] args)
13.08.2019 16:41 Beiträge des Benutzers | zu Buddylist hinzufügen
supercop89
myCSharp.de-Mitglied

Dabei seit: 21.05.2019
Beiträge: 7


supercop89 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
13.08.2019 17:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Chronos Chronos ist männlich
myCSharp.de-Mitglied

Dabei seit: 18.03.2008
Beiträge: 129
Entwicklungsumgebung: VS 2019 CE
Herkunft: NRW


Chronos ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
13.08.2019 17:58 Beiträge des Benutzers | zu Buddylist hinzufügen
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.10.2019 20:38