NAS aan en uit wanneer MacBook aan en uit is

Door balk op zaterdag 7 januari 2017 13:50 - Reacties (10)
Categorie: -, Views: 4.061

Ik heb een Intel D510MO met twee HDD's draaiend op Debian. Dit ding is vooral een backup server voor de MacBook die hier in huis rondslingert. Het verbruik is ongeveer 20W en dat zijn natuurlijk weggegooide wattjes wanneer we slapen of werken.

Vanaf de Mac stuur ik elk uur een incremental backup met behulp van CCC naar de NAS. Het ene uur grote bestanden naar een share. Het andere uur kleine bestanden naar een image op een share. Kleine files? zaken als de Aperture library van 90 GB en enkele 100.000en files. Grote files? zaken als de raw foto bestanden.

Ik had eens ergens een script vandaan gehaald dat zorgde dat de NAS automatisch aan gaat als een bepaalde computer aan gaat, aan blijft als deze aan is, en weer uit gaat als die computer uit gaat. Bron is weg, dus ik herhaal hier schaamteloos de scriptjes.

1. Wake on Lan

In het BIOS van mijn NAS moest ik Wake On Lan activeren.

2. Wek de NAS wanneer MacBook ontwaakt

Met behulp van Sleepwatcher laat ik een script draaien wanneer de laptop wakker wordt. Dit staat in het bestand ~/.wakeup.

code:
1
2
3
4
5
6
7
8
9
#!/bin/bash


/usr/bin/perl /path/to/wol.pl --mac xx:xx:xx:xx:xx:xx

/bin/sleep 120

# vul IP van server in
/usr/bin/ssh 192.x.x.x '/bin/echo $(/bin/date +%s)  > /path/to/folder/wake/upmark'



Dit [url=]http://www.cpan.org/authors/id/S/SR/SRAMKI/]Wake on lan script[/] heb je nodig om met perl de NAS te WoL'en. Dit script heeft enkele dependencies. Installeer die ook.

Op de NAS moet je ook een (door de user beschrijfbare) directory aanmaken. Die van mij staat in ~/wake. Maak daarin een bestand upmark:
touch ~/wake/upmark

Bovenstaand script zal de NAS wakker schudden en twee minuten later de tijd schrijven naar ~/wake/upmark.

3. Hou de NAS wakker (kant van de Mac)

Ik heb op de Mac het volgende script: ticker.sh

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

ip="192.168.0.NAS" # IP of NAS

if ! ping -c 1 -W 5 "$ip" &>/dev/null ; then

echo "$ip is down, they're all going to laugh at you!"
/usr/bin/perl /path/to/wol.pl --mac xx:xx:xx:xx:xx:xx
/bin/sleep 120
else
echo "$ip is up"
fi

/usr/bin/ssh 192.168.0.NAS '/bin/echo $(/bin/date +%s)  > /path/to/wake/upmark'
#$(/bin/date +%s)


Met behulp van Launcontrol roep ik elk kwartier dit script aan:
ticker.sh

4. Hou de NAS wakker (kant van de NAS)

Op de NAS, installeer pm-utils en test de correcte werking. Het laat je NAS hibernaten, dit schrijft de inhoud van je RAM naar schijf en de NAS gaat helemaal uit.

CreŽer het bestand /path/to/wake/keepawake.sh

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

file="/path/to/wake/upmark"
LOGPATH="/path/to/wake/log_wake.log"

timestamp() {
  /bin/date
}

mactime=$(/bin/cat "$file")
now=$(/bin/date +%s)

#deltat=`/usr/bin/expr $(/bin/date +%s)-$mactime`
deltat=$(($now  - $mactime))
limit=1200

/bin/echo $deltat
/bin/echo $limit

if (( deltat > limit ));
then
        # hibernate
        /bin/echo "$(timestamp): system hibernated" >> $LOGPATH
#       /bin/systemctl hibernate
        /usr/bin/sudo /usr/sbin/pm-hibernate
        exit
else
        # do nothing
        
        /bin/echo "$(timestamp): system kept awake, delta is $deltat" >> $LOGPATH
        exit
fi


Als user:
crontab -e


code:
1
5,20,35,50 * * * * /path/to/wake/keepawake.sh


Dit roept elk uur, 5 minuten nadat er een ticker binnen is gekomen van de Mac, het script op dat de huidige tijd met de ticker tijd vergelijkt. Is er geen ticker binnengekomen? Dan is de Mac offline en kan de NAS gaan slapen.

Opentherm Gateway via WiFi naar Domoticz

Door balk op vrijdag 6 mei 2016 10:31 - Reacties (13)
Categorie: -, Views: 7.976

Ik was al een tijdje aan het denken over een slimme thermostaat of in ieder geval een manier om van buitenaf mijn verwarming te kunnen bedienen. Ik was wel geÔnteresseerd in de Thermosmart maar de prijs stond mij tegen. Toen kwam ik een post tegen over de Opentherm Gateway. Dit heeft meerdere voordelen:
  • Een hobbyproject, lekker solderen! Nooit gedaan, wel leuk
  • Goedkoop, kosten waren §30,- ongeveer, plus §10,- voor de ESP
  • Oude vertrouwde thermostaat, beter voor de acceptatie door medebewoners
Mijn situatie:
  • Remeha Calenta boven in huis
  • iSense versie 23
  • Raspberry Pi in de meterkast
  • Domoticz op Raspbian
  • P1 poort wordt uitgelezen
OTGW in elkaar gesoldeerd
Na veel lezen door dit topic en bovengenoemde website besloot ik de componenten te bestellen. Ik besloot om een iets zwaardere voeding te bestellen zodat ik een ESP8266 er op aan kon sluiten. Kortom, wachten op de levering, en solderen maar!
Communicatie (hardware)
Op de route tussen thermostaat en CV ketel kom ik nergens een ethernetkabel tegen dus ik moest iets anders bedenken om de OTGW te laten praten met de Rapberry Pi. De OTGW praat serieel (USB of RS232) en gelukkig bestaan er ESP8266 chips die serieel naar WiFi praten. Ik heb deze ESP12 besteld. Dit is een ESP12 op een bordje met wat extra's, zoals een reset knop, breakout pins en een 5V --> 3,3V conversie.
ESP12
Deze module heb ik als volgt aangesloten op de OTGW. Ik moest ook twee bruggetjes maken om de signalen van de PIC naar de connector te sturen.
http://static.tweakers.net/ext/f/rQwOnDqYWKo7LNyoznOSW48s/medium.jpg
OTGW met ESP module
Ook heb ik een el-cheapo USB 2 serial kabel gekocht.
Communicatie (software)
De ESP is een chip die serieel omzet in WiFi, en weer terug. Er bestaan verschillende firmware projecten die je kunnen helpen. Ik koos voor ESP-Link want die zou moeten werken. Met behulp van ESP-Tool en de el-cheapo serieel-USB kabel heb ik deze firmware op de ESP geladen. Daarna is de ESP een access point waarop je in kan loggen, een lokaal wifi netwerk kiezen en dan is tie verbonden.

Vervolgens de ESP aangesloten op de OTGW en dan krijg je iets als dit:
ESP Console
Ik zie dus alle codes die de OTGW uitspuugt! :)
Dit is gewoon good old Telnet en ook te benaderen op poort 23. In Domoticz was het daarna niet moeilijker dan dit invullen:
http://static.tweakers.net/ext/f/0o8eze3GPwK9ODI63TjdE2zE/medium.png
Het werkt! Althans, bijna alles. Ik kan de gegevens uitlezen maar de temperatuur nog niet aanpassen.

Op mijn Remeha iSense thermostaat moest ik nog een instelling veranderen,

code:
1
Instellingen --> Installateur --> Externe Ingang --> Toestaan



En nu kan ik via Domoticz de gewenste temperatuur instellen!