CM3-home - OpenHAB getting started

Tramite i link agli articoli scritti durante le fasi di progettazione e test della scheda, in questo articolo saranno descritte la procedura per l'installazione base di OpenHAB sulla scheda CM3-home e le configurazioni di ogni singola interfaccia. E' in pratica un indice ordinato degli appunti raccolti dal gruppo Tanzolab durante lo sviluppo. Si farà riferimento a questi per il dettaglio di ogni singola operazione.

Installazione OpenHAB

Per un tutorial completo su OpenHAB si rimanda al sito ufficiale

Download installazione base su RPI

ATTENZIONE le fasi di installazione sono tutte molto lunghe, occorre avere pazienza.

Una volta installato OpenHAB secondo le istruzioni, occorre proseguire con le personalizzazioni e le installazioni del software aggiuntivo necessario.

lanciare

sudo openhabian-config

preparare le porte seriali per l'utilizzo con OpenHAB

  • 30 | System Setting
    • 35 | Serial Port
      • [*] 1 (RPi) Disable serial console
      • [*] 2 (RPi3) Disable Bluetooth module
      • [*] 3 Add common serial ports to openHAB JVM

eseguire

  • 30 | System Setting
    • cambiare password, host name, WiFi, ecc.
  • 01 | Update
  • 02 | Upgrade System
  • 20 | Installare componenti opzionali
    • Mosquitto
    • Grafana
    • knxd

Per verificare la configurazione si può aprire la console specifica, prendiamo come esempio il binding knx:

[12:44:08] openhabian@RasPIguiott:~$ ssh -p 8101 openhab@localhost
Password authentication
Password: 

                          __  _____    ____      
  ____  ____  ___  ____  / / / /   |  / __ )     
 / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  | 
/ /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ /      
\____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/     
    /_/                        2.1.0
                               - release build -   

Hit '' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '' or type 'system:shutdown' or 'logout' to shutdown openHAB.

openhab> config:list "(service.pid=org.openhab.knx)"
----------------------------------------------------------------
Pid:            org.openhab.knx
BundleLocation: mvn:org.openhab.binding/org.openhab.binding.knx/1.10.0
Properties:
   localIp = localhost
   service.pid = org.openhab.knx
   type = ROUTER
openhab> 

In caso di problemi può essere utile aumentare il livello di debug per verificare eventuali errori nella configurazione:

openhab> log:set debug tuwien.auto.calimero

oppure abilitare il trace

log:set TRACE org.openhab.binding.knx
log:set TRACE tuwien.auto.calimero

E' consigliabile disabilitarlo alla fine del debug.

log:set DEFAULT org.openhab.binding.knx
log:set DEFAULT tuwien.auto.calimero

Tutte le informazioni utili si trovano in:

/var/log/openhab2/event
/var/log/openhab2/openhab.log

Oppure con il comando log:tail in console

Oppure ancora tramite browser: http://cm3home.local:9001/

La configurazione viene normalmente presa in modo dinamico dal file /etc/openhab2/services/knx.cfg. Può succedere però che le informazioni rimangano in cache e sopravvivano anche al restart del servizio. A quel punto è consigliabile ripulire la cache prima di riavviare:

openhab> config:delete org.openhab.knx

openhabian@RasPIguiott:~$ sudo systemctl restart openhab2

Appunti sui test della CM3-Home

In questo articolo ci sono molti dettagli sulla configurazione della scheda con i dispositivi usati sul pannello demo.

In particolare, seguire le istruzioni per:

  • Spostare la porta di debug (UART0) da GPIO14-GPIO15 a GPIO32-GPIO33
  • Assegnare funzioni a LED RGB
  • Spostare i segnali del PWM audio
  • Assegnare la linea 1-wire
  • Assegnare la linea per il ricevitore IR Seguire articolo IR su PIN 20
  • Configurare il connettore J3 per il display SPI
  • Configurare la porta I2C

al file /boot/config.txt andranno aggiunte quindi le seguenti righe:

#Sposta la debug port seriale sulle linee 32 e 33
force_turbo=1
dtoverlay=uart1,txd1_pin=32,rxd1_pin=33

#CM3-Home led definition
dtoverlay=cm3-home-leds

#Abilita il PWM sulle linee 40 e 41 usate per l'audio out
dtoverlay=pwm-2chan,pin=40,func=4,pin2=41,func2=4

# Enable the 1-wire bus
dtoverlay=w1-gpio,gpiopin=16

#Enable the IR Linux driver
dtoverlay=lirc-rpi,gpio_in_pin=20

dtparam=spi=on
dtoverlay=rpi-display,speed=32000000,rotate=270
#dtoverlay=ads7846,cs=0,penirq=34,speed=10000, swapxy=0, pmax=255, xohms=60, xmin=200, xmax=3900, ymin=200, ymax=3900

#I2C su morsetto
#(https://github.com/raspberrypi/linux/blob/rpi-4.9.y/arch/arm/boot/dts/overlays/README#L783)
dtparam=i2c_arm=on
dtparam=i2c_arm_baudrate=400000
dtoverlay=i2c1-bcm2708,sda1_pin=44,scl1_pin=45,pin_func=6

Esempi di integrazione con dispositivi collegabili direttamente

  • Integrazione di KNX in OpenHAB via TPUART (TP-Bus) Il demone knxd ha un colloquio costante con la TPUART, inizia con un handshake iniziale e prosegue con un heartbeat periodico. La circuiteria KNX e la TPUART stessa sono alimentate dal bus esterno. Per garantire un corretto funzionamento occorre che il bus sia collegato ai morsetti ed alimentato prima di avviare la CM3-home.
  • Modbus
  • Appunti sul DMX-512

  • In questi articoli sono descritti due possibili utilizzi delle porte RS485 disponibili.

    • GPIO
    • Relè
    • Gli ingressi digitali optoisolati e i relè sono utilizzati tramite il binding GPIO. Questo binding è specifico per OpenHAB 1, la compatibilità con OpenHAB 2 potrebbe creare qualche problema, attenzione alle raccomandazioni indicate nella documentazione ufficiale
  • Eseguire programmi da command line
  • DALI (Light-bus)
  • Configurazione del binding serial
    • Per questa porta è stato usato come esempio un semplice collegamento con una scheda Arduino sia per inviare che per ricevere dati
    • Ricordarsi di inserire l'utente openhab nel gruppo dialout.
sudo usermod -a -G dialout openhab openhabian

Esempi di integrazione con servizi disponibili tramite LAN o WiFi

Configurazione del modulo WiFi come Access Point

Per i dettagli seguire la presentazione di Andrea Montefusco

In particolare, dopo aver installato il servizio hostapd occorre disabilitare l'avvio automatico tramite systemctl e gestirlo tramite /etc/rc.local per fare in modo che ogni servizio sia lanciato solo quando il dispositivo è pronto. Anche il servizio dhcpcd deve essere disbilitato. Aggiungere quindi a rc.local le righe:

# funzionamento network come AP con eth0 e uap0(wlan) in bridge
#

echo 37 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio37/direction                                   
echo 1 > /sys/class/gpio/gpio37/value

sleep 1

ifup eth0
ifconfig eth0 up

ifconfig

rfkill list

ifup wlan0
ifconfig wlan0 up

ifconfig

brctl addbr br0
brctl addif br0 eth0

ifconfig br0 up

sleep 1

ifup br0

sleep 1

route add -net 0.0.0.0/0 gw 192.168.1.1


iw dev wlan0 interface add uap0 type __ap
ifup uap0

hostapd /etc/hostapd/hostapd.conf &

exit 0

Aggiungere le seguenti righe al file /etc/dhcpcd.conf se si vuole un indirizzo IP statico:

interface eth0
static ip_address=192.168.1.2
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

App Mobile

Per usare la stessa configurazione su dispositivi mobile, senza essere fisicamente collegati alla rete domestica, si può usare il servizio cloud open di openhab e la relativa app sia su iOS che su Android

Una volta installato l'add-on relativo

si troveranno i file:

/var/lib/openhab2/uuid
/var/lib/openhab2/openhabcloud/secret

il cui contenuto serve per configurare l'account del servizio cloud. Un tutorial completo sull'installazione e configurazione di questo servizio si può trovare qui.

Lanciando l'app e collegandola con l'account configurato saranno disponibili tutte le funzioni configurate anche sul dispositivo mobile.

Display

Configurazione per il pannello di gestione collegato alla CM3-Home:

per lanciare alla partenza l'HABpanel, nel file:

~/.config/lxsession/LXDE-pi/autostart

aggiungere

chromium-browser --kiosk  http://192.168.1.2:8080/habpanel/index.html#/

con l'indirizzo della CM3-Home.

Per disabilitare lo screensaver e il cursore nel browser, nel file

/etc/lightdm/lightdm.conf

scommentare la riga relativa ad Xserver ed aggiungere i parametri necessari:

[SeatDefaults]
xserver-command=X -s 0 -dpms -nocursor

[Per disabilitare l'iconcina di battery low con il simbolo del fulmine(https://www.raspberrypi.org/forums/viewtopic.php?t=82373)

basta aggiungere avoid_warnings=1 a /boot/config.txt

Guido Ottaviani (Autore/Progettista elettronico-firmware-robotica)
Si occupa della progettazione elettronica e del firmware di sistemi embedded per la Robotica e applicazioni industriali e civili oltre che di divulgazione tecnica su internet.
http://www.guiott.com - https://github.com/guiott - guido@guiott.com



Le attività del TanzoLab si svolgono ogni mercoledi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.