Temat: Ustawienia budzika z przeglądarki
Witam!
Na pewno są tu osoby które wykorzystują swój router jako budzik,
jako iż jestem typem człowieka który lubi ułatwiać sobie życie tym razem popełniłem budzik ustawiany z przeglądarki,
Nic nadzwyczajnego ale dzięki Cezaremu udało się i z racji iż nie ma tego w poradniku postanowiłem dodać coś takiego.
Zakładam iż już mamy:
Kartę dźwiękową + głośniki
dysk/kartę z plikami mp3 podłączone do routera
jeśli nie mamy madplay to instalujemy:
opkg update
opkg install madplay
teraz tworzymy plik w katalogu /www o nazwie budzik.sh z takim kodem:
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<html>
<head>
<script type="text/javascript">
// <![CDATA[
function sprawdz(formularz)
{
for (i = 0; i < formularz.length; i++)
{
var pole = formularz.elements[i];
if (!pole.disabled && !pole.readonly && (pole.type == "text") && pole.value == "")
{
alert("Proszę wypełnić wszystkie pola!");
return false;
}
if (!pole.disabled && !pole.readonly && (pole.name == "minuta") && pole.value > "59")
{
alert('Nie poprawny format minut !!');
return false;
}
if (!pole.disabled && !pole.readonly && (pole.name == "godzina") && pole.value > "24")
{
alert('Nie poprawny format godziny !!');
return false;
}
}
return true;
}
// ]]>
</script>
<script>
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/cgi-bin/lista.sh?pliki="+str,true);
xmlhttp.send();
}
</script>
<script>
function playthis(str)
{
if (str.length==0)
{
document.getElementById("playt").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("playt").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/cgi-bin/play.sh?"+str,true);
xmlhttp.send();
}
</script>
</head>
<body bgcolor="DBDB7O">
<table align="left" border="5" cellpadding="10">
<tr>
<td>
<form name="lisalrm" action="/cgi-bin/alarmonoff.sh" method="get" enctype="text/plain" ><div>
<?
/www/cgi-bin/amlista.sh
?>
<input type="submit" name="wlwyl" value="Zapisz" /></div>
</form>
<form name="alarmdel" action="/cgi-bin/alarmdel.sh" method="get" enctype="text/plain" ><div>
<select name="amlist">
<?
/www/cgi-bin/amlist.sh
?>
</select><input type="submit" name="amdel" value="Usun" onclick="return confirm('Na pewno chcesz usunac alarm?');"/></div>
</form>
</td>
</tr>
</table><table align="center" bgcolor="8E6B23" border="5" cellpadding="3">
<th colspan="4" align="center" height="50">---===USTAWIENIA BUDZIKA===---</th>
<tr align="center" height="20" width="10">
<td>Wpisz godzinę:</td><td>Wpisz ścieżkę do pliku lub wybież radio:</td><td width="600">Wybierz plik:</td>
</tr>
<form name="budzenie" action="/cgi-bin/skrypt.sh" method="get" enctype="text/plain" onsubmit="if (sprawdz(this)) return true; return false" onsubmit="return f()" ><div>
<tr align="center">
<td align="center"><input type="text" name="godzina" size=1 maxlength=2 value="08"/>:<input type="text" name="minuta" size=1 maxlength=2 value="30"/></td>
<td rowspan="3" align="left">
<input type="radio" name="wybor" value="mp3" onclick="this.form.elements['wczytaj_liste'].disabled = !this.checked;this.form.elements['usuwanie'].disabled = this.checked;this.form.elements['sciezka'].disabled = !this.checked;this.form.elements['stac'].disabled = this.checked" />Mp3
<input name="sciezka" type="text" value="/mnt/hdd1/music" disabled="disabled"><input type="button" name="wczytaj_liste" value="otwórz" onclick="showHint(sciezka.value)" disabled="disabled">
<br />
<br />
<input type="radio" name="wybor" value="radio" onclick="this.form.elements['wczytaj_liste'].disabled = this.checked;this.form.elements['usuwanie'].disabled = !this.checked;this.form.elements['stac'].disabled = !this.checked;this.form.elements['sciezka'].disabled = this.checked" />Radio
<select name="stac" disabled="disabled" >
<?
/www/cgi-bin/lisradio.sh
?>
</select><input type="submit" name="usuwanie" value="Usun" onclick="return confirm('Na pewno chcesz usunac stacje?');" disabled="disabled"/>
<br />
</td>
<td rowspan="2" ><select name="lista" id="txtHint" onchange="playthis(this.value)" size=10 style="width:580px;"></select>
</td>
</tr>
<tr>
<td rowspan="2">
<p>Zaznacz dzień:</p><hr>
<input type="checkbox" name="d1" value="1" checked="check"/>Poniedziałek<br />
<input type="checkbox" name="d2" value="2" checked="check" />Wtorek<br />
<input type="checkbox" name="d3" value="3" checked="check" />Sroda<br />
<input type="checkbox" name="d4" value="4" checked="check" />Czwartek<br />
<input type="checkbox" name="d5" value="5" checked="check" />Piatek<br />
<input type="checkbox" name="d6" value="6" checked="check" />Sobota<br />
<input type="checkbox" name="d7" value="7" />Niedziela<br />
</td>
</tr>
<tr><td><div id="playt"></div></tr>
<tr>
<td align="center">
Wpisz nazwe alarmu:<br> <input type="text" name="amname" /><br><hr> Wl/Wyl: <input type="checkbox" name="amwlacz" />
</td>
<td align="center"><input type="submit" value="Zapisz Ustawienia" style="height:50;width:150"/></td>
</div></form>
<td align="center">
<div align="center"><b>Dodaj radio:</b></div><br />
<form name="dopisz" action="/cgi-bin/wpisz.sh" method="get" enctype="text/plain" ><div>
Nazwa: <input type="text" name="nazwarad" />
Adres: <input type="text" name="adres" /> <input type="submit" value="Zapisz stację" style="height:30;width:120"/>
</div></form>
</td>
</tr>
</table>
</body>
</html>
następne pliki w katalogu /www/cgi-bin/
Wsad dla alarmdel.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<http>
<head>
<meta http-equiv="refresh" content="0; URL=/budzik.sh" />
</head>
<body>
<?
if [ "$GET_amdel" == "Usun" ]; then
sed -i "/$GET_amlist/d" /budzik/alarmy
fi
?>
</body>
</http>
Wsad dla amlist.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
file=/budzik/alarmy
for plik in `cat $file | cut -d "#" -f 1` ; do
echo "<option>"$plik"</option>"
done
?>
Wsad dla lista.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
file=$GET_pliki
rm /www/tmpmusic
ln -s "$file" /www/tmpmusic
for plik in `ls $file | grep ".mp3" | sed 's/ */~/g' | sed 's/^~//g'`; do
echo "<option>"$plik"</option>"
done
?>
wsad dla skrypt.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<http>
<head>
<meta http-equiv="refresh" content="0; URL=/budzik.sh" />
</head>
<body>
<?
muza=`echo $GET_lista | sed 's/~/ /g'`
minuty=`echo $GET_minuta | sed 's/^0//g'`
godziny=`echo $GET_godzina | sed 's/^0//g'`
stacja=`cat /budzik/stacje | grep "$GET_stac" | cut -d "#" -f 2`
if [ "$GET_minuta" -lt "10" ] ;then
minzero=`echo $GET_minuta | sed -e '/^[^0]/s:^:0:'`
else
minzero=$GET_minuta
fi
if [ "$GET_godzina" -lt "10" ] ;then
godzero=`echo $GET_godzina | sed -e '/^[^0]/s:^:0:'`
else
minzero=$GET_godzina
fi
if [ "$GET_amwlacz" == "" ] ;then
wlacznik=off
else
wlacznik=$GET_amwlacz
fi
if [ "$GET_usuwanie" == "Usun" ]; then
sed -i "/$GET_stac/d" /budzik/stacje
elif [ "$GET_amdel" == "Usun" ]; then
sed -i "/$GET_amlist/d" /budzik/alarmy
else
case "$GET_wybor" in
"mp3")
echo "$GET_amname#$godzero:$minzero#$GET_d1*$GET_d2*$GET_d3*$GET_d4*$GET_d5*$GET_d6*$GET_d7#$wlacznik#$GET_sciezka/$GET_lista#$GET_wybor" >> /budzik/alarmy
;;
"radio")
echo "$GET_amname#$godzero:$minzero#$GET_d1*$GET_d2*$GET_d3*$GET_d4*$GET_d5*$GET_d6*$GET_d7#$wlacznik#$stacja#$GET_wybor" >> /budzik/alarmy
;;
esac
fi
?>
</body>
</http>
wsad dla lisradio.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
file=/budzik/stacje
for plik in `cat $file | cut -d "#" -f 1` ; do
echo "<option>"$plik"</option>"
done
?>
wsad dla wpisz.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<http>
<head>
<meta http-equiv="refresh" content="0; URL=/budzik.sh" />
</head>
<body>
<?
nazwa=`echo $GET_nazwarad | sed 's/ /_/g'`
echo "$nazwa#$GET_adres" >> /budzik/stacje
?>
</body>
</head>
wsad dla alarmonoff.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<http>
<head>
<meta http-equiv="refresh" content="0; URL=/budzik.sh" />
</head>
<body>
<?
file=/budzik/alarmy
for plik in `cat $file`; do
nazwa=$(echo $plik | cut -d "#" -f 1)
alarm=`eval "echo $"$(echo "GET_$nazwa")`
if [ "$alarm" == "on" ]; then
sed -i "/$nazwa/ s/#off#/#on#/" /budzik/alarmy
elif [ "$alarm" == "" ]; then
sed -i "/$nazwa/ s/#on#/#off#/" /budzik/alarmy
fi
done
?>
Wsad dla amlista.sh
#!/usr/bin/haserl
<?
file=/budzik/alarmy
for plik in `cat $file`; do
nazwa=$(echo $plik | cut -d "#" -f 1)
godzi=$(echo $plik | cut -d "#" -f 2)
dzien=$(echo $plik | cut -d "#" -f 3 | sed 's/\*/|/g;s/1/pn/g;s/2/wt/g;s/3/sr/g;s/4/cz/g;s/5/pt/g;s/6/so/g;s/7/nd/g' | sed 's/||*/ | /g')
enabl=$(echo $plik | cut -d "#" -f 4)
if [ "$enabl" == "on" ]; then
echo "<li><b>$nazwa</b><br /><div align="center"><b><big>$godzi</big></b><input type="checkbox"
name="$nazwa" onclick="this.form.elements["'$nazwa'"].disabled = !this.checked" checked="check"/></div>
<smal>$dzien</smal><br /><hr>"
else
echo "<li><b>$nazwa</b><br /><b><div align="center"><big>$godzi</big></b><input type="checkbox"
name="$nazwa" onclick="this.form.elements["'$nazwa'"].disabled = !this.checked" /></div>
<smal>$dzien</smal><br /><hr>"
fi
done
?>
Wsad dla play.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
file=`echo $QUERY_STRING | sed 's/~/ /g'`
echo '<audio id="player" controls="controls">'
echo '<source height="50" width="100" src="tmpmusic/'"$file"'"' 'type="audio/mpeg; codecs=vorbis" />' # > /tmp/pliki.txt
echo '</audio>'
?>
dla wszystkich plików nadajemy prawa wykonywalności chmod 755
i tworzymy katalog /budzik a w nim plik budzik.sh z takim wsadem:
#!/bin/sh
timenow=`date '+%H:%M'`
day=`date '+%u'`
file=/budzik/alarmy
procesrun=`ps | grep -v "grep" | grep madplay | wc -l`
sprawdz_proces() {
while [ "$procesrun" -ge "1" ]; do
procesrun=`ps | grep -v "grep" | grep madplay | wc -l`
killall -9 serverok.sh
killall -9 madplay
sleep 1
done
}
for plik in `cat $file` ; do
time=$(echo $plik | cut -d "#" -f 2)
dzien=$(echo $plik | cut -d "#" -f 3 | grep "$day" | wc -l)
enabl=$(echo $plik | cut -d "#" -f 4)
songset=$(echo $plik | cut -d "#" -f 5 | sed 's/~/ /g')
wybor=$(echo $plik | cut -d "#" -f 6)
if [ "$time" == "$timenow" ]; then
sprawdz_proces
sleep 2
if [ "$dzien" == "1" ]; then
if [ "$enabl" == "on" ]; then
case "$wybor" in
"radio")
songset=`echo $plik | cut -d "#" -f 5 | sed 's/http:\/\///g'`
sed -i "/stream/ s/stream=.*/stream=\"http:\/\/$songset\"/g" /budzik/serverok.sh
/budzik/serverok.sh &
break
;;
"mp3") madplay -Q --no-tty-control "$songset" &
break
;;
esac
fi
fi
fi
done
i plik serverok.sh
#!/bin/sh
stream="http://188.165.218.155:8162"
while true; do
if busybox wget -s -q "$stream" 2> /dev/null; then
wget -q "$stream" -O - | madplay -Q -
sleep 10
fi
done
również z chmod 755
i plik stacje ze stacjami radiowymi:
CYBERSTACJA#http://188.165.218.155:8162
RMF_MAXX#http://217.74.72.12:8000/rmf_maxxx
RADIO_ZET#http://91.121.179.221:8400
RADIOSFERA#http://87.98.217.17:7084:
Wpisujemy do crona:
*/1 * * * * /budzik/budzik.sh
a potem
/etc/init.d/cron restart
Teraz wystarczy wejść na stronę: http://ip_routera/budzik.sh
ustawić sobie budzik na wybraną godzinę i wybrać muzykę mp3 lub radio które nas rano obudzi
wybrany plik mp3 można przesłuchać bezpośrednio na stronie (wymaga HTML5)
Można dodawać własne stacje radiowe i je usuwać. Można dodać wiele alarmów
Strona może nie wygląda ale działa, może z czasem trochę ją upiększę chyba że komuś się będzie nudzić
Może by tak dodać coś takiego w ogóle do gargoyle jako zakładkę
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka