I’ve been running Home Assistant in Docker on a Raspberry Pi for sometime now. The Raspberry Pi was initially setup for running Pi-Hole, and I didn’t want to wipe that out when I decided to start playing around with Home Assistant. This had the downside of making it more difficult to install add-ons to HA; so I had started planning out a change to my setup. Unfortunately, we had a recent storm that killed power to my house and after power was restored my Raspberry Pi failed to boot. I’ve not had any luck bringing it back online, though admittedly I have been spending more time figuring out alternate arrangements for running various services at home. I also decided that I should spend more time documenting the various configurations and tweaks I’m making to my setup. That way when I next have a problem knocking out my setup; I’ll lose less time restoring it.

Home Assistant Temperature Display
Home Assistant Temperature Display

Along with getting things set back up, I’m also working on improving how various information gets displayed. In the upstairs of our house, I have a sensor that reports the temperature to Home Assistant. That temperature data is nicely integrated as a sensor; so HA will track it over time. While playing around with various settings, I decided it would be cool if I could get that information for the downstairs of our house. Since our thermostat is downstairs, this seemed like it would be an easy win. It took more than just a little googling to work everything out; as our thermostat does not send over the temperature data in the same way. Instead, it sends the current temperature over as an attribute. Attributes aren’t tracked over time and are more difficult to work with. But with classic McKibben stubbornness, I kept at it and finally figured out a working solution.

    1. I went into Developer Tools > States.
    2. Searched for the entity created by the thermostat’s HA integration. In my case, this was called climate.thermostat.
    3. Looking over the attributes on climate.thermostat, I saw current_temperature attribute.
    4. A bunch of googling later, I found I could extract that attribute using this code: value_template: "{{ state_attr('climate.thermostat', 'current_temperature') }}". I was able to confirm that this worked in Developer Tools > Template, but at this point I hadn’t found any instructions on where to add this code in a non-testing fashion.
    5. A ridiculous amount of googling later, I found out the trick is to add a sensor1There can be only one! Which is to say HA only allows for one sensor section; if you have multiple sensors to add, then they all go under the same sensor section. The complete code I’m using to add this sensor to my HA setup is:
       # Temperature from Living Room Thermostat
       - platform: template
       friendly_name: "Living Room Temperature"
       unit_of_measurement: '°F'
       value_template: "{{ state_attr('climate.thermostat', 'current_temperature') }}"
    6. Once I had the temperature being properly captured from the thermostat; it was pretty simple to get the sort of display I wanted to see. I made use of the mini-graph-card available via HACS to make my Home Assistant Temperature Display card.
      type: horizontal-stack
        - type: custom:mini-graph-card
            - sensor.hue_motion_sensor_temperature
          name: Upstairs
          hours_to_show: 48
          points_per_hour: 0.25
            - value: 70
              color: '#3381FF'
            - value: 80
              color: '#ffb133'
            - value: 90
              color: '#FF4B33'
        - type: custom:mini-graph-card
            - sensor.living_room_temp
          name: Living Room
          hours_to_show: 48
          points_per_hour: 0.25
            - value: 70
              color: '#3381FF'
            - value: 80
              color: '#ffb133'
            - value: 90
              color: '#FF4B33'

Now with both the senor and the card added, I finally have my ideal display for the temperature on both floors of our house. The graph displays the last 48 hours with different temps displaying in different colors (cooler ones shifting towards blue, warmer ones shifting towards red).

For work, I’ve been making my way through Learn dbatools in a Month of Lunches. Down in Chapter 21, it talks about using Get-DbaRandomizedValue to generate random data and I was curious what that random data might look like. I tried following the documentation for running this command, but I was specifically trying to run the command to generate Lorem Ipsum data, like so: Get-DbaRandomizedValue -RandomizerType Lorem -RandomizerSubType ntext -max 75. But when I ran that command, I kept getting this warning/error: WARNING: [09:20:40][Get-DbaRandomizedValue] Invalid randomizer sub type. This was driving me a bit crazy, especially as the documentation doesn’t give any hints on what a valid randomizer sub type would be. Eventually by reading through the PowerShell code for Get-DbaRandomizedValue on GitHub; I noticed this module imports the list of randomizer types from a CSV file installed with the module. The current list of these types can be found on GitHub, but for the lazy (like me) here’s what that CSV file holds:

Type SubType
Address BuildingNumber
Address CardinalDirection
Address City
Address CityPrefix
Address CitySuffix
Address Country
Address CountryCode
Address County
Address Direction
Address FullAddress
Address Latitude
Address Longitude
Address OrdinalDirection
Address SecondaryAddress
Address State
Address StateAbbr
Address StreetAddress
Address StreetName
Address StreetSuffix
Address ZipCode
Commerce Categories
Commerce Color
Commerce Department
Commerce Price
Commerce Product
Commerce ProductAdjective
Commerce ProductMaterial
Commerce ProductName
Company Bs
Company CatchPhrase
Company CompanyName
Company CompanySuffix
Database Collation
Database Column
Database Engine
Database Type
Date Between
Date BetweenOffset
Date Future
Date FutureOffset
Date Month
Date Past
Date PastOffset
Date Recent
Date RecentOffset
Date Soon
Date SoonOffset
Date Timespan
Date Weekday
Date Random
Finance Account
Finance AccountName
Finance Amount
Finance Bic
Finance BitcoinAddress
Finance CreditCardCvv
Finance CreditCardNumber
Finance Currency
Finance EthereumAddress
Finance Iban
Finance RoutingNumber
Finance TransactionType
Hacker Abbreviation
Hacker Adjective
Hacker IngVerb
Hacker Noun
Hacker Phrase
Hacker Verb
Hashids Decode
Hashids DecodeHex
Hashids DecodeLong
Hashids Decrypt
Hashids DecryptHex
Hashids Encode
Hashids EncodeHex
Hashids EncodeLong
Hashids Encrypt
Hashids EncryptHex
Image Abstract
Image Animals
Image Business
Image Cats
Image City
Image DataUri
Image Fashion
Image Food
Image Image
Image Nature
Image Nightlife
Image People
Image Sports
Image Technics
Image Transport
Internet Avatar
Internet Color
Internet DomainName
Internet DomainSuffix
Internet DomainWord
Internet Email
Internet ExampleEmail
Internet Ip
Internet Ipv6
Internet Mac
Internet Password
Internet Protocol
Internet Url
Internet UrlWithPath
Internet UserAgent
Internet UserName
Lorem Letter
Lorem Lines
Lorem Paragraph
Lorem Paragraphs
Lorem Sentence
Lorem Sentences
Lorem Slug
Lorem Text
Lorem Word
Lorem Words
Name FindName
Name FirstName
Name FullName
Name JobArea
Name JobDescriptor
Name JobTitle
Name JobType
Name LastName
Name Prefix
Name Suffix
Name HasFirstNameList
Name SupportsGenderFirstNames
Name SupportsGenderLastNames
Name SupportsGenderPrefixes
Person Address
Person Avatar
Person Company
Person Context
Person DateOfBirth
Person Email
Person FirstName
Person FullName
Person Gender
Person LastName
Person Phone
Person UserName
Person Website
Phone PhoneNumber
Phone PhoneNumberFormat
Random AlphaNumeric
Random Bool
Random Byte
Random Bytes
Random Char
Random Chars
Random ClampString
Random CollectionItem
Random Decimal
Random Digits
Random Double
Random Enum
Random Even
Random Float
Random Guid
Random Hash
Random Hexadecimal
Random Int
Random ListItem
Random ListItems
Random Long
Random Number
Random Odd
Random RandomLocale
Random Replace
Random ReplaceNumbers
Random ReplaceSymbols
Random SByte
Random Short
Random Shuffle
Random String
Random String2
Random UInt
Random ULong
Random UShort
Random Uuid
Random WeightedRandom
Random Word
Random Words
Random WordsArray
Rant Review
Rant Reviews
System AndroidId
System ApplePushToken
System BlackBerryPin
System CommonFileExt
System CommonFileName
System CommonFileType
System DirectoryPath
System Exception
System FileExt
System FileName
System FilePath
System FileType
System MimeType
System Semver
System Version
Static None

Back when we first moved into our house (way back in 2006), it was looking pretty sharp with a recent coat of paint. Over the years of living here, we thought about repainting the exterior but found the quotes we got to be excessively high; so we kept putting it off. Then my family sold the last of the old family farm, which gave us a little chunk of change to play with. Unfortunately, this was post-derecho; so it took a little longer to get started than we hoped. But now that it’s all done; we couldn’t be more pleased with how it turned out. If you happen to be needing new siding put on your house in the Cedar Rapids area; we’re happy to recommend R&P Construction to you.

Millennium Falcon: Smugglers Run So for the first time in many a year, Michelle & I took a proper vacation. We’ve been back from the vacation for nearly two weeks and I’ve been meaning to write up my thoughts but I keep getting distracted from doing so. I’ve been asked multiple times by different people how it went; so below is what I’ve been saying to those I’ve talked to about it. Also, you can find all my photos from the trip in my WDW Vacation 2022 album on Flickr.

While I’ve been to amusement parks before; this was my first time at a Disney park. My number one tip for going to Disney is to have the trip planned by somebody who loves you. All the reservations (flights, hotel, parks, & meals) involved in a such a trip makes planning it a nightmare; but fortunately for me, Michelle decided to tackle all of that work herself. My only contributions to that phase of the trip was getting the time off from work and making sure there were funds in the vacation account. This made things super easy (for me), for which I’m grateful for all the love my wife showered me with. Thanks love!

My second tip is stay at one of the Disney resorts. Their easy transport options to all of the parks made it simple to retreat back to our hotel when we needed a break. This is more important than I realized before going to Walt Disney World; as there are very few places for people to sit down in the parks. The few spots that are there were almost always full of other people. For somebody on the older side and who tends to be sedentary, walking around the Disney parks got exhausting. Being able to retreat to the hotel to relax was a blessing.

My third tip is to try to schedule time at each of the parks both during the day and at night. Galaxy’s Edge in Hollywood Studios was especially spectacular at night. Admittedly, it was harder to navigate the parks at night; as so many people were wearing dark colors and the streets weren’t brightly lit. Though if at all possible, don’t do both times on the same day. If you try to do it all in a single day, it would be easy to over do it and get burned out.

Best Rides

  • Hollywood Studios: Star Wars – Rise of the Resistance was balls-to-the-walls amazing… when it was running. We rode it our first day/first ride and got in after about 90 minutes, even though the line was huge. At the end of that day, the line was half the size, so we decided to try it again. We got about halfway through the line when it broke down 2-3 times and we were kind of stuck in place. We clocked it as taking 3 hours to get through the line the second time. We were also stuck near some really annoying people; so that wasn’t as fun an experience.
  • Magic Kingdom: While Haunted Mansion was a very close second; Jungle Cruise just managed to edge it out with the delightful patter that our guides used during the ride.
  • Epcot: Soarin’ Around the World is this wicked ride where they strap you into a seat and then lift you up in the air in front of something like a curved IMAX screen. Shaking you around to match the aerial video footage of various spots around earth. We only got to ride it our last day at Epcot; but if I’d known it was as cool as it was, I would have insisted on riding it sooner
  • Animal Kingdom: Flight of Passage was basically an Avatar themed version of Soarin’ Around the World. It’s all special effects rather than real video, but just as amazing… EXCEPT to maintain their immersion into the Avatar stick; when the ride started/stopped they flashed a bunch of strobe lights at us to signify the link to our avatars being opened/closed. The bright strobe lights were an instant headache for me. If I realized that was going to happen, I’d still happily have ridden the ride, but would have closed my eyes before the strobes started to avoid that pain.

Best Food

  • Hollywood Studios: Free-Range Chicken à la King at The Brown Derby
  • Magic Kingdom: Pot Roast at Liberty Tree Tavern
  • Epcot: Filet Mignon at Le Cellier Steakhouse

Best Drinks (DisneyDrinkathon)

  • Hollywood Studios: Fuzzy Tautaun at Oga’s Cantina
  • Magic Kingdom: Modern Fashioned at The Brown Derby
  • Epcot: The Nebula at Space220

Before I left for vacation, as I was signing off from work; I sent my co-workers a message telling them to have a good weekend and that I’d see them in a couple weeks after I have a delicious mai tai… Or two or three and who cares I’ll be on my first real vacation in ages. Since I sent that message, I couldn’t resist keeping track of all the lovely adult beverages that I enjoyed while on vacation. Hence, the group of photos I’ve taken to calling my DisneyDrinkathon.

Michelle and I once again participated in the EFY race. We showed up late decided to be extra socially distant. We still finished and even weren’t dead last. Though I’m still feeling stiff & sore from it.