[Frage] FRITZ!WLAN Repeater N/G: Radiostart per Bookmark

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
49
Punkte für Reaktionen
2
Punkte
8
Hallo,

ich suche nach einer Möglichkeit, den Radiostart (Internetradio auf UKW) bei meinem FRITZ!WLAN Repeater N/G zu beschleunigen. Ich dachte an einen Link in meinen Bookmarks, der sozusagen das Klicken des Play-Buttons in der Weboberfläche des Repeaters übernimmt (Audio -> Internetradio -> Play [Nr. 1]). Natürlich ist kein Passwortschutz vorhanden.
Habt ihr eine Idee? Die Weboberfläche basiert anscheinend auf JavaScript. Wie rufe ich die Play-Funktion also per Hyperlink/Bookmark auf?

Gruß
manni22
 
Eine gute Idee,

da ich aber nicht wüsste wie, wäre das Verschieben in den AVM Modifikationen Bereich vllt sinnvoll... Zumal dort denke ich mehr Leute mit einer Lösung reinschauen als hier.
 
Hallo,

danke für die Antwort. Kann ein Moderator bitte den Thread dorthin verschieben?

Vielen Dank,
manni22
 
Danke für das Verschieben in diesen Bereich. Hat hier jemand eine Antwort auf meine Frage?

Vielen Dank schon mal vorab,
manni22


Hallo,

ich suche nach einer Möglichkeit, den Radiostart (Internetradio auf UKW) bei meinem FRITZ!WLAN Repeater N/G zu beschleunigen. Ich dachte an einen Link in meinen Bookmarks, der sozusagen das Klicken des Play-Buttons in der Weboberfläche des Repeaters übernimmt (Audio -> Internetradio -> Play [Nr. 1]). Natürlich ist kein Passwortschutz vorhanden.
Habt ihr eine Idee? Die Weboberfläche basiert anscheinend auf JavaScript. Wie rufe ich die Play-Funktion also per Hyperlink/Bookmark auf?

Gruß
manni22
 
Ich wollte diesen Thread nochmal herausgraben, weil ich die Hoffnung habe, dass nun jemand im Forum zufällig eine Antwort parat hat.
Wie kann man das Starten vom Webradio vereinfachen, wenn man nicht auf die Weboberfläche oder auf den Touchscreen des Repeaters zugreifen will? (siehe Threadbeginn)

Liebe Grüße,
manni22
 
Steuerung via HTML und POST von FritzRepeater

So, um das mal wieder aufzugreifen.

Die Radiostationen werden über Indices angesprochen!

Aktuell abgespielten Index der Station
http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayStatus

Aktuell abgespielten Namen der Station (passend zum Index)
http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayName

Aktuell abgespielten Titel (sofern vorhanden, bei einslive funktioniert das zum Beispiel)
http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayText

Request um Index direkt abzuspielen (eine .html Datei erstellen, dies hineinkopieren)
<html>
<head>
</head>
<body>
<form action="http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayControl" method="post">
<input name="configd:settings/NLR/PlayControl" value="3" id="uiPostPlayControl" type="hidden">
<input type="submit" />
</form>
</body>
</html>
Wichtig dabei ist der Wert der im value-Eintrag des input name="configd:settings..." steht. Dieser beschreibt den Index der abzuspielenden Station aus der Liste.

Das Einzige was mir da aktuell noch fehlt ist das Auslesen der Liste, damit ich die Indices auch korrekt zuweisen kann.


Hoffe ich konnte denjenigen helfen, die das Problem heute noch haben bzw. suchen!


Ich wollte diesen Thread nochmal herausgraben, weil ich die Hoffnung habe, dass nun jemand im Forum zufällig eine Antwort parat hat.
Wie kann man das Starten vom Webradio vereinfachen, wenn man nicht auf die Weboberfläche oder auf den Touchscreen des Repeaters zugreifen will? (siehe Threadbeginn)

Liebe Grüße,
manni22
 
Es funktioniert!!!

Klasse. Vielen lieben Dank!
 
Langfristig würde ich es gerne so haben, dass mein Raspberry Pi, der sich natürlich im selben Netzwerk befindet wie der Repeater, jeden Morgen um eine gewisse Uhrzeit (sicherlich per crontab planbar) den Webstream startet. Er wird ja wegen der Nachtschaltung abends deaktiviert. Siehst du da eine Möglichkeit?
 
Langfristig würde ich es gerne so haben, dass mein Raspberry Pi, der sich natürlich im selben Netzwerk befindet wie der Repeater, jeden Morgen um eine gewisse Uhrzeit (sicherlich per crontab planbar) den Webstream startet. Er wird ja wegen der Nachtschaltung abends deaktiviert. Siehst du da eine Möglichkeit?

Ja, da sehe ich eine Möglichkeit! Poste ich heut Abend oder am Wochenende- bin gerade noch auf der Arbeit.
 
Fantastisch! Es hat keine große Eile. Sorgt nur für etwas mehr Komfort. ;-)
 
Fantastisch! Es hat keine große Eile. Sorgt nur für etwas mehr Komfort. ;-)

So, hallo nochmal:

Code:
import urllib, urllib2

# do POST
station_id = '5'
url_2 = 'http://fritz.repeater/cgi-bin/webcm'
data = urllib.urlencode({'getpage': '../html/query.txt', 'var:n[1]': 'configd:settings/NLR/PlayControl', 'configd:settings/NLR/PlayControl': station_id })
req = urllib2.Request(url_2, data)
rsp = urllib2.urlopen(req)

Wenn du das z.B. in eine Datei 'fritz_repeater.py' einfügst und mittels 'python fritz_repeater.py' aufrufst sollte die Station, die sich hinter station_id verbirgt abgespielt werden!


Viele Grüße

(Ich will und werde das Script auch auf meinem Raspberry Pi nutzen ;) )
 
Wow, du bist jetzt mein persönlicher Held. Ich teste es am Montag. Aber das ist schon richtig premium!

Danke!!!
 
Läuft. Klasse. Danke!

Gibt es auch eine Möglichkeit abzufragen, welche ID momentan aktiv ist?
 
Zuletzt bearbeitet:
Läuft. Klasse. Danke!

Gibt es auch eine Möglichkeit abzufragen, welche ID momentan aktiv ist?

Hallo,
meinst du auf Pythoncode - Ebene?

Ansonsten erstmal den Link hinter dem Punkt Aktuell abgespielten Index der Station der oben bereits geschrieben steht!
 
Python-Class FritzRepeater

Hallo,

so - viel eleganter fällt mir die Lösung jetzt erstmal nicht ein. Mit der Klasse sollte man eigentlich alles machen können was man braucht. Entschuldige, dass es etwas gedauert hat - die Arbeit hat mich etwas aufgehalten....


Schöne Grüße und hier noch der Code:

Code:
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import urllib, urllib2

class FritzRepeater:

        baseurl = 'http://fritz.repeater/cgi-bin/webcm'
        getpage = '../html/query.txt'

        def _doRequest(self, firstVar, sndVar=None):
                if sndVar is None:
                        data = urllib.urlencode({'getpage': self.getpage, 'var:n[1]': firstVar})
                else:
                        data = urllib.urlencode({'getpage': self.getpage, 'var:n[1]': firstVar, firstVar: sndVar})
                req = urllib2.Request(self.baseurl, data)
                return urllib2.urlopen(req)


        def play(self, station_id):
                self._doRequest('configd:settings/NLR/PlayControl', station_id)

        def getPlayedId(self):
                ## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayStatus
                return self._doRequest('configd:settings/NLR/PlayStatus').read().strip()

        def getPlayedName(self):
                ## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayName
                return self._doRequest('configd:settings/NLR/PlayName').read().strip()

        def getPlayedTitle(self):
                ## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayText
                return self._doRequest('configd:settings/NLR/PlayText').read().strip()


if __name__ == '__main__':
        repeater = FritzRepeater()
        ##  Spiele Station mit der gegebenen Id ab
        repeater.play(1)
## hier kommt es eventuell vor, dass der falsche Index zurückkommt (0), da wir uns noch im Wechsel der Kanäle befinden.
## Ab dem nächsten Abruf sollte es aber wieder stimmen
        ## Liefert die Id der aktuell abgespielten Station
        print 'Aktuell gespielter Index:', repeater.getPlayedId()
        ## Liefert den Namen der aktuell abgespielten Station
        print 'Name der aktuell gespielten Station:', repeater.getPlayedName()
        ## Liefert den aktuellen Titel der gespielt wird
        print 'AKtueller Titel:', repeater.getPlayedTitle()
 
Hallo medoctron,

deine Arbeit ist super und es funktioniert auch alles, danke :rock:

ich habe zwei Fragen
1: Ist es möglich auch ein mit Passwort geschützen Repeater mit einem HTML code die Radiostation zu starten?

2: Es ist ja bekannt das der Repeater bzw. der Router eine Zwangserneuerung der IP Adresse alle 24 Stunden druchzogen wird gibt es eine Möglichkeit das die Radiostation danach wieder weiterläuft ohne es manuell zu starten?

Vielleicht hast du ja Zeit und Lust mir zu Helfen ich wäre dir sehr verbunden.:groesste:
 
Zuletzt bearbeitet:
Hallo medoctron,

deine Arbeit ist super und es funktioniert auch alles, danke :rock:

ich habe zwei Fragen
1: Ist es möglich auch ein mit Passwort geschützen Repeater mit einem HTML code die Radiostation zu starten?

2: Es ist ja bekannt das der Repeater bzw. der Router eine Zwangserneuerung der IP Adresse alle 24 Stunden druchzogen wird gibt es eine Möglichkeit das die Radiostation danach wieder weiterläuft ohne es manuell zu starten?

Vielleicht hast du ja Zeit und Lust mir zu Helfen ich wäre dir sehr verbunden.:groesste:

Hallo subzero3333,

Frage 1 wird man denke ich mit ja beantworten können - möchte das aber zunächst noch testen (vor diesem WE wird das aber wohl nichts leider).
Frage 2 ist da schon kniffliger. So aus dem Stehgreif seh ich jetzt keine Lösung das umzusetzen. Man könnte sowas hässliches wie folgt machen: pinge jede Minute google oder so (alternativ könnte man sich auch die IP der Fritzbox holen und vergleichen) und verarbeite das Ergebnis. Wenn der Ping nicht erfolgreich ist, dann starte beim nächsten erfolgreichen Ping wieder die zuvor gespielte Station, heißt aber jede Minute oder so wird da ein Server angepingt. Also ist keine schöne Lösung! Ich überlege nochmal weiter, vielleicht gibt's da ja noch andere Ansätze - Ideal wäre es natürlich wenn die Fritzbox da irgendwas hergibt.
Meld mich am WE / Anfang nächster Woche wahrscheinlich nochmal. Wenn du Ansätze, Lösungen oder Ideen hast, kannst du mich auch gern per PN kontaktieren.

Schönen Gruß
 
Zuletzt bearbeitet:
Hallo medactron,

hätte nicht gedacht so schnell eine Antwort zu bekommen vielen Dank für die Mühe und dein Interesse mir zu helfen. :cool::cool::cool:
 
Um z.B. das Ganze auch Passwortgeschützt abzurufen hilft folgender Schnipsel:

Code:
<html>
<head>
</head>
<body>
<form action="http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayControl" method="post">
<input name="configd:settings/NLR/PlayControl" value="2" id="uiPostPlayControl" type="hidden">
<input name="login:command/password" value="<password_hier>" id="uiPostPassword" type="hidden">
<input type="submit" />
</form>
</body>
</html>

Einziger Unterschied ist die Zeile <input name="login:command/password" value="<password_hier>" id="uiPostPassword" type="hidden"> in der noch das <password_hier> durch das echte Passwort ersetzt werden muss. Diese Zeile kann dann ebenfalls in die anderen Befehle kopiert werden.

In python sieht die Unterstützung von Passwörtern wie folgt aus:

Code:
#!/usr/bin/python  
# -*- coding: iso-8859-15 -*-

import socket
import urllib
import urllib2

##
# Zugriff auf einige Methoden eines FritzRepeaters.
##
class FritzRepeater:

	baseurl = 'http://fritz.repeater/cgi-bin/webcm'
	getpage = '../html/query.txt'

	def __init__(self, password=None):
		self.password = password

	def _doRequest(self, firstVar, sndVar=None):
		if self.password is None:
			## Aufruf kann ohne Passwort abgeschickt werden
			content = { 'getpage': self.getpage, 'var:n[1]': firstVar }
		else:
			## verwende das Passwort fuer den Login
			content = { 'getpage': self.getpage, 'var:n[1]': firstVar, 'login:command/password': self.password }

		if sndVar is not None:
			content[firstVar] = sndVar
		data = urllib.urlencode(content)
		req = urllib2.Request(self.baseurl, data)
		return urllib2.urlopen(req)		


	def play(self, station_id):
		self._doRequest('configd:settings/NLR/PlayControl', station_id)

	def getPlayedId(self):
		## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayStatus
		return self._doRequest('configd:settings/NLR/PlayStatus').read().strip()

	def getPlayedName(self):
		## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayName
		return self._doRequest('configd:settings/NLR/PlayName').read().strip()

	def getPlayedTitle(self):
		## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayText
		return self._doRequest('configd:settings/NLR/PlayText').read().strip()
	

if __name__ == '__main__':
	## Wenn password = None ist, so wird einfach der Request ohne Password an den Repeater geschickt. Ist das Passwort gesetzt,
	## so wird es bei der Uebertragung verwendet. Lautet das Passwort z.B. test so muss die Zeile wie folgt lauten:
	#password = 'test'
	password = None

	repeater = FritzRepeater(password)
	##  Spiele Station mit der gegebenen Id ab
	repeater.play(1)
## hier kommt es eventuell vor, dass der falsche Index zurückkommt (0), da wir uns noch im Wechsel der Kanäle befinden. 
## Ab dem nächsten Abruf sollte es aber wieder stimmen
	## Liefert die Id der aktuell abgespielten Station
	print 'Aktuell gespielter Index:', repeater.getPlayedId()
	## Liefert den Namen der aktuell abgespielten Station
	print 'Name der aktuell gespielten Station:', repeater.getPlayedName()
	## Liefert den aktuellen Titel der gespielt wird
	print 'Atueller Titel:', repeater.getPlayedTitle()
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.