"Zugangsprofil" in FritzBox via TR064Command setzen?

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

Vorheriges Thema - Nächstes Thema

kalkofe3

Moin, ich habe mich ein bisschen in die möglichen Parameter eingearbeitet und möchte hier meine Erkenntnisse teilen.  :D

Grundsätzlich werden die in #12 von Jörg genannten Parameter 1:1 als Key-Value-Paare im HTTP-POST-Aufruf der entsprechenden Fritzbox-Seite verwendet. Zwischendurch werden sie als Perl-Hash gespeichert, daher muss ein eigentlich leerer Key den Value "nop" bekommen. Das wird dann irgendwo unterwegs durch einen leeren String ersetzt.

Der Befehl an sich heißt get FritzBox luaData

Danach können dann in beliebiger Reihenfolge die folgenden Parameter stehen:

<page kids_profileedit> // Hiermit wird die Seite "Zugangsprofil <Name> bearbeiten" der FritzBox angesprochen.
// Für unsere Zwecke also der wichtigste Parameter und darf nicht weggelassen werden.
<edit filtprofxxxx> // Das Zugangsprofil, das bearbeitet werden soll.
[apply nop] // Gibt an, dass das Profil tatsächlich verändert werden soll. Entspricht dem Klick auf "OK" statt "Abbrechen"
[time unlimited|limited|never] // Auswahl des "Zeitraums" - also immer, eingeschränkt oder nie. Zu limited siehe weiter unten.
[parental on] // Entspricht Haken setzen bei "Internetseiten filtern". Wenn nicht angegeben,
// wird der Haken nicht gesetzt, d.h. ein "parental off" ist überflüssig
[filtertype white|black] // Auswahl von Whitelist- oder Blacklist-Filterung
[bpjm on] // Haken bei "BPjM-Modul", "bpjm off" ist überflüssig (siehe parental)
[netappschosen x,y,z|nop] // Fügt "Gesperrte Netzwerkanwendungen" hinzu. x,y und z sind Zahlen. Herausfinden wie Profilcode.
// Liste gesperrter Anwendungen löschen mit "nop".
[timer_item_x hhmm;s;m] // Definiert bei "time limited" den Schaltplan. Jede Angabe dieser Form definiert einen Umschaltpunkt.
// Werden bei "time limited" keine Umschaltpunkte übergeben oder der definierte Plan ist widersprüchlich,
// wird der Zeitraum auf "never" gesetzt.


Details zu timer_item_x:

x fortlaufende Zahl beginnend mit 0
hhmm Uhrzeit in 15-Minuten-Schritten
s Status (0 = ausschalten, 1 = einschalten)
m Maske zur Auswahl der betroffenen Tage. Montag entspricht Bit 0 und Sonntag Bit 6.

D.h., die Zahl eines Tages entspricht der jeweiligen 2er-Potenz. Sind mehrere Tage gemeint, müssen die einzelnen "Tageszahlen" addiert werden.
m    | betroffene Tage
----------------------
1    | Montag
2    | Dienstag
4    | Mittwoch
8    | Donnerstag
16  | Freitag
32  | Samstag
64  | Sonntag
3    | Montag, Dienstag
31  | Montag bis Freitag
96  | Samstag, Sonntag
127| Montag bis Sonntag

Leider konnte ich "time limited" noch nicht erfolgreich testen, da unterwegs das Semikolon zur Trennung des Strings führt und der Parameterstring so gar nicht an die Fritzbox übergeben wird.

Kann mir jemand sagen, wie ich das Semikolon unbeschadet in den HTTP-POST-Aufruf bekomme? :D

Cheers
kalki

kalkofe3

#31
Zitat von: kalkofe3 am 31 Mai 2020, 21:54:04
Kann mir jemand sagen, wie ich das Semikolon unbeschadet in den HTTP-POST-Aufruf bekomme? :D

OK, hab's rausgefunden. Doppeltes Semikolon (;; ) muss ich verwenden, da ich fhem() aus Perl heraus aufrufe. https://wiki.fhem.de/wiki/Escapen_in_Perlbefehlen

Damit funktioniert auch das Setzen von Zeitplänen im Zugangsprofil!

Det20

#32
Wann gehen die Änderungen online? Ich möchte ungtern die 72_FRITZBOX aus dem Update excluden, bin aber sehr an den Änderungen interessiert. Zudem basiert die hier vorgestellte 72_FRITZBOX nicht auf der aktuellen vom 6.6.2020. Oder (und ich kenne mich in der Entwicklung nicht aus) ... Geht das ev als AddOn?

CGR

Hallo,

Danke für die Ergänzung im Modul und die Erläuterungen.

Gibt es auch eine (einfache) Möglichkeit, den aktuellen Status eines Zugangsprofils auszulesen, zum Beispiel, ob die Zeit auf unlimited, limited oder never steht? So könnte man es in einem TabletUI anzeigen.

Gruß
Christian


CGR

... und noch ein Zusatz zu #30:


[budget unlimited|limited] // unlimited: Zeitbudget unbegrenzt; limited: Zeitbudget eingeschränkt


Zusätzlich muss man bei ,,budget limited" das Budget für jeden Wochentag angeben:

hours_monday 0–24
minutes_monday 0–60
hours_tuesday 0–24
minutes_tuesday 0–60
hours_wednesday 0–24
minutes_wednesday 0–60
hours_thursday 0–24
minutes_thursday 0–60
hours_friday 0–24
minutes_friday 0–60
hours_saturday 0–24
minutes_saturday 0–60
hours_sunday 0–24
minutes_sunday 0–60


Gibt man für einen Tag nur die Stundenzahl an, werden 0 Minuten eingetragen.
Gibt man nur die Minutenzahl an, wird für die Stunden eine 0 eingetragen.
Gibt man weder Stunden noch Minuten an, wird 24 Stunden 0 Minuten eingetragen.

Jetzt kann ich im TabletUI zwischen Internet an, Internet aus und Internet zeitgesteuert umschalten. :)
Nur die Darstellung des aktuellen Zustandes fehlt mir noch.

Gruß
Christian

skinny norris

Guten Tag,
ist es geplant die Änderung in das offizielle Release des Moduls einzubauen ?

GreenFHEMfan

#36
Bei mir stürzt FHEM ab, wenn ich die "luaData" Parameter eingebe.
Zur Info, ich habe keine extra Devices oder sh.-Dateien gebildet - so wie ich es verstanden habe, geht es ohne sie. Habe nur die neue PM-Datei von Fritzbox geladen und vom update erstmal ausgeschlossen.

Genau gesagt, stürzt FHEM bei folgenden Befehl ab : get Fritzbox luaData edit filtprof7983 time never page kids_profileedit

Wenn ich "page kids_profileedit" weglasse kommt folgendes :


Result of data = 'edit' => 'filtprof7983'
'time' => 'never'

----------------------------------------------------------------------
Unexpected result: $VAR1 = {
          'data' => {
                      'fonnum' => {
                                    'led' => 'led_green',
                                    'txt' => '3 Rufnummern aktiv: xxxxxxxxxxxxxxx',
                                    'title' => 'Telefonie',
                                    'link' => 'numLi'
                                  },
                      'docsis' => {
                                    'title' => 'Kabel',
                                    'link' => 'docOv',
                                    'led' => 'led_green',
                                    'down' => "\x{e2}\x{86}\x{93} 563,2 Mbit/s",
                                    'txt' => 'verbunden',
                                    'up' => "\x{e2}\x{86}\x{91} 26,2 Mbit/s"
                                  },
                      'net' => {
                                 'devices' => [
                                                {
                                                  'name' => 'FRITZ!Repeater 1200, FRITZ-Repeater-1200-Paul',
                                                  'nexus' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                                                  'classes' => 'led_green',
                                                  'type' => 'WLAN - 2,4 GHz',
                                                  'url' => 'http://192.168.178.89'
                                                },
.
.
.
.
usw....


Warum stürzt FHEM ab?

Gruß Maik
Rasp 3B+,4 / CUL /  Duofernstick / SIGNALduino (nanocul CC1101 optiboot) / mqtt

GreenFHEMfan

OK bei einem Blick in die Log Datei steht dort:

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
Rasp 3B+,4 / CUL /  Duofernstick / SIGNALduino (nanocul CC1101 optiboot) / mqtt

GreenFHEMfan

Außerdem sehe ich :

FRITZBOX Fritzbox: Define.255 Modul functionality limited because of missing perl modules: Net::Telnet

habe aber "libsoap-lite-perl" installiert!
Rasp 3B+,4 / CUL /  Duofernstick / SIGNALduino (nanocul CC1101 optiboot) / mqtt

CGR

Ich glaube, dass zumindest

apply nop

hinzu genommen werden muss, damit der Befehl wirksam wird. Ob noch weitere Parameter aus dem Beitrag von kalkofe3 zwingend sind, weiß ich nicht.

Bei mir funktioniert

get FritzBox luaData edit filtprofXXXX time never parental on filtertype black bpjm on apply nop page kids_profileedit

jedenfalls.

GreenFHEMfan

WOW

Danke mein Freund - das apply nop war es  ;D

Das Zugangs-Profil ist auf "keine" eingestellt!

Vielen vielen Dank! ;)
Rasp 3B+,4 / CUL /  Duofernstick / SIGNALduino (nanocul CC1101 optiboot) / mqtt

Albi

Hallo,


ich habe eine Frage zu dem Thema.


In der Fritzbox gibt es den Button "Sperren" in der Kindersicherung. Kann man über den tr064Command auch dieses "Sperren" und natürlich auch wieder "Entsperren" ausführen?

Siehe Screenshot

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

Otto123

Der initiale Betreff und der restliche Thread führen jetzt zur Verwirrung.
Zur Klarstellung:
Alle Lösungen hier haben nichts mit TR064 zu tun sondern basieren auf lua :)

Ich will damit die letzte Frage nur zum Teil beantworten - mit TR064 geht es sicher nicht. Aber eventuell mit lua. ;)
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

CGR

Zitat von: Albi am 19 Januar 2021, 09:41:04
In der Fritzbox gibt es den Button "Sperren" in der Kindersicherung. Kann man über den tr064Command auch dieses "Sperren" und natürlich auch wieder "Entsperren" ausführen?

So wie ich das sehe, ist für das Sperren die kids_userlist.lua zuständig und nicht die data.lua. Daher funktioniert es mit get FritzBox luaData ... wohl nicht.

Albi

Hmm,


also für mich als Newbie in dem Bereich ist das eine wie das andere völlig neu.

Ich habe mal vor Monaten mich anhand von diesem Thread rangewagt. Aber nur mit mässigem Erfolg. Konnte Profile Ändern.


Aber eigentlich möchte ich ja nur mit einem Befehl eine Sperre für ein Grät geben und wieder aufheben....


Ich habe schon einiges gegoogelt, komme aber nicht richtig weiter



Aber mal danke für eure Antworten


A.
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