Album art not displaying in custom speaker app — setUrl and setStream both fail
Hi all,
I’m building a custom Homey app for Emby and Plex media servers. The app works perfectly — polling, flow triggers, conditions, actions, widgets — everything except album art.
I’ve tried every approach I can find and nothing works. Here’s what I’ve tried:
Approach 1: setUrl
this._albumArt = await this.homey.images.createImage();
this.setAlbumArtImage(this._albumArt).catch(this.error);
// When track changes:
this._albumArt.setUrl('https://my-domain.com/Items/123/Images/Art?api_key=xxx');
this._albumArt.update().catch(this.error);
update() resolves successfully but no image appears.
Approach 2: setStream (based on com.bluesound)
this._albumArt = await this.homey.images.createImage();
this._albumArt.setStream(async (stream) => {
const url = this.getStoreValue('albumArtUrl');
if (!url) throw new Error('No URL');
const res = await fetch(url);
return res.body.pipe(stream);
});
this.setAlbumArtImage(this._albumArt).catch(this.error);
this._albumArt.update().catch(this.error);
// When track changes:
await this.setStoreValue('albumArtUrl', url);
this._albumArt.update().catch(this.error);
update() resolves successfully but the stream function is never called — no log output from inside the stream function.
What I’ve confirmed:
- The image URL is publicly accessible over HTTPS and loads correctly in a browser
- The image IS registered in the Homey developer tools image debugger
update()always resolves without error- The device class is
speakerwithspeaker_playing,speaker_track,speaker_artistcapabilities - Other apps like com.bluesound work fine with identical code
- Fresh device pairing makes no difference
My question: Why does update() resolve successfully but the stream function never gets called, and the image never displays in the Homey app? Is there something I’m missing in how the image registration works?
Any help greatly appreciated!