Author: JD Strong

  • Boring, Reliable, and Quiet: Motion Alerts in Home Assistant

    Boring, Reliable, and Quiet: Motion Alerts in Home Assistant

    Automation projects often start with curiosity or convenience. This one started with care.

    My partner’s parents, whom we affectionately call the parental-units, are aging. My partner’s mom is experiencing dementia, and her dad has been looking for ways to better support his wife day-to-day. We wanted something simple: passive awareness. Not cameras inside the home. Not constant monitoring. Just a quiet way to know when someone was up, moving, or possibly leaving the house.

    Home Assistant felt like it could be part of that solution.

    The goal was not automation; it was trust.

    The problem we were trying to solve had very little to do with Home Assistant itself.

    We needed low-noise awareness for an aging parent with early dementia. Sometimes my partner’s dad, in another room, wouldn’t realize his wife had gotten out of bed. Other times, we needed confidence that things were calm while someone was out, napping, or focused elsewhere.

    Good alerting in this context meant:

    • a simple heads-up that motion was detected in another room
    • or that a door had been opened

    What we explicitly did not want:

    • sirens
    • panic
    • or a feeling of constant surveillance

    Think alarm system sensor states, but without the alarm.

    Doors were easy. Motion was not.

    Door and window sensors behaved exactly as expected. A door opens, it stays open for a moment, and an alert fires. If it remains open, the alert can repeat. This maps cleanly to how Home Assistant’s alert: integration (a feature that manages notifications) works.

    Motion sensors were a different story.

    A simple walk around the bedroom could generate dozens, sometimes hundreds, of alerts. Motion crossed from useful into pure noise almost immediately.

    The failed mental model

    I assumed motion alerts would behave as they do in most alarm systems:

    • motion detected
    • sensor enters a “motion” state
    • remains active for a short period
    • alert repeats at a reasonable cadence

    Instead, I quickly learned that Passive Infrared (PIR) motion sensors do not behave that way.

    They emit frequent detection events, sometimes every second, along with data such as ambient light. Home Assistant was operating as expected, but my assumptions did not match reality.

    The alert: integration only repeats while an entity remains in the on state. Motion sensors were constantly flipping on and off. Each new detection triggered a new alert.

    The key insight: motion is event-based, not stateful

    Once that clicked, the problem reframed itself.

    The motion sensors did not have a concept of recent motion. They only knew how to say motion just happened. If I wanted alerts that matched human expectations, I needed to implement that concept myself.

    That is where latching came in.

    Latching motion: turning events into state

    The most important thing I learned in this project is that motion alerts only become usable once motion becomes stateful.

    To explain how this worked in practice, it helps to walk through a single example: the bedroom motion sensor.

    1. Raw motion

    This is the physical sensor. It reports motion whenever it sees it, and clears almost immediately afterward.

    binary_sensor.bedroom_motion

    On its own, this sensor is too noisy to alert on directly. It is accurate, but not human-friendly.

    2. Latched motion

    The next step was to create a latched version of that sensor: one that stays on for a fixed period after motion is detected.

    Conceptually:

    • motion happens → latched sensor turns on
    • additional motion extends the latch
    • no motion for five minutes → latch clears

    In Home Assistant, this was implemented as a template binary sensor with a delay_off (a setting that keeps the sensor on for a set period after motion is no longer detected):

    template:
    - binary_sensor:
    - name: "Bedroom motion latched"
    state: "{{ is_state('binary_sensor.bedroom_motion', 'on') }}"
    delay_off: "00:05:00"

    This change transformed motion from raw events to a useful state: recently detected motion.

    Five minutes was not chosen because it was perfect. It was chosen because it dramatically reduced alert noise and aligned with how people actually move through a room.

    Separating concerns: alerts are not sensors

    Once motion was latched, the next realization was that alerting logic should not live in the sensor itself.

    I wanted to be able to answer different questions independently:

    • Was there motion recently?
    • Should I be notified about it right now?
    • Are alerts temporarily muted?

    That led to a second layer.

    3. Alert conditions

    Instead of pointing alerts directly at the latched sensor, I created an alert-condition sensor that combined:

    • latched motion
    • global mute state

    Conceptually:

    latched motion AND alerts not muted

    In practice:

    template:
    - binary_sensor:
    - name: "Bedroom motion alert condition"
    state: >
    {{ is_state('binary_sensor.bedroom_motion_latched', 'on')
    and is_state('input_boolean.alerts_muted', 'off') }}

    This sensor answers a very specific question:

    Should an alert be active right now?

    The alert: integration then watches this entity, not the raw motion.

    Muting alerts without hiding reality

    The global mute was intentionally simple. It does not disable sensors. It does not suppress the state. It only gates notifications.

    That distinction matters.

    When alerts are muted:

    • motion still latches
    • dashboards still update
    • last motion time still changes

    What stops is the noise.

    That made it possible to quiet the system quickly without losing confidence that it was still working.

    Making state visible

    Once motion was latched and alerting was gated, it became important to clearly surface that state.

    Dashboards answered questions, notifications could not:

    • Has there been motion recently?
    • How long ago?
    • Are alerts muted intentionally?

    Here’s the card I ended up with using the bedroom motion sensor as an example:

    type: custom:button-card
    entity: binary_sensor.bedroom_motion_latched
    name: Bedroom
    icon: mdi:bed
    tap_action:
    action: none
    
    show_label: true
    label: |
    [[[
    const motion = states['binary_sensor.motion_bedroom_motion'];
    const muted = states['input_boolean.alerts_muted']?.state === 'on';
    
    if (!motion) {
    return muted ? '🔕 Muted • Last motion: unknown'
    : 'Last motion: unknown';
    }
    
    const last = new Date(motion.last_changed);
    const now = new Date();
    const diffMs = now - last;
    
    const sec = Math.floor(diffMs / 1000);
    const min = Math.floor(sec / 60);
    const hr = Math.floor(min / 60);
    
    let ago;
    if (sec < 60) ago = `${sec}s ago`;
    else if (min < 60) ago = `${min}m ago`;
    else ago = `${hr}h ${min % 60}m ago`;
    
    return muted
    ? `🔕 Muted • Last motion: ${ago}`
    : `Last motion: ${ago}`;
    ]]]
    
    state:
    - value: "on"
    color: rgb(255,0,0)
    icon: mdi:bed-empty
    - value: "off"
    color: rgb(192,192,192)
    icon: mdi:bed

    A few important things are happening here:

    • The entity is the latched motion sensor, so the card remains active for a meaningful duration.
    • The label calculates how long ago the motion last occurred.
    • When alerts are muted, the card still updates, but clearly shows 🔕 Muted.
    • Color and icon changes make the state obvious without interaction.

    This visibility is not just for today’s caregivers. It is for future caregivers, and for future me, checking in remotely.

    Button-card as a communication tool

    I used button-card not because I needed buttons, but because I needed clarity.

    Color and icon changes instantly communicate state. For example, a garage door card turning red when open tells the story without interaction:

    type: custom:button-card
    entity: alert.garage_door
    state:
    - value: "on"
    color: rgb(255,0,0)
    icon: mdi:garage-open-variant

    Motion cards followed the same pattern: boring, obvious, and readable at a glance.

    Constraints I accepted on purpose

    There were many things I chose not to solve:

    • exposing every discovered device
    • chasing perfect real-time countdowns
    • eliminating alerts entirely

    My focus stayed narrow: door openings, motion, and understanding the system’s current state.

    In this context, boring and reliable always beat clever.

    Where this landed (so far)

    The system is a little noisy, so alerts are muted fairly often, but it is much more usable now.

    Most importantly, it has increased confidence: one parent can step away, we can check in, and we can trust that the system is working, even when it’s quiet.

    The takeaway

    The real lesson from building motion alerts for aging parents is that motion-based alerts are much harder than they appear—especially when real people have to live with the system.

    Home Assistant has a place here. Not as a flashy automation platform, but as a flexible, respectful alternative to camera-centric or alarm-first solutions. When the goal is care, quiet systems matter.

  • Sourdough Zen

    Sourdough Zen

    Once again, we find ourselves in trying times, and I find myself searching for my zen through sourdough. Sourdough is made from four simple ingredients: flour, water, salt and time. Adjusting any of these ingredients will impact the final product. But the last ingredient—time—is arguably the most important.

    The 2020 pandemic made sourdough hip and cool (again). Why? We had time. Time to feed a starter. Time to stretch and fold the dough. Time to shape. Time to score. Time to bake.

    Starter

    I grew up in the era of the original tamagotchi. The tamagotchi was an electronic toy displaying a digital image of a creature, which had to be looked after and responded to by the “owner” as if it were a pet. The sourdough starter can be seen in the same way—a pet that needs feeding and to be cared for. Water, flour, and time. Getting a starter going from scratch takes some persistence, but maintaining a starter isn’t difficult for even the laziest amongst us.

    I have maintained my starter, nicknamed The Yeastie Boys for over a decade. They are typically fed once a week as I make a batch of pizza dough, a loaf of bread, a pan of focaccia, or discard waffles. But The Boys and I have been through some stretches, where they’ve been abandoned, either by my travels or lack of time. Only the strongest survive, and after a feeding, possibly two, The Boys are back in action and ready to convert flour and water into carbon dioxide and flavor.

    Exposure

    I grew up on reruns of Mr. Wizard, Radio Shack Science Fair 200 in 1 electronics project lab, and a mother/nana duo of bakers in the kitchen. My mom and nana baked a lot of white homemade loaves risen with commercial powdered yeast, resulting in soft, pillowy loaves you wanted to smother in butter and devour. As kids, my brother and I watched, sometimes got in the way trying to help, but were surrounded by the wonders of fresh baked bread. My mom tried—and succeeded at—making amazing challah, bathed in an egg wash that made it look as if Norman Rockwell had painted it.

    Handwritten:
Homemade Bread
(2 loaves)
Mix {
2 cups lukewarm liquid (milk, water, or potato water)
4 tbsp sugar
1 tsp salt
4 tbsp (1/4 cup) soft shortening

Crumble into mix 1 cake yeast or 1 pkg dry yeast

Mix in 6-6 1/4 c. flour until easy to handle -

Turn onto board—let stand 10 min then knead 10-12 min.
Put in greased bowl & let raise for 2 hours or until dbl

    In college, I was lucky to have an apartment on campus with a full size stove and oven, and some time. With a copy of my mom’s bread recipe in its handy recipe binder, I set out to make bread by hand. No mixer. Taking the time to knead the dough on my small apartment kitchen counter. Stretching and folding the dough. Taking the stresses of school, work, and studies and putting them into the dough.

    I made a lot of bread. I ate a lot of bread.

    Post college, Alton Brown’s Good Eats came on the air. Mr. Wizard meets food science. I was obsessed. I perfected the brined AB Turkey, I made his grandmother’s pillowy soft biscuits. I knew how to cook from my mom and Boy Scouts, but I learned to experiment. I recreated my mom’s cookie recipes. I turned that into a side hustle for a little while, selling dozens of cookies around the holidays to my coworkers—who did not have the time.

    Experimentation

    At some point along the way, I came across one of those automatic bread makers. It had been a long while since I had baked bread, and despite the unitasker, it was fun to toss in water, flour, yeast, salt and some two hours later the house smelled like baked bread. The loaves weren’t pretty. Barely sliceable for toast. The bottom center looked as if a chipmunk dug into it to extract the mixing paddle. I managed a 100% whole wheat loaf from a bread maker. It was good, but it wasn’t great. I had come a long way from my college bread-making days, but sourdough was an entirely new challenge—one that required me to embrace failure as part of the process.

    At this point, I had also transitioned to a wholefood plant-based diet, and read more about how whole foods work with our bodies. Whole wheat bread—check. This is good, and good for you. But I was also reading about how much different bread is when allowed to ferment. Fermentation is a process where microorganisms—wild yeast and lactic acid bacteria—feed on the sugars in the dough, producing gases and acids. Yes, these byproducts are what give sourdough its rise, flavor, and texture—but the wild yeasts and bacteria fundamentally transform the flour, making it more digestible.

    About that time, I stumbled upon a new website, The Perfect Loaf. Maurizio Leo, a software engineer turned baker, walked me through a starter using rye flour. I experimented with baker’s percentages, and learned a whole new world for calculating a loaf. I hit the library and dug into books old and new about sourdough. Studied the black and white photos in books to understand shaping a loaf. I overproofed. I under baked. I lacked strength in my dough. I swore a lot.

    Confidence

    For the last eight years, Sunday night has been pizza night: from hand-stretched thin crusts to Al Taglio, the airy, bready Roman-style pizza. The toppings sometimes help clean out the fridge, but the smell of baked bread, the crack of the crust, the yin and yang of the sour crumb of the crust to the sweet maillard caramelized sugar in the dough wafts through our home on a Sunday night.

    Pizza on Sundays is a reset. Last week’s stresses are tonight’s dinner. Time was invested and then shared with those I love. Mistakes are now happy accidents, and the swearing is less. My experiments built confidence, and helped me focus and refine pizza doughs, sandwich loaves, focaccias and more.

    Sourdough is not a rushed activity. It requires patience, from nurturing the starter to allowing the dough to rise and develop flavor, to the final bake. Sourdough is a reminder of the importance of respecting time and process in both baking and life. Experimentation takes time. Sourdough takes time.

    Take time.

    Find your sourdough Zen.

  • Add More Protein to a Whole Food Plant-Based Diet

    Add More Protein to a Whole Food Plant-Based Diet

    Did you know the average adult loses 3–5% of their muscle mass every decade after age 30? 

    When I first transitioned to a whole food plant-based (WFPB) diet 15 years ago, I thought I had it all figured out. I embraced vibrant salads, hearty grains, and colorful veggies with enthusiasm—but there was one thing I overlooked: protein. More recently, I realized I needed to be more intentional about getting enough of this critical macronutrient, especially as I get older.

    I’m not a registered dietitian, though my partner—who has a nutrition degree and will soon be an RDN—has helped me navigate this journey. Can we really meet our protein needs on a WFPB diet? What does 25–30 grams of protein per meal look like when meat and dairy aren’t on the menu? And how do we incorporate protein into daily meals without feeling overwhelmed?

    I’ll share my journey of tackling protein goals one meal at a time—starting with breakfast. I’ve included practical tips, science-backed facts, and easy recipes to help anyone interested in optimizing their plant-based lifestyle. If I can do it, so can you!

    Why Protein is Key, Especially as We Age

    Protein is often referred to as the “building block” of the body—and for good reason. It’s essential for repairing tissues, building muscle, and supporting a healthy immune system. But as we age, protein becomes even more critical for maintaining our health.

    Around the age of 30, adults begin losing muscle mass at a rate of 3–5% per decade, a condition known as sarcopenia. This natural muscle loss doesn’t just impact strength and mobility—it can also affect metabolism, increase the risk of falls, and reduce overall quality of life. The National Institute on Aging emphasizes the importance of adequate protein intake to mitigate these effects.

    How much protein do we actually need? While the RDA (Recommended Dietary Allowance) for protein is about 0.8 grams per kilogram of body weight, experts like those at Harvard T.H. Chan School of Public Health suggests aiming higher—especially for older adults. Studies show that 1.0–1.2 grams per kilogram of body weight can help preserve muscle and prevent deficiencies, which translates to approximately 25–30 grams of protein per meal for most adults.

    On a whole food plant-based diet, this can feel like a daunting target at first. Volumetrically, it’s a lot of food, but calorically, it’s not. The good news is that with a little planning and creativity, it’s absolutely achievable. The key is knowing which plant-based foods pack a protein punch and learning how to incorporate them into balanced meals.

    Plant-Based Protein Sources That Pack a Punch

    One of the most common misconceptions about plant-based diets is that they’re inherently low in protein. While it’s true that meat, eggs, and dairy are often concentrated protein sources, there’s no shortage of plant-based foods that deliver plenty of protein along with fiber, vitamins, and minerals.

    Here are some of the best whole food plant-based protein sources to consider:

    1. Legumes (Beans, Lentils, and Chickpeas)

    Legumes are a powerhouse of protein, delivering around 7–9 grams of protein per half cup cooked. Beyond protein, they’re also high in fiber, which helps with digestion and keeps you feeling full. For example:

    • Black beans: 7g protein per ½ cup
    • Lentils: 9g protein per ½ cup
    • Chickpeas: 7g protein per ½ cup

    2. Soy-Based Foods (Tofu, Tempeh, and Edamame)

    Soy is one of the most protein-dense plant-based options. It’s also a complete protein, meaning it contains all nine essential amino acids your body can’t produce on its own.

    • Firm tofu: 15g protein per ½ block (3 ounces)
    • Tempeh: 15g protein per ½ block (3 ounces)
    • Edamame: 9g protein per ½ cup

    3. Whole Grains (Quinoa, Oats, and Brown Rice)

    While grains aren’t often thought of as protein sources, they can still contribute a significant amount to your daily intake—especially when paired with other foods.

    • Quinoa: 8g protein per cup (cooked)
    • Steel-cut oats: 5g protein per ½ cup (cooked)
    • Brown rice: 5g protein per cup (cooked)

    4. Nuts, Seeds, and Nut Butters

    Nuts and seeds are small but mighty, offering a mix of protein, healthy fats, and minerals. Incorporate them into smoothies, oatmeal, or salads for an easy protein boost.

    • Chia seeds: 2g protein per tablespoon
    • Hemp hearts: 3g protein per tablespoon
    • Almond butter: 6g protein per 2 tablespoons

    5. Plant-Based Protein Powders

    While focusing on whole foods is ideal, protein powders and protein isolates can be a convenient option for busy days. Many brands, like Orgain, offer plant-based protein powders that are free of artificial ingredients. One serving of Orgain’s protein powder packs 21g protein, making it good for a post-workout smoothie or breakfast on the go. You can also find protein isolates like pea-protein, defatted peanut butter powder and other protein isolates that do not have sweeteners or creamer-like smoothie bases.

    By incorporating a variety of these foods, you can easily meet your protein needs while enjoying a diverse and flavorful diet. Check out the Cleveland Clinic’s guide on protein-rich plant-based foods for more options.

    What 25–30g Protein Per Meal Looks Like

    Meeting the recommended 25–30 grams of protein per meal on a plant-based diet is easier than you might think. It’s all about combining a few key ingredients to create a well-rounded plate.

    Breakfast is often considered the most important meal of the day, so it’s a great place to start when trying to boost your protein intake. By incorporating a few high-protein ingredients into your morning routine, you can create meals that are not only filling but also fuel you for the day ahead.

    Here are a few examples of what a high-protein breakfast can look like:

    1. Savory Chickpea and Tofu Scramble Wrap

    • 1/2 cup cooked chickpeas (7g protein)
    • 1/2 block firm tofu, crumbled (15g protein)
    • 1 whole-grain tortilla (6g protein)
    • 1 tbsp nutritional yeast (2g protein)
      Total Protein: ~30g

    2. Quinoa Breakfast Bowl with Almond Butter and Chia

    • 1 cup cooked quinoa (8g protein)
    • 1 tbsp chia seeds (2g protein)
    • 2 tbsp almond butter (6g protein)
    • 1/2 cup unsweetened soy milk (4g protein)
      Total Protein: ~28g

    3. Lentil and Sweet Potato Hash

    • 1/2 cup cooked lentils (9g protein)
    • 1 small roasted sweet potato (2g protein)
    • 1/4 cup edamame (6g protein)
    • 1/2 cup spinach (1g protein)
      Total Protein: ~27g

    4. Coach’s Oats Overnight Oats Smoothie with Orgain Protein Powder

    • 50g Orgain protein powder (21g protein)
    • 40g Coach’s Oats (6g protein)
    • 1 tbsp hemp seeds (3g protein)
      Total Protein: ~30g

    By building meals with protein-dense ingredients like legumes, grains, soy, and seeds, you can easily hit your target protein goals without compromising on flavor or nutrition.

    Tips for Success

    1. Plan Ahead: Keep your pantry stocked with staples like lentils, quinoa, tofu, and nuts.
    2. Diversify Your Plate: Mix and match protein sources to ensure you’re getting all essential amino acids.
    3. Experiment with Recipes: Don’t be afraid to try new meals or flavors to keep things exciting.

    Meeting protein needs on a plant-based diet is not only possible—it’s enjoyable, sustainable, and full of culinary possibilities.

    Conclusion

    Adding more protein to a whole food plant-based diet doesn’t have to be complicated or intimidating. With a little planning, creativity, and some go-to recipes, you can easily meet your protein needs while enjoying a diverse and nutrient-rich menu.

    Throughout my own journey, I’ve learned that building high-protein meals is all about balance—combining legumes, grains, soy-based foods, and seeds in ways that are both flavorful and satisfying. Whether it’s a quick Coach’s Oats smoothie for breakfast, a hearty lentil hash, or a tofu scramble, the possibilities are endless.

    And yes, plant-based eaters can absolutely meet their protein needs! By focusing on variety and incorporating nutrient-dense foods, you can thrive on a plant-based diet while supporting your health, energy, and longevity.

    I’d love to hear from you! What are your favorite high-protein plant-based meals? Have you tried any of the recipes shared in this post?

    References

    Academy of Nutrition and Dietetics. (n.d.). Vegetarian diets, from https://www.eatright.org/food/nutrition/vegetarian-and-special-diets/vegetarian-diets 

    Cleveland Clinic. (2021). Plant-based sources of protein, from https://health.clevelandclinic.org/plant-based-sources-of-protein/ 

    Coach’s Oats. (n.d.). Coach’s Oats, from https://www.coachsoats.com

    Harvard T.H. Chan School of Public Health. (n.d.). Protein: What’s the best source?, from https://www.hsph.harvard.edu/nutritionsource/what-should-you-eat/protein/

    National Institute on Aging. (n.d.). Protein: Why your body needs it, from https://www.nia.nih.gov/health/protein-important-you

    Orgain. (n.d.). Plant-based protein powder, from https://orgain.com/collections/protein-powder

    Physicians Committee for Responsible Medicine. (n.d.). Protein, from https://www.pcrm.org/good-nutrition/nutrition-information/protein 

    United States Department of Agriculture. (n.d.). FoodData Central, from https://fdc.nal.usda.gov/