You are on page 1of 10

OPENHAB

OPENHAB

H NG D N TH C HI N GI I PHP T

NGU N: ODROID
MAGAZINE
NG

HA NGI NH THEO M NGU N M


tc gi Venkat Bommakanti

Trong s ra thng 9 nm 2014 c a t p ch Odroid, chng ti


gi i thi u n n t ng Freedomotic, trong dng ki n trc
Internet of Things (IoT)( gi i php m ng ha), m t th h u ch
xy d ng v qu n l khng gian s ng 1 cch thng minh.
Trong bi ny, chng ti trnh by 1 n n t ng m ngu n m
th v khc c l open-HAB d a trn n n java, OSGicompliant, rules-driven,khung chng trnh ton di n v t
ng ha nh.V n l gi i php t ng v ng gi k
thu t,n l 1 ng d ng tch h p hon h o dnh cho n n t ng
ODROID.
c th c p nh t t t nh t, bi vi t ny cung c p cc
b c c n thi t tri n khai m t b n d ng g n y c a
phin b n c th l ti p theo c a openHab (v1.7.0), s
d ng cc gi d ng s n c a c ng ng. Tuy nhin n khng
g m nh ng th sau:
Quy n dng cc gi d ng s n c a phin b n
chnh th c m i nh t (1.6.2)
.B thi t l p t m ngu n (GitHub). Ph
ng php
ny
c th c hi n v i b n xu t m i nh t 1.7.0,
nh
ng b n d ng khng ch y
c trn cc h
th ng C1, U3 v x86 Linux, m c d lm theo
ph
ng php khuy n ngh c a openHAB, do cc
v n v i vi c tm n p cc thnh ph n c u thnh
t
ng thch c tr
ng lin quan openHAB nh
l
Maven v Eclipse, nh ng th khng lin quan t i
n n t ng ph n c ng.
* B ci b n anpha 2.0.0

Cc thnh ph n yu c u
1. M t bo ODROID-C1, m c d cc b c cng c th dng c v i cc h
th ng odroid cu i cao hn.
2. Ph ki n c a C1 nh cp HDMI, cp ethernet CAT 5E + ho c WIFI 3 dongle,
PSU c khuy n ngh , pin RTC, v ODROID-VU ho c mn hnh HD
3. M t m-un eMMC 5,0 16GB + v i t p nh h i u hnh Lubuntu dnh cho
C1 m i nh t ho c m t th Micro SD 16GB Class 10 ho c lo i t t hn, v i m t b
chuy n tng thch v i th SD
4. B C-Tinkering v ph n m m Wiringpi m s c c dng m ph ng
cc c m bi n v n trong cn nh
5. H th ng m thanh WiFi Sonos hi n th i u khi n tch h p a phng ti n.
6. M t m ng m thi t b c th truy c p vo internet.
7. Oracle Java 8
8. Ph n m m openHAB( b n d ng 1.7.0 # 879 )
9.Kh nng truy c p m ng c c b t i C1 thng qua cc ti n ch nh PuTTY,
FileZilla, TightVNC Viewer, ho c u cu i m c th ch y c trn 1 my ch

OPENHAB
Install Lubuntu(ci Lubuntu)
Sao t p tin nh ODROID-C1 m i nh t vo m un
eMMC ho c th SD, l p b nh kh i ng h th ng vo
bo, kh i ng h th ng m c mn hnh. Ch y ph n
ODROID Utility v ci t phn gi i mn hnh hi n th
ph h p, sau kh i ng l i. K , ch y utility l n n a v
m r ng phn vng ci t s d ng ton b khng gian
b nh eMMC b ng cch nh n ty ch n Resize your root
partition. Kh i ng l i , r i ch y ODROID Utility thm
l n n a c u hnh v c p nh t cc y u t cn l i c a h
th ng nh l kernel v cc trnh i u khi n u-boot,ti p
theo l m t l n kh i ng l i .

Ti p , c p nh t cc ng d ng Ubuntu, v kh i ng
l i ODROID m t khi t t c cc c p nh t hon t t:
$ sudo apt-get autoremove && sudo apt-get update
$ sudo apt-get dist-upgrade && sudo apt-get upgrade
$ sudo apt-get install linux-image-c1

Cu i cng, ki m tra phin b n h th ng t u cu i s


d ng l nh sau y m b o r ng phin b n c a b n l m i
nh t:
$ uname -a
Linux odroid 3.10.70-74 #1 SMP PREEMPT Wed Mar 4
04:13:57 BRT 2015 armv7l armv7l armv7l GNU/Linux

Verify hard oat(ki m tra hard float)


Ki m tra r ng vi c ci phin b n hard float c a linux c
th c th c hi n theo vi cch.Tr c tin, c l l ki m
nghi m thng tin v nh d ng m c th lin k t v th c
thi (Executable and Linkable Format (ELF)) c a t p nh
c ci:
$ readelf -a /usr/bin/readelf | grep arm
[Requesting program interpreter: /lib/ld-linuxarmhf.so.3]
0x00000001 (NEEDED) Shared library: [ld-linux-armhf.
so.3]
000000: Version: 1

File: ld-linux-armhf.so.3

Cnt:

Lu c tnh c a th vi n hard float (armhf) dng


chung c n thi t. Vi c ny kh ng nh s c m t c a h i u
hnh(operating system (OS))trn n n hard float. Ngoi ra, c
th xc nh n s c m t c a hard float b ng cch ki m tra cc
gi c ci trn h th ng. Gi tr ki n trc c a m i gi
s c li t k bn c nh tn b ng cch s d ng dng l nh
sau :
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Halfinst/trig-aWait/Trig-pend

OPENHAB
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name

Version

Architecture

Description

+++-==================-==============-==============-=============================
ii

abiword

3.0.0-4ubuntu1 armhf

efficient, featureful word

ii

abiword-common

3.0.0-4ubuntu1 all

efficient, featureful word

Lu c tnh c a ki n trc hard float (armhf/all) trong li t k. Cu i cng cc th


vi n ci cng c th c dng xc nh n ki n trc hard float b ng cch tm ki m
nhn gnueabihf:
$ sudo ls -lsa /lib

12 drwxr-xr-x

4 root root 12288 Mar 16 12:23 arm-linux-gnueabihf

Verify Java version(ki m tra phinb n java)


OpenHAB yu c u phin b n Oracle Java 8, th c n c
ci t theo m c nh v i Lubuntu chnh th c, v c th c
xc nh n b ng cch s d ng cc l nh sau y:
$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection

Path

Priority

Status

-------------------------------------------------------------------------------* 0

/usr/lib/jvm/java-8-oracle/jre/bin/java
180

1067

/lib/jvm/jdk1.8.0/bin/java

/usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java

/usr/lib/jvm/java-8-oracle/jre/bin/java

auto mode

manual mode
1063

1067

manual mode

manual mode

Press enter to keep the current choice[*], or type selection number:

Nh n nt Enter thot, sau khi nh n bi t phin b n hi n


th i, c k hi u b i d u sao,l phin b n Oracles Java 8.
M t phng php khc ki m tra phin b n java l dng l nh
which:
$ which java
/usr/bin/java
$ java -version
java version 1.8.0_33
Java(TM) SE Runtime Environment (build 1.8.0_33-b05)
Java HotSpot(TM) Client VM (build 25.33-b05, mixed
mode)

m b o r ng cc phin b n khng b ghi b ng cch


ki m tra bi n mi tr ng $JAVA_HOME, bi n ny th ng
u ra Null:
$ echo $JAVA_HOME

N u b t k u ra no xu t gi tr khc, th bi n mi
tr ng, m c t cho m t phin b n java khc, c n
c v hi u ha tr c khi ch y openHAB. Kh i ng l i
sau khi c p nh t cc bi n s , sau ki m tra m t l n n a

OPENHAB
ch c ch n r ng Oracle Java 8 ang c s d ng.

Download openHAB(t i openHAB)


Ba (3) thnh ph n chnh c a ph n m m openHAB:
Runtime: Core, Addons and Demo (optional), Designer
Client UI: Android, iOS & WebUI
i v i bi vi t ny, chng ti l a ch n ci t phin
b n 1.7.0 (Build #879) c a ph n m m openHAB, b n g n
nh t so v i th i i m vi t bi ny. N c th c l y
t http://bit. ly/1CJO36d, nh trong hnh 1.
T i cc thnh ph n sau (32bit Linux) vo ~/Downloads
directory:

distribution-1.7.0-SNAPSHOT-addons.zip
distribution-1.7.0-SNAPSHOT-demo.zip
distribution-1.7.0-SNAPSHOT-designer-linux.zip
distribution-1.7.0-SNAPSHOT-greent.zip
distribution-1.7.0-SNAPSHOT-runtime.zip

Hnh 1 : t i ph n m m openHAB (ang th c hi n)

Thay vo n u b n mu n s d ng cc t p phin b n n
nh 1.6.2, b n c th t i t p t http://bit.ly/1EBtbe2.

Install openHAB(ci openHAB)


Sau khi t i v cc t p tin, t o ra m t th m c t m th i
ch a t t c cc ph n m m lin quan. Th m c t m th i
ny sau c th c di chuy n vo th m c g c h i u hnh
(/) b t k ng i dng no cng c th truy c p :
$ cd ~ && mkdir openhab && cd openhab
$ mv ~/Downloads/distribution-1.7.0-SNAPSHOT*.zip .

Ti p theo, bung t p zip c tn runtime, v ki m tra cc t p


gi i nn, d n d p cc th m c t i m i b c th c hi n:
$ unzip distribution-1.7.0-SNAPSHOT-runtime.zip
$ ls -lsa

4 drwxrwxr-x 2 odroid odroid

4096 Mar 14 03:03 addons

4 drwxrwxr-x 8 odroid odroid

4096 Mar 14 03:03 configurations

4 drwxrwxr-x 2 odroid odroid

4096 Mar 14 03:03 contexts

4 drwxrwxr-x 2 odroid odroid

4096 Mar 14 03:03 etc

12 -rw-rw-r-- 1 odroid odroid


4 -rw-rw-r-- 1 odroid odroid

11232 Mar 14 03:03 LICENSE.TXT


626 Mar 14 03:03 README.TXT

4 drwxrwxrwx 6 odroid odroid

4096 Mar 14 04:04 server

4 drwxrwxr-x 2 odroid odroid

4096 Mar 14 03:03 sounds

4 -rw-rw-r-- 1 odroid odroid

994 Mar 14 03:03 start.bat

4 -rw-rw-r-- 1 odroid odroid

1146 Mar 14 03:03 start_debug.bat

4 -rwxr-xr-x 1 odroid odroid

1132 Mar 14 03:03 start_debug.sh

OPENHAB
4 -rwxr-xr-x 1 odroid odroid
4 drwxrwxr-x 4 odroid odroid

969 Mar 14 03:03 start.sh


4096 Mar 14 03:03 webapps

$ rm distribution-1.7.0-SNAPSHOT-runtime.zip
Then, unpack the downloaded addons:
$ mv distribution-1.7.0-SNAPSHOT-addons.zip addons/ $ cd
addons
$ unzip distribution-1.7.0-SNAPSHOT-addons.zip
$ rm distribution-1.7.0-SNAPSHOT-addons.zip
$ cd ..

M c d c r t nhi u add-on c bung ra , tuy nhin


tri n khai th khng ph i t t c s c dng. Add-ons
cng c th c b sung ho c ci t l i t i b t k th i
i m no vo th m c ny, m c d ti nguyn h th ng s
gi m v i m i add-on c s d ng. Cu i cng, thi t l p c u
hnh c nhn c b n cho openHAB:
$ cd ~/openhab/configurations
$ cp openhab_default.cfg openhab.cfg
$ mv openhab_default.cfg openhab_default-orig.cfg

Chng ta s s a t p c u hnh openhab.cfg sau, t p ny


s xu t hi n trong lc kh i ng v lc ch y, khi qu trnh
th nghi m ci t c a chng ta ang di n ra.

Install the demo(ci t ph n demo)


ng d ng demo c th c ci sau khi sao lu cc t p
v i tn dng khi ch y ng d ng:
$ cd ~/openhab
$ mv README.TXT README-openhab.TXT
$ unzip distribution-1.7.0-SNAPSHOT-demo.zip

B n s c c nh bo li u c an ton khi ghi cc


t p ang c tn gi ng v y.Ch n Y (ngha l Yes) xc
nh n vi c ghi .

Chu n b cho vi c th nghi m


Trong th nghi m c a chng ta, xc minh qu trnh ci t
openHAB hon t t hay cha, chng ta s c cc ki m tra sau:
S d ng b C-Tinkering m ph ng c m bi n chuy n ng trong ni
chu n b cc thnh ph n i n t m i nh t c a chng ta. C m bi n nh sng
ng vai tr nh c m bi n chuy n ng. Khi ai l i g n c m bi n
chuy n ng, n led chuy n tr ng thi ON, m ph ng m t bo ng
b ng chung bo ho c n. Tr ng thi c a bo ng s c hi n th trong
giao di n web tch h p c b n c a open-HAB theo th i gian th c. i v i
th nghi m ny, chng ta s s d ng add-on GPIO tch h p.
Qu n l h th ng m thanh WiFi Sonos, b ng cch t m d ng ho c
ti p t c l i vi c Chi nh c m t knh Pandora, v xem tn c a bi ht hi n
ang c chi. i v i th nghi m ny, chng ta s s d ng add-on

OPENHAB
Sonos tch h p.
Trong th nghi m ny chng ta s h ng n hai phng di n c
b n c a qu trinh ci t i n hnh::
Integration of supported sensor and trigger systems(s tch h p c a cc
h th ng h tr c m bi n v i u khi n )
Integration of supported off-the-shelf systems(s tch h p c a cc h
th ng h tr c s n)

Phng di n duy nh t v n cn thi u hon t t l tch h p cc


addon m ng i dng t xy d ng. M c ny s l m t ch ng ng di
khi b n b t u n l c th c hi n n .
Chng ta s s d ng cc ng d ng demo m ph ng m t cn nh
v i hai t ng ( t ng tr t v t ng h m),

y t ng h m l ni t p trung

thnh ph n i n t v i b c m bi n chuy n ng, v t ng tr t v i phng


khch, ni h th ng Sonos s c thi t l p. V ph n c m bi n chuy n
ng c a th nghi m, hy lm theo cc b c thi t l p b C-ODROID.
Ki m tra cc thi t l p nh m t trong bi bo, m b o r ng cc n
LED b t tr ng thi ON khi b n di chuy n m t ngn tay v pha b c m
bi n nh sng. i u ny m ph ng c m bi n chuy n ng khi m t
ng i no chuy n ng g n c m bi n, tn hi u c nh bo s xu t hi n,
c th hi n b ng cch b t LED ln tr ng thi ON.
Trong c a s Terminal, ch y cc ng d ng m u c s d ng trong bi
vi t Osc1lloscope.Trong m t c a s Terminal khc, ch y ti n ch GPIO c
xy d ng khi cc th vi n Wiringpi c ci t:
$ sudo ./gpio readall

n LED trong v d c gn cho GPIO # 101, tng ng


v i chn # 21 c a Wiringpi. C m i khi cc b c m bi n
khng b ch n, b n nhn th y u ra (gi tr tr ng thi: 0,
LOW) nh sau :
+------+-----+----------+------+- Model ODROID-C -+------+----------+-----+------+
| GPIO | wPi |

Name

| Mode | V | Physical | V | Mode |

Name

| wPi | GPIO |

+------+-----+----------+------+---+----++----+---+------+----------+-----+------+

101 |

21 | GPIO.101 |

OUT | 0 | 29 || 30 |

| 0v

Cn m i khi b c m bi n b ch n, b n nhn th y u ra ny (gi tr tr ng thi: 0, HIGH):


+------+-----+----------+------+- Model ODROID-C -+------+----------+-----+------+
| GPIO | wPi |

Name

| Mode | V | Physical | V | Mode |

Name

| wPi | GPIO |

+------+-----+----------+------+---+----++----+---+------+----------+-----+------+

101 |

21 | GPIO.101 |

OUT | 1 | 29 || 30 |

| 0v

i v i ph n th hai c a th nghi m lin quan Sonos, k t n i


Sonos Bridge(c u sonos: i m lin k t sonos ) vo m ng
C1 c th xc nh c n qua m ng, v b t ngu n cho cc
h th ng Sonos Speaker v Bridge
ODROID MAGAZINE 21

OPENHAB
Ch n khi t t c cc n LED ang tr ng thi nh p nhy
trn hai thi t b chuy n sang sng lin t c .T i th i i m ny,
b n c th tm cc a ch IP c a cc thi t b ny s d ng ho c
giao di n router c a b n ho c Sonos Windows 7 UI, nh
trong hnh 2, m c cc gi tr lin quan c khoanh .
a ch IP trong v d ny c a Sonos Speaker l 192.168.7.45
v i chu i # 00:0E:58:FB:99:A2 . B ng cch i u h ng trnh
duy t sang http://192.168.7.45:1400/status/topology v thay
a ch IP th c c a b n, b n s th y thng tin tng t nh
nh c hi n th trong hnh 3.
Ghi ch l i thng tin UID cho loa, l
RINCON_000E58FB99A201400 trong v d ny. Th t b t
ng , n c t o nn b ng cch s d ng chu i # c a thi t b .
Thng tin UID ny s c s d ng sau, trong b c c u hnh
openHAB.

Update configuration(c p nh t c u hnh)


Trong s quan tm dnh cho th nghi m c xu t, by
gi chng ta c th s a i cc t p tin c u hnh. Tr c tin,
chng ta s c p nh t t p tin c u hnh openHAB:

Hnh 2 : a ch IP Sonos

Hnh 3 : a ch cc khu v c Sonos

$ cd ~/openhab/configurations
$ medit openhab.cfg

C p nh t m c Sonos Binding( lin k t Sonos) v ng v i


cc thng tin c a SonosBridge & Sonos Speaker sao cho ph
h p v i m sau y, v lu cc thay i:
################################ Sonos Binding ########################################
#
#Add a line for each Sonos device you want to pre-define
#The format is <name>.udn=<RINCON UID>
#
sonos:office.udn=RINCON_000E5815C45E01400
sonos:living.udn=RINCON_000E58FB99A201400
#
#Interval, in milliseconds, to poll the Sonos devices for status variables
sonos:pollingPeriod=1000

K , c p nh t cc m c trong c u hnh demo c a ngi nh:

$ cd cd ~/openhab/configurations/items/demo.items
$ medit demo.items

Thay i m c s d ng nh sng, tng ng v i vi c s


d ng GPIO qua chn # 21:

OPENHAB
Sau , thay i m c ngy / gi v ng mi gi c a b n,
l Los Angeles trong v d ny:
/* NTP binding demo item */
DateTime Date Date [%1$tA, %1$td.%1$tm.%1$tY] <calendar> { ntp=America/Los_Angeles:de_DE }

Cu i cng, thm cc m c lin quan n ph n Sonos, dng m t dng m i m c:


/* multimedia */
Switch Sonos_GF_Living Sonos Play/Pause (GF_Living, Sonos) {sonos=[ON:living:play],[OFF:living:
pause]}
String Sonos_GF_Living_Track Current Track [%s] (GF_Living, Sonos) {sonos=[RINCON_000E58FB99A20
1400:currenttrack], autoupdate=false}

i v i thi t b Sonos trong phng sinh ho t c m ph ng, chng ta l p thm m t cng t c Play / Pause,
ng th i khi cng hi n th bi ht ang c chi.

Move the openHAB folder(di chuy n th m c


openHAB)
lm openHAB tr nn kh d ng i v i b t k ti kho n
ng i dng no, di chuy n ton b th m c n a ch
nh s n ban u dnh cho n:
$ sudo mkdir /opt
$ sudo mv ~/openhab /opt
$ cd /
$ sudo chown -R root:root /opt

Run openHAB(ch y openHAB)


kh i ch y openHAB, g cc l nh sau vo c a s Terminal:
$ cd /opt/openhab
$ sudo ./start.sh

Ch xem c b t k l i xu t hi n trong u ra hay khng, v


xem li u chng c tng ng v i sai st no trong vi c c u
hnh khng, r i gi i quy t chng tr c khi chuy n sang b c
ti p theo.Vi c c u hnh Sonos c th c n ph i c i u ch nh
trong tr ng h p cc UID khng thch h p, s c th y trong
cc m c sau y:
2015-03-18 12:16:30.480 [INFO ] [.service.AbstractActiveService] - Sonos Refresh Service has been
started
2015-03-18 12:16:30.889 [INFO ] [.b.sonos.internal.SonosBinding] - Querying the network for any
other Sonos device
2015-03-18 12:16:32.797 [INFO ] [.b.sonos.internal.SonosBinding] - Found a Sonos device (S3) with
UDN uuid:RINCON_000E58FB99A201400

Khi openHAB ang ch y theo ng nh nh s n, i u


h ng trnh duy t trn my tnh host th nghi m tr n v
d ODROID c a ng d ng demo openHAB:
http://<ip-address-of-c1>:8080/openhab.
app?sitemap=demo

OPENHAB
Cc my ch web n n Jetty s d ng b i openHAB s xu t
ra m t mn hnh cho m ng nh th hi n trong hnh 4. Ch
r ng trang nh demo hi n th cc thu c tnh m c cao (t ng
m t, t ng tr t v t ng h m/x ng i n t ) nh quy nh
trong c u hnh. Hy ch c ch n r ng ngy thng cng tng ng
v i c tnh khu v c gi c c u hnh tr c .
ki m ch ng xem th nghi m ang ho t ng ng nh
d ki n, b m vo m c t ng h m, m c ny s li t k t t c cc
thi t b lin quan n n, k c nh sng c a x ng i n t ,
nh th hi n trong hnh 5. Ti p theo, di chuy n m t ngn tay
t i g n v i c m bi n nh sng trn b C-tinkering, v ki m tra
LED c chuy n ON. i u ny s c tnh by trong openHAB
UI nh trong hnh 5 v 6, m ph ng m t ng i i vo x ng
c a b n.

Hnh 4 : Mn hnh cho m ng openHAB

Hnh 5 : n Workshop (c nh bo) OFF


Hnh 6 : n Workshop (c nh bo) ON

Trong tnh hu ng th c t , b n c l bu c ph i c nh ng h i
p khc v i nh ng tr ng h p ny, ch ng h n nh g i m t
tin nh n vn b n ho c email. Thng tin tr ng thi lin quan
ang c chuy n qua chn # 21 (GPIO # 101) b ng cch
dng n n t ng GPIO, nh ni tr c .
Ti p theo, kh i ch y ng d ng Sonos Windows 7,

Hnh 7: openHAB UI &


Sonos UI khi chi
Hnh 8: openHAB UI &
Sonos UI khi d ng

OPENHAB
n c n ph i pht hi n cc h th ng Sonos Bridge v Speaker.
th nghi m, b t m t knh Pandora v chi nh c.
Sau , trn trang nh openHAB, click vo m c t ng tr t,
th s hi n th m t mn hnh m trn c nt chi / t m
d ng Sonos v m thanh bi nh c hi n t i nh trong hnh 7.
Ki m tra nh c ang c chi b ng Pandora (trn
Sonos) c gi ng nh nh c c hi n th trn openHAB UI
khng. Click vo nt play/pause d ng nh c, m k t qu l
thay i tr ng thi, nh trong hnh 8.

Further experimentation(th nghi m thm)


B n nn t i v cc thnh ph n b sung c a openHAB,
ch ng h n nh thi t k v web UI dnh cho ng ii snh i u
g i l greent, v th ci t r i s d ng chng. Nh ng t p tin

ny c ch a trong cc b n d ng v m c a Jenkins
nh distribution-1.7.0-SNAPSHOT-designer-linux.zip v
distribution-1.7.0-SNAPSHOT-greent.zip.
Sau khi b n c m th y tho i mi v i thi t l p, b n c th
pht tri n add-on theo nhu c u c a b n v tri n khai chng
trn openHAB m b n ci t. Nh b n c th th y, chng ta
m i ch tm hi u s v nh ng kh nng c a openHAB. Ngu n
thng tin l d i do c s n t trang web openHAB t i http://
www.openhab.org cng nh cc trang web/di n n khc, v y
hy th k t h p cc thi t b v cc tr ng h p kh ki n, v chc
b n c nh ng pht giy vui v !

Disclaimer(trch nhi m)
Hy dnh m t cht th i gian nghin c u v cc ch
c a t ng ha m t ngi nh tr c khi tri n khai
openHAB trong nh b n, v th c hi n t t c cc bi n php
an ton thch h p tr c khi t ng ha.Cc thng tin y
ch dnh cho m c ch h c t p v vui v , v tc gi cng nh
nh xu t b n s khng ch u trch nhi m cho b t k thi t h i
pht sinh t vi c tri n khai openHAB. Hy ch c ch n r ng
b n ki m tra chnh sch b o hi m lin quan khc nhau
i v i cc tai n n, b i v cu i cng b n v n ph i ch u trch
nhi m i v i s an ton v tnh m ng c a ring b n.

Ngu n ti nguyn tham kh o b sung


http://bit.ly/1G0rHOP
http://bit.ly/1BHniKe
http://bit.ly/1N3kIoh
http://bit.ly/1CJR7z2
http://bit.ly/1FQn7lS
http://bit.ly/19JuH6d
http://bit.ly/1IhiaCf
http://bit.ly/19dWx9n
http://bit.ly/1xRitO3

You might also like