Use Cases¶
End-to-end scenarios that show what the integration is for, each with the configuration or automation that makes it work. Dashboard-side examples are in Lovelace Recipes; the service reference is in Services.
1. Bring an existing MyHOME plant into Home Assistant without reprogramming it¶
The usual starting point: a house wired with SCS actuators and a gateway (F454, MyHOMEServer1, MH200N…) that was configured years ago by an installer.
- Add the integration; the gateway is found by SSDP or entered by IP. Enter the OpenWebNet password.
- Lights, covers, thermostats and audio zones are created from the bus as they report. Press Sweep Bus on the bus-monitor card to hydrate everything at once.
- Give the discovered entities their names in
myhome.yaml(optional): the file only adds names, device classes and options — it never replaces discovery.
# /config/myhome.yaml
00:03:50:81:22:33:
light:
living_room:
where: "12"
name: "Living Room"
dimmable: true
switch:
garden_socket:
where: "34"
name: "Garden socket"
device_class: outlet
cover:
kitchen_blind:
where: "25"
name: "Kitchen Blind"
travel_time: 22
Nothing on the gateway changes; the installer's scenarios keep working alongside Home Assistant.
2. Physical scenario buttons drive non-MyHOME devices¶
A CEN+ wall pushbutton (for example an L4652/2 with a 3477 interface) toggles a Zigbee lamp and, on a long press, starts a vacuum. CEN / CEN+ devices are stateless, so this uses device triggers — no YAML beyond the automation.
automation:
- alias: Hall button - short press toggles the floor lamp
trigger:
- platform: device
domain: myhome
device_id: <device id of the CEN+ module>
type: pushbutton_short_press
subtype: button_1
action:
- service: light.toggle
target:
entity_id: light.floor_lamp_zigbee
- alias: Hall button - long press starts the vacuum
trigger:
- platform: device
domain: myhome
device_id: <device id of the CEN+ module>
type: pushbutton_long_press
subtype: button_1
action:
- service: vacuum.start
target:
entity_id: vacuum.ground_floor
Rotary dials (rotary_cw_slow, rotary_ccw_fast, …) work the same way — see CEN & CEN+ for the eight trigger types and the dimming example.
3. Shutters that report a real position¶
Timed shutter actuators (F411/4, LN4661M2 without encoder) do not know where the shutter is. The integration estimates the position from the travel time, so the estimate is only as good as the number.
- Press Calibrate travel time on the cover's device page, or run
myhome.calibrate_cover. The shutter goes fully up, then down (timed), then up (timed); the two values are stored on the config entry and shown astravel_time_down/travel_time_upattributes. - On an MH200 / MH200N, or when the actuator has a 60 s safety cut-off, measure the travel times with a stopwatch and save the numbers with
myhome.set_cover_travel_time.
With the times right, cover.set_cover_position and the position slider behave like a positional actuator:
automation:
- alias: Sun shading - half close the south blinds at noon
trigger:
- platform: sun
event: sunrise
offset: "06:00:00"
condition:
- condition: numeric_state
entity_id: sensor.outdoor_temperature
above: 26
action:
- service: cover.set_cover_position
target:
entity_id:
- cover.living_room_south
- cover.kitchen_south
data:
position: 50
Position-reporting actuators (dimension 10, advanced_shutter: true) skip all of this: they are exact out of the box.
4. Lights that switch off by themselves — even if Home Assistant is down¶
myhome.turn_on_timed programs the actuator's own timer, so the light goes out on the bus without a Home Assistant delay: that a restart would lose.
automation:
- alias: Cellar light - 10 minutes after the door opens
trigger:
- platform: state
entity_id: binary_sensor.cellar_door
to: "on"
action:
- service: myhome.turn_on_timed
target:
entity_id: light.cellar
data:
minutes: 10
The same service accepts switch entities (a socket, a fan).
5. Whole-house multiroom audio with Music Assistant¶
The F441 / F441M analog matrix plays whatever is on its inputs. Map one or more network decoders (a Squeezelite, WiiM, or Cambridge Audio DLNA DMR player per input) in the options flow (Configure, one row per decoder: entity, source input, pre-gain), and name the sources wired to the matrix. Every audio zone advertises GROUPING and (with decoders configured) PLAY_MEDIA:
- Synchronized Multi-Room Grouping: In Music Assistant, grouping multiple MyHOME zones streams once to the leader, while the integration automatically routes the other rooms' physical matrix environments to the leader's source and powers on their room amplifiers.
- Hardware-level zero latency: Because all grouped rooms listen to the same analog source on the matrix, there is zero audio drift or echo between rooms.
- Independent stream isolation: Two decoders allow two independent streams at once in different environments. Starting a stream or joining a zone in an environment already occupied by another stream is cleanly prevented with an environment isolation error.
- Backend Stream Compatibility (DLNA DMR): Cambridge Audio streamers (CXN, CXN V2, Edge NQ, Evo, etc.) reject direct HTTP stream URLs when using the native
cambridge_audiointegration. Configure them via Home Assistant's built-in DLNA Digital Media Renderer integration for smooth streaming. - Passive Stream & Metadata Tracking: Start Spotify Connect or internet radio directly in the streamer's mobile app; any zone switched on to that source automatically mirrors track title, artist, album art, and transport state.
Details, gain-staging notes, and protocol reference frames are in Sound System.
6. Heating with a central unit, controlled from Home Assistant¶
A 3550 (#0) or 4695 (#0#1) central unit is exposed as a climate entity with central: true; its zones are individual climates. Set the season or switch everything off from an automation while the wall unit keeps its weekly program:
automation:
- alias: Heating off when everyone has left
trigger:
- platform: state
entity_id: group.family
to: not_home
for: "00:30:00"
action:
- service: climate.set_hvac_mode
target:
entity_id: climate.central_unit
data:
hvac_mode: "off"
- alias: Bathroom warmer before the alarm clock
trigger:
- platform: time
at: "06:15:00"
action:
- service: climate.set_temperature
target:
entity_id: climate.bathroom
data:
temperature: 22.5
External probes (3455 behind an L4577, WHERE ≥ 100) appear as temperature sensors and push their readings on their own; nothing polls them.
7. Arm the alarm when the house is empty¶
The MyHOME alarm_control_panel is read-only: the central unit rejects WHO 5 arm/disarm frames, so arming goes through the AUX frame your installer programmed it to act on. Wrap the two in a template alarm panel (see alarm) and arm that one. The frames carry no user code; the central unit's own code stays on the keypad. Central units refuse to arm with an open zone; watch the bus-monitor card if an automation seems to do nothing.
automation:
- alias: Arm away when the last person leaves
trigger:
- platform: state
entity_id: group.family
to: not_home
for: "00:10:00"
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.home_alarm
8. Energy dashboard from the F520 / F521 meters¶
Energy meters (WHO 18) create an instantaneous power sensor and a total energy sensor (today / month counters exist but are disabled by default). Add the total energy sensor to Settings → Dashboards → Energy as grid consumption; the state class total_increasing gives the dashboard everything it needs. For a live power gauge, myhome.start_sending_instant_power requests a burst of readings from a meter that otherwise reports slowly.
9. Diagnose a plant remotely¶
Someone reports "the kitchen light does not react". Ask them for:
- Sweep Bus then Export Trace on the card, or Download diagnostics on the integration — both carry the last 500 frames, the gateway identity and the queue state, with passwords redacted.
- A raw command sent from the card's Send frame bar (administrators only) —
*1*1*12##— while watching whether the actuator answers with*1*1*12##or the gateway with a NACK.
The troubleshooting guide maps the usual symptoms to what the trace shows.
10. Whole-house & secondary bus shutter automations (the BTicino way)¶
When closing many shutters together at sunset, targeting a dozen individual cover entities causes Home Assistant to dispatch commands concurrently. Behind an F422 interface, sending rapid consecutive point-to-point commands overloads the interface FIFO buffer, causing un-acknowledged shutters to stall open.
Instead, declare a General scope cover (where: "0", with bus_interface: if on a secondary bus) in myhome.yaml:
# /config/myhome.yaml
00:03:50:81:22:33:
cover:
all_shutters_east:
where: "0"
bus_interface: "02"
name: "All East Shutters"
In your automation, trigger this single entity:
automation:
- alias: Close Windows at Sunset
triggers:
- trigger: sun
event: sunset
offset: "00:30:00"
actions:
- action: cover.close_cover
target:
entity_id: cover.all_shutters_east
The integration emits a single native OpenWebNet broadcast frame (*2*2*0#4#02##). All actuators energize simultaneously in total synchrony with zero bus queue latency and zero dropped frames. No artificial delay: or manual cover.stop_cover is needed—actuators stop cleanly on their own limit switches.