MajorDomo - A Weather Servant

/images/MajorDomo.jpg

Weather apps are great at telling you the facts: temperature, wind, humidity, chance of rain… But they don’t tell you what you actually need to know in the moment:

“Should I grab the big coat, the light jacket, or nothing at all?”

Sure, I can see out the window whether it’s raining or not, but temperature? That’s hard to nail down at a glance.

Or at least, it used to be hard.

Now I have a servant for that.

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

I call it my MajorDomo, but unlike a weather app, it doesn’t show me data. It shows me a decision. All that brain-time I’ve spent in the past, deciding what to wear? The results were always the same, given the same inputs, which are precisely the kind of decisions that can be delegated.

All I had to do was assign each temperature band that needed a different clothing choice to a distinct color:

  • Red → hot = hat and water

  • Yellow → warm = a light t-shirt

  • Lime → cool = a light jacket

  • Green → chilly = a sweater

  • Cyan → cold = light winter coat

  • Blue → very cold = heavy winter coat

  • Purple → dangerous cold = layer up and cover everything

No mental math. No second-guessing. Now I just glance at MajorDomo and he tells me what I’ve already decided.


Why a Geodesic Dome?

Partly because it looks great, but mostly because the faceted dome diffuses the RGB light in a way that makes the color feel like a signal rather than glaring illumination. Less like a bare bulb and more like a small tool sitting by the door. Or maybe a piece of art.

Why can’t it be both?


How It Works

MajorDomo is basically a Wi-Fi RGB bulb wearing a hat and driven by Home Assistant.

Once every minute, HA looks up the temperature, consults my color scale, and then sets the color of the bulb.

And since I don’t go out in the middle of the night, I’ve set a schedule to turn it off completely in the wee small hours.


Hardware

You’ll need:

  • an empty filament spool

  • a Wi-Fi RGB bulb (Tuya in my case)

  • a simple lamp socket

  • a 3D printed geodesic dome

  • Home Assistant with:

  • an outdoor temperature sensor or local weather report

No custom electronics.


Software

The project is driven by a single Home Assistant automation YAML file. Just install it in your HA system and tell it which sensors to use.

This file will show you my weather choices, but you’ll probably want it showing yours, so change the temperature thresholds and colors to match your clothing decisions.

Then just sit back and let your servant do his job.

It’s what he lives for.

The YAML


alias: MajorDomo Weather Lamp

description: Discrete temperature colors with fixed brightness and schedule

triggers:

  - entity_id: sensor.saskatoon_temperature

    trigger: state

  - minutes: /1

    trigger: time_pattern

actions:

  - variables:

      now_str: "{{ now().strftime('%H:%M:%S') }}"

      in_window: "{{ on_time <= now_str < off_time }}"

  - choose:

      - conditions:

          - condition: template

            value_template: "{{ not in_window }}"

        sequence:

          - target:

              entity_id: "{{ lamp_entity }}"

            action: light.turn_off

      - conditions:

          - condition: template

            value_template: "{{ in_window }}"

        sequence:

          - variables:

              temp: "{{ states(temperature_sensor) | float }}"

              rgb_color: |

                {% if temp < t_very_cold %}

                  {{ color_very_cold }}

                {% elif temp < t_cold %}

                  {{ color_cold }}

                {% elif temp < t_cool %}

                  {{ color_cool }}

                {% elif temp < t_mild %}

                  {{ color_mild }}

                {% elif temp < t_warm %}

                  {{ color_warm }}

                {% elif temp < t_hot %}

                  {{ color_hot }}

                {% else %}

                  {{ color_very_hot }}

                {% endif %}

          - target:

              entity_id: "{{ lamp_entity }}"

            data:

              brightness_pct: "{{ brightness_pct }}"

              rgb_color: "{{ rgb_color }}"

            action: light.turn_on

variables:

  lamp_entity: light.weather_lamp

  temperature_sensor: sensor.saskatoon_temperature

  on_time: "07:00:00"

  off_time: "23:00:00"

  brightness_pct: 80

  t_very_cold: -25

  t_cold: -15

  t_cool: 5

  t_mild: 15

  t_warm: 25

  t_hot: 30

  color_very_cold:

    - 128

    - 0

    - 255

  color_cold:

    - 0

    - 0

    - 255

  color_cool:

    - 0

    - 255

    - 255

  color_mild:

    - 0

    - 255

    - 0

  color_warm:

    - 128

    - 255

    - 0

  color_hot:

    - 255

    - 255

    - 0

  color_very_hot:

    - 255

    - 0

    - 0

mode: restart


Read More


/images/floodboard-logo.png

FloodBoard - Learn to See the Game-Board Like a Computer

I like puzzle games, and one that I’ve always played in a rather mindless way, just to kill time, is the one called Flood It. Or Color Flood. But whatever you call it, it’s the one with a grid of random-colored squares where you start in one corner and keep flood-filling from there in different colors until you’ve flooded the entire board. The fewer moves you make, the higher your score.

But the more I’ve played it, the more curious I’ve become. What is the optimal strategy? Should you always flood as many squares as possible, or is it sometimes better to choose a smaller move to set up a bigger play? And if so, when?

Well, I don’t like just wondering about these things - I want to know. So I wrote a version of the game to help me find out. I call it FloodBoard.

/images/WallAnchor_hexshaved.png

Custom Reinforced Drywall Anchor

Years ago, I learned (the hard way) that coat hooks attached to drywall using standard cone-shaped anchors function more like a drywall zipper than a garment hanger. But as part my recent home renovation, I wanted a more artistically arranged sequence of floating hooks - too close together to use the studs - so I thought I’d try a more secure anchor. And I wondered if I could 3DP something to do the job.

/images/3DPrint-Logo.png

3D Printing

An ongoing series of small 3D Printing projects