Markdown source

# CM3-home - OpenHAB getting started 

<abstract>
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](http://www.tanzolab.it/)** durante lo sviluppo. Si farà riferimento a questi per il dettaglio di ogni singola operazione.
</abstract>

* [Descrizione delle caratteristiche della scheda](https://www.acmesystems.it/CM3-HOME)
* [CM3-HOME schematic (c) Acme Systems srl](http://www.tanzolab.it/CM3-HOME_schematic)
* [Report sui moduli Raspberry CM3 e CM3L](http://www.tanzolab.it/cm3)
* [Software alternativo per Home Automation e schede simili alla CM3-Home](http://tanzolab.it/CM3-HOME_links)

##Installazione OpenHAB
Per un tutorial completo su OpenHAB si rimanda al [sito ufficiale](http://docs.openhab.org/tutorials/beginner/index.html)

[Download installazione base su RPI](http://docs.openhab.org/installation/openhabian.html#raspberry-pi)

*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 
<pre class="terminal">
sudo openhabian-config
</pre>

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:

<pre class="terminal">
[12:44:08] openhabian@RasPIguiott:~$ ssh -p 8101 openhab@localhost
Password authentication
Password: 

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

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' 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> 
</pre>

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

<pre class="terminal">
openhab> log:set debug tuwien.auto.calimero
</pre>

oppure abilitare il trace

<pre class="terminal">
log:set TRACE org.openhab.binding.knx
log:set TRACE tuwien.auto.calimero
</pre>

E' consigliabile disabilitarlo alla fine del debug.

<pre class="terminal">
log:set DEFAULT org.openhab.binding.knx
log:set DEFAULT tuwien.auto.calimero
</pre>

Tutte le informazioni utili si trovano in:

<pre class="terminal">
/var/log/openhab2/event
/var/log/openhab2/openhab.log
</pre>

Oppure con il comando 
log:tail
in console

Oppure ancora tramite browser:
[http://cm3home.local:9001/](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:
<pre class="terminal">
openhab> config:delete org.openhab.knx

openhabian@RasPIguiott:~$ sudo systemctl restart openhab2
</pre>

###[Appunti sui test della CM3-Home](http://www.tanzolab.it/CM3-HOME_test)
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](http://www.tanzolab.it/openhab_ir)
* Configurare il connettore J3 per il display SPI
* Configurare la porta I2C

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

<pre class="terminal">
#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
</pre>

##Esempi di integrazione con dispositivi collegabili direttamente

* [Integrazione di KNX in OpenHAB via TPUART (TP-Bus)](http://www.tanzolab.it/openhab_knx)
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](http://www.tanzolab.it/openhab_modbus)
* [Appunti sul DMX-512](http://www.tanzolab.it/openhab_dmx)

* In questi articoli sono descritti due possibili utilizzi delle porte RS485 disponibili.
    * [GPIO](http://www.tanzolab.it/openhab_gpio)
    * [Relè](http://www.tanzolab.it/openhab_onewire)
    * 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](http://docs.openhab.org/addons/bindings/gpio1/readme.html)
* [Eseguire programmi da command line](http://www.tanzolab.it/openhab_executeCommandLine)
* [DALI (Light-bus)](http://www.tanzolab.it/openhab_dali)
* [Configurazione del binding serial](http://www.tanzolab.it/openhab_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.

<pre class="terminal">
sudo usermod -a -G dialout openhab openhabian
</pre>

* [Esempio di collegamento con un sensore di temperatura 1-wire](http://www.tanzolab.it/openhab_onewire)
* [Utilizzare l'IR receiver interno di CM3-Home con un telecomando IR](http://www.tanzolab.it/openhab_ir)
* [Appunti su LIRC, Utilizzo di un telecomando standard con il ricevitore IR](http://www.tanzolab.it/openhab_lirc)
* [Openhab audio. Usare l'uscita audio per segnalazione](http://www.tanzolab.it/openhab_audio)
* [SPI display on J3](http://www.tanzolab.it/CM3-HOME_spi_display)
* [Utilizzo di sensori su linee bilanciate tramite ingressi analogici](http://www.tanzolab.it/openhab_analogin)
    * To-Do

##Esempi di integrazione con servizi disponibili tramite LAN o WiFi

* [Utilizzo di MQTT con OpenHAB](http://www.tanzolab.it/openhab_mqtt)
* [Prove di integrazione SONOFF TH16](http://www.tanzolab.it/openhab_sonoff)
* [Esempi di codice per SONOFF](http://www.tanzolab.it/CM3-HOME_sonoff)
* [Integrazione con Telegram](http://www.tanzolab.it/openhab_sonoff)
* [Integrazione con IKEA Tradfri](http://www.tanzolab.it/CM3-HOME_tradfri)
* [configurazione del binding weather](http://www.tanzolab.it/openhab_weather)
* [Gestione dei widget in OpenHab](http://www.tanzolab.it/openhab_widget)
* [Come realizare dei grafici su OpenHAB](http://tanzolab.it/openhab_grafici)
* [Controllo di dispositivi tramite telecomando IR con il Broadlink RM mini 3](http://tanzolab.it/openhab_broadlink)

##Configurazione del modulo WiFi come Access Point

Per i dettagli seguire la  [presentazione di Andrea Montefusco](https://docs.google.com/presentation/d/1jEVEeuFrS9mTMH9Ry9aRXdGOLEdC6woTip3wJyqIKMs/edit#slide=id.p)

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:

<pre class="terminal">
# 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
</pre>

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

<pre class="terminal">
interface eth0
static ip_address=192.168.1.2
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
</pre>

## 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](https://myopenhab.org/) e la relativa app sia su [iOS](https://itunes.apple.com/it/app/openhab/id492054521?mt=8) che su [Android](https://play.google.com/store/apps/details?id=org.openhab.habdroid)

Una volta installato l'add-on relativo 

<img src="./OHcloud.png" class="img-responsive center-block" width="40%"/>

si troveranno i file:

<pre class="terminal">
/var/lib/openhab2/uuid
/var/lib/openhab2/openhabcloud/secret
</pre>

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](https://youtu.be/joz5f4ejJVc
).

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

<img src="./AppOH.png" class="img-responsive center-block" width="25%"/>

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

per lanciare alla partenza l'HABpanel, nel file:
<pre class="terminal">
~/.config/lxsession/LXDE-pi/autostart
</pre>

aggiungere 

<pre class="terminal">
chromium-browser --kiosk  http://192.168.1.2:8080/habpanel/index.html#/
</pre>

con l'indirizzo della CM3-Home.

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

<pre class="terminal">
/etc/lightdm/lightdm.conf
</pre>

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

<pre class="terminal">
[SeatDefaults]
xserver-command=X -s 0 -dpms -nocursor
</pre>

[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



@include='bio_guido_ottaviani'



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.