I kinda controlled a Hue bulb

(at least I turned it on and off)

Requirements:

  • Control a Hue bulb/lamp (check!)
  • Allow for on/off, and adjustment. (oops)

https://youtube.com/shorts/Vkv7ah0Aj7U

I’ve used MaxMSP before in other projects, so I thought I’d give it a try first. The setup is pretty simple, but here’s the thing.

ITS BORING.

I just find virtual interfaces so un-satisfying to map. I started to tweak the Max file, but found myself just … unsatisfied with the controls that I was finding. Quickly uninspired by Max, I moved to trying out Arduino.


IMG_9361.jpeg

Things I got working pretty quickly:

  • Flagging changes only after values stop moving
  • Reading two rotary encoders at once
  • Connecting to Sandbox370
  • Creating a client

Things I had an issue with:

When trying to send a put request to turn my lamp on or off, I kept getting a 501.

I can’t find the issue; at first I thought I was sending "true" , but that ended up being fine.

What actually turned out to be the issue was I’d used a port setting. I’ve not worked much with HTTP requests on Arduino before, so I was used to setting a port. However, this sent my requests to a port on the Hue Hub that entirely derailed my requests.

After getting rid of that port, I got each rotary encoder button to send a request; one off, one on.

Here’s the setup:

Screen Shot 2023-03-07 at 10.32.21 PM.png

Screen Shot 2023-03-07 at 10.32.34 PM.png

After struggling with this for a while, Lifei pointed out to me that Tom actually had an example for Arduino available in the repo, which I’d somehow entirely forgotten about. I felt very silly, looked at the code, and then re-used Tom’s send requests.

https://youtube.com/shorts/QGU7NB-92Hs

Honestly a lot of this week was not thinking clearly, not referencing the available examples, and then spending way too much time trying to figure things out on my own. It may have been a more successful week if I’d stuck with MaxMSP rather than switching out halfway.

The one thing that I am proud of is my code for only “sending” data after the encoder stops moving.

Encoder handler code

At this point, it is 11pm on Tuesday and I feel silly. I hope to play around with this a bit more, and actually build a controller I like. Maybe if I have time before class.

What do I want for this future controller?

  • 1 Rotary encoder mapped to brightness
  • 1 Rotary encoder mapped to warmth

Anyway the code I wrote is here.

Update:

I got brightness control to work!!!! Whoo

https://youtube.com/shorts/mdwIrtfADEQ


Resources used:


Tagged:

March 08, 2023