Azure lights and Brothel Mode™

A long, long time ago, I was watching a Scott Hanselman developer video and he had L.E.D lighting around his office ceiling.

I thought that looked really cool, so like a nerdy little fanboy off I went and bought two sets of GoVee RGBIC LED lighting strips and 25m of conduit to hold them.

I chose GoVee because their strips are wi-fi connected (in addition to Bluetooth), the iPhone app is great and GoVee also has a developer portal so you can issue API calls to control your lights! They also work with Alexa which is another bonus.

I spent about and hour screwing the conduit under the coving that goes around my office ceiling and stuck up the 20m roll of RBIC Led’s.

I was a bit annoyed that the conduit didn’t soften the LEDs into a more solid light bar given the conduit covers were frosted not transparent, but its an acceptable glow.

Next I added the 5m roll under the edge of my desk, for that Fast n Furious neon look!

End result :

Build success!

I also took the step of signing up to the GoVee API so I could issue HTTP requests to control my lights.

Then, I created Postman tests to change the colours.

Adding these HTTP requests to my personal Azure Dev Ops build piplines to change the colours on a build failure, results in this :

Build failed!

On showing this to one of my work colleagues – Mark Robinson – jokingly named it “Brothel Mode™”, which has stuck making me rename all the YAML tasks in the ADO pipeline to “EnableBrothelMode” when a build fails!

GoVee API use & YAML Pipelines

The GoVee developer site is great, good documentation and their API is super easy to use :

  1. Sign up, get an API key
    They’ll want to know what you’re using it for but integration with ADO seem acceptable!
  2. Add an authorisation header with a key value pair :
    key : Govee-API-Key
    Value: <Your api key guid from Govee>
  3. Create a queries to control your lights!
    Send a GET request to

    http://developer-api.govee.com/v1/devices

    to get a list of all your devices, their capabilities and the device ID’s required to issue commands.
  4. Send a PUT request to change the light state!
    Include the Authorisation header containing your API key and send a request to

    http://developer-api.govee.com/v1/devices/control

    including a JSON body with the command parameters. For example, change the lights to red :
{
   "device": "XX:XX:XX:XX:XX:XX:XX:XX",
   "model": "H6159",
   "cmd": {
      "name": "color",
      "value": {
         "r": 255,
         "g": 0,
         "b": 0
      }
   }
}

Control with Azure DevOps

Controlling the lights from an ADO pipeline is also pretty easy once you got the YAML tasks figured out – aka spending a few excruciating hours fiddling with spaces to get it all lined up correctly……stupid yaml spacing nonsense……

- stage: SetBuildLightsToFailure        
  dependsOn: SetupYARNAndBuild
  condition: failed()
  jobs:
  - job: EnableBrothelMode
    steps:
    - task: restCallBuildTask@0
      displayName: Enable Brothel Mode.
      inputs:
        webserviceEndpoint: 'Govee Azure Lights'
        relativeUrl: 
        httpVerb: 'PUT'
        body: |
          {
              "device": "XX:XX:XX:XX:XX:XX:XX:XX",
              "model": "H6159",
              "cmd": {
                  "name": "color",
                  "value": {
                      "r": 255,
                      "g": 0,
                      "b": 0
                  }
              }
          }
        contentType: 'application/json'
        headers: '{"Govee-API-Key":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}'
        allowInvalidSSLCertificate: false

The thing about your entire office glowing read apart from random callers thinking its a room full of cheap hookers, is its an incentive to fix the build really quickly. No one likes sitting in a flaming-hell-box-of-crushed-dreams-and-broken-code.

All in all, a great addition to brighten the office and when there’s no one in the house I turn up the amp, line up some Justin Bieber, and change the lights to disco mode.

#LIVINGMYBESTLIFE

This entry was posted in Uncategorized. Bookmark the permalink.