Album art not displaying in custom speaker app

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 speaker with speaker_playing, speaker_track, speaker_artist capabilities
  • 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!

What I noticed during development of my Apple TV and HomePod app (uses both url and stream) is that I often had to restart the Homey mobile app or web interface for the artwork to show. It works fine in production, but development mode needs some nudging.

Could be that you’re experiencing the same.