- This topic has 4 replies, 3 voices, and was last updated 2 years, 8 months ago by Carolpa.
- AuthorPosts
- 14 March 2022 at 01:28 #33099
Alternative for choosing sources on a Halo by using one Button and the Wheel_turned.
Select device by turning the wheel anti-clockwise
Select the source by turning the wheel clockwisePress twice the button to select/confirm the selection.
Two macros are needed; one for the event “Wheel_turned” the other for “Button_pressed” for the same Halo button.
The matrices in both Macros must exactly the same.- Macro 1.
Event: Wheel_turned for a Halo Button (with “your_Halo_button_IDnumber”)
function(event, engine)
local Ea=event.area()
local Ez=event.zone()–Resource selectButton as String
local selectButton_query = engine.query(Ea..”/”..Ez..”/VARIABLE/selectButton”)
local sButton = selectButton_query[1].get_string(“VALUE”)–Resource SourceNo as Integer
local source_query=engine.query(Ea..”/”..Ez..”/VARIABLE/SourceNo”)
local sourceNr = source_query[1].get_number(“VALUE”)
if sourceNr==nil then
sourceNr=1
end
local device_query=engine.query(“Upstairs/Study/VARIABLE/DeviceNo”)
local deviceNr = device_query[1].get_number(“VALUE”)
if deviceNr==nil then
deviceNr=1
end
if deviceNr==0 then
deviceNr=1
endlocal haloName=“you”r_Halo_name_as_string
local haloID=“your_Halo_button_IDnumber_as_string”local direction
local device
local deviceName
local deviceMax=5 –set to number of devices programmedlocal source
local sourceMax=14 –set to number of sources programmed
local sourceName
local sourceID
local info
local bs9000cdlocal a={i=sourceMax, j=4}
local b={x=deviceMax, y=4}–{“Halo source name”, source, origin, x} below are examples change to your system
a[0]={“exit”,”exit”,””,0}
a[1]={“A6 Music”,”MUSIC”, “255aaaaa”,0}
a[2]={“A6 TuneIN”,”TUNEIN”, “255aaaaa”,0}
a[3]={“BS3000 cd”,”CD”, “240bbbbb”,0}
a[4]={“Beogram 4000″,”LINE IN”, “240bbbbb”,0}
a[5]={“BS7000 cd”,”CD”, “272ccccc”}
a[6]={“BS7000 ph”,”NET RADIO”, “272ccccc”,0}
a[7]={“BeoCenter2cd”,”CD”, “231ddddd”,0}
a[8]={“BS9000-cd1″,”CD”, “238eeeee”,1}
a[9]={“BS9000-cd2″,”CD”, “238eeeee”,2}
a[10]={“BS9000-cd3″,”CD”, “238eeeee”,3}
a[11]={“BS9000-cd4″,”CD”, “238eeeee”,4}
a[12]={“BS9000-cd5″,”CD”, “238eeeee”,5}
a[13]={“BS9000-cd6″,”CD”, “238eeeee”,6}
a[14]={“BS5 Encore”,”LINE IN”, “238eeeee”,0}
— x = cd nummer in case of BS9000 (BLC must be set as ASlave);–{“Device Name”, Name on Halo, Area, Zone} note: device areas and device zones are as defined in the BLI
b[1]={“BeoPlay A6”, “BeoPlay A6”,”your_device_Area”, ”your_device_Zone”}
b[2]={“BeoSound 35”, “BeoSound 35″,”your_device_Area”,”your_device_Zone”}
b[3]={“BS Essence – Bath”, “BS Essence Bath”,”your_device_Area”,”your_device_Zone”}
b[4]={“BS Essence – Bed”, “BS Essence Bed”,”your_device_Area”,”your_device_Zone”}
b[5]={“BeoSound Shape”, “BS Shape”,”your_device_Area”,”your_device_Zone”}if event.parameters()[“OFFSET”] then
if tonumber(event.parameters()[“OFFSET”])>=1 then
direction= true
else
direction=false
endif direction then
sourceNr = sourceNr + 1
if sourceNr==sourceMax+1 then
sourceNr=0
end
if sourceNr==0 then
sourceName=a[sourceNr][1]
engine.fire(Ea..”/”..Ez..”/VARIABLE/selectButton/SET?VALUE=exitS”)
else
engine.fire(Ea..”/”..Ez..”/VARIABLE/selectButton/SET?VALUE=startS”)
sourceName=a[sourceNr][1]
source=a[sourceNr][2]
sourceID=a[sourceNr][3]
end
info=b[deviceNr][2]
engine.fire(Ea..”/”..Ez..”/VARIABLE/SourceNo/SET?VALUE=”..tostring(sourceNr))engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_TITLE?BUTTON=”..haloID..”&TITLE=”..tostring(sourceName))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_SUBTITLE?BUTTON=”..haloID..”&SUBTITLE=”..tostring(info))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_WHEEL_VALUE?BUTTON=”..haloID..”&VALUE=”..tostring(math.floor(sourceNr*100/sourceMax)))
else
deviceNr = deviceNr + 1
if deviceNr==deviceMax+1 then
deviceNr=1
end
device=b[deviceNr][1]
deviceName=b[deviceNr][2]
info=a[sourceNr][1]
engine.fire(Ea..”/”..Ez..”/VARIABLE/DeviceNo/SET?VALUE=”..tostring(deviceNr))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_TITLE?BUTTON=”..haloID..”&TITLE=”..tostring(deviceName))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_SUBTITLE?BUTTON=”..haloID..”&SUBTITLE=”..tostring(info))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_WHEEL_VALUE?BUTTON=”..haloID..”&VALUE=”..tostring(math.floor(deviceNr*100/deviceMax)))
end
end
end- Macro 2
Event: Button_pressed for the same Halo Button
function(event, engine)
local Ea=event.area()
local Ez=event.zone()–Resource selectButton as String
local selectButton_query = engine.query(Ea..”/”..Ez..”/VARIABLE/selectButton”)
local sButton = selectButton_query[1].get_string(“VALUE”)–Resource SourceNo as Integer
local sourcenr_query=engine.query(Ea..”/”..Ez..”/VARIABLE/SourceNo”)
local sourceNr = sourcenr_query[1].get_number(“VALUE”)
if sourceNr==nil then
sourceNr=1
endlocal devicenr_query=engine.query(“Upstairs/Study/VARIABLE/DeviceNo”)
local deviceNr = devicenr_query[1].get_number(“VALUE”)
if deviceNr==nil then
deviceNr=1
end
if deviceNr==0 then
deviceNr=1
endlocal device
local deviceName
local Da
local Dz
local source
local sourceMax=14 –set to number of sources programmed
local deviceMax=5. –set to number of devices programmedlocal sourceName
local info
local bs9000cd
local a={i=sourceMax, j=4}
local b={x=deviceMax, y=4}local haloName=“you”r_Halo_name_as_string
local haloID=“your_Halo_button_IDnumber_as_string”
local tst–{“Halo source name”, source, origin, x} below are examples change to your system
a[0]={“exit”,”exit”,””,0}
a[1]={“A6 Music”,”MUSIC”, “255aaaaa”,0}
a[2]={“A6 TuneIN”,”TUNEIN”, “255aaaaa”,0}
a[3]={“BS3000 cd”,”CD”, “240bbbbb”,0}
a[4]={“Beogram 4000″,”LINE IN”, “240bbbbb”,0}
a[5]={“BS7000 cd”,”CD”, “272ccccc”}
a[6]={“BS7000 ph”,”NET RADIO”, “272ccccc”,0}
a[7]={“BeoCenter2cd”,”CD”, “231ddddd”,0}
a[8]={“BS9000-cd1″,”CD”, “238eeeee”,1}
a[9]={“BS9000-cd2″,”CD”, “238eeeee”,2}
a[10]={“BS9000-cd3″,”CD”, “238eeeee”,3}
a[11]={“BS9000-cd4″,”CD”, “238eeeee”,4}
a[12]={“BS9000-cd5″,”CD”, “238eeeee”,5}
a[13]={“BS9000-cd6″,”CD”, “238eeeee”,6}
a[14]={“BS5 Encore”,”LINE IN”, “238eeeee”,0}
— x = cd nummer in case of BS9000 (BLC must be set as ASlave);–{“Device Name”, Name on Halo, Area, Zone} note: device areas and device zones are as defined in the BLI
b[1]={“BeoPlay A6”, “BeoPlay A6”,”your_device_Area”, ”your_device_Zone”}
b[2]={“BeoSound 35”, “BeoSound 35″,”your_device_Area”,”your_device_Zone”}
b[3]={“BS Essence – Bath”, “BS Essence Bath”,”your_device_Area”,”your_device_Zone”}
b[4]={“BS Essence – Bed”, “BS Essence Bed”,”your_device_Area”,”your_device_Zone”}
b[5]={“BeoSound Shape”, “BS Shape”,”your_device_Area”,”your_device_Zone”}if sButton==”exitS” then
goto exit
else
if sButton==”playS” then
Da=b[deviceNr][3]
Dz=b[deviceNr][4]
device=b[deviceNr][1]
deviceName=b[deviceNr][2]
sourceID=a[sourceNr][3]
source=a[sourceNr][2]
nr=a[sourceNr][4]
bs9000cd=sourceID..source — ID Cd of BS9000
tst=Da..”/”..Dz..”/AV renderer/”..device..”/Select source?Connector=&Origin=”..sourceID..”&Source Type=”..source
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_TITLE?BUTTON=”..haloID..”&TITLE=”..tostring(deviceName))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_SUBTITLE?BUTTON=”..haloID..”&SUBTITLE=”..tostring(source))
engine.fire(tst)
– the “origin” of the BS9000 BLC must be set in line below correctly (note BLC programmed as ASlave)
if bs9000cd==”238eeeeeCD” then
engine.fire(“*/*/AV renderer/BS9000 BLC/Send digit?Digit=”..tostring(nr))
end
sButton=”exitS”
else
deviceName=b[deviceNr][2]
sourceName=a[sourceNr][1]
engine.fire(Ea..”/”..Ez..”/VARIABLE/selectButton/SET?VALUE=playS”)
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_TITLE?BUTTON=”..haloID..”&TITLE=”..tostring(deviceName))
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_SUBTITLE?BUTTON=”..haloID..”&SUBTITLE=”..tostring(sourceName))
end
end::exit::
if sButton==”exitS” then
sourceName=”B&o Sources”
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_TITLE?BUTTON=”..haloID..”&TITLE=”..tostring(sourceName))
info=”Turn to Select”
engine.fire(Ea..”/”..Ez..”/Halo remote/”..haloName..”/SET_SUBTITLE?BUTTON=”..haloID..”&SUBTITLE=”..tostring(info))
engine.fire(Ea..”/”..Ez..”/VARIABLE/selectButton/SET?VALUE=startS”)
end
end20 March 2022 at 10:01 #33100for the interested………
I got similar Macros for Link/Join devices and for setting devices to Standby.Let it know and I will make them accessible.
20 March 2022 at 12:32 #33101Amazing stuff Carolpa! Damn I had to postpone BLI acquisition for couple of months, so envious about all cool things you can do with the Halo now. 🙂 Mine still in cupboard waiting for the installation. :/
22 March 2022 at 03:47 #33103you need:
- Beoliving blackbox + sw upgrade to Pro (see website of Khimo)
- Halo (of course)
this will open doors to extended home automation
22 March 2022 at 12:44 #33102Trying to find more info on macros. I had no idea it was programmable. Would someone please direct me to more info on this?
- AuthorPosts
- You must be logged in to reply to this topic.