Temat: Harmonogram power switch
Witam!
Z tego co widzę i z opinii kilku userów wnioskuję iż harmonogram dla wifi się spodobał i przyją więc tym razem
przedstawiam kolejne mini "HOW-TO" dla harmonogramu powerswitch.
Nie rozpisując się do rzeczy.
standardowo pliki jakie należy utworzyć:
w katalogu /www
switchharm.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<html>
<head>
<title>Harminigram Power Switch</title>
</head>
<body>
<div align="center">
<table bgcolor="009900" border="2" cellpadding="7">
<tr align="center"><th>Ustaw Czas</th><th>Wybierz stan</th></tr>
<form name="listswitchharm" action="/cgi-bin/switchharm/setswitchharm.sh" method="get" enctype="text/plain" >
<tr><td><table cellpadding="4">
<tr><td>Godzina <br>
<select name="hours" title="Wybierz godzine">
<option value="*"></option>
<option value="0">0</option><option value="1">1</option>
<option value="2">2</option><option value="3">3</option>
<option value="4">4</option><option value="5">5</option>
<option value="6">6</option><option value="7">7</option>
<option value="8">8</option><option value="9">9</option>
<option value="10">10</option><option value="11">11</option>
<option value="12">12</option><option value="13">13</option>
<option value="14">14</option><option value="15">15</option>
<option value="16">16</option><option value="17">17</option>
<option value="18">18</option><option value="19">19</option>
<option value="20">20</option><option value="21">21</option>
<option value="22">22</option><option value="23">23</option>
</select><input type="checkbox" title="Co wybrany zakres godzin" name="everyhour" value="on"></td>
<td>Minuty<br>
<select name="minutes" title="Wybierz minuty">
<option value="*"></option>
<option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option>
<option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option>
<option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option>
<option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option>
<option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option>
<option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option>
<option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option>
<option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
<option value="32">32</option><option value="33">33</option><option value="34">34</option><option value="35">35</option>
<option value="36">36</option><option value="37">37</option><option value="38">38</option><option value="39">39</option>
<option value="40">40</option><option value="41">41</option><option value="42">42</option><option value="43">43</option>
<option value="44">44</option><option value="45">45</option><option value="46">46</option><option value="47">47</option>
<option value="48">48</option><option value="49">49</option><option value="50">50</option><option value="51">51</option>
<option value="52">52</option><option value="53">53</option><option value="54">54</option><option value="55">55</option>
<option value="56">56</option><option value="57">57</option><option value="58">58</option><option value="59">59</option>
</select><input type="checkbox" title="Co wybrany zakres minut" name="everymin" value="on"></td></tr>
<tr><td>Dzien <br>
<select name="day" title="Wybierz dzien" >
<option value="*"></option>
<option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option>
<option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option>
<option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option>
<option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option>
<option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option>
<option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option>
<option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option>
<option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select><input type="checkbox" title="Co podany dzien" name="everyday" value="on"></td>
<td>Dzien tygodnia<br>
<select name="dayofweek" title="Wybierz dzien tygodnia" >
<option value="*"></option>
<option value="1">Poniedzialek</option>
<option value="2">Wtorek</option>
<option value="3">Sroda</option>
<option value="4">Czwartek</option>
<option value="5">Piatek</option>
<option value="6">Sobota</option>
<option value="0">Niedziela</option>
</select></td></tr>
</table></td>
<td><table cellpadding="4"><tr><td align="center">
<input type="radio" name="activ" value="on" checked="check"/>Wl.</td>
<td><input type="radio" name="activ" value="off"/>Wyl.</td></tr>
<tr><td align="center" colspan="2">Nr Switcha<br>
<select name="nrswitch" title="Wybierz nr portu">
<option value="1">1</option>
<option value="2">2</option><option value="3">3</option>
<option value="4">4</option><option value="5">5</option>
<option value="6">6</option><option value="7">7</option>
<option value="8">8</option>
</select></td></tr>
<tr><td align="center" colspan="2"> <input type="submit" title="dodaj do harmonogramu" value="Dodaj" id="wpisz"/></td></tr>
</table>
</form>
</td>
</td></tr>
<tr><td align="center" cellpadding="3" colspan="2">
<iframe src="cgi-bin/switchharm/readharm.sh" width="300" height="150" frameborder="0"></iframe></td></tr>
<tr><td colspan="2" align="center">
<form name="delswitchharm" action="/cgi-bin/switchharm/delswitchharm.sh" method="get" enctype="text/plain" >
<select name="lstswitchharm" >
<?
/www/cgi-bin/switchharm/lstswitchharm.sh
?>
</select> <input type="submit" name="usuwanie" value="Usun" onclick="return confirm('Na pewno chcesz usunac ?');"/>
</form>
</td></tr>
</table>
</div>
</body>
</html>w katalogu /www/cgi-bin/switchharm
delswitchharm.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/switchharm.sh" />
</head>
<body>
<?
D=`echo $GET_lstswitchharm | sed -e 's/#/ /g' | sed -e 's/\*/\\\*/g;s/\//\./g'`
if [ -n "$D" ] ; then
sed -i "/$D/d" /etc/crontabs/root
fi
/etc/init.d/cron restart
?>
</body>
</html>lstswitchharm.sh
#!/usr/bin/haserl
<?
x=0
file=/etc/crontabs/root
for plik in `cat $file | sed 's/ /#/g' | grep "powerswitch"` ; do
x=$((x+1))
H=`echo $plik | cut -d "#" -f 2`
M=`echo $plik | cut -d "#" -f 1`
D=`echo $plik | cut -d "#" -f 3`
DF=`echo $plik | cut -d "#" -f 5`
numswitch=`echo $plik | cut -d "#" -f 8`
stan=`echo $plik | grep on | wc -l`
if [ "$stan" == "1" ]; then
echo "<option value=$plik>Ustawienia $x</option>"
else
echo "<option value=$plik>Ustawienia $x</option>"
fi
done
?>readharm.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<html>
<body bgcolor="009900">
<?
x=0
file=/etc/crontabs/root
for plik in `cat $file | sed 's/ /#/g' | sed -e 's/\*\//Co-/g' | sed -e 's/\*/NA/g' | grep "powerswitch"` ; do
x=$((x+1))
hour=`echo $plik | cut -d "#" -f 2`
minute=`echo $plik | cut -d "#" -f 1`
day=`echo $plik | cut -d "#" -f 3`
dayofweek=`echo $plik | cut -d "#" -f 5`
numswitch=`echo $plik | cut -d "#" -f 8`
numswitch=$((numswitch+1))
cogodz=`echo $plik | cut -d "#" -f 2 | grep "Co-" | wc -l`
comin=`echo $plik | cut -d "#" -f 1 | grep "Co-" | wc -l`
codzien=`echo $plik | cut -d "#" -f 3 | grep "Co-" | wc -l`
echo " "
if [ "$hour" == "NA" ] && [ "$minute" == "NA" ] ; then
M="Co 01 min."
elif [ "$minute" == "NA" ] ; then
M=`echo $minute | sed -e 's/\NA//'`
elif [ "$comin" == "1" ] ; then
M=`echo $minute | sed -e "s/Co-//g"`
if [ "$M" -lt "10" ] ; then
M=`echo $M | sed "s/^/Co 0/" ; echo "min."`
else
M=`echo "Co" $M "min."`
fi
elif [ "$hour" == "NA" ] ; then
M=`echo Co $minute | sed -e "s/Co-//g" ; echo "min."`
else
M=`if [ "$minute" -lt "10" ] ; then echo $minute | sed "s/^/0/" ; else echo $minute ; fi`
fi
if [ "$hour" == "NA" ] ; then
H=`echo $hour | sed -e 's/\NA//'`
elif [ "$cogodz" == "1" ] ; then
H=`echo $hour "godz. "| sed -e 's/-/ /g'`
elif [ "$comin" == "1" ] ; then
H=`echo "O godz:" $hour" "`
elif [ "$minute" == "NA" ] ; then
H=`echo "O godz:" $hour`
else
H=`echo "O godz:" $hour":"`
fi
if [ "$day" == "NA" ] ; then
D=`echo $day | sed -e 's/\NA//'`
elif [ "$codzien" == "1" ] ; then
D=`echo "<br />"$day "dni" | sed -e 's/-/ /g'`
else
D=`echo "<br />W kazdy" $day "dzien miesiaca"`
fi
if [ "$dayofweek" == "NA" ] ; then
DF=`echo $dayofweek | sed -e 's/\NA//'`
else
case "$dayofweek" in
"1") DF=`echo "<br />W kazdy poniedzialek"` ;;
"2") DF=`echo "<br />W kazdy wtorek"` ;;
"3") DF=`echo "<br />W kazda srode"` ;;
"4") DF=`echo "<br />W kazdy czwartek"` ;;
"5") DF=`echo "<br />W kazdy piatek"` ;;
"6") DF=`echo "<br />W kazda sobote"` ;;
"7") DF=`echo "<br />W kazda niedziele"` ;;
esac
fi
stan=`echo $plik | grep on | wc -l`
if [ "$stan" == "1" ]; then
echo "Ustawienia $x:<br />"
echo "$H$M $D $DF <br />Wlacz Switch nr $numswitch"
echo "<hr>"
else
echo "Ustawienia $x:<br />"
echo "$H$M $D $DF <br />Wylacz Switch nr $numswitch"
echo "<hr>"
fi
done
?>
</body>
</html>setswitchharm.sh
#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""
?>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/switchharm.sh" />
</head>
<body>
<?
sciezka=/dodatki/powersw
GET_nrswitch=$(($GET_nrswitch-1))
if [ "$GET_everymin" == "on" ] && [ "$GET_minutes" != "*" ] ; then
minutes=*/$GET_minutes
elif [ "$GET_minutes" == "*" ] && [ "GET_hours" != "*" ] ; then
minutes=1
else
minutes=$GET_minutes
fi
if [ "$GET_everyhour" == "on" ] && [ "$GET_hours" != "*" ] ; then
hour=*/$GET_hours
else
hour=$GET_hours
fi
if [ "GET_everyday" == "on" ] && [ "$GET_day" != "*" ] ; then
day=*/$GET_day
else
day=$GET_day
fi
if [ "$GET_activ" == "on" ]; then
echo "$minutes $hour $day * $GET_dayofweek $sciezka/powerswitch on $GET_nrswitch" >> /etc/crontabs/root
else
echo "$minutes $hour $day * $GET_dayofweek $sciezka/powerswitch off $GET_nrswitch" >> /etc/crontabs/root
fi
/etc/init.d/cron restart
?>
</body>
</html>W ostatnim pliku setswitchharm.sh koniecznie musimy wpisać ścieżkę gdzie znajduje sie program powerswitch i proponuję zachować też taką nazwę
programu.
Oczywiście dla wszystkich w/w plików nadajemy prawa wykonywalności chmod 755
Jakieś sugestie i pytania mile widziane ![]()
pozdrawiam
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka
