1 (edytowany przez wabikboy 2014-01-14 22:49:03)

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 smile

pozdrawiam

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

2

Odp: Harmonogram power switch

Fajne
mała nieścisłość niewłaściwa ścieżka do plików:
setswitchharm.sh
readharm.sh
delswitchharm.sh

umieścić w:   /www/cgi-bin/switchharm
a jest podane : /www/cgi-bin




lepiej chyba w switchharm.sh  zamiast :
<input type="radio" title="..............
proponuje :
<input type="checkbox" title="...
co daje możliwość cofnięcia przez pomyłkę wciśniętego pola wyboru

odczyt niestety nie wyświetla się w firefox portable, więc pozostałem przy swojej wersji harmonogramu
gdzie zastosowałam osobny plik do odczytu każdego kanału osobno wyświetlony zaraz pod przyciskiem, na stronie powerswitcha przez co wydaje mi się to bardziej czytelne.

,

3

Odp: Harmonogram power switch

Dzieki już poprawione smile
Działa też w każdej przeglądarce smile

Dodałem wybór typu radio bez akcji co pozwala na cofnięcie omyłkowo wybranej opcji.

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

4

Odp: Harmonogram power switch

Może jakieś screeny jak to wygląda ^_^ ?

Gateway :Topton Intel Core i3-N305 16GB RAM 6x i226-V 2.5GbE
AP: 3x Netgear WAX220

5

Odp: Harmonogram power switch

A prosze bardzo smile
http://www.fotoload.pl/123aa65/f9e2384533b78d8fbec226b73dfa4e9011773_min.png

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

6 (edytowany przez roblad 2013-04-10 23:14:02)

Odp: Harmonogram power switch

Witam,

Cos nie dziala ten harmonogram - wogole stronka sie nie odpala prawidlowo oraz tak naprawde nic sie do crona nie dodaje, ani nie pokazuje statusu zadnego, moze ktos przegladnac czy kod jest prawidlowy ?

Pozdr.

7 (edytowany przez wabikboy 2013-04-11 10:09:23)

Odp: Harmonogram power switch

Skoro mi działa to Tobie też powinno tylko ustaw sobie scieżkę do powerswitch w pliku setswitchharm.sh i na koncu tego pliku spradz sciezke zapisu do crona bo w tutorialu zapomniałem usunąć tymczasową sciezke i zapisywało do innego pliku

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

8

Odp: Harmonogram power switch

Witam koledzy nie może być to lepiej opisane ? Bo to co jest nie jest tak fajnie opisane i trzeba naprawdę ruszyć się by to zrozumieć jest jakiś inny opis tego ? Lub poprawcie to ok

Podejmę się naprawy ruterów TP-Link od WR1043 -MR3420 i pozostałe modele kontakt na private! smile i smile

Obrazy do ruterów są mojej Kompilacji i z nich korzystam i mam własne pakiety na dzień obecny są to BB  i Gargulec big_smile i big_smile

9 (edytowany przez wabikboy 2013-04-11 15:23:50)

Odp: Harmonogram power switch

Znaczy się co jest źle opisane ?? HOW-To czy piszesz o wyglądzie ??

W samym how-to myślę że nie trzeba pisać co to do czego służy i takie tam. jest to po prostu harmonogram do włączania i wyłączania powerswitch którego opis jest w tym temacie

Jeśli Masz jakieś sugestie co do opisu to napisz co byś chciał smile

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

10 (edytowany przez roblad 2013-04-11 20:10:08)

Odp: Harmonogram power switch

Ok, dziala

Wyrzucilem test...txt i wazne bylo aby nie zapomniec o 2 ; na koncu bo sie sypalo.

Chcialbym teraz jakos opanowac to:

<script>

$(document).ready(function(){
    setInterval(function (){
   $.get('cgi-bin/powersw/stan1.sh',function(data) {
          $('#buttona1s').attr('src',"iconsw/"+data+".png");
          $('#buttona1s').attr('power',data);   });},7500);
    $('#buttona').click(function(){
       var power=$(this).attr('power');
        if(power=='on'){
            power='off'
       }else{
            power='on';
       }
       $.get('cgi-bin/powersw/power11s.sh',{action:power},function(data) {
          $('#buttona1s').attr('src',"iconsw/"+data+".png");
          $('#buttona1s').attr('power',data);
       });
    });
});
</script>


które jest obslugiwane przez to


<img id="buttona1s" src="<?
status1=$(/dodatki/powersw/power status | grep 0 | sed 's/port.0..//')
echo -n "iconsw/$status1.png"
?>" power="<?
echo -n "$status1"
?>" width="50" height="50" ></font>

wlozyc do tego tak aby zadzialalo na 1 s:


<input name="Button9" style="width: 105px; height: -1px;" type="button" value="SW-1 (2s)" onclick="cos">



poprzez wykonanie skryptu (tu jest prosto):

cgi-bin/powersw/power1.sh


#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""

status=$(/dodatki/powersw/power status 2>/dev/null | grep 0 | sed 's/port.0..//')

if [ "$status" == "on" ] ; then
       /dodatki/powersw/power off 0
       sleep 1
       /dodatki/powersw/power on 0

else
        /dodatki/powersw/power on 0 2>/dev/null

#2>/dev/null jest potrzebne do podstawienia 3 ikonki przy braku podlaczonego switcha

           sleep 1

        /dodatki/powersw/power off 0 2>/dev/null
fi

#tu jest badane czy jest podlaczony switch - podstawienia 3 ikonki przy braku podlaczonego switcha

if [ "$status" == "on" ] || [ "$status" == "off" ] ; then

status0=$(/dodatki/powersw/power status | grep 0 | sed 's/port.0..//' )

echo "$status0"
else

status0="unknown"    # tu musi byc w katalogu ikonek 3 ikonka unknown.png
echo "$status0"
fi

?>


Czy ktos moze byc tak mily i jakos moze to pozenic ze soba, aby zadzialaly wszystkie funkcje i przycisk typu "button", i bylo tak ze przy odswierzeniu strony nie zadzialala akcja "onclick" i nie wcisnie sie automatycznie "onclick"


tak sobie to wykombinowalem, ale nie wiem czy zadziala

switch.sh  (switchharm.sh)
-------------------------------------------------------------------------------------

....


<script>
$(document).ready(function(){$('#buttona1s').click(function()
            {$.get('cgi-bin/powersw/power11s.sh');
            });
});
</script>

....

<td><input name="Button9" style="width: 105px; height: -1px;" type="button" value="SW-1 (2s)" onclick="buttona1s"/></td>

....

-----------------------------------------------------------------------------------------------------------------
cgi-bin/powersw/power11s.sh


#!/usr/bin/haserl
<?
echo "Content-type: text/html"
echo ""

status=$(/dodatki/powersw/power status 2>/dev/null | grep 0 | sed 's/port.0..//')

if [ "$status" == "on" ] ; then
       /dodatki/powersw/power off 0
       sleep 1
       /dodatki/powersw/power on 0

else
       
/dodatki/powersw/power on 0 2>/dev/null    #<<<< 2>/dev/null jest potrzebne do podstawienia 3 ikonki przy braku podlaczonego switcha

           sleep 1

        /dodatki/powersw/power off 0 2>/dev/null
fi

# tu jest badane czy jest podlaczony switch - podstawienia 3 ikonki przy braku podlaczonego switcha

if [ "$status" == "on" ] || [ "$status" == "off" ] ; then

status0=$(/dodatki/powersw/power status | grep 0 | sed 's/port.0..//' )

echo "$status0"

else

status0="unknown"    # <<<<<<  tu musi byc w katalogu ikonek 3 ikonka unknown.png

echo "$status0"

fi

?>
-------------------------------------------------------------------------------------------------------------------------------------



Pozdr,

11

Odp: Harmonogram power switch

wabikboy napisał/a:

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'`


sed -i "/$D/d" /etc/crontabs/root

/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 smile

pozdrawiam



Czesc


skad wziela Ci sie ta zmienna $GET_lstswitchharm

jest blad przy kasowaniu jesli nie ma wpisow w kronie odnosnie power switcha, kasuje cala zawartosc crona zamiast nic nie robic.

12

Odp: Harmonogram power switch

Błąd poprawiony, teraz nie usuwa zawartości crona

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile