Synology Diskstation auto-shutdown
Ik gebruikte al jaren ‘advanced power management’ op de Synology Nas zodat die automatisch zou uitschakelen, als er niks te doen is tenminste.
Sinds de installatie van DSM6.0 Beta werkte die plugin niet meer en bleef de nas dus 24/7 online.
Uiteindelijk maar zelf aan de slag gegaan, wou eigenlijk toch al een tijd dat het uitschakelen enkel gebeurde wanneer we niet thuis zijn of aan het slapen zijn. Dit dankzij de aanwezige schakelaar ‘Weg’ en ‘Slapen’ in Domoticz.
Op zich hoeven er slechts 3 variabelen ingesteld te worden: disk, network en period.
Disk bepaalt hoeveel blocken er maximaal mogen gelezen of geschreven zijn per seconde, network hoeveel bytes ontvangen/verzonden. Period voorkomt dan weer dat het script meerdere keren zou uitgevoerd kunnen worden.
Voor de koppeling met Domoticz creëerde ik een aparte ‘kamer’ met enkel de schakelaars die ik nodig heb, op deze manier is het verkeer naar Domoticz minimaal en gaat het parsen van de JSON reply bijzonder snel.
Hieronder het resultaat (uit te voeren door Syno’s taakplanner):
#!/usr/bin/bash DISK=1 NETWORK=10000 PERIOD=550 NOW=$(date +%s) NOWTIME=$(date +"%Y/%m/%d %H:%M:%S") LAST=`cat /tmp/domcheck` RXBYTESLAST=`cat /tmp/RXBYTESLAST` TXBYTESLAST=`cat /tmp/TXBYTESLAST` RBLOCKSLAST=`cat /tmp/RBLOCKSLAST` WBLOCKSLAST=`cat /tmp/WBLOCKSLAST` if [[ $RXBYTELAST == '' ]]; then echo 0 > /tmp/RXBYTESLAST; RXBYTELAST=0; fi if [[ $TXBYTELAST == '' ]]; then echo 0 > /tmp/TXBYTESLAST; TXBYTELAST=0; fi if [[ $RBLOCKSLAST == '' ]]; then echo 0 > /tmp/RBLOCKSLAST; RBLOCKSLAST=0; fi if [[ $WBLOCKSLAST == '' ]]; then echo 0 > /tmp/WBLOCKSLAST; WBLOCKSLAST=0; fi if [[ $LAST == '' ]] ; then echo $NOW > /tmp/domcheck; LAST=$NOW; fi TLAST=$(expr $NOW - $LAST) if [[ $TLAST -gt $PERIOD ]];then RXBYTES=`ifconfig bond0 | grep "RX bytes" | cut -d: -f2 | awk '{ print $1 }'` TXBYTES=`ifconfig bond0 | grep "TX bytes" | cut -d: -f3 | awk '{ print $1 }'` RX=$(expr $RXBYTES - $RXBYTESLAST) TX=$(expr $TXBYTES - $TXBYTESLAST) TOTAL=$(expr $RX + $TX) PERTIME=$(expr $TOTAL / $TLAST) RBLOCKS=`cat /sys/block/sda/stat | tr -s ' ' | cut -d ' ' -f 2` WBLOCKS=`cat /sys/block/sda/stat | tr -s ' ' | cut -d ' ' -f 7` READ=$(expr $RBLOCKS - $RBLOCKSLAST) WRITE=$(expr $WBLOCKS - $WBLOCKSLAST) TOTALBLOCKS=$(expr $READ + $WRITE) BLOCKSPERTIME=$(expr $TOTALBLOCKS / $TLAST) echo $RXBYTES > /tmp/RXBYTESLAST echo $TXBYTES > /tmp/TXBYTESLAST echo $RBLOCKS > /tmp/RBLOCKSLAST echo $WBLOCKS > /tmp/WBLOCKSLAST echo $NOWTIME : Period=$TLAST : Disk=$BLOCKSPERTIME/$DISK : Net=$PERTIME/$NETWORK >> /tmp/TRX.txt echo $NOW > /tmp/domcheck #sudo ping -q -c1 192.168.0.20 ; echo $? if [[ $PERTIME -lt $NETWORK ]] && [[ $BLOCKSPERTIME -lt $DISK ]];then DOMOTICZ=`curl -s "http://192.168.0.8:8080/json.htm?type=devices&used=true&plan=6"` SLAPEN=`echo $DOMOTICZ | jq -r '.result[0].Status'` WEG=`echo $DOMOTICZ | jq -r '.result[1].Status'` if [ $SLAPEN = "On" ] || [ $WEG = "On" ]; then curl -s "http://192.168.0.8:8080/json.htm?type=command¶m=switchlight&idx=269&switchcmd=Off&level=0&passcode=" echo $NOWTIME : Shutting down now >> /tmp/TRX.txt sudo shutdown -P now >> /tmp/TRX.txt fi fi fi exit
Het ‘wakker’ maken van de Nas gebeurt ofwel door mijn iMac, ofwel door Domoticz. Dit stukje script schakelt ook de schakelaar uit in Domoticz als de Nas in slaapstand staat.
if($Sdiskstation=='On'&&$STdiskstation<$vijfmin) { $status = pingDomain('192.168.0.10', 5000); if(is_int($status)) { sleep(5); $status2 = pingDomain('192.168.0.10', 5000); if(is_int($status2)) Schakel($SIdiskstation, 'Off','diskstation'); } } else if($Sdiskstation=='Off' &&($Sbureeltobi=='On'||$Skodi=='On')) shell_exec('wakeonlan 00:11:32:2b:d1:1a');
Het schakelen van de schakelaar in Domoticz bij opstarten van de nas is een eenvoudige curl:
#!/usr/bin/env ash curl -s "http://192.168.0.8:8080/json.htm?type=command¶m=switchlight&idx=269&switchcmd=On&level=0&passcode="
Reacties zijn gesloten.