Smart Home-systemen zijn de afgelopen jaren steeds populairder geworden. Toch heeft elk systeem zo zijn nadelen: Ontbrekende interfaces, niet uitbreidbaar of aanpasbaar zijn. Wij laten zien hoe u het heft in eigen handen kunt nemen door met een Raspberry Pi een eigen Smart Home-centrale te bouwen die u naar uw wensen kunt aanpassen en uitbreiden. Hier laten we u de eerste stappen zien.
Het project
Geschikt voor: Beginners met basiskennis, gevorderden
Benodigde tijd: circa 1-2 uur
Budget: circa 80 euro
Dit hebt u nodig: 1x Raspberry Pi3-set, RPI relaisboard, netwerkkabel (optioneel)
Kan worden uitgebreid met: Willekeurige Smart Home-systemen
Dit hebt u verder nog nodig: Beeldscherm, pc-toetsenbord, internetverbinding
Voordelen ten opzichte van volledige Smart Home-systemen
In deze ‘Hoe doe je dat’ laten we u kennismaken met de gratis software openHABian, een variant van Debian, waarmee u van uw Raspberry Pi een Smart Home-server kunt maken. Maar waarom zou u dat doen, als u bijvoorbeeld ook al een Amazon Echo-systeem of Smart Home van Google heeft?
Het bijzondere aan openHABian is dat enerzijds al uw reeds aanwezige Smart Home-systemen geïntegreerd kunnen worden (lijst met ondersteunde systemen) en u derhalve dus nog maar één centrale besturingseenheid nodig hebt. Anderzijds kunt u de interface voor apparaten definiëren die normaal gesproken geen ‘slimme’ interface hebben. Het uitgangspunt daarvoor in deze ‘Hoe doe je dat’ is een eenvoudig relais.

OpenHABian installeren op de Raspberry Pi
Stap 1: De MicroSD-kaart voorbereiden
Om te beginnen richt u de Raspberry Pi in als openHABian-server. Hiervoor downloadt u de installatiekopie van de openHAB-website; vervolgens pakt u de installatiekopie uit en installeert u het programma met geschikte software, zoals Etcher, op een MicroSD-kaart.
Stap 2: Een internetverbinding opzetten
Omdat er tijdens de installatie een actieve internetverbinding nodig is, kunt u op openhabian.conf de SSID en het wachtwoord van uw WLAN invoeren, of verbindt u uw Raspberry Pi via een netwerkkabel met uw router. Wij raden u aan te kiezen voor de tweede optie, omdat installatie via WLAN vaak leidt tot problemen.
wifi_ssid=”My Wi-Fi SSID”
wifi_psk=”password123″
Stap 3: De installatie
Steek de MicroSD-kaart in de Raspberry Pi en verbindt deze met het netwerk. De installatie start automatisch en duurt, afhankelijk van de versie van uw Raspberry Pi en de snelheid van uw internetverbinding, ongeveer 25 minuten.
Als de installatie is gelukt, wordt u gevraagd naar de gebruikersnaam en het wachtwoord (openhabian/openhabian). Vervolgens wordt als ASCII-tabel een openHABian-teken weergegeven.
Stap 4: IP-adres definiëren
Bepaal het IP-adres van de RPi door Hostname -I in te voeren op de console. Voer het adres vervolgens in in uw browser en het configuratiescherm van uw openHAB-server die wordt weergegeven (u kunt hier kiezen voor ‘Standard’).
Als laatste raden we aan de Raspberry Pi een statisch IP-adres toe te wijzen. Dat kunt u doen via de instellingen van uw router. Daarnaast is een samba-verbinding of externe toegang tot de Raspberry Pi via SSH zeer handig bij het instellen. Beide services zijn voorgeconfigureerd en zijn bereikbaar via het IP-adres met de standaardgebruikersnaam en het wachtwoord.

Uw eerste Smart Home-toepassing
Als eerste Smart Home-toepassing willen we iets instellen dat met geen enkel ander Smart Home-systeem mogelijk is dat nu op de markt verkrijgbaar is: Wij willen als nieuwe interface het schakelen van een relais bewerkstelligen, waarmee u apparaten in uw woning kunt aansturen die niet beschikken over een ‘slimme’ interface, zoals uw garagedeur, binnen- en buitenverlichting, klimaatsystemen, elektrische deursloten, rolluiken, enzovoort.
Stap 1: de hardware
Steek het relaisboard zoals weergegeven in de Raspberry Pi en verbindt deze met de aan te sturen stroomkring (max. 35V!) met relais 1. Dit is de enige benodigde hardware-installatie.


Stap 2: Je code invoeren
Vervolgens kopieert u de volgende scripts naar de bijbehorende map in de conf-map van uw Raspberry Pi (het Python-script naar scripts). Gebruik hiervoor de Samba-verbinding met uw RPi.
exec.things:
Thing exec:command:remote-send [
command=”sudo python3 /etc/openhab2/scripts/relaySwitch.py %2$s”,
interval=0,
autorun=true]
]
Relay_Switch.items:
Switch Relay_Switch_1 <poweroutlet>
Switch Remote_Send { channel=”exec:command:remote-send:run” }
String Remote_Send_Args { channel=”exec:command:remote-send:input” }
String Remote_Send_Out { channel=”exec:command:remote-send:output” }
Relay_Switch_1.rules:
rule “Relay Switch 1”
when
Item Relay_Switch_1 received command
then
while(Remote_Send.state == ON){
Thread::sleep(500)
}
if(receivedCommand == ON){
Remote_Send_Args.sendCommand(“1 ON”)
}else{
Remote_Send_Args.sendCommand(“1 OFF”)
}
while(Remote_Send.state != OFF){
Thread::sleep(500)
}
logInfo(“Relay_Switch_1”, “Result:” + Remote_Send_Out.state )
end
relaySwitch.py:
#!/usr/bin/python3
import argparse
import smbus
class Relays():
def __init__(self):
self.dev_addr = 0x20
self.dev_reg_mode1 = 0x06
self.dev_reg_data = 0xff
self.bus = smbus.SMBus(1)
self.block = self.bus.read_byte_data(self.dev_addr, self.dev_reg_mode1)
def set_on(self, relays):
print(“Setting {} on…”.format(relays))
self.block &= ~(0x1 << relays)
self.bus.write_byte_data(self.dev_addr, self.dev_reg_mode1, self.block)
def set_off(self, relays):
print(“Setting {} off…”.format(relays))
self.block |= (0x1 << relays)
self.bus.write_byte_data(self.dev_addr, self.dev_reg_mode1, self.block)
def read_bytes(self,relays):
self.dev_reg_data |= (0x1 << relays)
block = self.bus.read_byte_data(self.dev_addr, self.dev_reg_mode1)
if __name__ == “__main__”:
def state2bool(state):
if state.lower() == “on”:
return True
elif state.lower() == “off”:
return False
else:
raise argparse.ArgumentTypeError(“State can either be on or off”)
parser = argparse.ArgumentParser(
description=”Change the state of a relays”
)
parser.add_argument(“relay_id”, type=int)
parser.add_argument(“state”, type=str)
args = parser.parse_args()
relays = Relays()
if state2bool(args.state):
relays.set_on(args.relay_id-1)
else:
relays.set_off(args.relay_id-1)
Stap 3: De schakeling van het relais activeren
Vervolgens moet u de knop waarmee het relais wordt geschakeld aanmaken in de gebruikersinterface en verschillende bindings installeren. Voer daarvoor het IP-adres van uw RPi in het adresveld van uw browser in en navigeer als volgt: PAPER UI->Addons->Bindings.
Zoek naar GPIO Binding en klik op ‘Installeren’. Voor EXEC Binding en REGEX Transformation gaat u op dezelfde wijze te werk.
Navigeer vervolgens terug en selecteer HABPANEL. Maak hier een nieuwe knop aan en selecteer onder HABItem het aan te sturen relais-onderdeel ‘Switch_Relay_1’.

Sla op en klik op Run. Als u nu op de schakelaar drukt, hoort u het klikken van het relais, de bijbehorende led gaat branden en de aangesloten stroomkring wordt geactiveerd.


Stap 4: Fouten opsporen
Als er niets gebeurt, controleert u of het i2c-protocol correct is ingesteld (volg daarvoor deze stappen) of controleer of u voldoende rechten hebt (volg daarvoor deze stappen). Bij het debuggen is de openHAB Log Viewer erg handig. Deze is te vinden onder poort 9001.
Toegang ook van buiten het eigen netwerk
Natuurlijk wilt u niet alleen in uw eigen huis uw apparaten kunnen aansturen, maar vanaf iedere gewenste locatie. Daarvoor stelt openHABian een cloudgebaseerde service ter beschikking. Voeg eerst de openHAB Cloud Connector toe aan het HABPANEL onder MISC. Registreer uw openHAB-server vervolgens onder myopenhab.org. De UUID en uw Secret dat u daarvoor nodig hebt, vindt u door in de console van uw RPi het volgende in te voeren:
UUID: cat /var/lib/openhab2/uuid
Secret: cat /var/lib/openhab2/openhabcloud/secret
Na aanmelding wordt u direct op de startpagina van de koppeling naar uw configuratiescherm geleid. Deze kunt u net als een app koppelen aan het beginscherm van uw smartphone. Zo hebt u altijd de volledige controle over de functies in uw woning.

