Skip to content

tanmaster/homebridge-wol

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM Version Total NPM Downloads
Quick Start | Contribute

A Wake on Lan plugin for Homebridge

Turn your PCs, laptops, servers and more on and off through Siri

Hi! Are you willing to help? This project is looking for contributors. PRs are more than welcome.

Unsure of where to start? Read through open issues and try to solve them or open a new issue to start a conversation. Currently, 3.3 is the next milestone.

Quick Start

To install the plugin, head over to the machine with Homebridge set up and run the following command:

npm install -g homebridge-wol

Add your devices to your config.json:

"accessories": [
  {
    "accessory": "NetworkDevice",
    "name": "My MacBook",
    "ip": "192.168.1.51",
    "mac": "aa:bb:cc:dd:ee:ff"
  }
]

NOTE: the master branch is considered experimental and regressions may occur.

NOTE: the master branch does currently not support the wake grace time.

Configuration

To make Homebridge aware of the new plugin, you will have to add it to your configuration usually found in /root/.homebridge/config.json or /home/username/.homebridge/config.json. If the file does not exist, you can create it following the config sample. Somewhere inside that file you should see a key named accessories. This is where you can add your computer as shown here:

"accessories": [
   {
     "accessory": "NetworkDevice",
     "name": "My Macbook",
     "mac": "<mac-address>",
     "ip": "192.168.1.51",
     "pingInterval": 45,
     "wakeGraceTime": 10,
     "wakeCommand": "ssh 192.168.1.51 caffeinate -u -t 300",
     "shutdownGraceTime": 15,
     "shutdownCommand": "ssh 192.168.1.51 sudo shutdown -h now"
   },
   {
     "accessory": "NetworkDevice",
     "name": "My Windows Gaming Rig",
     "mac": "<mac-address>",
     "ip": "192.168.1.151",
     "shutdownCommand": "net rpc shutdown --ipaddress 192.168.1.151 --user username%password"
   },
   {
     "accessory": "NetworkDevice",
     "name": "Raspberry Pi",
     "mac": "<mac-address>",
     "ip": "192.168.1.251",
     "pingInterval": 45,
     "wakeGraceTime": 90,
     "shutdownGraceTime": 15,
     "shutdownCommand": "sshpass -p 'raspberry' ssh -oStrictHostKeyChecking=no pi@192.168.1.251 sudo shutdown -h now"
   },
   {
     "accessory": "NetworkDevice",
     "name": "My NAS",
     "ip": "192.168.1.148",
     "log": false,
     "broadcastAddress": "172.16.1.255"
   }
]
Options
Key Description Required
accessory The type of accessory - has to be "NetworkDevice" Yes
name The name of the device - used in HomeKit apps as well as Siri, default My Computer Yes
mac The device's MAC address - used to send Magic Packets. Allows any format such as XX:XX:XX:XX:XX:XX or XXXXXXXXXXXX No
ip The IPv4 address of the device - used to check current status No
pingInterval Ping interval in seconds, only used if ip is set, default 2 No
wakeGraceTime Number of seconds to wait after wake-up before checking online status and issuing the wakeCommand, default 45 No
wakeCommand Command to run after initial wake-up, useful for macOS users in need of running caffeinate No
shutdownGraceTime Number of seconds to wait after shutdown before checking offline status, default 15 No
shutdownCommand Command to run in order to shut down the remote machine No
pingCommand Command to run in order to know if a host is up or not. If the command exits successfully (zero as the exit code) the host is considered up. If an error is thrown or the command exits with a non-zero exit code, the host is considered down. No
log  Whether or not the plugin should log status messages, default true No
logPinger  Whether or not the plugin should log ping messages, default false No
timeout  Number of seconds to wait for pinging to finish, default 1 No
broadcastAddress The broadcast address to use when sending the wake on lan packet No

Notes and FAQ

Permissions

This plugin requires extra permissions due to the use of pinging and magic packages. Start Homebridge using sudo homebridge or change capabilities accordingly (setcap cap_net_raw=pe /path/to/bin/node). Systemd users can add the following lines to the [Service] section of Homebridge's unit file (or create a drop-in if unit is packaged by your distro) to achieve this in a more secure way like so:

CapabilityBoundingSet=CAP_NET_RAW
AmbientCapabilities=CAP_NET_RAW
Waking an Apple computer

The Macbook configuration example uses caffeinate in order to keep the computer alive after the initial wake-up. See this issue for more information.

Controlling a Windows PC

The Windows configuration example requires the samba-common package to be installed on the server. If you're on Windows 10 and you're signing in with a Microsoft account, the command should use your local username instead of your Microsoft ID (e-mail). Also note that you may or may not need to run net rpc with sudo.

SSH as wake or shutdown command

The Raspberry Pi example uses the sshpass package to sign in on the remote host. The -oStrictHostKeyChecking=no parameter permits any key that the host may present. This usage is heavily discouraged. You should be using SSH keys to authenticate yourself.

Secrets in the configuration

Using username and passwords in a command is heavily discouraged as this stores them in the configuration file and may log them to the terminal output and or a log file. Use other authentication methods or environment variables instead.

Contibute

Any contribution is welcome. If you're not able to code it yourself, perhaps someone else is - so post an issue if there's anything on your mind.

If you're new to the open source community, JavaScript, GitHub or just uncertain where to begin - issues labeled "good first issue" are a great place to start. Just comment an issue you'd like to investigate and you'll get guidance along the way.

Contributors

This repository has evolved thanks to you. Issues reporting bugs, missing features or quirks are always a welcome method to help grow this project.

Beyond all helpful issues, this repository has seen modifications from these helpful contributors:


@AlexGustafsson

Author

@cr3ative

Collaborator

@blubber

Previous collaborator

@lnxbil

Contributor

@residentsummer

Contributor

@JulianRecke

Contributor
Development
# Clone project
git clone https://github.com/AlexGustafsson/homebridge-wol.git && cd homebridge-wol

# Set up for development
npm install && npm link

# Make sure tests pass
npm test

About

A Wake on Lan plugin for Homebridge: https://github.com/nfarina/homebridge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%