There are three main parts to what I've set up:
- Raspberry Pi
- Wemo WiFi Switch
- Android phone
Both the broker and the client script for the switch are running on the Raspberry Pi. when the client script receives a command it changes the switch state (or reports back status). It is also responsible for the scheduled events like turning on at sunset.
MQTT Android App:
As recommended in Elliot's MQTT guide I'm using the "IoT MQTT Dashboard" Android app. It provides a basic interface that's really easy to setup - give it the IP, port, and topic and you can add a few different button types to sent custom messages.
The topic widget of 3 buttons are what I'm using now for basic control. The other widgets are some ideas I have for making the schedule user-settable. However, it seems like a web interface will end up being the best solution here as it'll be available to anyone on the network without installing an app. That's a project for another day.
It was fun throwing this together in an afternoon to learn a bit more about MQTT and it took me down the rabbit hole on Python libraries for scheduling and establishing sunrise and sunset times. I don't really have any other devices in my house that are on the network, but now that I have an MQTT broker I might pick up a current sensing clamp to add washer/dryer cycle-complete notifier. We'll see!