Sunday, January 5, 2025

Tying Up Loose Ends

When we last left off, the majority of the electrical for my sprinkler project was in place, but the run down the side of my house to the panel was still left to install. I had a few hours of good weather this afternoon, so I decided to take the opportunity to wrap things up there.

First off, I needed a small spacer board on the fence here to avoid having to melt another section of PVC conduit into a makeshift fitting.

If the cuts look a little strange here, it's because the two faces of this board aren't actually parallel with each other, and I have no idea why. It was a leftover board that I salvaged when I ripped the shitty shelving out of my car hole, so who knows where it came from before that.

Anyway, I have to say it's a real pain in the ass dragging out these extension cords to the side of my house here, I wonder if I should think about putting in some outlets along this wall or something?

Well whatever, I'm sure I'll get around to that eventually.

Anyway, the conduit from the fence hole and up the wall came together nicely, thanks to some careful planning ahead of time.

Although I maybe didn't plan the locations for the conduit straps quite as well.

Oops. Well, nothing a little caulking and some touch-up paint can't fix.

The outlet box here gets centered under one of the bathroom windows. Eventually I'd like to move my water heater to this side of the house, and I figure that putting it directly under this window is the least likely location for me to want to use, so I should be safe putting the outlets here. Should be.

I'll probably end up putting the water heater to the right of this box, though it may end up going to the left between the two windows. That, however, is a bridge I can cross when I come to it.

Balancing out the bad luck I had with that one conduit strap, it looks like some good luck came my way with the length of this piece of conduit.

I was dreading having to move my generator shed in order to access this joint to glue in the next piece.

And speaking of the next pieces, these are the last conduit bits to be installed.

So that means it's time to pull some wire.

Now just because I'm using stranded THHN doesn't mean that everything necessarily goes smoothly. Particularly due to conduit bodies not being exceptionally wide in the 1/2 inch size.

Up there in the shadow is the end of my fish tape, which I was luckily able to grab with some pliers and get it to come through.

I had considered getting the opposite angle conduit body, but that really would have just traded one problem for another, and thankfully it worked out anyway.

So with a few more pulls, all the lengths of wire are run all the way to the last box I left off with previously.

And then I just had to button things up while I still had some light left.

Or possibly while my work light still had some battery left.

But either way I got it done. This isn't the last of the last work I need to do, as I still need to put in the last few irrigation emitters, run the sprinkler control wires to the two valves in the front along the fence, and then connect them up at the controller and set up a watering schedule. There's no big rush on that, though, since the rainy season is going to last a while longer yet.

Friday, January 3, 2025

Mixing Electricity and Water

In a previous blog post, I covered last week's adventures in installing an irrigation system in my front yard. Well, those irrigation valves aren't going to open and close themselves (at least I hope they aren't). They'll need some external assistance.

Like the last entry, this one is a long one so click through to read more.

Thursday, January 2, 2025

Bread In Motion

I've got my bread baking down to a pretty decent routine, so I figured it might make sense to publish a video illustrating the technique I use.

I experimented with doing a multi-cam shoot and I think the result turned out pretty well.

But that's just me, who knows what other folks will think.

Monday, December 30, 2024

Getting Hosed

As I mentioned in a previous blog post. through the process of elimination I determined that the sprayer hose on my kitchen faucet needed replacing. Good news: the hose is here.

Curiously there seemed to be a product revision between when my faucet was made and when, subsequently, this replacement hose came into being. The faucet end was slightly different, mostly in that the compression nut had 4 flats rather than two. Functionally that end was the same, though.

On the other end, though, the nut that screws onto the sprayer had changed a bit more. It was ever so slightly smaller on the OD, which actually made it seat better into the bushing that I had replaced last time. On the inside, though, the threads bottomed out well before the rubber washer was compressed, which lead to quite a lot of water spraying out around the nut when I turned the faucet on.

Luckily the rubber washer on the old hose was still in good shape, and just happened to be about the right thickness to compensate for the discrepancy. So, it's in a bit of an odd state, but it's together, working, and not leaking so I'll take it.

I did keep the nut from the old hose, though, just in case. I'll hopefully never need it, but if I do, I'm sure I'll be glad to have it.

Friday, December 27, 2024

The Great Moistening

So my front yard is xeriscaped. In theory this means that I have a low water yard, but in practice "low water" and "no water" are not even remotely the same thing, and so in the summer months (and there are a lot of summer months here) I find myself standing around with a hose twice a week watering my plants.

Interestingly, there is some irrigation plumbing roughed in at the front of my house, left over from the previous owner, which seems to never have actually been hooked up. At least not since the xeriscaping was done.

The plumbing starts here by the main water service for the house. I think at one time the gate valve in the back there was connected to the half-a-union below the hosebib, and the manual valve would allow the irrigation to be turned on and off more conveniently than trying to operate a gate valve. The other side of this plumbing is just a pair of risers next to the fence though, so we'll need to do some work before we can put this into service.

This will be a long post, so keep reading after the break.

Sunday, December 22, 2024

Drip Drip Drip

Despite decades of progress in faucet technology, eventually everyone will be faced with a leak to deal with. Today is that day, for me.

Well, more like one day of many.

You might remember this faucet from a previous blog entry, where I replaced the cartridge on the pot filler spigot. that repair is still holding tight; today we're dealing with some other issues.

Specifically, this joint right here where the sprayer hose joins to the main body of the faucet.

It's suffering from an occasional slow leak, and I don't intend to allow it to continue to worsen.

After a bit of back-and-forth with the customer service agent we were able to identify the correct washer to replace. So let's dig in.

There isn't quite enough room here to fit a regular wrench, but luckily I have some low profile crowfoot sockets that will do the job. The nut isn't in there so tight that using the socket holder like this is an issue, so that saves me dealing with sticking this on a ratchet. I really should get myself a breaker bar for situations like this.

With the hose off, we can now replace the washer.

Which is actually in here.

Which means digging out the old one.

As we can see, it was definitely time for a replacement.

And the other side doesn't look any better.

Thankfully the fitting itself is in good shape.

And the new washer just drops right in.

Then I put the hose back on and discovered that the source of the leak was actually where the brass barb fits into the base of the hose.

This isn't really something that's repairable, but thankfully a whole new hose is only $10. I'll just have to wait a little while longer for it to get here.

In the meantime though, let's take care of one other item: the plastic bushing that holds the sprayer head.

It actually wasn't too long after I moved in that the one end just decided to break off, which was certainly an annoyance.

Luckily it pops out pretty easily.

And the new one just snaps into place.

So that's one success and one, let's say, half success. That washer definitely needed replacing, but the leak wasn't fixed, so I guess we'll be seeing another post about this faucet in the not too distant future.

Saturday, December 21, 2024

A Wee Bit of Weather

So a while back I got a hand-me-down weather station from Tyler.

It's been dutifully recording the temperature, observing the lack of wind, and overcounting the rainfall for a few years up here now. But it was also never really great.

There was a fan inside it that buzzed and rattled, the rain gauge, as it turned out, was 150% inaccurate, and finally the straw that broke the camel's back was when the temperature sensor started reporting completely absurd readings. It was time to fix it.

And by fix it I mean replace it.

This cheerful little box arrived at my door straight from China, via a quick detour through the House of Bezos. It does the usual temperature, humidity, wind and rain sensing, as well as measuring total insolation and also UV, which is pretty keen.

It comes with all the bits and bobs needed to set it up, except of course for the pole to stick it onto. Luckily I had a scrap of redwood kicking around that I could use.

It's technically supposed to be round but whatever, square will do fine too.

Back up on the roof I clamped it temporarily to the piece of cedar fence board that I had used to mount the old weather station. Conveniently it's aligned north-south, so I didn't have to worry about rotating the weather station on the square pole to get the wind direction readings to be correct.

And a few screws will hold it in place just fine.

And you know, while I'm up here I should probably fix this section of gutter.

Every time the downspout gets plugged, this section collapses and I get a waterfall pouring off the roof, thanks to this hanger here being shittily installed.

Not only is it way at the end, leaving a huge gap to the next hanger, but it's also bent out of the way and not actually catching the lip of the gutter at all.

But thankfully both those problems have a solution.

Anyway, where was I? Oh yes, the weather station.

Getting the display hooked up and running was pretty straightforward. A touch screen might have been nice, but the buttons along the bottom worked well enough.

But only having the weather report in this one specific spot isn't especially convenient, when I might be yards away from it. I clearly needed to take advantage of the wifi features to upload the weather data into my own little local cloud.

To collect and process the data, I decided to use WeeWX in a Docker container, using this project.

First things first, I'd need a user for the container to run under, because running containers as root is so 2023. Thankfully this is as simple as running adduser --system weewx. Of course I'd need to make sure to add the appropriate entries to /etc/subuid and /etc/subgid so that the container could allocate UIDs and GIDs inside its namespace.

Then I needed a Docker compose file which specified the correct image to use, along with opening a port for the base station to send its readings to:

name: "weewx"


volumes:

  data:


services:

  weewx:

    image: felddy/weewx:release-5.0.2

    # devices:

    #   - "/dev/ttyUSB0:/dev/ttyUSB0"

    volumes:

      - type: bind

        source: ./data

        target: /data

    ports:

      - "8383:8383/tcp"

    environment:

      - TZ=PST8PDT

I prepared a directory at /var/local/weewx to hold this container's files, adding a data subdirectory, and set that as the home directory for the user. About the only special step I needed to take at this point was making sure that the data subdirectory was temporarily world-writeable until I figured out what UID and GID the container user would get assigned, after which I removed the world-write permission and chowned the directory.

Running the container for the first time is what populates the directory, and doing so is as simple as calling sudo -u weewx podman compose run weewx as root.

I next needed to install the WeeWX Interceptor plugin, which is what would actually be listening for the weather data being sent by the base station. With the WeeWX 5.1 container this is one simple line, just sudo -u weewx podman compose run --rm weewx extension install --yes https://github.com/matthewwall/weewx-interceptor/archive/master.zip. Then I followed that up with sudo -u weewx podman compose run --rm weewx station reconfigure --driver=user.interceptor --no-prompt to update the configuration file.

After a bit of tweaking, the file now had a section like this:

[Interceptor]

    # This section is for the network traffic interceptor driver.

    

    # The driver to use:

    driver = user.interceptor

    

    # Specify the hardware device to capture. Options include:

    #   acurite-bridge - acurite internet bridge, smarthub, or access

    #   observer - fine offset WH2600/HP1000/HP1003, ambient WS2902

    #   lw30x - oregon scientific LW301/LW302

    #   lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge

    #   ecowitt-client - any hardware that uses the ecowitt protocol

    #   wu-client - any hardware that uses the weather underground protocol

    device_type = observer

    port = 8383

And of course in the Station section the type was set via the line station_type = Interceptor.

To start the container for real this time, we use sudo -u weewx podman compose up --detach. However, we're not done yet, as there's still some configuration to do on the base station.

Now obviously some of these values will depend on your network set up, but the values you'll need to substitute should be fairly obvious. Here's what mine looks like:

One important thing to pay attention to here is the Path line. By default it's set to /data/report/ and the WeeWX interceptor largely ignores it, only looking for the query portion of the URL after the question mark. Except that the HTTP request it actually assembles looks like this: GET /data/report/&PASSKEY=DA76...

There's two things wrong with this. First, there's no question mark before the query parameters, which trips up the interceptor plugin. It tries to parse the URL by grabbing everything after the question mark, so having it missing means that nothing is grabbed. Second, the parameters start with an ampersand, meaning that there's effectively an empty parameter at the start of the string, which also confuses the interceptor plugin.

Thankfully since we can modify the path, we can splice in a value that will fix both of these issues, changing it to /data/report/?ID=id. The ID=id part is arbitrary, I just chose it because the interceptor plugin is coded specifically to ignore that parameter (amongst a few others). It just needs to be there so that the query string doesn't start with ?&.

And with all that done, I finally have the weather station reporting correctly into WeeWX, and all that's left to do is to write a systemd script to make the container start on boot, and then tweak the configuration for WeeWX to fix the units to be more metric.

It was quite an adventure, but it worked out in the end.