Requirements
Current Behavior
When fan.oscillate is called via a perform-action tap action on a mushroom-template-card, Home Assistant core dispatches fan.turn_off instead of fan.oscillate, causing the fan to turn off entirely.
Expected Behavior
fan.oscillate should be dispatched as specified in the tap action configuration, not fan.turn_off.
Steps To Reproduce
- Create a
mushroom-template-card with the following tap action:
tap_action:
action: perform-action
perform_action: fan.oscillate
target:
entity_id: fan.tower_fan
data:
oscillating: false
- Ensure the fan entity is on
- Press the button
- Observe the fan turns off entirely instead of toggling oscillation
Context
YAML state
Environment
- Browser: Chrome
- HA Version: core-2026.3.3
- Mushroom: v5.0.12
Anything else?
dreo_debug_v173_2.log
With homeassistant.core: debug logging enabled, the attached log (dreo_debug_v173_2.log) captures three sequential button presses. All unrelated lines have been removed and personal information has been redacted.
Button Press 1 — Mushroom fan card built-in oscillate button (working correctly)
Line 1 — HA core receives a legitimate fan.oscillate service call:
[homeassistant.core] Bus:Handling <Event call_service[L]: domain=fan, service=oscillate, service_data=entity_id=fan.tower_fan, oscillating=False>
The fan integration correctly sends shakehorizon: false to the device and receives a full ACK. ✅
Button Press 2 — Mushroom fan card built-in oscillate button (working correctly)
Line 29 — HA core receives a legitimate fan.oscillate service call:
[homeassistant.core] Bus:Handling <Event call_service[L]: domain=fan, service=oscillate, service_data=entity_id=fan.tower_fan, oscillating=True>
The fan integration correctly sends shakehorizon: true to the device and receives a full ACK. ✅
Button Press 3 — mushroom-template-card perform-action tap action (broken)
Line 57 — HA core receives fan.turn_off instead of fan.oscillate:
[homeassistant.core] Bus:Handling <Event call_service[L]: domain=fan, service=turn_off, service_data=entity_id=fan.tower_fan>
The fan integration correctly handles the turn_off call it received and sends poweron: false — turning the fan off entirely. ❌
The tap action on the mushroom-template-card was configured identically to the working HA core button card. The only difference is the card type. This was confirmed by testing the same perform-action configuration on a native HA core button card, which dispatched fan.oscillate correctly (see home-assistant/core#166437).
Requirements
Current Behavior
When
fan.oscillateis called via aperform-actiontap action on amushroom-template-card, Home Assistant core dispatchesfan.turn_offinstead offan.oscillate, causing the fan to turn off entirely.Expected Behavior
fan.oscillateshould be dispatched as specified in the tap action configuration, notfan.turn_off.Steps To Reproduce
mushroom-template-cardwith the following tap action:Context
YAML state
Environment
Anything else?
dreo_debug_v173_2.log
With
homeassistant.core: debuglogging enabled, the attached log (dreo_debug_v173_2.log) captures three sequential button presses. All unrelated lines have been removed and personal information has been redacted.Button Press 1 — Mushroom fan card built-in oscillate button (working correctly)
Line 1 — HA core receives a legitimate
fan.oscillateservice call:The fan integration correctly sends
shakehorizon: falseto the device and receives a full ACK. ✅Button Press 2 — Mushroom fan card built-in oscillate button (working correctly)
Line 29 — HA core receives a legitimate
fan.oscillateservice call:The fan integration correctly sends
shakehorizon: trueto the device and receives a full ACK. ✅Button Press 3 —
mushroom-template-cardperform-action tap action (broken)Line 57 — HA core receives
fan.turn_offinstead offan.oscillate:The fan integration correctly handles the
turn_offcall it received and sendspoweron: false— turning the fan off entirely. ❌The tap action on the
mushroom-template-cardwas configured identically to the working HA corebuttoncard. The only difference is the card type. This was confirmed by testing the sameperform-actionconfiguration on a native HA corebuttoncard, which dispatchedfan.oscillatecorrectly (see home-assistant/core#166437).