Hi all,
I am currently failing to make any hue scene changes through HomeyScript, and would very much appreciate any insights or pointers.
This is with the official Hue App for Homey, using Hue Bridge.
What works:
- I can set scene from a normal (non-script) Flow + Philips Hue app
- I can set individual lights on or off through HomeyScript + Philips Hue app
- I can list the available scenes through HomeyScript by interrogating the FlowCards available through the Philips Hue app
What doesn’t work:
- I can call the runFlowCardAction with what I believe should be the right information to setScene, and it doesn’t return any errors - but it doesn’t cause any change in the light setting.
- After failing with setScene, I went back and tried groupOn/groupOff, but they didn’t work for me either (no error, but no action).
Again, controlling individual lights works fine (HomeyScript + Philips Hue official app), but not these wider hub controls (scenes & groups).
Is anyone able to help spot what I am (presumably) doing wrong? I haven’t found any discussion in the forum, and I assume that I can’t be the first to try this with the Homey Pro (early 2023), so I’d guess other people must have this working?
HomeyScript trial:
// HomeyScript using Philips Hue official app from Athom B.V
// Developed using versions:
// - Philips Hue app v5.9.1
// - Homey Web App version 1.9.57
// - Homey Pro (Early 2023), version 10.0.0-rc.122
// Status as of 8-July-2023:
// Not setting scene; everything before that works, but not the setScene
// runFlowActionCard doesn't return any errors, but the lights don't change state
// (can set scene via non-script flow, and even call that from HomeyScript, but not locally in script)
// why??
const flowcard_uri = 'homey:manager:flow';
const owner_name = 'Philips Hue';
const card_id = 'homey:app:nl.philips.hue:setScene';
// edit to match an available Hue scene, or empty string to list all available scenes
const scene_name = 'Front garden evening';
// const scene_name = '';
log('Philips Hue: Flow Card Actions:')
const actionCards = await Homey.flow.getFlowCardActions();
for( const card of actionCards ) {
if( card.ownerName == owner_name ) {
log(" ", card.id)
}
}
for( const card of actionCards ) {
if (card.id == card_id) {
const options = await Homey.flow.getFlowCardAutocomplete({
uri: flowcard_uri,
id: card.id,
name: 'scene',
query: '',
type: 'flowcardaction'
})
log('\n');
log('Card properties for:', card_id);
log(card)
log('\n');
log('Philips Hue: Scenes:');
for( scene of options ) {
if( !(scene_name.length) || (scene.name == scene_name) ) {
log(scene.description, " : ", scene.name, "; scene id=", scene.id);
}
}
}
}
log('\n');
if(!scene_name.length) {
log('No scene name specified so skipping setScene step')
} else {
log("runFlowCardAction: flowcard uri=", flowcard_uri, "; card id=", card_id, "; name=", `'${scene_name}'`);
await Homey.flow.runFlowCardAction({
uri: flowcard_uri,
id: card_id,
args: {
name: `'${scene_name}'`,
// type: 'autocomplete',
}
})
.then(() => log('Scene set OK'))
.catch(error => log(`Scene set Error:`, error));
}
(re-targeting & updating question after initially putting as reply to what looked like a related topic over on developers forum: Activate Hue scene with HomeyScript? - #5 by Colin_Osborne)