/tm-bash

a primitive bash script to control a WeMo® powered external Apple Timemachine harddisk

Primary LanguageShellMIT LicenseMIT

tm-bash

a primitive bash script to control a WeMo® powered external Apple Timemachine harddisk

motivation

The external harddrive with my Apple Timemachine backup is physically mounted on the underside of my desk. Because I hate to crawl below my desk powering on the harddisk every time I want to make a backup I decided to bring a WeMo® Switch into the game.

  • The tm-bash script turns on the power,
  • checks if the harddisk is available in OS X,
  • initiates the Apple Timemachine backup process,
  • waits until the process is done,
  • then safely ejects the harddrive from OS X, and
  • turns off the power of the WeMo®.

All the user has to do is plug in the USB cable, start the tm-bash script, wait, and unplug the USB cable.

external dependencies

For controlling the WeMo® I am using a bash script from 2013 I found on the internet. Here is a discussion about that script from 2014 (the page is a 404 now and sadly Wayback Machine has not archived a copy).

For completeness reasons I added the wemo.sh script to this GitHub repository.

Anyways, full credit for the WeMo® control script wemo.sh go to rich@netmagi.com and Donald Burr.

requirements

You'll need a fully setup Apple Timemachine harddisk and a WeMo® Switch. I develop and use tm-bash on an Apple MacBook Pro with OS X 10.11.

setup

Set the variables wemo_script, wemp_ip, wemo_name, and timemachine_volume to values matching your setup.

If you want to add a LaMetric Time to the setup you need to set the lametric_* values.

### configuration
logging_log=0
[...]
logging_lametric=1
[...]
wemo_ip="192.168.0.66:49154"
wemo_name="WeMo Switch"
[...]
lametric_push_url="https://developer.lametric.com/api/v1/dev/widget/update/com.lametric.a1b2c3d4e5f6g7h8i9j10k11l12m13n1/1"
lametric_access_token="OZ1Y2X3W4V5U6T7S8R9Q10P11O12N13M14L15K16J17I18H19G20F21E22D23C24B25A26z27y28x29w30v31u=="
lametric_success_delay=10
[...]
timemachine_volume="timemachine"
[...]

For more verbose output, you can set the logging_log value to 1.

optional: LaMetric Time

It is possible to use a LaMetric Time to display the current state (standby, active, success, failed) of the tm-bash. To do that you need to sign up for a developer account at LaMetric and create an indicator app with the user interface type "name" and the communication type "push".

Copy the value of URL for pushing data and enter it as value of lametric_push_url in the configuration section of the tm-bash.

You also need to copy the value of the X-Access-Token from the Sample push request section and enter it as lametric_access_token in the tm-bash. This is used to authenticate the push requests and makes sure that only your tm-bash can send status data to your LaMetric Time.

Finally, to enable the logging to your LaMetric Time you need to set the logging_lametric variable to 1.

usage

Execute the tm.sh (make sure chmod +x is set).

machine:folder user$ ./tm.sh

sample output

INFO: setting WeMo to 'ON'
INFO: waiting for Timemachine volume
■■■■■■■■■■■■■■■■■■■■■
INFO: starting Timemachine backup
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
INFO: Timemachine backup complete
INFO: unmounting 'timemachine'
INFO: setting WeMo to 'OFF'
INFO: Backup complete, Timemachine Volume ejected, Power off
INFO: It is now safe to remove the USB cable from the MacBook Pro
machine:folder user$