Wake on LAN
The Wake on LAN integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] enables the ability to send magic packets to Wake on LAN
There is currently support for the following device types within Home Assistant:
Configuration
To add the Wake on LAN integration to your Home Assistant instance, use this My button:
Manual configuration steps
If the above My button doesn’t work, you can also perform the following steps manually:
-
Browse to your Home Assistant instance.
-
In the bottom right corner, select the
Add Integration button. -
From the list, select Wake on LAN.
-
Follow the instructions on screen to complete the setup.
Integration services
Available services: send_magic_packet
.
To only use this service, add the following to your configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file
# Example configuration.yaml entry
wake_on_lan:
Actions
Available actions: send_magic_packet
.
Action wake_on_lan.send_magic_packet
Send a magic packet to wake up a device with ‘Wake on LAN’ capabilities.
Data attribute | Optional | Description |
---|---|---|
mac |
no | MAC address of the device to wake up. |
broadcast_address |
yes | Optional broadcast IP where to send the magic packet. |
broadcast_port |
yes | Optional port where to send the magic packet. |
Sample action data:
{
"mac":"00:40:13:ed:f1:32"
}
This usually only works if the target device is connected to the same network. Routing the magic packet to a different subnet requires a special configuration on your router or may not be possible. The action to route the packet is most likely named “IP Helper”. It may support Wake on LAN, but not all routers support this.
Button
The wake_on_lan
(WOL) button integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] allows you to turn on a WOL
The WOL button can only turn on your computer. It will send a magic packet to the MAC address specified in the configuration. As a button, it is stateless. This means it can not monitor if the WOL-enabled computer has actually received the wake-up call and has started.
Switch
The wake_on_lan
(WOL) switch integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] allows you to turn on a WOL
The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. The turn_off
variable is there to help you call a script when you have figured out how to remotely turn off your computer. See below for suggestions on how to do this.
It’s required that the binary ping
is in your $PATH
.
To enable this switch in your installation, add the following to your configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file:
# Example configuration.yaml entry
switch:
- platform: wake_on_lan
mac: MAC_ADDRESS
Configuration Variables
The IP address or hostname to check the state of the device (on/off). If this is not provided, the state of the switch will be assumed based on the last action that was taken.
Defines an action to run when the switch is turned off.
The IP address of the host to send the magic packet to.
Examples
Here are some real-life examples of how to use the turn_off variable.
Suspending Linux
Suggested recipe for letting the turn_off
script suspend a Linux computer (the target)
from Home Assistant running on another Linux computer (the server).
- On the server, log in as the user account Home Assistant is running under. In this example it’s
hass
. - On the server, create SSH keys by running
ssh-keygen
. Just press enter on all questions. - On the target, create a new account that Home Assistant can ssh into:
sudo adduser hass
. Just press enter on all questions except password. It’s recommended using the same username as on the server. If you do, you can leave outhass@
in the SSH commands below. - On the server, transfer your public SSH key by
ssh-copy-id hass@TARGET
where TARGET is your target machine’s name or IP address. Enter the password you created in step 3. - On the server, verify that you can reach your target machine without password by
ssh TARGET
. - On the target, we need to let the
hass
user execute the program needed to suspend/shut down the target computer. Here is itpm-suspend
, usepoweroff
to turn off the computer. First, get the full path:which pm-suspend
. On my system, this is/usr/sbin/pm-suspend
. - On the target, using an account with sudo access (typically your main account),
sudo visudo
. Add this line last in the file:hass ALL=NOPASSWD:/usr/sbin/pm-suspend
, where you replacehass
with the name of your user on the target, if different, and/usr/sbin/pm-suspend
with the command of your choice, if different. - On the server, add the following to your configuration, replacing TARGET with the target’s name:
switch:
- platform: wake_on_lan
name: "TARGET"
...
turn_off:
action: shell_command.turn_off_TARGET
shell_command:
turn_off_TARGET: "ssh hass@TARGET sudo pm-suspend"
Helper button with automation
A switch defined with the wake_on_lan
platform will render in the UI with both ‘on’ and ‘off’ clickable actions. If you don’t intend to use the turn_off
functionality, then using a virtual button & automation will look cleaner and less confusing. It will only have one action.
-
First, define a new helper button.
- Go to Settings > Devices & services > Helpers and select the + Create helper button. Choose Button and give it a name. A button named “Wake PC” will render like this:
-
Then, create a new automation. Go to Settings > Automations & scenes and select + Create Automation.
-
The trigger will be on
State
and the entity will be the button you created. -
Continuing your example, the trigger YAML will look like this:
trigger: state entity_id: - input_button.wake_pc
-
-
For the action, select Perform action and choose Wake on LAN: Send magic packet.
-
Type in the target MAC address.
-
Do not change the broadcast port unless you’ve configured your device to listen to a different port.
-
Continuing our example, the action YAML looks like this:
action: wake_on_lan.send_magic_packet data: broadcast_port: 9 mac: 00:11:22:33:44:55
-
-
Save the automation. Now, when you activate
PRESS
on the helper button in the UI, Home Assistant will send a wake packet to the configured MAC.