Hardware-Coupled Sensors & Twilight Curfew Guide¶
This guide explains how to identify, manage, and decouple physical BTicino MyHOME sensors (such as external twilight photocells, contact interfaces, or motion sensors) that share an SCS bus address with a lighting actuator relay.
Understanding Hardware Coupling¶
In classic BTicino MyHOME installations, point-to-point automation is established through physical configurator plugs (A and PL). Installers frequently configure a control interface with the identical A and PL address as an actuator relay:
[External Twilight Switch] (Photocell)
│ dry contact
â–¼
[BTicino 3477 Contact Interface] (Model 129, Configured: A=9, PL=8)
│ SCS Bus Event: *1*1*98##
â–¼
[BTicino F411/4 Relay Actuator] (Channel 4: A=9, PL4=8)
│ relay closure
â–¼
[Outdoor Light Fixture]
Diagnostic Investigation via WHO 1001¶
OpenWebNet diagnostics (WHO 1001) can help identify which device sits behind an address, with caveats:
- Identity request (
DIMENSION 1): send*#1001*WHERE*1##(for address98:*#1001*98*1##). A device answers with*#1001*WHERE*1*OBJECT_MODEL*N_CONF*BRAND*LINE##: its item/model value, its number of physical configurator positions, and brand and product-line codes. The MyHOME_Suite catalogue lists object model129for the 3477 contact interface. - Which devices answer: a device appears to answer diagnostics at the address of its first channel. An F411/4 configured
A=9,PL1=5…PL4=8would then answer at95, not98, so a reply at98normally comes from the 3477 (or a single-channel actuator), not from the F411/4 channel that shares the address. - Configurator readback (
DIMENSION 4): MyHOME_Suite can read the inserted configurators with*#1001*WHERE*4##, but gateways may NACK it.
Note
These diagnostic replies have not been captured on a test plant for this guide yet. If you can capture them for a 3477 and the actuator it drives, please attach the trace to issue #631.
The practical signal is simpler: if light.light_98 turns on by itself at dusk and a 3477 is installed with A=9, PL=8, the address is hardware-coupled.
What Happens on the Wire¶
- At Dusk: As ambient light drops, the external twilight switch closes its dry contact.
- SCS Broadcast: The BTicino 3477 senses the transition and broadcasts an unsolicited lighting command:
*1*1*98## - Actuator Switching: Relay Channel 4 on the F411/4 receives this command directly on the SCS bus and closes, illuminating the outdoor light.
- Edge-Triggered Behavior & Manual Control: The 3477 is expected to act on state transitions only: it sends one command when the contact closes and does not repeat it while the contact stays closed. When you turn off the light from Home Assistant, an app, or an SCS wall switch,
*1*0*98##opens the relay and it stays off for the rest of the evening. Watch the bus for an evening to confirm this on your plant; the curfew approach depends on it. - At Dawn: When daylight returns, the twilight switch contact opens, causing the 3477 to broadcast
*1*0*98##.
Architectural Challenges in Home Assistant¶
- Hardware-Level Activation: The initial turn-on at dusk occurs directly on the SCS wire before Home Assistant can intercept or filter it.
- Shadowed Sensor State: Because the 3477 transmits standard
WHO = 1(Lighting) frames to address98, Home Assistant discovers address98as a singleLightentity. The physical state of the photocell contact is obscured by the light relay state. - No Native Curfew: Without an automation layer, the light remains on all night until dawn unless manually switched off.
Solution Strategy 1: Non-Invasive Dusk Curfew (Blueprint)¶
If you cannot easily modify physical configurator plugs in electrical panels, use Home Assistant to add an intelligent curfew and companion synchronization layer on top of the hardware behavior.
🌟 Using the Dusk Curfew Blueprint¶
Tip
During the v2 beta development cycle, the badge above points to the v2-phase1-architecture branch. You can also import directly from this URL in Settings → Automations & Scenes → Blueprints → Import Blueprint.
- Source File:
blueprints/automation/myhome/dusk_curfew.yaml - Manual Installation:
Download
dusk_curfew.yamland save it to<config>/blueprints/automation/myhome/dusk_curfew.yamlin your Home Assistant configuration directory. - Key Features:
- Bedtime Curfew: Enforces a strict cutoff time (
curfew_time, e.g.23:00:00) to turn off the hardware-coupled light and all companion lights. - Configurable Morning Curfew End: Configurable
curfew_end_time(default06:00:00), after which daytime behavior resumes. - Max Run Duration: Optional timeout (e.g. 180 minutes) to guarantee the light turns off even on dark winter afternoons when dusk occurs early.
- Companion Synchronization: When the hardware twilight light turns on at dusk, automatically illuminates additional outdoor lights (e.g. pathway spots, facade accents) and turns them off together at curfew.
- Presence Gating: Supports
zone.*(evaluates as away when occupant count is 0),person.*,device_tracker.*,group.*,binary_sensor.*, oralarm_control_panel.*(away whenarmed_awayorarmed_vacation). When occupants are away, reduces the runtime to a configurableaway_timeout. Dynamic presence tracking automatically turns off lights if occupants leave mid-evening. - Optional Daylight Guard: Optional
after_sunset_only(defaultfalse) gates companion activation to astronomical night. Keep disabled if your twilight photocell trips before sunset on overcast or winter afternoons. While it is disabled, switching the light on by hand during the day also turns the companion lights on. - Service & Maintenance Overrides:
- Service Power (Gardener / Power Tools): Energizes the circuit immediately on demand during daylight hours, suspends curfew and presence shutoffs, and turns everything off again after
service_timeout_hours(default 4 hours). A Home Assistant restart re-arms the full timeout. - Maintenance Hold: Turns the circuit off and switches any photocell or wall switch turn-on straight back off. It is a convenience, not electrical isolation; see the warning below.
- Pause Automation: Leaves lights under manual control, temporarily bypassing all curfew and timer logic.
- Service Power (Gardener / Power Tools): Energizes the circuit immediately on demand during daylight hours, suspends curfew and presence shutoffs, and turns everything off again after
- Reconnection Resilience: Uses
from: "off"to ensure temporary gateway drops or Home Assistant restarts (unavailable -> on) do not re-run curfew sequences in the middle of the night. - Turn-Ons During Curfew: A turn-on between
curfew_timeandcurfew_end_timeis turned off after 2 minutes. This includes deliberate turn-ons from a wall switch; use thepause_automationoverride if you need the light for longer at night. - Restarts: Home Assistant does not keep a running
max_durationtimer across a restart; the curfew still applies afterwards.
Example Automation Configuration¶
Note
By default, the MyHOME integration discovers lights with names reflecting their bus address (e.g. light.light_98). If you have renamed your entity in Home Assistant (e.g. light.outdoor_facade_light), provide that entity ID in the target_light field.
alias: "Outdoor Light 98 - Dusk Curfew & Companion Sync"
use_blueprint:
path: myhome/dusk_curfew.yaml
input:
target_light: light.light_98
curfew_time: "23:00:00"
curfew_end_time: "06:00:00"
max_duration: 180
sync_lights:
entity_id:
- light.garden_pathway
- light.driveway_spots
presence_entity: zone.home
away_timeout: 15
after_sunset_only: false
# Optional Gardener / Maintenance Override Helper
override_entity: input_boolean.gardener_power
override_mode: service_power
service_timeout_hours: 4
Temporary Overrides: Gardener Power & Maintenance Hold¶
Outdoor lighting circuits frequently double as power lines for garden sockets (lawnmowers, hedge trimmers, pumps) or need maintenance:
- Gardener Service Power: Create a helper (
input_boolean.gardener_powerin Settings → Devices & Services → Helpers). When turned on (via a dashboard button or NFC tag by the shed), the automation energizeslight.light_98immediately and suspends curfew/presence turn-offs. Afterservice_timeout_hours(e.g., 4 hours), it automatically turns off the circuit and resets the helper. Turning the helper off earlier ends the session and cancels the timeout. - Maintenance Hold: Configure
override_mode: maintenance_holdwith a helper such asinput_boolean.lighting_maintenance_hold. While it is on, the automation turns the light off and switches any photocell or wall switch turn-on straight back off, so lamps stay dark while you replace bulbs or tidy the garden.
Warning
Maintenance hold is not electrical isolation. The 3477 switches the relay directly on the bus; Home Assistant only turns it back off afterwards, so the circuit is briefly live on every dusk trigger or switch press. If Home Assistant, the gateway or the network is down, nothing turns it off at all. Before touching wiring, fixtures or lamp holders, switch off and lock the circuit breaker.
Solution Strategy 2: Clean Hardware Decoupling (Full HA Authority)¶
If you prefer Home Assistant to hold 100% software authority over whether and when the outdoor lights illuminate, decouple the 3477 contact interface from the lighting relay.
Option A: Move 3477 to an Unused Address (Physical Decoupling)¶
- Locate the BTicino 3477 module in your electrical panel.
- Replace the
PLconfigurator with a point in Area 9 that no actuator uses (e.g. change fromPL=8toPL=9if nothing answers at99). - Result: At dusk, the 3477 broadcasts
*1*1*99##. No physical relay clicks or turns on. - In Home Assistant, address
99appears aslight.light_99once the integration has seen it on the bus. - Create a standard Home Assistant automation triggered by
light.light_99turning on to evaluate weather, presence, and schedule before commanding the actual fixturelight.light_98.
Note
A light point of 10 or more uses the four-digit address form: A=9, PL=10 is 0910, not 910.
Option B: Configure 3477 as a Dry Contact Interface (WHO = 25)¶
- Using MyHOME_Suite (Virtual Configuration), reconfigure the 3477 contact interface into Dry Contact Mode (
WHO = 25, virtual address range 1..201). - Result: The interface transmits OpenWebNet dry contact frames where
WHATis31for contact closed and32for contact open: - Contact closed (dusk):
*25*31#1*WHERE## - Contact opened (dawn):
*25*32#1*WHERE## - In Home Assistant, the contact is discovered automatically the first time it changes state (see Binary Sensors). The contact closes at dusk, so the sensor reads
onwhen it is dark. If you want Home Assistant's Light device class (on= light detected), declare it inmyhome.yamlunder your gateway withinverted: true, using its configured address (for example15): - You now have full separation of concerns:
binary_sensor.twilight_sensoraccurately mirrors daylight/darkness in real time.light.light_98remains a pure actuator controlled exclusively by Home Assistant schedules, presence logic, and automations.