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

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
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
 

Joe82

Aktives Mitglied
Mitglied seit
22 Mrz 2007
Beiträge
1,114
Punkte für Reaktionen
0
Punkte
36
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.
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Hallo,

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

Vielen Dank,
manni22
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
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
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
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
 

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Es funktioniert!!!

Klasse. Vielen lieben Dank!
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
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?
 

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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.
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Fantastisch! Es hat keine große Eile. Sorgt nur für etwas mehr Komfort. ;-)
 

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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 ;) )
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Wow, du bist jetzt mein persönlicher Held. Ich teste es am Montag. Aber das ist schon richtig premium!

Danke!!!
 

manni22

Neuer User
Mitglied seit
24 Nov 2011
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Läuft. Klasse. Danke!

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

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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!
 

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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()
 

subzero3333

Neuer User
Mitglied seit
25 Aug 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
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:

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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:

subzero3333

Neuer User
Mitglied seit
25 Aug 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
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:
 

medoctron

Neuer User
Mitglied seit
14 Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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()
 

Zurzeit aktive Besucher

3CX

Statistik des Forums

Themen
235,885
Beiträge
2,067,229
Mitglieder
356,872
Neuestes Mitglied
Machsgut