"Zugangsprofil" in FritzBox via TR064Command setzen?

Begonnen von buzzmain, 30 März 2020, 16:48:17

Vorheriges Thema - Nächstes Thema

buzzmain

Hi Ihr Lieben,
ich möchte in der FritzBox für einzelöne Geräte den Internetzugang an und aus schalten.
Ich dachte dies würde gut gehen via den "Zugangsprofil" Einstellungen im jeweiligen Device.
Manuell (in der FritzBox oberfläche) geht dies auch sehr gut.
Wie kann ich das per TR064 Command machen?

Ich habe soweit alles eingerichtet und kann auch TR064 Commands absetzen. Allerdings habe ich keine Ahnung wie ich das "Zugangsprofil" umschalte.


Ideen, Vorschläge?


Danke Euch
Buzzy
... And on the 8th Day God Created The Homeautomation.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

JoWiemann

#2
Zitat von: Otto123 am 30 März 2020, 19:45:07
Hi,

mit tr064 geht das glaub ich nicht. Hab mal gesucht aber das gefunden:
https://community.openhab.org/t/disable-internet-connection-of-specific-echo-device-on-fritz-box-via-script/91374

Aber nicht probiert ;)

Gruß Otto

Habe das gerade ausprobiert. Funktioniert einwandfrei.

Unter Internet / Filter / Zugangsprofile ein neues Profil angelegt und gespeichert. Dann die zu aktivierenden/deaktivierenden Geräte dem Profil zuordnen.

Dann im neuen Edge (auf Opera Basis) F12 gedrückt und im Fritzbox Fenster auf den Edit Button für das neue Profil gedrückt.

Im Debugger Fenster (siehe beigefügten Screen Shot) Network ausgewählt. Dann auf data.lua geklickt und im Fenster ganz rechts unten ganz nach unten gescrollt. Dort findet man den Eintrag "edit" über "oldpage". "edit" beinhaltet die ID für das Profil. Die braucht man dann für das Aufrufen des Scripts (Habe ich mal angehängt.

Das Script nach /opt/FHEM kopieren und mit chmod -x ausführbar machen.
Mit den beiden Aufrufen kann man das ganze dann auf der Konsole testen:

Profil einschalten -> fritzboxprofile.sh [ip] [password] [profileid] unlimited
Profil ausschalten -> fritzboxprofile.sh [ip] [password] [profileid] never

Und jetzt das Ganze für Fhem umsetzen.

Die beiden Device in Fhem definieren:


defmod FritzBoxProfile dummy
attr FritzBoxProfile room FritzBox
attr FritzBoxProfile webCmd on:off



defmod act_on_FritzBoxProfile notify FritzBoxProfile:.* {\
   if($EVENT eq "on") {\
      system('sudo /opt/fhem/FHEM/fritzboxprofile.sh 192.xxx.xxx.xxx passwort filtprofxxxx unlimited&');;\
   } else {\
      system('sudo /opt/fhem/FHEM/fritzboxprofile.sh 192.xxx.xxx.xxx passwort filtprofxxxx never&');;\
   }\
}
attr act_on_FritzBoxProfile room FritzBox


Und ja, hier kann man das Passwort der Fritte abgreifen. Ist halt so.

Grüße Jörg

PS: eigentlich sollte das auch über luaquery im FritzBox-Modul gehen. Aber da fehlt mir das notwendige Wissen  :-[
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Zitat von: JoWiemann am 30 März 2020, 21:24:09
Und ja, hier kann man das Passwort der Fritte abgreifen. Ist halt so.
Dazu zwei Ideen:
entlehnt von hier https://wiki.fhem.de/wiki/E-Mail_senden#Raspberry_Pi
einmalig
{setKeyValue("myEmailPasswrd",'password')}
Im Codeblock
my $passwrd = getKeyValue("myEmailPasswrd");
oooder man schaut mal, wie das Fritzboxpasswort doch sowieso schon gespeichert ist? Bestimmt mit der gleichen Routine - oder?

Lua query im Modul - ist auch ne Idee. Mal sehen, ich hatte den Syntax von tr064 im Modul schon mal fast verstanden. ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

buzzmain

WOW, das ist mal Super.
Ich werde das ausprobieren.
Danke
... And on the 8th Day God Created The Homeautomation.

buzzmain

Zitat von: Otto123 am 31 März 2020, 15:30:13

Lua query im Modul - ist auch ne Idee. Mal sehen, ich hatte den Syntax von tr064 im Modul schon mal fast verstanden. ;)

Gruß Otto

Das wäre noch eine Spur eleganter...
;)
Nicht dass ich Druck aufbauen will :D
... And on the 8th Day God Created The Homeautomation.

Otto123

Ich habe etwas geforscht:
Es gibt eine Unmenge lua Scripts auf der Fritzbox.
Das Shell Script verwendet das script data.lua
Das 72_FRITZBOX.pm modul verwendet bei luaQuery das Script query.lua. Es sind auch noch ein paar andere lua Scripts in Verwendung.

Also luaQuery ist der falsche Weg und data.lua ist nicht implementiert. Geht also erstmal nur ohne das Modul mit dem Shellscript. :-[
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

JoWiemann

Zitat von: Otto123 am 01 April 2020, 19:45:08
Also luaQuery ist der falsche Weg und data.lua ist nicht implementiert. Geht also erstmal nur ohne das Modul mit dem Shellscript. :-[

Ich habe tupos mal eine pm geschickt.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

buzzmain

... And on the 8th Day God Created The Homeautomation.

JoWiemann

#9
Hallo und sorry an tupol,

ich habe ein bisschen an 72_FRITZBOX.pm herumgebastelt und ein neues get luaData implementiert

Syntax
get <fritzbox_device> luaData argName1 argValue1 [argName2 argValue2] ...

Beispiel:


get <fritzbox_device> luaData edit filtprofxxxx time unlimited budget unlimited parental on filtertype black bpjm on apply nop page kids_profileedit


edit filtprofxxxx         // Zugangsprofil
time unlimited          // unlimited für indirektes Profil = Ein, never für indirektes Profil = aus
parental on              // Internetseiten filtern = ein
filtertype black         // Internetseiten sperren (Blacklist)
bpjm on                   // jugendgefährdende Internetseiten sperren
apply nop                 // apply hat keinen Paramter. In solchen Fällen nop als Parameter angeben
page kids_profileedit // die angesprochene Seite, die editiert werden soll

Die Reihenfolge dürfte egal sein.

Grüße Jörg

PS: Version des Fork unter: https://forum.fhem.de/index.php/topic,118150.0.html
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rudiratlos

Hallo Jörg,

Ich denke, Du hast genau das programmiert, was ich suche! Aber: ich brings nicht hin...
Ich habe Deine 72_FRITZBOX.pm am Laufen (ich sehe die get LuaData Option), habe die filtprof Nr gefunden, aber erhalte immer ein

"Unknown argument edit, choose one of ringTones:noArg luaQuery luaData tr064ServiceList:noArg"

nachdem ich z.B. ein

"get FritzBox edit filtprof6077 time unlimited" eingebe.

Hast Du eine Idee, was ich falsch mache?

Gruß,
Peter

rudiratlos

Hat sich erledigt...

Nach sauberem Neustart von FHEM klappt es.
Mir war nicht klar, daß man alle Parameter eingeben muß.
also z.B.:
"get FritzBox luaData edit filtprof6077 time unlimited budget unlimited parental nop filtertype nop bpjm nop apply nop page kids_profileedit" funktioniert!

Vielen Dank für Deine Mühe,
Peter

JoWiemann

Zitat von: rudiratlos am 15 April 2020, 00:03:07
also z.B.:
"get FritzBox luaData edit filtprof6077 time unlimited budget unlimited parental nop filtertype nop bpjm nop apply nop page kids_profileedit" funktioniert!

Hallo Peter,

anbei mal eine Muss <>/Kann [] Ergänzung. Wird Kann nicht gesetzt, wird es auf einen default Wert gesetzt. Da musst Du dann entscheiden, was Du möchtest.

<edit filtprofxxxx>         // Zugangsprofil
[time unlimited]             // unlimited für indirektes Profil = Ein, never für indirektes Profil = aus
[parental on]                 // Internetseiten filtern = ein
[filtertype black]            // Internetseiten sperren (Blacklist)
[bpjm on]                      // jugendgefährdende Internetseiten sperren
[apply nop]                   // apply hat keinen Paramter. In solchen Fällen nop als Parameter angeben
<page kids_profileedit> // die angesprochene Seite, die editiert werden soll

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rudiratlos

Hallo Jörg,

danke für die Rückmeldung. Ich habe es jetzt mal mit:

"get FritzBox luaData edit filtprof6077 time never page kids_profileedit"

probiert. Das führte aber zum FHEM Absturz und folgendem Eintrag im log:

"malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<script>if (typeof j...") at ./FHEM/72_FRITZBOX.pm line 4797."

Die vollständige Version läuft weiter ohne Probleme. Nur, falls Du mal Langeweile hast...

Gruß,
Peter

Albi

Hallo ich habe das ganze auch mal versucht.


Was ich möchte:

- In der Oberfläche der Fritbox kann ich bei der Kindersicherung die Zugangsprofile ändern.
- dort möchte ich eben beim Gerät "SpielePC" das Zugangsprofil Ändern
- Ich habe hier mehrere Profile wie "Kindersperre" "Ferien" "Frei" bereits angelegt.
- Das Profil Kindersperre hat bei mir "filterprof8932"

In Fhem habe ich die Fritbox angelegt und bin auch verbunden mit user und PW

Ich habe das gänderte PM in Fhem eingebaut und auch einen Neustart von FHEM durchgeführt.

Gebe ich nun den Befehl (zum testen)
get Fritzbox luaData edit filtprof8932 time unlimited budget unlimited parental nop filtertype nop bpjm nop apply nop page kids_profileedit

erhalte ich folgenden Fehler

nknown argument luaData, choose one of ringTones:noArg luaQuery luaData tr064ServiceList:noArg


Ist mein vorhaben überhaupt so umsetzbar?

Es handelt sich um eine FritzBox 7590 mit OS 07.12


Kann es evtl sein, dass dort telnet nicht mehr aktivirbar ist? Denn im Fritzbox Device in Fhem steht folgendes:

PERL    Modul functionality limited because of missing perl modules: Net::Telnet Soap::Lite

Gruß Albi
Fhem Raspberry3+

TabletUI mit Abfallkalender, der auch per Telegramm sendet - Verkehrsmeldung über Google, das per DOIF an Telegramm bei Störung meldet - Sonnoff mit Tasmota (mqtt) und Shelly (mqtt und mqtt2) - Alexa Verknüpfung - Benzinpreis auf Tablet UI über HTTPMOD - Wetter + Pollen