Domotica met Raspberry Pi2
Na vanalles over verschillende Domotica invullingen gelezen en gehoord te hebben werd ik zelf ook wel nieuwsgierig (als ‘leek’ op dit gebied) hoe ik zelf dit soort dingen opzetten kan. Uiteraard zijn er erg mooie sets te koop (ik maak hier geen opsomming van merken) maar daar hangt ook een flink prijskaartje aan en.. de uitdaging is in mijn ogen beperkt. In eerste instantie wilde ik met een Arduino Uno (of Mega) gaan werken maar een Raspberry is ‘more up to the job’ en heeft een aantal andere voordelen werd me verteld. Op deze pagina ga ik mijn bevindingen schrijven om zodoende misschien ook anderen wegwijs te maken op hun Domotica speurtocht, maar vooral ook voor mezelf als ‘naslag’.
Alles begint bij het aanschaffen van een Raspberry Pi, of.. soms wat voordeliger een setje met de startspullen er in. Iets concreets aansturen kan hiermee in mijn ogen nog niet maar hierover zo meer. Ik ga in ieder geval niet verder in op de mogelijke bordjes, het ontstaan van de bordjes, of wat het allemaal kan, maar heb zelf voor de ‘B’ versie 2 gekozen. Voor het setje op de foto moet je rond de 80 Euro betalen.

IPv4 en IPv6 probleem.
Veel problemen heb ik ondervonden omdat de Duitse Glasfaser hier gebruik maakt van DS-Lite. Hierbij heb je geen IPv4 adres meer voor de buitenwereld maar een (gelukkig wel statisch) IPv6 adres. Vervelend is dat de Raspberry na de installatie niet benaderbaar is en er een aantal instellingen gedaan moeten worden. Indien die gedaan zijn heb je nog een externe portmapper nodig om van de ‘buitenwereld IPv4’ naar de interne IPv6 te kunnen gaan. De volgende zaken kwamen aan bod:
– Toevoegen van het IPv6 protocol aan /etc/network/interfaces (met behulp van bijvoorbeeld nano):
#IPv6
iface eth0 inet6 static
pre-up modprobe ipv6
adress fe80::1
netmask 64
– Om er zeker van de zijn dat je in de rest van de Raspberry, en later ook op je router en bij de portmapper, het goede IP(v6) adres gebruikt kun je bekijken wat het adres van de pi is. Je ziet dan als het goed is zowel het IPv4 en het IPv6 adres:
hostname -I
– Om Domoticz van buiten te kunnen benaderen maak ik gebruik van Nginx. In eerste instantie werkte het niet en dat kwam, wederom, door het IPv6 adres waar ik in de configuratie een toevoeging moest doen. De setup staat in
/etc/nginx/sites-enabled/domoticz
access_log off;
add_header Cache-Control public;
# HSTS geeft aan dat een website alleen via secure te benaderen is.. 365 dagen !
add_header Strict-Transport-Security max-age=31536000;
add_header X-Frame-Options DENY;
server_tokens off;
server {
include /etc/nginx/proxy_params;
# Luisteren op poort 443 voor IPv4 en IPv6
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
keepalive_timeout 70;
server_name www.vossen.cc;
# ssl on;
ssl_certificate /etc/nginx/ssl/samengevoegd.crt;
ssl_certificate_key /etc/nginx/ssl/decrypted.key;
add_header X-Frame-Options SAMEORIGIN;
location / {
proxy_pass http://localhost:8080/;
access_log /var/log/nginx/dom.access.log;
error_log /var/log/nginx/dom.error.log;
}
}
– In het hierboven staande bestand wordt verwezen naar een SSL certificaat… het pem en key bestand. Ik heb deze in een directory gezet die ssl heet en daarheen verwezen. Op internet staan zeer goede beschrijvingen hoe je een (gratis) SSL kunt ophalen en gebruiken. Ondanks dat liep ik tegen het probleem aan dat Nginx een foutmelding gaf. Het probleem zat in het chain bestand waar meerdere certificaten in staan; deze moeten gescheiden worden door een volgende regel.. en mogen niet zomaar achter elkaar staan. De volgorde voor het maken van de bestanden zou moeten zijn:
Maken van een Private key (2048 bit RSA key),
openssl genrsa -aes256 -out encrypted.key 2048
Ontsleutelen aangemaakte key bestand,
openssl rsa -in encrypted.key -out decrypted.key
Aanmaken Certificate Signing Request,
openssl req -new -sha256 -key decrypted.key -out website.nl.csr
Aanmaken/ophalen van een certificaat (crt) bij bv. StartSSL,
nodig is een registratie bij StartSSL en gebruiken doe je de inhoud van je net aangemaakte website.nl.csr bestand.
Ophalen Intermediary Certificate (pem),
wget https://www.startssl.com/certs/sub.class1.server.ca.pem
Koppelen crt bestand met pem bestand naar chain (crt)
cat website.nl.crt sub.class1.server.ca.pem > samengevoegd.crt