Integrare Philips HUE in FHEM

Philips HUE FHEM HomeReady.ro
Philips HUE FHEM HomeReady.ro

In tutorialul de astazi vom integra Gateway-ul Philips HUE in FHEM. Datorita modulului HUEBridge aceasta integrare se face extrem de usor.

Dispozitive necesare:

Obtinere IP Philips HUE

Pentru a integra Philips HUE in FHEM vom folosi modulul HUE Bridge. Pentru asta avem nevoie sa cunoastem IP-ul din retea pentru Philips HUE. Daca nu il cunoastem il putem vedea din aplicatia HUE sau scanand din terminal reteaua locala.

pi@raspberryPI:~# nmap -sP 192.168.1.0/24                                                             
Starting Nmap 7.01 ( https://nmap.org ) at 2020-04-23 14:21 EEST
Nmap scan report for Philips-hueSB.lan (192.168.xyz.xyz)
Host is up (-0.10s latency).
MAC Address: yy:1a:8b:7d:zz:xx (Philips Lighting BV)

Unde in cazul meu Philips-hueSB.lan (192.168.xyz.xyz) este Gateway-ul Philips HUE.

Integrare Philips HUE in FHEM

Dupa ce am aflat IP-ul Gateway-ului il putem integra in FHEM utilizand urmatoarea comanda:

define PhilipsHUE HUEBridge 192.168.xyz.xyz
attr PhilipsHUE room Hardware
attr PhilipsHUE group Gateway
attr PhilipsHUE httpUtils 1

Dar sa intelegem ce definim:

define PhilipsHUE              - PhilipsHUE este numele deviceului. Poate fi orice nume ales de voi
   HUEBridge                   - numele modulului
      192.168.xyz.xyz          - IP-ul din reteaua locala
attr PhilipsHUE room Hardware  - atribuim deviceului nou creat room-ul Hardware
attr PhilipsHUE group Gateway  - atribuim grupul din care face parte

Desigur in loc de 192.168.xyz.xyz va trebui sa scrieti IP-ul vostru.

Dupa ce am definit deviceul, acesta va aparea cu statusul „initialized” sau „pairing„.

status PhilipsHUE initialized

Acum trebuie sa confirmam apasand butonul de pair de pe Philips HUE. Acesta este butonul din mijloc al hub-ului.

Philips HUE

Imediat ce am confirmat legatura statusul deviceului in FHEM se va schima in „connected„. Deviceul va primi si un Icon dedicat.

In mod automat se va crea room-ul HUEDevice, unde se vor regasi toate componentele care pana acum au fost adaugate in sistemul HUE.

Listare dispozitive Philips HUE integrate in FHEM

Putem folosi comanda „list” pentru a ne structura viitoarele deviceuri adaugate automat.

list TYPE=HUE.*

ne va oferi info referitoare le toate deviceurile, fie ca sunt Grupuri sau becuri sau prize.

Acelasi lucru vom obtine si cu:

list i:TYPE=HUEDevice.*

Pentru a identifica rapid un device care are ca si argument, sa presupunem „subType switch” vom folosi:

list i:TYPE=HUEDevice:FILTER=subType=switch

sau pentru un bec HUE:

list i:TYPE=HUEDevice:FILTER=subType=dimmer

Becurile HUE, functie de tipul lor pot fi vazute ca si subType: ctdimmer, colordimmer sau dimmer.

Pentru a gasi rapid care deviceuri au statusul on sau off:

list state=on
list state=off

Dupa cce ne-am identificat toate deviceurile din room-ul HUEDevice, creat automat putem sa le sortam dupa necesitatile fiecaruia.

Fiecarui device i se pot atribui alias-uri, room-uri, group-uri. Ca de exemplu:

define HUEDevice18 HUEDevice 31  IODev=HUE 
attr HUEDevice18 IODev HUE
attr HUEDevice18 alias Hol.Bucatarie
attr HUEDevice18 color-icons 2
attr HUEDevice18 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr HUEDevice18 group 1_Hol
attr HUEDevice18 model TRADFRI bulb E27 W opal 1000lm
attr HUEDevice18 room HUEDevice
attr HUEDevice18 subType dimmer
attr HUEDevice18 webCmd pct:toggle:on:off

Organizare dispozitive Philips HUE dupa nume/locatie

Daca vrem sa redenumim deviceul nou creat automat o putem face prin comanda:

rename <nume_vechi> <nume_nou>
rename HUEDevice18 Hol.1

Si intreaga definitie va arata dupa cum urmeaza:

efine Hol.1 HUEDevice 31  IODev=HUE 
attr Hol.1 IODev HUE
attr Hol.1 alias Hol.Baie
attr Hol.1 color-icons 2
attr Hol.1 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr Hol.1 group 1_Hol
attr Hol.1 model TRADFRI bulb E27 W opal 1000lm
attr Hol.1 room HUEDevice
attr Hol.1 subType dimmer
attr Hol.1 webCmd pct:toggle:on:off

Important este sa tinem denumirile cat mai organizat posibil pentru ca ulterior vom face scene bazate pe diverse scenarii, si iata ce se poate obtine atribuind room-uri si grupari ale deviceurilor HUE.

Ca un exemplu de organizare putem redenumi fiecare lampa, sau priza adaugand inaintea numelui ei camera din care face parte. Daca am una sau mai multe lampe sau prize in living, sa presupunem, atunci von redenumi acea lapa dupa cum urmeaza:

rename HUEDevice18 Li_HueDevice18
rename HUEDevice17 Li_HUEDevice17
rename HUEDEvice19 Li HUEDevice19

Sau putem redenumi cu nume mai usor de localizat:

rename HUEDevice18 Li_lampa
rename HUEDevice17 Li_iluminat
rename HUEDevice19 Li_prizaTV

Adaugare dispozitive noi Philips HUE in interfata FHEM

Daca pe parcurs planuim sa adaugam deviceuri in sistemul HUE si dorim sa le putem vizualiza si in FHEM, atunci din fhem va trebui sa rulam urmatoarea comanda

get <nume atribuit gateway-ului Philips HU> <groups>,<lights>,<scenes>

in cazul nostru:

get PhilipsHUE lights

Fhem ne va oferi o lista cu ID-urile si numele deviceurilor stocate in Hub-ul PhilipsHUE.

Pentru a integra in FHEM deviceurile care le-am adaugat ulterior, avem nevoie de comanda:

set PhilipsHUE autocreate

Daca in tutorialul anterior in care integram datele meteo in sistem si totodata datele referitoare la locatie (latitudine si longitudine) pe baza acestora FHEM va putea sa calculeze , spre exemplu, apusul si rasaritul soarelui din locatia unde ne aflam. Pe baza acestei calculatii putem crea rutine spre exemplu la apus sa opreasca sau sa porneasca un anumit device HUE.

Sa luam sre exemplu HURGroup1 (accepta ca status on si off), care este alcatuit din luminile (HUEDevice) 7, 8 si 9, ele fiind 3 becuri in exteriorul casei.

Pentru a porni luminile la apus, dar nu mai devreme de ora 16:00 si nu mai tarziu de ora 22:00 vom folosi urmatoarea automatizare

define ExtON_HUE_ext at *{sunset(0,"16:00","22:00")} set HUEGroup1 on

Si comanda inversa, pentru a opri luminile, dar nu mai devreme de ora 5:00 si nu mai tarziu de ora 8:00, este:

define ExtOFF_HUE_ext at *{sunrise(0,"05:00","08:00")} set HUEGroup1 off

Dar universal acceptate, conform Wiki, avem 3 tipuri de crepuscul. Astfel putem defini actiunea executata la apusul/rasaritul real, civil, nautic sau astronomic, functie de preferinte.

define ExtON_HUE_ext at *{sunset("REAL",0,"16:00","22:00")} set HUEGroup1 on
define ExtOFF_HUE_ext at *{sunrise("REAL",0,"05:00","08:00")} set HUEGroup1 off
define ExtON_HUE_ext at *{sunset("HORIZON=-6",0,0,"16:00","22:00")} set HUEGroup1 on
define ExtOFF_HUE_ext at *{sunrise("HORIZON=-6,0",0,"05:00","08:00")} set HUEGroup1 off

Scene bazate pe prezenta unui dispozitiv si Philips HUE in FHEM

Daca intr-un alt tutorial reuseam sa cuplam un Smartphone sau un Key Finder prin Bluetooth la FHEM, pe baza acestei definitii putem crea o automatizare astfel incat atunci cand ajungem sau plecam de acasa anumite becuri, prize sau switchuri sa se aprinda automat.

Deviceuri necesare pentru automatizare:

Telefonul sau un Key Finder definit in sistem astfel :

define NeC_Phone PRESENCE local-bluetooth zx:xy:zx:xy:zx:xy 10 500
attr NeC_Phone absenceThreshold 2
attr NeC_Phone devStateIcon present:status_available maybe present:status_away_1 maybe absent:status_away_1 absent:status_away_2
attr NeC_Phone group Rezidenti
attr NeC_Phone icon it_smartphone
attr NeC_Phone presenceThreshold 2
attr NeC_Phone room Rezidenti
attr NeC_Phone userReadings Statenum {if(ReadingsVal("NeC_Phone","state","") eq "absent") {return 0} elsif (ReadingsVal("NeC_Phone","state","") eq "maybe absent") {return 0} elsif (ReadingsVal("NeC_Phone","state","") eq "present") {return 1} elsif (ReadingsVal("NeC_Phone","state","") eq "maybe present") {return 1}}

Un bec sau switch sau un grup de becuri HUE:

define HUEGroup5 HUEDevice group 5  IODev=HUE
attr HUEGroup5 userattr createActionReadings:1,0 createGroupReadings:1,0
attr HUEGroup5 IODev HUE
attr HUEGroup5 alias Bucătărie
attr HUEGroup5 color-icons 2
attr HUEGroup5 delayedUpdate 1
attr HUEGroup5 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr HUEGroup5 group 4_Bucatarie,Lights
attr HUEGroup5 icon hue_room_kitchen
attr HUEGroup5 room 4_Bucatarie,HUEDevice

Definitia automatizarii o vom realiza cu modulul DOIF

define Leaving.coming.home1 DOIF ([NeC_Phone] eq "present") (set HUEGroup5 on) DOELSEIF ([NeC_Phone] eq "absent") (set HUEGroup5 off)

Insa, pentru ca in definitia NeC_Phone folosim „absenceThreshold” si „presenceThreshold„, la un moment dat in status-ul deviceului NeC_Phone va aparea „maybe present” sau „maybe absent”, ceea ce nu se va mai incadra in definitia automatizarii de mai sus. Putem redefini automatizarea astfel:

define Leaving.coming.home2 DOIF ([NeC_Phone] eq "present" or [NeC_Phone] eq "maybe present") (set HUEGroup5 on) DOELSEIF ([NeC_Phone] eq "absent" or [NeC_Phone] eq "maybe absent") (set HUEGroup5 off)

Pe de alta parte avem insa definit pentru deviceul NeC_Phone atributul userReadings Statenum care poate fi 1 sau 0, functie de prezenta, asfel ca putem ajusta definitia automatizarii folosind aceste date:

define Leaving.coming.home3 DOIF ([NeC_Phone:Statenum] eq "1") (set HUEGroup5 on) DOELSEIF ([NeC_Phone:Statenum] eq "0") (set HUEGroup5 off)

Daca avem alte deviceuri sau grupuri pe care vrem sa le adaugam putem redefini definitia astfel:

define Leaving.coming.home4 DOIF ([NeC_Phone:Statenum] eq "1") (set HUEGroup5 on, set HUEGroup4 on, set HUEDevice3 on) DOELSEIF ([NeC_Phone:Statenum] eq "0") (set HUEGroup5 off, set HUEGroup4 on, set HUEDevice3 on)

Daca vrem ca aceste actiuni sa se desfasoare doar intre anumite intervale orare, atunci definitia noastra va arata dupa cum urmeaza:

define Leaving.coming.home5 DOIF ([5:00-10:00] and [NeC_Phone:Statenum] eq "1") (set HUEGroup5 on, set HUEGroup4 on, set HUEDevice3 on) DOELSEIF ([5:00-10:00] and [NeC_Phone:Statenum] eq "0") (set HUEGroup5 off, set HUEGroup4 on, set HUEDevice3 on)

define Leaving.coming.home6 DOIF ([5:00-10:00] or [18:00-22:00] and [NeC_Phone:Statenum] eq "1") (set HUEGroup5 on, set HUEGroup4 on, set HUEDevice3 on) DOELSEIF ([5:00-10:00] or [18:00-22:00] and [NeC_Phone:Statenum] eq "0") (set HUEGroup5 off, set HUEGroup4 on, set HUEDevice3 on)

Si astfel actinua dorita se va desfasura doar intre orele stabilite.

Daca vrem sa legam aceasta actiune de apusul si de rasaritul soarelui:

define Leaving.coming.home7 DOIF ([{sunrise(600,"05:00","08:00")}] and [NeC_Phone:Statenum] eq "1") (set HUEGroup5 on, set HUEGroup4 on, set HUEDevice3 on) DOELSEIF ([{sunset(600,"16:00","23:00")}] and [NeC_Phone:Statenum] eq "0") (set HUEGroup5 off, set HUEGroup4 on, set HUEDevice3 on)

Putem simplifica si mai mult definitia de mai sus, daca vrem sa pornim/oprim tot ceea ce inseamna Grup HUE:

define Leaving.coming.home8 DOIF ([{sunrise(600,"05:00","08:00")}] and [NeC_Phone:Statenum] eq "1") (set HUEGroup.* on, set HUEDevice3 on) DOELSEIF ([{sunrise(600,"16:00","23:00")}] and [NeC_Phone:Statenum] eq "0") (set HUEGroup.* on, set HUEDevice3 on)

Atentie, nu uitati ca definitiile ce utilizeaza modulul DOIF sa fie executate in mod repetitiv este necesar a se atribui argumentul do always:

attr <nume definitie DOIF> do always

In cazul meu:
attr Leaving.coming.home8 do always

Wakeup Light cu Philips HUE

Iata un exemplu de WakeUP Light asa cum l-am integrat eu in FHEM:

define Do_Wakeup_Light DOIF ([06:50-07:50|123456] and [L_Lampa_Do.L:state] eq "off") ( set L_Lampa_Do.L pct {([L_Lampa_Do.L:pct])+1} ) DOELSEIF([07:55|123456]) (set L_Lampa_Do.L off)
 attr Do_Wakeup_Light do always
 attr Do_Wakeup_Light repeatcmd 30
 attr Do_Wakeup_Light repeatsame 100:1
 attr Do_Wakeup_Light room 3_Dormitor

Decodificat, avem un DOIF care in fiecare dimineata la ora 6.50 de luni (1) pana sambata (6) va aprinde lampa si ii va creste intensitatea cu pas de 1 la fiecare 30 de secunde (repeatcmd) de 100 de ori (repeatsame), iar la ora 7.55 va stinge automat lampa.

Si iata cat de usor si flexibil am putut integra Gateway-ul Philips HUE in sistem, dar totodata sa folosim si cateva automatizari utile. Pentru ca in sistemul HUE comunicarea este bidirectionala, se vor putea folosi in continuare intrerupatoarele astfel ca atunci cand becul smart sau priza smart comandata altfel decat prin sistemul smart home FHEM, va aparea statusul acesteia in sistem in mod automat.

De Iulian Susnea

Pasionat de tehnologie, gadgeturi smart home si automatizari si am pornit la drum in crearea acestui site cu tutoriale pentru cele mai importante sisteme Smart Home ale momentului din dorinta de a-i ajuta pe cei la inceput de drum.

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *