NEWS
[Problem] FritzBox WLAN schalten mittels TR-064
-
Grüezi Community
Gemäss der publizierten AVM Dokumentation bzgl. der API für TR-064 Support WLANConfiguration wurde mit der Version 23 (23.03.2018, wlanconfigSCPD.pdf) die neue Action X_AVM-DE_SetWLANGlobalEnable implementiert.
Wenn ich diese richtig interpretiere, lässt sich damit das WLAN analog wie bei Betätigung der physischen WLAN-Taste an der FritzBox schalten. Die Schaltung geschieht unabhängig, des 2.4 GHz-, oder 5.0 GHz-, oder gleichzeitig aktivierten WLAN-Frequenzbandes.
In der github-Dokumentation vom ioBroker.tr-064 wird die Möglichkeit gezeigt, jedes Kommando gemäss der AVM FritzBox Spezifikation, als Json an die FritzBox zu
kommunizieren. Dazu wird exakt anhand eines Beispiels beschrieben, wie die Nachricht als Json verpackt an die FritzBox übermittelt werden kann.Wennn ich das gezeigte Beispiel zum Schalten des Anrufbeantworters (x_tam.pdf) wie folgt verwende, wird als Antwort im commandResult nur {} empfangen:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:X_AVM-DE_TAM:1","action": "SetEnable", "params": {"NewIndex": "0","NewEnable": "1"}}');commandResult:
{}Wenn ich mit nachfolgendem Kommando z.B. einen spezifischen Telefonbucheintrag (x_contactSCPD.pdf) abfrage, erscheint im commandResult folgende korrekte Antwort im XML-Format:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:X_AVM-DE_OnTel:1","action": "GetPhonebookEntry","params": {"NewPhonebookID": 1, "NewPhonebookEntryID" : 6}}');commandResult:
{"NewPhonebookEntryData":"<?xml version="1.0" encoding="utf-8"?><contact modified="0"><category>0</category><id>people/c268485185529455437</id><person><realName>Andreas Tobler</realName></person><telephony\nnid="2"><number type="label:Main" prio="1" id="0">+41 71 446 48 53</number><number\ntype="mobile" id="1">+41 79 433 71 93 </number></telephony><services\nnid="1"><email classifier="business" prio="1" id="0">andreastobler@gmx.ch</email></services><setup /><uniqueid>63</uniqueid><etag>%EgsBAgMJCycuNz0+PxoEAQIFByIMV1NtUEtKUjlXR289</etag></contact>"}Soweit ich in der Community gesehen habe, existieren nicht wenige User, welche den tr-064 Adapter nutzen und festgestellt haben, dass es momentan nicht möglich ist, über die bereitgestellte tr-064 Schnittstelle das FritzBox-WLAN sauber schalten zu können.
Aus diesem Grund wollte ich mich erkundigen, ob jemand bereits erfolgreich mittels der oben beschriebenen Möglichkeit, die von AVM zur Verfügung gestellte Schnittstelle X_AVM-DE_SetWLANGlobalEnable zum Schalten des WLAN erfolgreich implementieren konnte?
Soweit ich die AVM API (wlanconfigSCPD.pdf) verstanden habe, sollte mit folgendem Kommando das FritzBox WLAN ein- bzw. ausgeschaltet werden können:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:WLANConfiguration:1","action": "X_AVM-DE_SetWLANGlobalEnable","params": {"NewX_AVM-DE_WLANGlobalEnable": "0", "X_AVM-DE_WLANGlobalEnable": "1"}');commandResult:
Mit der Version 23 vom 23.03.2018 wurde von AVM diese neue Action eingeführt und ich verstehe nicht, warum in commandResult keine Antwort empfangen wird. Könnte es evtl. an der Implementation vom Adapter tr-064 liegen, oder mache ich einen Denkfehler bei der Interpretation der AVM API Spezifikation?
Falls jemand über das notwendige Wissen verfügt und mir zeigen könnte, wo ich auf dem Schlauch stehe, oder sogar den tr-064 Adapter um diese Schnittstelle zur
sauberen Schaltung vom FritzBox WLAN erweitern kann, wäre wahrscheinlich nicht nur ich überglücklich darüber?In diesem Sinne besten Dank für Eure Unterstützung.
Herzlichst
Urs -
@kobi Mit dem Befehl kannst WLAN aus- und einschalten. Ein Antwort gibts nicht.
{ "service": "urn:dslforum-org:service:WLANConfiguration:1", "action": "X_AVM-DE_SetWLANGlobalEnable", "params": { "NewX_AVM-DE_WLANGlobalEnable": 0 } }
Mit 0 solltest Du das ausschalten, mit 1 einschalten.
Natürlich "unbestätigt" in den command Datenpunkt eingeben.
Also Abschalten ging bei mir - einschalten kann ich leider nicht, da zwischen dem iobroker und meiner FB eine WLAN Verbindung ist.
Eine Antwort gibts nicht - aber das Ausschalten funktioniert. Jedenfalls keinesfalls nur die SetEnable Funktion nutzen - die disabled Dir Dein 2,4GHz und das bekommst auch nicht mehr mit dem Taster eingeschaltet. Selbst ein Restore der WLAN Einstellungen hat nichts gebracht, sondern ich musste den iobroker über LAN an die FB hängen und das Netz mit 1 wieder enablen. Über die Oberfläche war alles was 2,4GHz betrifft nicht mehr anwählbar.
Mit GetInfo bekommst Du jedenfalls den Status:
{ "service": "urn:dslforum-org:service:WLANConfiguration:1", "action": "GetInfo", "params": {} }
Antwort:
{ "NewEnable": "1", "NewStatus": "Up", "NewMaxBitRate": "Auto", "NewChannel": "11", "NewSSID": "SSID", "NewBeaconType": "11i", "NewX_AVM-DE_PossibleBeaconTypes": "None,11i,WPAand11i,11iandWPA3", "NewMACAddressControlEnabled": "1", "NewStandard": "n", "NewBSSID": "00:00:00:00:00:00", "NewBasicEncryptionModes": "None", "NewBasicAuthenticationMode": "None", "NewMaxCharsSSID": "32", "NewMinCharsSSID": "1", "NewAllowedCharsSSID": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz !\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~", "NewMinCharsPSK": "64", "NewMaxCharsPSK": "64", "NewAllowedCharsPSK": "0123456789ABCDEFabcdef" }
Aber wie gesagt SetEnable - da hat nicht mal ein Restore über eine Export Datei geholfen - obwohl ich auch nur die WLAN Parameter wiederhergestellt hatte - vielleicht wird welche Bänder genutzt werden auch woanders gespeichtert.
Also mit dem X_AVM-DE_SetWLANGlobalEnable verhält es sich aber wie mit Taster drücken. Sprich die WLAN LED geht aus und kannst es mit dem Taster wieder einschalten.
Wenn übrigens ein Service nur IN Parameter hat, dann gibts auch keine Rückantwort (bzw. eine leere).
Nur wenn ein Service - sowohl IN und OUT Parameter unterstützt bekommst Du auch eine Antwort. Willst Du also die WLAN Eigenschaften eines bestimmten Gerätes mit einer bestimmten IP-Adresse abfragen, gibst Du das als Input mit - und bekommst die 4 Parameter als Ausgabe:
In der Praxis sieht das so aus:
{ "service": "urn:dslforum-org:service:WLANConfiguration:1", "action": "X_AVM-DE_GetSpecificAssociatedDeviceInfoByIp", "params": {"NewAssociatedDeviceIPAddress":"192.168.178.56"} }
und das Ergebnis (MAC Adresse genullt
)
{ "NewAssociatedDeviceMACAddress": "00:00:00:00:00:00", "NewAssociatedDeviceAuthState": "1", "NewX_AVM-DE_Speed": "54", "NewX_AVM-DE_SignalStrength": "69" }
Auch bei Deinem Anrufbeantworterbeispiel kannst Du keine Antwort erwarten, da nur Eingabeparameter:
Also ist das völlig normal, dass Du nicht auf jedes Kommando eine Ausgabe erhälst.
-
@kobi sagte in [Problem] FritzBox WLAN schalten mittels TR-064:
Aus diesem Grund wollte ich mich erkundigen, ob jemand bereits erfolgreich mittels der oben beschriebenen Möglichkeit, die von AVM zur Verfügung gestellte Schnittstelle X_AVM-DE_SetWLANGlobalEnable zum Schalten des WLAN erfolgreich implementieren konnte?
Soweit ich die AVM API (wlanconfigSCPD.pdf) verstanden habe, sollte mit folgendem Kommando das FritzBox WLAN ein- bzw. ausgeschaltet werden können:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:WLANConfiguration:1","action": "X_AVM-DE_SetWLANGlobalEnable","params": {"NewX_AVM-DE_WLANGlobalEnable": "0", "X_AVM-DE_WLANGlobalEnable": "1"}');So was ist natürlich Schwachsinn - Du musst Dich schon entscheiden, ob Du Ein- oder Ausschalten willst.
Also entweder
"NewX_AVM-DE_WLANGlobalEnable": "0" zum Ausschalten oder
"NewX_AVM-DE_WLANGlobalEnable": "1" zum Einschalten.Beides als Parameter mitzugeben, macht kaum Sinn.
-
@mickym Danke für Deine prompte und kompetente Antwort!
Mit folgendem Befehl gemäss Deiner Beschreibung, lässt sich das MainWLAN korrekt ausschalten:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:WLANConfiguration:1","action": "X_AVM-DE_SetWLANGlobalEnable","params": {"NewX_AVM-DE_WLANGlobalEnable": 0}');commandResult:
{}Mit folgendem Befehl gemäss Deiner Beschreibung, lässt sich das MainWLAN korrekt einschalten:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:WLANConfiguration:1","action": "X_AVM-DE_SetWLANGlobalEnable","params": {"NewX_AVM-DE_WLANGlobalEnable": 1}');commandResult:
{}Mit folgendem Befehl gemäss Deiner Beschreibung, lässt sich der Anrufbeantworter[0] korrekt ausschalten:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:X_AVM-DE_TAM:1","action": "SetEnable", "params": {"NewIndex": 0,"NewEnable": 0}}');commandResult:
{}Mit folgendem Befehl gemäss Deiner Beschreibung, lässt sich der Anrufbeantworter[0] korrekt einschalten:
command:
setState('tr-064.0.states.command', '{"service": "urn:dslforum-org:service:X_AVM-DE_TAM:1","action": "SetEnable", "params": {"NewIndex": 0,"NewEnable": 1}}');commandResult:
{}Wie Du richtig bemerkts hast, wird der Befehl in commandResult nur quittiert, falls in der Befehlssequenz sowohl IN- als auch OUT-Parameter involviert waren!
Vielen Dank für Deine wertvolle Unterstützung!
@Apollon77 Soweit ich im Änderungsprotokoll sehen kann, bist Du des Öfteren mit dem Adapterunterhalt von tr-064 beschäftigt. Als Anregung wäre es für alle User sehr hilfreich, wenn der bestehende Datenpunkt (wlan) zum globalen Schalten aller aktiven WLAN Bänder (2.4 GHz, 5.0 GHz) genutzt werden könnte. Momentan funktioniert das leider nicht, sodass jeder User nur mittels eigenem Befehl via tr-064.0.states.command, ein sauberes Schalten vom MainWLAN, analog zur FritzBox WLAN-Taste realisieren kann. Vielleicht besteht ja die Möglichkeit, diesen Wunsch bei der nächsten Modifikationen einfliessen zu lassen?
-
@kobi bitte github issue mit allen Infos anlegen.