FBoxAPI 0.1.33

.NET 6.0 .NET Core 3.1 .NET Standard 2.0 .NET Framework 4.7.2
dotnet add package FBoxAPI --version 0.1.33
NuGet\Install-Package FBoxAPI -Version 0.1.33
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FBoxAPI" Version="0.1.33" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FBoxAPI --version 0.1.33
#r "nuget: FBoxAPI, 0.1.33"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FBoxAPI as a Cake Addin
#addin nuget:?package=FBoxAPI&version=0.1.33

// Install FBoxAPI as a Cake Tool
#tool nuget:?package=FBoxAPI&version=0.1.33

FBoxAPI

Dieses Projekt ist ein .NET Bibliothek für die Schnittstellen TR-064 und AHA der AVM Fritz!Box. Das Projekt ist eine Ausgliederung aus meinem Addin für Microsoft Outlook: Fritz!Box Telefon-dingsbums V5

Dieses Addin ist in meiner Freizeit entstanden. Ich erwarte keine Gegenleistung. Ein Danke ist ausreichend. Wer mir dennoch etwas Gutes zukommen lassen möchte kann dies gerne tun:

Donate Nuget

Grundlagen

Die Schnittstelle basiert auf der AVM-Dokumentation.

Nutzung

Initialisierung

Die Verwendung ist recht einfach angedacht. Es muss eine neue FBoxAPI.FritzBoxTR64-Klasse instanziiert werden (auch für AHA). Hierfür sind zwei Parameter erforderlich: IP-Adresse der Fritz!Box und die Anmeldeinformationen. Nutzername und Passwort werden in einer neuen Instanz der System.Net.NetworkCredential-Klasse hinterlegt und übergeben. Es gibt mehrere Möglichkeiten die Schnittstelle zu initiieren.

  • Übergabe der benötigten Daten als Einzel-Parameter
  • Dimensionierung einer FBoxAPI.Settings-Klasse, die alle notwendigen Daten enthält

Im Folgenen ist ein kleines Beispiel aufgeführt, wie die SessionID der Fritz!Box abgefragt werden kann.

Private Function GetSessionID() As String
    ' Bereitstellung der Variable(n), in die das Ergebnis gesetzt werden sollen.
    Dim SessionID As String = "0000000000000000"

    ' Erstelle Anmeldeinformationen für die Fritz!Box bereit
    Dim Nutzername As String = "Fritz"
    Dim Passwort As String = "Box"

    ' Anmeldeinformationen können Nothing sein, falls nur Actions ausgeführt werden, die keine Anmeldung erfordern.
    Dim Anmeldeinformationen As New Net.NetworkCredential(Nutzername, Passwort)

    ' Starte die TR-064 Schnittstelle zur Fritz!Box
    Using FBoxTR064 As New FBoxAPI.FritzBoxTR64("192.168.178.1", Anmeldeinformationen)

        ' Auswahl des Service
        With FBoxTR064.Deviceconfig

            ' Action ausführen
            If .GetSessionID(SessionID) Then
                ' Alles OK: SessionID enthält eine gültige SessionID
            Else
                ' Ein Fehler ist aufgetreten
            End If
        End With

    End Using

    Return SessionID

End Function

Alternativ:

FBoxTR064 = New FBoxAPI.FritzBoxTR64(New FBoxAPI.Settings With {.Anmeldeinformationen = Anmeldeinformationen,
                                                                .FritzBoxAdresse = "192.168.178.1",
                                                                .FBAPIConnector = New FBoxAPIConnector,
                                                                .AuraService = True})

Hinweis: Wenn der AURA-Service (AVM USB Remote Access) verwendet werden soll, muss dies bei der Initialisierung der Schnittstelle übergegeben werden. Dies ist über die Eigenschaft AuraService der FBoxAPI.Settings-Klasse möglich.

Logging

Mit Hilfe des FBAPIConnector-Schnittstelle kann eine eigene Routine verknüpft werden, die das Logging übernimmt. Die Schnittstelle gibt folgende relevante Daten in der Containerklasse FBoxAPI.LogMessage für das Logging aus:

  • Level (System.Enum) für das LogLevel (Trace bis Fatal)
  • Message (System.String)
  • Exception (System.Exception)
  • CallerMemberName (System.String)
  • CallerFilePath (System.String)
  • CallerClassName (System.String)
  • CallerLineNumber (System.String)

Beispiel für NLog:

Imports FBoxAPI

Friend Class FBoxAPILog
    Implements IFBoxAPIConnector

    Private Property NLogger As Logger = LogManager.GetCurrentClassLogger

    Public Sub LogMessage(MessageContainer As LogMessage) Implements IFBoxAPIConnector.LogMessage
        With MessageContainer
            Dim LogEvent As New LogEventInfo() With {.Level = NLog.LogLevel.FromOrdinal(MessageContainer.Level),
                                                     .LoggerName = MessageContainer.CallerClassName,
                                                     .Exception = MessageContainer.Ex,
                                                     .Message = MessageContainer.Message}

            LogEvent.SetCallerInfo(.CallerClassName, .CallerMemberName, .CallerFilePath, .CallerLineNumber)

            NLogger.Log(LogEvent)
        End With
    End Sub

    Public Sub Signal2FAuthentication(Methods As String) Implements IFBoxAPIConnector.Signal2FAuthentication
        ' ...
    End Sub
End Class
Zwei-Faktor-Authentifizierung

Die Nutzung der Zwei-Faktor-Authentifizierung kann ab Fritz!OS 7.39 nicht mehr deaktiviert werden. Das Setzen verschiedener Einstellungen bedarf nun einer zusätzlichen Bestätigung durch den Nutzer. Der Ablauf des Authentifizierungsprozesses ist in X_AVM-DE_Auth beschrieben. Sobald für eine Action eine eine Zwei-Faktor-Authentifizierung erforderlich ist, signalisiert diese API dies über die FBoxAPIConnector-Schnittstelle, welche hierfür mit der Routine Signal2FAuthentication ergänzt wurde. Der Parameter Methods enhält die erlaubten Methoden, z. B. button,dtmf;*14048. Sobald der Nutzer die Authentifizierung durchgeführt hat, wird die ursprüngliche Action erneut ausgeführt. Die Ergebnisse des Authentifizierungsprozesses werden über die LogMessage ausgegeben.

  • Über die Eigenschaft AbortAuthentication kann der API signalisiert werden, dass der Authentifizierungsporzess abgebrochen werden soll.
  • Über die Eigenschaft AuthenticationSuccesful signalisiert die API, dass der Authentifizierungsporzess abgeschlossen wurde.
Imports FBoxAPI

Friend Class FBoxAPILog
    Implements IFBoxAPIConnector

    Public Sub LogMessage(MessageContainer As LogMessage) Implements IFBoxAPIConnector.LogMessage
        ' ...
    End Sub

    Public Property AbortAuthentication As Boolean Implements IFBoxAPIConnector.AbortAuthentication

    Public Property AuthenticationSuccesful As Boolean Implements IFBoxAPIConnector.AuthenticationSuccesful

    Public Sub Signal2FAuthentication(Methods As String) Implements IFBoxAPIConnector.Signal2FAuthentication
        MsgBox(String.Format($"Zwei-Faktor-Authentifizierung: {Methods}"), MsgBoxStyle.Information, "Zwei-Faktor-Authentifizierung")
    End Sub
End Class

Bekannte Probleme und Hinweise

  • Die Dokumentation von AVM ist nicht immer korrekt. Z. B. wird in der Dokumentation X_AVM-DE_AppSetup der Parameter MyFritzDynDNSEnabled der Action GetAppRemoteInfo aufgelistet. Dieser Parameter lautet aber NewMyFritzEnabled. Es kann nicht ausgeschlossen werden, dann auch anderer Stelle ähnliche Probleme auftreten.
  • Die Services und Actions wurden per Copy&Paste aus den vorliegenden Dokumentationen zusammengestellt. Bitte habt Verständnis, dass ich nicht alles testen kann.
  • Während einer laufenden Zwei-Faktor-Authentifizierung wird der aufrufende Thread blockiert.

Umsetzung

folgende angehakte TR-064 Services werden derzeit unterstützt. Falls etwas fehlen sollte, oder etwas nicht funktioniert, dann gebt bitte Bescheid.

Des Weiteren wird das AVM Home Automation-Interface unterstützt.

Markenrecht

Dieses Software wird vom Autor privat in der Freizeit als Hobby gepflegt. Mit der Bereitstellung der Software werden keine gewerblichen Interessen verfolgt. Es wird aus rein ideellen Gründen zum Gemeinwohl aller Nutzer einer Fritz!Box betrieben. Die Erstellung dieser Software erfolgt nicht im Auftrag oder mit Wissen der Firmen AVM GmbH. Diese Software wurde unabhängig erstellt. Der Autor pflegt im Zusammenhang mit dieser Software keine Beziehungen zur Firma AVM GmbH.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48 net481
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETFramework 4.7.2

    • No dependencies.
  • .NETFramework 4.8

    • No dependencies.
  • .NETFramework 4.8.1

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.33 121 2/4/2023
0.1.32 138 1/25/2023
0.1.31 162 12/24/2022
0.1.30 206 11/16/2022
0.0.26 350 6/29/2022
0.0.25 347 3/25/2022
0.0.24 317 2/27/2022
0.0.23 296 2/13/2022
0.0.22 306 1/27/2022
0.0.21 309 1/19/2022
0.0.20 316 1/18/2022
0.0.17 307 1/16/2022
0.0.15 317 1/15/2022
0.0.14 312 1/13/2022
0.0.12 174 1/3/2022
0.0.11 165 12/30/2021
0.0.9.1 191 12/19/2021
0.0.9 184 12/19/2021
0.0.8 251 12/14/2021
0.0.7 191 12/12/2021
0.0.6 186 12/5/2021
0.0.5 179 12/4/2021
0.0.4 185 12/1/2021
0.0.3 179 11/28/2021
0.0.1 225 11/27/2021