Home automation with OutSystems — Follow up

Dinis Carvalho
ITNEXT
Published in
5 min readSep 21, 2023

--

Last year (2022) I shared a home automation project where I explained how I built my smart home control panel using OutSystems and SmartThings.

Since then I’ve been doing plenty of changes, developed new features, added more integrations and improved the design for a better user experience.

Now it feels like a good time to share one last update on the project.

TL;DR: this is what the project looks like at the moment: screensaver and dashboard.

In my OutSystems personal environment, these are the apps that support the entire project:

  • SmartThings Core
  • Tado
  • IFTTT
  • Events
  • SmartThings Home
  • Control Panel
Apps in my OutSystems personal environment.

Below we’ll take a better look into each app, what it does and how it changed over the last year.

SmartThings Core

This integration allows to connect to the SmartThings API, sync devices, rooms and scenes to an OutSystems database and control the devices.

The data model and the device types the system can recognize.

The new version has several improvements:

  • The logic to sync devices, rooms and scenes was totally refactored to properly handle name changes, room changes, new devices and remove old devices.
  • Device type is set automatically by inspecting the device capabilities.
  • We can now set color and temperature for lights that support it.
Sync logic for devices — fetches new devices, updates name and location, removes old devices and updates device type according to the device capabilities identified.

Tado

Tado is a brand of smart thermostats that can be used without a C cable, which was a requirement for my setup unless I rewire the whole thing.

This integration (available in the OutSystems Forge) connects to the Tado API and logs temperature, humidity and heating power values throughout the day to an OutSystems table, then I use that data to render some visuals on the control panel.

Action that logs datapoints from Tado to OutSystems — runs every 30 minutes.

IFTTT

This is a candidate to smallest OutSystems application ever, it has only one action that calls a webhook from IFTT with a custom event name. I use it to send Roomba to clean a particular room, the entire apartment or to stop and dock into its base.

Action that calls a webhook from IFTTT with a custom event name.
Some of my IFTTT applets that integrate with Roomba.

Events

An OutSystems application that me and my wife use to manage events such as parties, vacations and stand-up comedy shows.

  • The app is very simple, with just a few screens to view events and create new events
  • Works great on phone without any extra development thanks to OutSystems UI responsive features
  • It also has a calendar widget that renders events with a unique color to make it easier to understand what’s coming up — this widget is shared with the control panel. Special thanks to Bernardo Cardoso for creating a custom calendar and sharing with the OutSystems community.
List of events with a calendar view with unique event type colors.

SmartThings Home

The user interface of the project, this is where we can see our smart home setup by room, our scenes and configuration pages for API key and device sync.

The new version has the following improvements:

  • Complete redesign to better showcase the integration and its new features.
  • New widgets for lights and sensors.
  • Quick view of active devices on the right side of the screen.
  • New configuration pages to mange devices, scenes rooms.
  • Manual setup of light groups (while we wait for Samsung to show them when we fetch devices via API).
  • A new sample screen to use in the Forge page
Home page with my actual setup: scenes, rooms and devices.

Control panel

This is the app that runs on a tablet in our living room wall, it integrates all the other apps we covered so far and acts as a central dashboard that we use to monitor and control devices, call Roomba to clean the apartment, change light modes or simply check the weather before going outside.

A lot of stuff was changed during the last year, from UX to architecture and new features added, here are some examples:

  • When not in use, a screensaver is displayed with our agenda for events coming up, clock, thermostat info and weather.
  • If I’m in a meeting, my avatar has a red border and the office LED strip turns red so my wife knows I probably don’t want to be interrupted.
  • Widgets are managed in a backoffice page and loaded dynamically into the dashboard.
  • Light widgets now support color and temperature, just like the home app.
  • Integration with Tado to display the last 24h and current values of humidity, temperature and if heating is on.
  • Integration with IFTTT to send Roomba to work.
  • Improved UX by removing the main navigation and just showing all devices at once, inactive sensors are less visible while lights are bigger.
  • Using a magnetic support the tablet is nicely fixed on the wall and I was also able to run a cable to make it permanently charging.
The end result, a tablet mounted on the wall next to the thermostat.

The new versions of SmartThings Integration and SmartThings Home are now available on the OutSystems Forge for download.

If you made it this far, thank you for reading. It’s been quite a long project and I’m very proud of how it turned out! Cheers.

--

--

Exiled designer who found refuge in programming mobile games and software. Product design, development and gaming are my passions.