diff --git a/src/data/media-player.ts b/src/data/media-player.ts
index 48f3351dbb..6328b4aafe 100644
--- a/src/data/media-player.ts
+++ b/src/data/media-player.ts
@@ -261,8 +261,10 @@ export const computeMediaControls = (
});
}
+ const assumedState = stateObj.attributes.assumed_state === true;
+
if (
- (state === "playing" || state === "paused") &&
+ (state === "playing" || state === "paused" || assumedState) &&
supportsFeature(stateObj, SUPPORT_PREVIOUS_TRACK)
) {
buttons.push({
@@ -272,14 +274,15 @@ export const computeMediaControls = (
}
if (
- (state === "playing" &&
+ !assumedState &&
+ ((state === "playing" &&
(supportsFeature(stateObj, SUPPORT_PAUSE) ||
supportsFeature(stateObj, SUPPORT_STOP))) ||
- ((state === "paused" || state === "idle") &&
- supportsFeature(stateObj, SUPPORT_PLAY)) ||
- (state === "on" &&
- (supportsFeature(stateObj, SUPPORT_PLAY) ||
- supportsFeature(stateObj, SUPPORT_PAUSE)))
+ ((state === "paused" || state === "idle") &&
+ supportsFeature(stateObj, SUPPORT_PLAY)) ||
+ (state === "on" &&
+ (supportsFeature(stateObj, SUPPORT_PLAY) ||
+ supportsFeature(stateObj, SUPPORT_PAUSE))))
) {
buttons.push({
icon:
@@ -299,8 +302,29 @@ export const computeMediaControls = (
});
}
+ if (assumedState && supportsFeature(stateObj, SUPPORT_PLAY)) {
+ buttons.push({
+ icon: mdiPlay,
+ action: "media_play",
+ });
+ }
+
+ if (assumedState && supportsFeature(stateObj, SUPPORT_PAUSE)) {
+ buttons.push({
+ icon: mdiPause,
+ action: "media_pause",
+ });
+ }
+
+ if (assumedState && supportsFeature(stateObj, SUPPORT_STOP)) {
+ buttons.push({
+ icon: mdiStop,
+ action: "media_stop",
+ });
+ }
+
if (
- (state === "playing" || state === "paused") &&
+ (state === "playing" || state === "paused" || assumedState) &&
supportsFeature(stateObj, SUPPORT_NEXT_TRACK)
) {
buttons.push({
diff --git a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts
index 5935905dbf..f9e40bea12 100644
--- a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts
+++ b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts
@@ -110,10 +110,11 @@ class HuiMediaPlayerEntityRow extends LitElement implements LovelaceRow {
const entityState = stateObj.state;
const controlButton = this._computeControlButton(stateObj);
+ const assumedState = stateObj.attributes.assumed_state === true;
const buttons = html`
${!this._narrow &&
- entityState === "playing" &&
+ (entityState === "playing" || assumedState) &&
supportsFeature(stateObj, SUPPORT_PREVIOUS_TRACK)
? html`
`
: ""}
- ${(entityState === "playing" &&
+ ${!assumedState &&
+ ((entityState === "playing" &&
(supportsFeature(stateObj, SUPPORT_PAUSE) ||
supportsFeature(stateObj, SUPPORT_STOP))) ||
- ((entityState === "paused" || entityState === "idle") &&
- supportsFeature(stateObj, SUPPORT_PLAY)) ||
- (entityState === "on" &&
- (supportsFeature(stateObj, SUPPORT_PLAY) ||
- supportsFeature(stateObj, SUPPORT_PAUSE)))
+ ((entityState === "paused" || entityState === "idle") &&
+ supportsFeature(stateObj, SUPPORT_PLAY)) ||
+ (entityState === "on" &&
+ (supportsFeature(stateObj, SUPPORT_PLAY) ||
+ supportsFeature(stateObj, SUPPORT_PAUSE))))
? html`
`
: ""}
- ${entityState === "playing" &&
+ ${assumedState && supportsFeature(stateObj, SUPPORT_PLAY)
+ ? html`
+
+ `
+ : ""}
+ ${assumedState && supportsFeature(stateObj, SUPPORT_PAUSE)
+ ? html`
+
+ `
+ : ""}
+ ${assumedState && supportsFeature(stateObj, SUPPORT_STOP)
+ ? html`
+
+ `
+ : ""}
+ ${(entityState === "playing" || assumedState) &&
supportsFeature(stateObj, SUPPORT_NEXT_TRACK)
? html`