openHAB

Ik gebruik openHAB als software (redenen via introductie). Er zijn vrij veel installatiemethodes waarbij alle gebruikelijke hardware/operating systemen ondersteund worden, in mijn geval dus linux op een raspberry pi. De meest makkelijke (zeker als je niet bekend bent met linux commando's) is een image waarin alles (raspberry OS en openHAB) al zit ingebakken die je alleen op een SD kaart hoeft te zetten. Dit is de aanbevolen en makkelijkste manier voor beginners. Image downloaden, op een SD kaart zitten, in de raspberry stoppen en klaar.

Maar je kan ook één kiezen waarbij je meer invloed/vrijheid hebt. Dat heb ik gedaan omdat ik de raspberry pi met een harde schijf i.p.v. de SD kaart gebruik. Dit is wat hieronder beschreven is.

Eerste stap is dan de Raspberry PI OS (voorheen Raspian) installeren. Je download een programma voor je PC of laptop, start dit en via een wizard wordt een SD kaart of harde schijf voorbereid. Deze stop je in de Raspberry en na opstarten moet je nog wat configuratiestappen uitvoeren. Daarna is de raspberry klaar en kan je verder met openHAB.

(mogelijk verouderd voorbeeld, check link voor actuele instructies!!!)

#installeer git
sudo apt-get update
sudo apt-get install git

#voorbereiden openHabian
sudo git clone -b openHAB3 https://github.com/openhab/openhabian.git /opt/openhabian
sudo ln -s /opt/openhabian/
openhabian-setup.sh /usr/local/bin/openhabian-config
sudo cp /opt/openhabian/build-image/openhabian.conf /etc/openhabian.conf

#pas configuratie aan jouw situatie aan (hostnaam, WiFi settings en locatie is minimum)
sudo vi /etc/openhabian.conf

#installeren
sudo openhabian-config unattended

Hierna kan je via apt openHabian installeren met deze instructie. Als je nog een 'oude' raspberry met software hebt liggen let dan op de voorwaarden. openHAB 4.x vereist bijvoorbeeld minimaal Bullseye i.v.m. de java 17 afhankelijkheid. Begin je vanaf scratch komt dit meestal wel goed omdat je van alles de meest recente versie krijgt.

Als alles draait kan je je openHAB via een browser bereiken op http://in_config_gekozen_naam:8080. Je komt in een GUI terecht waarin je alles verder kan regelen. Eerst wat vragen over locatie, instellen van je admin account en dergelijke. Daarna kan je aan de slag. De basis bestaat uit het inrichting van bindings en things om de technische koppeling met apparaten te leggen. Hier kan je in openHAB verder nog niks mee totdat je er een model en items van maakt (vaak 1:1 maar hoeft niet) waarmee je waarden kan zien en/of veranderen. Dat wil je natuurlijk vaak via een webpaginas of app waarvoor je pages maakt. Dan heb je al iets werkends maar in de vorm van een veredelde/geintegreerde afstandsbediening. De volgende stap zijn rules waarmee je zaken automatisch kan laten gebeuren. Dat kan op tijd zijn, maar ook als je iets anders doet of een waarde binnenkrijgt. Denk aan licht aan om 18:00 of nog beter licht aan als het te donker wordt. Of radio uit als je de TV aandoet. En dan wordt het home automation. Daar kan ik natuurlijk eindeloos op doorgaan, een hele korte intro van de concepten staat op pagina 3 met links naar openHAB handleidingen, community en lekker nederlands bij tweakers. En natuurlijk kan je mijn oplossingen ook via het menu bekijken.

Software updaten

#updaten
sudo apt-get update
sudo apt-get upgrade

Het hoeft natuurlijk niet meteen maar het updaten van je installatie kan dan later gewoon met apt. Belangrijk aandachtspunt, openHAB zet major releases op dezelfde 'plek'. Hiermee kan je in de knoop komen omdat versies van OS of andere zaken niet meer passen. Let dit een beetje op de aankondigingen of er een major release online komt en check dan even of dit issues gaat geven. Makkelijkste manier is even af te wachten, er ontstaat vanzelf fuzz op het formum als dat zo is. Veiligste manier van bijwerken (ook aanbevolen door openHAB zelf) is via de openhabian-config tool

Optionele tweaks

Je hebt nu de standaardinstallatie waarmee je prima aan de slag kan. Maar als je wilt kan je die verder optimaliseren of verbeteren. In mijn geval had ik bijvoorbeeld de WiFi niet nodig dus dan kan die uit om energie te besparen. En had ik wat issues in combinatie met mijn Fritzbox, misschien inmiddels alweer overbodig omdat die ook alweer een flink aantal versies verder is. Maar goed, als het werkt dan werkt het.

Raspi-Config

sudo apt-get install raspi-config

Standaard zal openHAB de raspi-config tool verwijderen omdat je openhabian-config moet gebruiken. Deze bevat echter niet alle opties, vandaar dat ik hem weer geinstalleerd heb.

WiFi uit

cd /boot
sudo vi config.txt
voeg toe:
dtoverlay=disable-wifi

Als je WiFi op de Raspberry niet gebruikt kan je die uitzetten om wat energie te besparen. Het is niet veel maar hij staat altijd aan dus het telt op.

Bluetooth uit

cd /boot
sudo vi config.txt
voeg toe:
dtoverlay=disable-bt

Als je Bluetooth op de Raspberry niet gebruikt kan je die uitzetten om wat energie te besparen. Het is niet veel maar hij staat altijd aan dus het telt op.

ipv6 uit

cd /boot
sudo vi config.txt
voeg toe:
ipv6.disable=1

Mogelijk is dit inmiddels wel opgelost maar op mijn netwerk gaf dit gedoe met niet opgeloste adressen (terwijl ik alleen ik alleen de namen gebruik, wie onthoudt nou een nummer), dus ik heb alleen de ipv4 aangelaten op de raspberry. Laat de fritzbox het verder maar regelen.

Multicast uit

sudo systemctl disable avahi-daemon.service
sudo systemctl mask avahi-daemon

Helemaal zeker weet ik het niet maar het hielp. Ik had issues met muticast flooding (heel veel berichten die netwerk vertragen) door de combinatie van de fritzbox, raspberry en Google Nest apparaten. Het lijkt erop dat de raspberry ze bleef pingpongen in combintie met de andere twee.

Geheugen vrijmaken

sudo raspi-config
kies: minimum GPU memory setting

Het video geheugen naar het minimum zetten om wat extra vrij te maken voor raspberry. Je kan het ook helemaal uit zetten maar voor 't geval de remote toegang niet meer werk leek me een backup in de vorm van een toetsenbord en scherm wel handig.

Security

sudo raspi-config
kies:boot to text console/user must login

Als iemand toetsenbord en muis aansluit, vraag altijd om wachtwoord.

CORS

cd /etc/openhab/services/
vi runtime.cfg
edit:
org.openhab.cors:enable=true

Hier weet ik het fijne niet van maar ik kreeg foutmeldingen op CORS en googlen leverde op dat je dit moest doen. Het hielp.

I2C

cd /boot
sudo vi config.txt
edit/voeg toe: dtparam=i2c_arm=on (meestal # verwijderen)

sudo chmod o+rw /dev/i2c*

optioneel aparte i2c/gpio user:
sudo adduser gekozen_naam i2c
sudo adduser geozen_naam gpio
mogelijk ook:
sudo usermod -a -G dialout gekozen_naam

Ik heb diverse hardware aangesloten via het I2C protocol op de GPIO pinnen. Deze moet je wel aanzetten om te kunnen gebruiken en schrijftoegang activeren om hem echt te kunnen gebruiken. Heb je (zie pagina 2) een aparte user aangemaakt voor de script/besturing moet je ook die user aan de juiste groepen toevoegen.

USB alias/snelkoppeling

indien al aangesloten:
dmesg | grep ttyUSB
geeft resultaten als:
9.103927] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
die zoek je op:
udevadm info --name=/dev/ttyUSB0 --attribute-walk
Nu zoek je de 1-1.4 op in de resultaten hiervan:
looking at parent device '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4':
ATTRS{idProduct}=="6001"
ATTRS{idVendor}=="0403"
En die idProduct en idVendor gaat het om.

Indien je hem net hebt aangesloten is er een andere route:
cd /var/log
tail -1000 syslog
Je ziet regels als:
usb 1-1.3: new full-speed USB device number 4 using xhci_hcd
usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 1-1.3: Product: USB Serial
usbcore: registered new interface driver ch341
usb 1-1.3: ch341-uart converter now attached to ttyUSB1
En zo kom je ook op idProduct, idVendor (en andere identificerende gegevens)

Die gebruik je dan om een alias aan te maken:
sudo vi /etc/udev/rules.d/10-usb-serial.rules
Toevoegen/aanpassen
SUBSYSTEM=="tty", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ATTRS{serial}=="AK30QKFS", SYMLINK+="ttyUSB_POWER"
SUBSYSTEM=="tty", ATTRS{idProduct}=="7523", ATTRS{idVendor}=="1a86", SYMLINK+="ttyUSB_ZIGBEE"
En dan maak je de aliassen direct actief met:
sudo udevadm trigger

En kan je het resultaat controleren door:
cd /dev
ls tty*
Ze moeten in het lijstje staan, in mijn geval:
ttyUSB_POWER
ttyUSB_WATER
ttyUSB_ZIGBEE
Zie je ze niet, heb je ergens een tikfout gemaakt of de verkeerde device id's opgezocht.

Het je meerdere USB apparaten aangesloten kan je in de knoop komen met de poorten. Standaard krijgen deze een nummer en die toewijzing kan na elke reboot veranderen. Dit kan je oplossen met een alias (of snelkopppeling). Stap één is de unieke kenmerken op te zoeken en stap twee is die dan te gebruiken in de alias.

Geheugen

cd /etc/default
sudo vi openhab
pas openhab file aan:
EXTRA_JAVA_OPTS="-Xms256m -Xmx1536m"

Dit hangt wat af van je raspberry maar als je genoeg geheugen hebt kan je wat meer dan standaard aan de raspberry geven. Ik heb 4Gb en heb daarom de settings aangepast naar opstarten met 256Mb en Maximaal 1,5Gb. Hoeveel je nodig hebt lijkt vooral af te hangen van de hoeveelheid en complixiteit van je rules.

1 2 3