Sunteți pe pagina 1din 9

Textul si imaginile din acest document sunt licentiate

Attribution-NonCommercial-NoDerivs
CC BY-NC-ND

Codul sursa din acest document este licentiat


Public-Domain

Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici
un fel de limitari.

Realizarea unui sistem de tip Home


Automation (Partea a III-a)
Instalarea i configurarea platformei
OpenHab pe un sistem Microsoft
Windows
Platforma OpenHab este un produs open-source de tip
Home Automation, dezvoltat n Java, compatibil cu majoritatea sistemelor de operare actuale: Microsoft Windows,
Linux, OS X. OpenHab permite monitorizarea i controlul
centralizat ale tuturor echipamentelor inteligente din locuin (senzori, echipamente anti-efracie, sisteme de acionare, sisteme multimedia, sisteme de climatizare) fiind independent de un standard proprietar de comunicaie sau
http://www.openhab.org/
de un anume tip de dispozitiv.
n cadrul leciei de fa vom exemplifica conectarea cu o reea de elemente MySensors
dar n leciile viitoare vom extinde integrarea i cu alte platforme.
Interfaa utilizator a platformei este disponibil n format web dar i sub forma de aplicaii native Android i iOs.

https://www.robofun.ro/forum/

Instalarea sub platforma Microsoft Windows necesit instalarea prealabil a mediului


de execuie Java:
http://java.com
dup care se copiaz ultima versiune (stabil de preferat) a OpenHab Runtime Core:
http://www.openhab.org/getting-started/downloads.html
se dezarhiveaz n rdcina unuia dintre drive-urile sistemului de calcul (de exemplu
C:\) sub directorul openhab (de exemplu C:\openhab). Instalarea este gata, urmeaz
partea de configurare. Este posibil copierea unui set de configuraii demo (Demo setup
conine un set complet de configuraii ca exemplu) dar este recomandat configurarea
treptat de la zero.
Aceti pai de instalare i configurare au fost testai pe un sistem desktop Microsoft
Windows 10 x64 avnd instalat pachetul Oracle Java 8 Update 101 i utiliznd versiunea OpenHab 1.8.3.
Primul pas de configurare presupune ca n subdirectorul configurations se redenumete
fiierul openhab_default.cfg n openhab.cfg . Acest fiier conine toate setrile serviciului OpenHab. Pentru a funciona n conjuncie cu o reea MySensors se adaug la
sfritul fiierului o seciune nou:
################### MySensors ######################
mysensors:port=COMXX
pentru funcionarea n conjuncie cu un gateway serial (unde COMXX este portul pe
care este conectat gateway-ul serial) sau:
################### MySensors ######################
mysensors:type=ethernet
mysensors:host=192.168.100.7
mysensors:port=5003
pentru un gateway ethernet (unde host este adresa IP a sistemului gateway).
Comunicaia ntre platforma OpenHab i protocolul serial specific reelei MySensors
este asigurat de o component software de legtur (binding add-on) ce trebuie copiat
n subdirectorul addons al instalrii de la adresa:
http://bkl.linux.dk/org.openhab.binding.mysensors-1.8.0-SNAPSHOT.jar

https://www.robofun.ro/forum/

Exist o colecie implicit de astfel de componente software ce fac legtura cu diverse


alte sisteme. Ea se copiaz de la aceiai adres ca i Runtime Core componenta Addons. Nu este recomandat copierea tuturor componentelor n subdirectorul instalrii
efectuate anterior deoarece o colecie mare de componente ncrcate la pornirea platformei OpenHab ngreuneaz funcionarea. Pentru nceput vom copia doar org.openhab.binding.ntp-1.8.3.jar component ce ne va permite afiarea orei i datei preluate
de un server NTP.
Urmtorul pas este realizarea fiierului de configuraie al centrului de comand pe
care dorim s l crem. n subdirectorul configurations\sitemaps crem un fiier casamea.sitemap (unde casamea poate fi nlocuit cu ce denumire dorim). Cu ajutorul unui
editor text decent (se recomand Notepad++) se editeaz acest fiier i se completeaz:
sitemap casamea label="Meniu Principal" {
Frame label="Senzori de temperatura" {
Text item=Temperature0 icon="temperature"
Text item=Temperature1 icon="temperature"
}
Frame label="Data calendaristica" {
Text item=Date icon="calendar"
}
}
Interfaa creat n cadrul acestui fiier de configurare va avea dou seciuni: Senzori de
temperatura (n care vom afia datele primite de la cei doi senzori ai sistemului construit n lecia anterioar) i Data calendaristica (n care vom afia data). Pentru a putea
afia aceste informaii trebuie s crem un fiier casamea.items n subdirectorul configurations\items ce va conine urmtoarele definiii:
Number

Temperature0

Number

Temperature1

DateTime

Date

"Temperatura interioara [%s C]" <temperature>


{mysensors="10;0;V_TEMP"}
"Temperatura exterioara [%s C]" <temperature>
{mysensors="10;1;V_TEMP"}
"Date [%1$tA, %1$td.%1$tm.%1$tY]" <calendar>
{ntp="Europe/Bucharest:ro_RO"}

n acest moment sistemul este gata de utilizare. Se pornete platforma utiliznd fiierul
start.bat din directorul de instalare. Se va deschide o fereastr de forma:

https://www.robofun.ro/forum/

Pentru ca platforma OpenHab s porneasc automat la pornirea sistemului trebuie copiat un shortcut al fiierului start.bat n directorul startup al utilizatorului dorit sau se
poate defini un scheduled task.
Accesarea interfeei OpenHab se face dintr-un browser web accesnd pagina:
http://192.168.100.2:8080/openhab.app?sitemap=casamea
unde 192.168.100.2 este adresa sistemului pe care s-a efectuat instalarea sau
http://localhost:8080/openhab.app?sitemap=casamea
dac se acceseaz de pe acelai sistem. Captur de ecran cu fereastra de browser:

Alternativ interfaa se poate accesa prin intermediul unei aplicaii mobile Android sau
iOs configurnd adresa platformei OpenHab n aplicaie. Capturi de ecran cu setarea
aplicaiei Android i cu interfaa Meniu Principal:

https://www.robofun.ro/forum/

Construirea i integrarea unui element de


acionare
Explicaiile de pn n acest moment au artat cum se
poate integra un element de achiziie format din doi
senzori de temperatur cu platforma OpenHab. Vom
continua cu construirea i integrarea unui element de
acionare bazat pe un releu ce acioneaz un bec de
12V (o lamp de birou). Pentru acest lucru vom conecta la sistemul de baz (Arduino Uno + SparkFun
Transceiver Breakout - nRF24L01+) o plac releu
SPDT 5VDC. Conexiunea ntre placa de dezvoltare i
placa releu se va realiza prin intermediul pinului digital D3 al plcii de dezvoltare conectat la pinul EN al
plcii releu.
https://www.robofun.ro/module/module-releu/releu-spdt-5V
Schema sistemului va arta precum n diagrama urmtoare:

Atenie, placa releu nu este proiectat pentru tensiuni mari utilizarea la tensiuni mai
mari de 12V este extrem de periculoas!

https://www.robofun.ro/forum/

Programul va utiliza biblioteca MySensors 2.0.0 (la fel ca i exemplele din leciile anterioare):
#define
#define
#define
#define
#define

MY_DEBUG
MY_RADIO_NRF24
MY_REPEATER_FEATURE
MY_NODE_ID 20
MY_BAUD_RATE 9600

#include <SPI.h>
#include <MySensors.h>
Exemplul este gndit pentru a funciona cu un numr mai mare de relee (numr limitat
doar de numrul de pini digitali ai plcii de dezvoltare). Se pot conecta mai multe relee
pe urmtori pini digitali D4, D5, D8.
#define
#define
#define
#define

RELAY_1 3
NUMBER_OF_RELAYS 1
RELAY_ON 1
RELAY_OFF 0

Seciunea before() este specific bibliotecii MySensors 2.0.0 i se execut nainte iniializarea mecanismelor interne bibliotecii. n cadrul acestei seciuni se vor iniializa
pinii digitali ca ieiri de comand i se va restaura starea precedent a pinilor salvat
n memoria EEPROM n seciunea receive() mecanism util n cazul unor reporniri
neprogramate ale elementului de acionare.
void before() {
for (int sensor=0, pin=RELAY_1; sensor<NUMBER_OF_RELAYS;
sensor++, pin++) {
pinMode(pin, OUTPUT);
digitalWrite(pin,
loadState(sensor)?RELAY_ON:RELAY_OFF);
}
}
n cadrul seciunii presentation() (specific bibliotecii, se realizeaz prezentarea elementului de acionare ctre sistemul gateway) se va transmite numele, versiunea i
funcionalitatea elementului de acionare.
void presentation() {
sendSketchInfo("Relay", "1.0");
for (int sensor=1, pin=RELAY_1;
sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
present(sensor, S_LIGHT); }
}
https://www.robofun.ro/forum/

Seciunile setup() i loop(), tipice pentru program Arduino, nu conin nici o instruciune. ntregul mecanism de control al releului se realizeaz n seciunea receive() seciune apelat n mod automat de mecanismele interne ale bibliotecii MySensors la primirea unui mesaj radio.
void setup() {
}
void loop() {
}
void receive(const MyMessage &message) {
if (message.type==V_STATUS) {
digitalWrite(message.sensor+RELAY_1,
message.getBool()?RELAY_ON:RELAY_OFF);
saveState(message.sensor, message.getBool());
Serial.print("Incoming change for sensor:");
Serial.print(message.sensor);
Serial.print(", New status: ");
Serial.println(message.getBool());
}
}

Integrarea noului sistem n cadrul platformei OpenHab presupune urmtoarele


completri n fiierele de configurare:

n fiierul casamea.items vom aduga:


Switch

Relay

"Lampa" {mysensors="20;0;V_STATUS"}

n fiierul casamea.sitemap vom aduga:


Frame label="Lumina" {
Switch item=Relay icon="switch"
}
https://www.robofun.ro/forum/

n urma acestor modificri interfaa de comand a reelei MySensors va arta:

n cadrul materialului viitor vom vedea cum se instaleaz i configureaz platforma


OpenHab pe un sistem specializat Raspberry Pi precum i cum putem implementa n
cadrul platformei reguli (Rules) ce permit implementarea unor mecanisme automate de
comand.

https://www.robofun.ro/forum/

S-ar putea să vă placă și