One of my very first own projects, was an app to control my DIY ambilight system. I built it in 2018 and I am very proud of it, although the code needs some improvement.

It was available for a year on the App Store and got a few thousand downloads. Presently, you can download it from my repo.

Things learned

💾 Core Data to store in disk the static and dynamic backgrounds that the user creates.

🌐 TCP connections to communicate with the AmbiBox’s server API.

let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: 4096)

var inputStream: InputStream?
var outputStream: OutputStream?

var lastInputEvent: Stream.Event?
var lastOutputEvent: Stream.Event?

➕ Views without storyboard, regular expression management, timers, time triggered notifications, and so on.

How does it works?

A picture is worth a thousand words.


0:00 Connect to the AmbiBox server 🔌
0:05 Turn on / off 🌗
0:15 Static backgrounds 🌈
3:22 Dynamic backgrounds 🎆
4:58 Profile selection for movies 🎬

What’s necessary?

🤖 Arduino with Adalight running

🖥️ Computer with AmbiBox installed

👨🏻‍💻 AmbiBox TCP API enabled

📱 iPhone with AmbiBox control installed

I also made an Instructables guide to make installation easier.