Så ganska många har Philips Hue lampor eller liknande (Trådfri).
Fibaro har lite support för det men vanligt är att man styr de med att trycka på knappar på en VD, antingen Fibaro's egen eller någon från forumet.
I ER går det att integrera Hue lampor så att de liknar vanliga Z-wave devices, vilket har fördelen att man kan skriva regler generellt istället för att ha specialregler och specialkommandon för Hue lampor.
Vad man måste göra är att definiera adressen till sin Hue hub före main() i ER
Code: Select all
_HueUserName="sdsdeLpWdYsdfedf0GsNPJsdsdeEa-"
_HueIP = "192.168.1.153"
_HueHubs = {{name='Hue',user=_HueUserName,ip=_HueIP}} -- Hue bridges, Ex. {{name='Hue',user=_HueUserName,ip=_HueIP}}
Den viktiga variabeln är _HueHubs som ska innehålla en tabell per Hue hub man har (vissa har många). Den ska ha namn (inte viktigt men 'Hue' är ett bra default). User som är den hemliga nyckeln man får när man registrerar sig på en Hue hub. Samt IP adress till hubben. Man kan använda sig av ex Sankotronics Hue setup VD för att få nyckel samt IP.
Sedan måsta man mappa sina Hue devices till sina egna (påhittade deviceIDs) inuti main(). Det går att lösa på olika sätt men typ såhär gör jag. I det här fallet använder jag de namn som mina Hue devices har i Hue appen (de måste vara unika).
I början har jag min HomeTable med mina devices och deras ID. Jag har också mina Hue devices där med påhittade deviceID med värden som startar från 12000 (måste vara över 10000)
Code: Select all
devs.dev={ -- Hometable
lucia=24,keyfob=5,rightwindow=17,tim=20,door=26,temp=27,ute=37,
kitchensensor=44,
living=12000,leftwindow=12001,middlewindow=12002,
globe=12004,bedroof=12005,timroof=12006,bedroom=12007
}
Util.defvars(devs.dev) -- Map names for access in rules
devs.hueMap={ Map from my own deviceIDs to Hue device names
[12000]='Living room',
[12001]="Left window",
[12002]="Middle window",
[12004]="Globe",
[12005]="Roof lamp",
[12006]="Tim",
[12007]="Bedroom",
}
for id, name in pairs(devs.hueMap) do Hue.define(name, nil,id) end -- Define Hue devices as deviceIDs
Har jag satt upp det kan jag göra
Code: Select all
fibaro:call(devs.dev.leftwindow,"turnOn") -- turn on lamp
fibaro:call(devs.dev.leftwindow,"turnOff") -- turn off lamp
fibaro:call(devs.dev.leftwindow,"setValue",50) -- dim lamp to 50%
fibaro:call(devs.dev.living,"turnOn") -- turn on group
fibaro:call(devs.dev.living,"turnOff") -- turn off group
fibaro:call(devs.dev.living,"setValue",50) -- dim group to 50%
fibaro:call(devs.dev.bedroof,"turnOn") -- turn on RGB lamp
fibaro:call(devs.dev.bedroof,"setColor",99,0,0) -- set RGB lamp to red
fibaro:call(devs.dev.bedroof,"setColor",0,99,0,50) -- set RGB lamp to blue 50% dimmed
fibaro:getValue(devs.dev.leftwindow,"value") -- returns 0 if 'reachable'==false or 'on'==false, otherwise 'bri' value
Vilket också gör att det funkar i ER regler. (devs.dev.X här för jag använder hometable utanför en ER regel)
Code: Select all
rule("@10:00 => leftwindow:on")
-- eller mixa vanliga och Hue lampor
rule("@10:00 => {leftwindow, rightwindow}:on")
I mitt fall är det så att "Living room" är en Hue grupp, som jag mappar till 12000, som är "living" i min hometable. Den funkar också med on/off
'setValue' fungerar också och sätter dimm värdet på en lampa (0-99 som en fibaro dimmer)
Code: Select all
rule("@10:00 => leftwindow:value=50")
It also supports 'setColor' vilket med ER regel blir
Code: Select all
rule("@10:00 => leftwindow:color={99,0,0}")
'setValue' kan också ta en tabell som då skickas som argument till Hue device.
Code: Select all
fibaro:call(bedroom.lamp,"setValue",{effect='colorloop',bri=50}) -- pass properties to Hue lamp
fibaro:call(kitchen.spots,"setValue",'Night scene') -- Set light group to Hue scene
fibaro:getValue(kitchen.lamp,"values") -- returns table of all Hue properties for lamp
Fungerar motsvarande för ER regler.
Om man gör
så kommer ett event av typen {type='property', deviceID=leftwindow>, propertyName='value', value=99} att genereras som man kan trigga på.
Detta pga att jag postar ett sådant event när någon gör ett :on kommando på en Hue device... Men, om man slår av/på en Hue lampa med deras app eller med en strömbrytare så får vi inga event. Det enda sättet att göra det är att polla devices med jämna mellanrum.
Det finns support för det
Code: Select all
Hue.monitor(devs.dev.leftwindow,1000) -- monitor Hue lamp every 1 second.
Tiden anges i millisekunder. Om leftwindow ändrar status så skickas en trigger vilket gör att vi kan skriva regler som
Code: Select all
rule("leftwindow:isOn => log('Someone turned on lamp')")
Om någon har en Hue knapp kan jag visa hur man får den att se ut som en fibaro switch också...