Saturday, August 17, 2013

Waterco Multicyclone Filter for My Swimming Pool

I have had nothing but trouble with my pool since about a month after it was installed.  Sure, it's fun to laze about in it on the hot summer days; it makes desert life bearable, but darn it's hard to take care of.  I have a salt water pool as mentioned several times in the tab above labeled "Swimming Pool" <link> and that generates its own chlorine, but that creates "Ph creep", which I deal with by pumping acid into the pool at regular intervals using  an Acid Pump <link> that I created.  However, there's still problems.

See, I have a cartridge filter instead of the more traditional diatomaceous or sand filter.  These things require cleaning and replacement.  Cleaning can be as often as every couple of weeks in dirty weather or a few months when there's no sand storms, bug migration, tree blooms, or dirty dogs to mess it up.  However, this year I've been pestered by caterpillars, crickets, beetles, frogs, sandstorms, and tree blooms such that I've had to clean the cartridges several times.  Add to that the calcium carbonate snow that accumulates due to the chlorine generation and summer has been a pain in the pool department.

I decided to get a pre-filter to get rid of some of the crap to keep the work load down.  I got one of these:
This is the Waterco Multicyclone 16.  Basically, it's a Dyson vacuum cleaner that works for your pool.  It goes after the motor and before the big pool filter and removes most of the crap before it gets into the filter.  Theoretically it should keep me from having to clean the cartridges as often, maybe as little as once a year.

Frankly, I'm skeptical.  However, after looking at the various videos and hunting around for honest reviews of the thing (I couldn't find one), I took the plunge and bought one.  I just installed it today, so I don't have a history to call on, but I can say that it wasn't hard to install and looks like it's doing what they say it does.  Here's the installation:

Yes, it's tall.  I could have mounted it closer to the pump, but then I would have had to get a new drain faucet and it would have only been six inches shorter.  I used two 45 degree fittings because 90 degree fittings impede flow and I wanted all the flow I could get.  The idea of the pump is that the water goes up through a pipe in the middle, swirls around through 16 cyclone fixtures inside where centrifugal force removes debris allowing it to fall to the bottom of the clear area where it can be discharged using the red valve at the bottom.  The cleaner water then goes to the cartridge pump and gets 'polished' before discharging into the pool.

I used the glue technique I learned when I was working on the solar heater.  I found out that to get the absolute best seal, forget the normal PVC cement and purple primer, go directly to the blue 'Red Hot' cement and forget the primer.  That little trick took me almost a week and calls to the pipe manufacturer to discover.  Here's a picture of the filter in action:
No leaks !!  You really can't tell from this picture that there is water in there, but I expected it to be swirling around; it didn't.  The cyclone action is all in the top section and the relatively serene clear bowl at the bottom is just clear water.  At least it was clear at first.  Over the next 20 minutes particles started to appear in the bowl, then a bug, then some of the white snow created by the chlorinator.  After about 20 minutes, I purged it by opening the valve and everything that had accumulated shot out the pipe to the side.  So far, it is doing exactly what they claimed.  Just before I purged it, I took this picture of the bowl:
See the accumulation at the bottom and in the discharge pipe?  That's after 20 minutes !  Yes, that's the kind and amount of crap that is getting into the cartridge filters and clogging them up.  I suspect I'll be purging this thing every couple of days during the dirty season.  That is after the new wears off; right now I purge it every time I go out there because it's cool to watch the debris shoot out.

In all honesty, I can't recommend this device for other people yet, I haven't had enough experience with it yet.  However, if the accumulation of particulates is any indication, this thing works.  I'm going to watch it like a hawk for the next week or so (naturally, it's new and cool) then determine if it is actually doing the job it's advertised to do.  I'll hook up the vacuum head and clean the pool and see what happens when I flood it with the stuff that hangs around on the bottom of a pool in the desert; that should be a good test.

At any rate, stay tuned, I should know more in a few weeks.

Edit: I've had some experience with it now, more information here <link>

Monday, July 8, 2013

Holy Cow, I've Got Competition

As this blog can attest, I've been shifting my power usage to non-peak periods for a few years now. I didn't realize what an accomplishment this was because I did it out of GREED. Yes, greed. I got tired of giving my money to the power company and wanted to keep it for myself. Now I happened across an effort in Europe to do the same thing I'm doing, but they made it into a contest and are actually offering a reward. 

What??

 Yep, what I give away for free is being solicited and suggested to corporations, education facilities, and NGOs (non government organizations). Sheesh? Why didn't they just make a few suggestions to the army of nerds out here that are attacking this problem in their own way? So, take a look at http://dynamicdemand.nesta.org.uk/ ; the ideas they present are somewhat pie-in-the-sky, but some of them might actually do some good. Funny though, they didn't mention things like controlling the refrigerator compressor during peak periods, alternating expensive appliances such that they can't be on at the same time. Using tile flooring to hold the heat and cool during needed periods, automatic ceiling fans, the stuff that normal people are working on all over the world.

 Some of the more mundane items I have like shade on the sunny side of the house, solar tubes in the ceiling for light during the day, and extremely low power pool pump using special venting to support vacuum problems completely escaped their notice as well.

 Anyway, have a look, but remember, you saw it here first.

Tuesday, July 2, 2013

Using the Google Charts API with Xively (Pachube -> Cosm -> Xively)

It's actually getting a little tiring having the old Pachube change names and interfaces every year.  However, they have programmers there and they have to be doing something ... right?  I decided, based on a request from a follower, to put the code I have been using to collect data that is stored on Xively and hand it off to the Google Graph API.  This gives me a nice graph that I can look through to inspect my energy usage.

I've used the Google graphs to find problems with my power usage and distribution for a couple of years now.  Nice system.  There are other graphing systems out there, but each of them is different from the others and one has to settle on something to work with.  I just chose Google, not because it's the best, but because I think it might continue to exist for a while and has reasonable documentation.  Oh, it's also free.

At any rate, most of the graphing software takes a table as input.  That presents a particular problem for us inexperienced web programmers.  What the heck is a table and how do we make one?  Once we understand that to some degree, how do we get the data from Xively and put it into a table?  This little bit of knowledge is hard to come by.  I went through several iterations of trying to get data, format it into something to give to the Google API and see what was displayed.  I came up with this:

The Web Page
<html>
    <title>Desert Home Day Graph</title>
<head>
</head>

<body>
    <!--somehow, SUN thought this was better than the c include statement....sigh -->
    <!--These are the google api files that you need for their tables and graphs -->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type='text/javascript' src='https://www.google.com/jsapi'></script>
        <script type='text/javascript'>
          google.load('visualization', '1', {'packages':['annotatedtimeline']});
    </script>

    <script type="text/javascript">
    //I stole this function almost verbatim from the Pachube web site.
    //It formats the date into a form I like
    function adjustdateformat(incoming){
             if (typeof(incoming) != "function") { //no scripts allowed in data
            var ts_parts = incoming.split('T');
            var d_parts = ts_parts[0].split('-');
            var t_parts = ts_parts[1].split(':');
            var d = new Date(Date.UTC(parseInt(d_parts[0],10), parseInt(d_parts[1],10)-1 ,parseInt(d_parts[2],10), parseInt(t_parts[0],10), parseInt(t_parts[1],10), parseInt(t_parts[2],10) ) );
            return(d);
        } else {
            alert("There was a script in the data !!");
            return(0);  //for when there is a script
        }
    }
    // this creates the table that will be stuffed with data returned
    var data = new google.visualization.DataTable();

    // The google data api doesn't have a call to return a column id by name
    // so I had to invent this one
    function getColumnIdByName(name){
        var idx;
        var thisname;
        var lastOne = data.getNumberOfColumns();
        for(idx = 0; idx < lastOne; idx++){
            if(name.toString() == data.getColumnLabel(idx)){
                return(idx);
            }
        }
        // I really don't like magic values like this, but it'll do for now.
        return(99);
    }

    // This parses into the json data to grab values.
    // there's documentation all over the web on the json format
    // but it has to be parsed to use it
    function climbtree(archivedData){
        // this will create the table for the graph
        if (typeof(archivedData.datastreams[0].datapoints) == 'undefined'){
            alert("No archived data returned");
            return;
        }
        $.each(archivedData.datastreams, function(key, value){
            // key 0 has the first datastream and the times for the table.
            // you'll always get this if there is data to deliver
            if(key == 0){ // only add a date column for the first datastream
                //alert("I got key 0 ");
                if (data.getNumberOfColumns() == 0){
                    data.addColumn('datetime', 'Date');
                    data.addColumn('number', value.tags);
                }
                $.each(value.datapoints, function(key,value){
                    //alert("got an at value of" + this.at);
                    var d = adjustdateformat(value.at);
                    var level = value.value;
                    var thisrow = data.addRow();
                    data.setValue(thisrow, 0, d);
                           data.setValue(thisrow, 1, parseFloat(level));
                })
            } else {
                //second, third, etc datastreams
                //alert("got another key = " + value.tags);
                var columnIdx;
                if((columnIdx = getColumnIdByName(value.tags)) == 99){
                    columnIdx = data.addColumn('number', value.tags); //new datastream came in
                }
                $.each(value.datapoints, function(key,value){
                    var d = adjustdateformat(value.at);   //format its datestamp the same way
                    var rowIdx = data.getFilteredRows([{column:0,value:d}]); //and find it in the table
                    var level = parseFloat(value.value);
                    data.setValue(rowIdx[0], columnIdx, level);
                })
            }
        })
    }
    </script>

    <!--     this actually goes and gets the data.  What I'm doing is grabbing the data
        for two items: Real Power and Outside Temperature.  Since Cosm has a limit on
        the number of items they will return, I do it in six hour intervals.  So, a day
        will loop four times and two days 8, etc.  There's also a limit on other stuff,
        so the most you can get is around a week.  If you want more, you'll have to do
        some more work to handle it.  Remember though, there's a lot of data here and
        it will take some time to get it back from the site.  That's why I prefer server
        generated charts.  The server has the data right there and can access it quickly
        when we go get it, it takes time for the chunks to come to us.
    -->
    <script type="text/javascript">
    $(document).ready(function(){
        var url='http://api.pachube.com/v2/feeds/9511.json?&key=GtGuoMKJSqv2tzqGvWaITLhlEDUxrYXSixqPSmlyj-s&per_page=1000&datastreams=0,7&duration=6hours&interval=60';
        var databack;
        var startpoint = '';
        var loopcount;
        if(queryString["day"] == undefined)
            loopcount = 4;
        else
            loopcount = (queryString["day"] * 4) + 1;
        //alert('loopcount = ' + loopcount);
        for ( var i=0; i<loopcount; i++ ){
            //alert('going for ' + url + startpoint);
            $.ajax({
                    type: 'GET',
                    url: url + startpoint,
                    dataType: 'json',
                    data: {},
                    async: false, // you have to have this so the data will arrive before display
                    success: function(dataarchive) {
                     //alert("the url should have returned");
                    if (databack = (typeof(dataarchive.datastreams[0].datapoints) != 'undefined')){
                        var len = dataarchive.datastreams[0].datapoints.length;
                        //alert("got back " + len + " items");
                        //alert("from " + dataarchive.datastreams[0].datapoints[0].at +
                        //    "to " + dataarchive.datastreams[0].datapoints[len - 1].at);
                        startpoint = "&end=" + dataarchive.datastreams[0].datapoints[0].at;
                        climbtree(dataarchive);
                    };
                }
            });
        }
        //alert('after the get loop');
        var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chartholder'));
        // OK, now I've got a chart, but need to rearrange the columns
        // this is a matter of taste, so adjust as needed.
        var chartView = new google.visualization.DataView(data);
        // this sets the order of the columns
        chartView.setColumns([0,2,1]);
          chart.draw(chartView, {displayAnnotations: true, 'scaleType':'allfixed','scaleColumns': 'allmaximized', 'scaleColumns': [0,1]});
    });
    </script>

    <!--
        This little thing allows you to put a parameter in the URL to get
         multiple days.  Use a ? then the number of days i.e. ?day=2 will get
        you two days worth of data.
    -->
    <script type="text/javascript">
        var queryString = new Array();
        var parameters = window.location.search.substring(1).split('&');
        for (var i=0; i<parameters.length; i++) {
            var pos = parameters[i].indexOf('=');
                // If there is an equal sign, separate the parameter into the name and value,
                // and store it into the queryString array.
                if (pos > 0) {
                    var paramname = parameters[i].substring(0,pos);
                    var paramval = parameters[i].substring(pos+1);
                    queryString[paramname] = unescape(paramval.replace(/\+/g,' '));
                }
            else {
                    //special value when there is a querystring parameter with no value
                    queryString[parameters[i]]="[nil]"
                }
        }
    </script>
    <!-- and the actual chart declaration; change this for size and stuff -->
        <div id='chartholder' style='width:100%; height:310px;'> </div>

</body>
</html>

This is the actual web page I created to display a days worth of data on power usage and outside temperature taken from my sensors.  To use it, just copy the code into a file, save it as html (htm, whatever) and then click on it.  It'll load my data and give you a graph you can play with.  Then, modify it to use your feed id, key, and other stuff to display your own data.  It can serve as a template for your own graph as well.

If you want to use it as part of a web page with other information, pictures, etc, just put it into an iframe and include the page.  I keep this page on Dropbox so I can use it from anywhere, even my tablet.  Some browsers have a little trouble with iframes (chrome) others have trouble with Google charts (Opera, Silk), so your mileage may vary, but it can certainly serve as an example.

This is what you will get with a line like:
<iframe width="100%" height="325" scrolling="No" seamless frameBorder="0"
        src="http://dl.dropboxusercontent.com/u/128855213/CosmGraphPower.html"> </iframe>



And yes, the src attribute up there points to the page I have on Dropbox to show this page.  Feel free to grab the source directly from there as well.

As I said before, my web programming experience is slim, so there may well be better, more elegant ways to do this.  If so, leave a comment for other folks (and me!) to help make our lives simpler.  For example, you have no idea what a pain in the butt it was to get this page to work using the tools that Blogger provides.  Their editors kept changing things and messing up the display.  I finally got it to work, but I haven't tried it on multiple browsers so, it may be messed up. Look at it in FireFox, it seems to be the best with this display.

Saturday, June 29, 2013

How to use the SteelSeries Gauges with the Xively API

Over the last months I've gotten compliments and questions on how I created the SteelSeries gauges and how I hooked them to the Xively (pachube -> cosm -> Xively) API.  First, let me give credit where credit is due.  I didn't create the SteelSeries gauges, Gerrit Grunwald did.  He has a great blog here <link> where he describes the various displays he's created.  I stumbled across them a while back and hooked them into my Xively data feed to display the last updates so I would have a nice display of current power usage and temperature.  They worked really well and look great.

It took a little work to get them going, but it was well worth it.  Basically, I query Xively for the last value, then give it to the gauge to display.  Here's the current (a minute ago) temperature at my house in the Arizona, USA desert.

Edit: This used to be a live gauge, but I replaced it with a picture.

So, the source to do this looks like this:

<head>
<title>Dave Testing</title>
</head>
<body onload=init()>
<canvas id=gaugeCanvas width=200 height=200>No canvas in your browser...sorry...</canvas>
</body>
<script>
function init()
{
// Initialzing gauge
    tempGauge = new steelseries.Radial('gaugeCanvas', {
             gaugeType: steelseries.GaugeType.TYPE4,
 minValue:0,
                  maxValue:150,
                  size: 200,
                  frameDesign: steelseries.FrameDesign.BRASS,
 knobStyle: steelseries.KnobStyle.BRASS,
         pointerType: steelseries.PointerType.TYPE6,
         lcdDecimals: 0,
                  section: null,
                  area: null,
                  titleString: 'Outside Temp',
                  unitString: '°F',
                  threshold: 100,
                  lcdVisible: true
                  });


  // Start the gauge update
setInterval(function(){
            var site = "http://api.pachube.com/v2/feeds/9511.json?&key=GtGuoMKJSqv2tzqGvWaITLhlEDUxrYXSixqPSmlyj-s&&datastreams=7";
//alert('going for ' + site);
$.ajax({
    type: 'GET',
    url: site,
    dataType: 'json',
cache: false,
data: {},
processData: true,
    async: false, // you have to have this so the data will arrive before display
    success: function(data_archive) {
  //alert("the url returned success");
//alert("got back " + data_archive.datastreams[0].current_value);
                        tempGauge.setValueAnimated(eval(data_archive.datastreams[0].current_value));
},
error: function(a){
//alert("here I am in the error routine");
}
});
//alert('after the get');
}, 10000);
}
</script>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type=text/javascript src=http://dl.dropbox.com/u/128855213/SteelSeries/tween-min.js></script>
<script type=text/javascript src=http://dl.dropbox.com/u/128855213/SteelSeries/steelseries-min.js></script>


There's too much up there to try and explain each item; this blog post would go on forever.  However, there's lots of documentation on the web that can explain what I did and the SteelSeries library has enough in it to get you started there.

Good luck and have fun with it.  I'll be showing how I use the Google Graph API in an upcoming post as well.

Wednesday, June 26, 2013

Back to the Swimming Pool Acid Pump

A couple of folk have sent me notes pointing out that I have spent more money and time on the Acid Pump <link> than is justified.  They're right.  Totally, absolutely right.  That doesn't change the fact that I'm going to continue this project until I finally get a nice working device that maintains the Ph of my pool with minimal human intervention.  Yes, it's cost me more time than just pouring acid from a jug into the pool every few days and more money than many, many gallon jugs of acid.  But that's not the point to automating a house.

The latest problem is a failed check valve.  Originally, I had a problem finding a check valve that was acid resistant and had a pipe fitting on one end and a tubing barb on the other.  I finally got one from the people that supply the pump I'm currently using.  It has been in service for the last year and did a good job.  However, when I replaced the tubing as part of my twice yearly maintenance, the valve stuck and wouldn't open.  I had a spare and installed it to get things going but I wanted to know what went wrong.  This is the valve I'm talking about:

 Notice that the two ends seem to be removable.  Turns out they are.  That's how this manufacturer designed maximum versatility into the device.  You can specify the end pieces to any configuration you need (within reason).  That way special purpose valves can easily be created.  So, being the curious monkey I am, I took it apart to see what was wrong:
Notice it's a basic ball valve complete with a spring that is a simple effective design.  What happened in this case was the black seal failed in the acid and the black debris in the picture is parts of it that plugged up the ball mechanism.  The material is Viton, which has a high resistance to acid, but apparently, not enough for prolonged exposure in the hot desert sun.  Not a big problem, just keep a couple on hand and replace them each year to be sure they hold up over time. I can live with that since every other valve I tried died in less than a month.

The problem came when I tried to get a replacement.  There were lots of them out there in the marketplace, but suppliers wanted between $17 and $50 for these little plastic parts.  Frankly, that ridiculous.  I called the manufacturer and asked for advice.  A nice lady there found me the industrial number of the same device and a supplier of their valves in Colorado that I could call.  I called him and ordered six of them because that's all he had in stock.  The cost was $8.60 each, and the shipping was around $10.  Quite a savings going the industrial part route instead of a swimming pool repair part.  Especially since the swimming pool suppliers wanted from $15 to $18 for shipping and handling to get them to me.

Basically, I got six of the valves for the price of one of them as a swimming pool repair part.  That makes treating it as an expendable part reasonable.  So, now each year I replace the tubing with tubing I get from Home Depot, a piece of Tygon tubing that I order in five foot lengths, and a check valve I buy from this supplier.  Sure, that's a bunch of stuff to remember, but just write down in a book somewhere the part numbers and suppliers and there shouldn't be any problem, and I won't have to pay more than twice what it's worth.

When I get the new ones in I may sacrifice one of them to see what the Viton seal looks like and how it fits in place.  It may be possible to get a Viton seal and just replace it as a maintenance part.  There are places out there that make Viton and even Teflon seals and washers; it could be possible to build up a replacement that will last even longer, or be easily repaired.

I'm starting to understand why so many people buy from Chinese suppliers.

Tuesday, June 11, 2013

Power Washer - Frustration in Action

I've talked to my various neighbors and some other folks around my parts about power washers and they all agree, unless you get an expensive commercial or prosumer version, they fall apart too easily.  All but one of my neighbors have trouble with the basic consumer models for a number of reasons.  1. the stupid bayonet fittings wear out and start to leak.  2. hose connection to the washer leaks.  3. leave them out in the desert sun and the plastic lances get brittle and break.  4. the plastic nozzles wear out in a few months.  5. Hoses are stiff and hard to use.  We all like the electric models because of the small engine problems.  If you don't use a gasoline engine often, they develop problems and won't work when you need them.  Electric washers just work and give little trouble with the motor and pump.

Even with all the disadvantages, the $100 price tag (on sale) makes them too attractive to turn down if you need one, and in the desert with limited water, you need one.  For the past years I've bought one every two years because of the various problems.  Then I decided to just replace the various parts as they broke to see if it would save money.  It didn't.

The replacement lances don't fit well and fall apart faster than the factory original.  Even if you change brands, they are pure junk and work until you get about half way through a job then fall apart.  I had one turbo nozzle replacement blow apart the first time I turned the washer on.  Basically, the various manufacturers supply shoddy devices.

Notice how I keep running into this?  I know I'm not alone, but many people just put up with it or give up and hunt for some other solution to whatever device fails them.

I decided to see if I could overcome this problem.  Since most of the problems are with the lances and nozzles, suppose I got a good lance and put it on the washer?  The good lances are metal (brass and stainless), cost about the same as the factory replacement plastic, and are tough as nails.  So, after much research, I discovered that most power washers have a common fitting: an M22 female.  That means I can get a hose, pressure trigger (the gun part), extension and nozzle to replace the junk the manufacturers provide.  Since the lance and hose will last essentially forever, I should be able to move it from one washer to another as I wear the motors and pumps out.  The motors and pumps are too expensive to replace, cheaper to buy a new washer on sale and toss the old one; along with the junk plastic bayonet connected lances.  Here's the lance that blew apart the first time I tried it:
There are screw fittings on each end of the extension that you screw one of the various adapters on to match your existing pressure trigger and the turbo nozzle (big thing in the picture) screws into the other end.  In my experience, each connection leaked.  Yes, all of them.  The threads are plastic and not cast well so they leak a small amount, and the bayonet fittings almost match the device, but the small difference causes leaks.  When I put it together and attached it to my washer, the entire front of the turbo nozzle blew off across the yard.  Clearly, this device is not made to be used, just sold to unsuspecting folk like me.  And, no, it isn't because my power washer is to strong for this tool; I currently have a Powerwasher Weekender (google it) that I picked up for less than $100 at Home Depot on sale and it only gets up to around 1800 pounds on a good day.  Its one of those low pressure machines for consumer use.  Ever notice how they call us consumers?  It's like we don't contribute to society at all; we're just here to buy their somewhat inferior devices.  

A little searching on line and talking to a guy that has a huge commercial power washer, I thought I had a solution.  I'd buy a mid grade setup for everything from the connection on the washer to the nozzle on the end.  Then over time I may change the washer several times, but the hose, lance, and nozzle would work for many years.
This is the hose, pressure trigger, and extension.  Notice that the extension is stainless and has brass fittings on each end; they won't die in the sun or break if you drop them.  The pressure trigger (gun looking thing) is stainless and brass inside with a heavy plastic covering to keep hot water from burning you.  The hose has M22 fittings on both ends that mate to both the pressure trigger and the washer.  The really cool thing is that the extension has a 1/4 inch quick connect fitting on one end so nozzles can be changed easily.  That means I can get something like this:
These have various spray widths, from a stream (the red one) up to a nice wide fan.  No, I didn't have something like this before; isn't it great that now I can?  These have 1/4 quick connect fittings so they can be changed easily depending on what I want to do and can handle exceptionally heavy use.  Now, all I need is a good turbo nozzle for those hard to wash things like wheels and muddy bumpers on Jeeps.
This is the turbo nozzle I chose.  It is brass with a tough plastic covering to protect whatever you bump it into when working with it.  Notice the 1/4 inch quick connect?  Easy to change like the other nozzles.  Now, just because it would be really cool, I wanted some way to inject detergent into the high pressure spray so I could actually clean something.  It would also be good for bleach mixtures to clean off the mold from fences and maybe some other chemicals that might be useful.

This is a soap injector nozzle.  You drop one end in a soap bucket and put the other one on the end of the extension (yes, it has 1/4 inch quick connect fittings).  Using this you can wash away grease from your tractor transmission to find that stupid oil leak that's been bugging you for years.

So, everything except the turbo nozzle and the soap injector came in and I couldn't wait to try it out.  I assembled the hose, pressure trigger, and a fan nozzle and hooked it up to the little Powerwasher Weekender I have and away I went.

IT FREAKING LEAKED !!

Right where the M22 fitting entered the power washer, there was a constant stream of water that caused the washer to cycle.  This was really annoying, so I put the old hose back and it didn't leak.  Fine, what the heck is different?  It seems that the Powerwasher output fitting is .05 bigger than the specs for an M22 fitting.  This means that the thing will leak just enough to drive you nuts over time.  Since the M22 fitting has an o-ring to seal it, maybe if I changed the o-ring?  Nope, that didn't work, it was just too small, it would take a special o-ring that had a larger outside diameter while maintaining the internal size.  I could spend a month trying to find one and probably order a dozen wrong ones first or figure out something else.

I tried wrapping the male M22 fitting with teflon tape, but that was a waste of time because it just leaked around the tape.  I though about dragging out the epoxy and stuffing it full to seal it, but that would defeat the purpose I set out for.  I finally beat it a few minutes ago with a really simple trick.  The M22 fitting looks like this:
Notice the o-ring around the center?  That's the o-ring that I thought about changing to make it work, but I wanted to try something.  I took the o-ring out and wrapped teflon tape around the slot where the o-ring sets making it a little larger.  The idea is to stretch the o-ring out and  make it seal the fitting that is too large on the  Powerwasher Weekender that I have.  When I put the o-ring back on and greased it with a little o-ring lube that I keep around for the pool and acid pump, it was definitely larger.  I wiggled it a bit and made it fit into the fitting and tightened down the plastic covered nut.  It worked.  Full pressure and no leaks at all; I can drag it around the yard and bang it and it does fine.  You folks reading this, try this the next time you need a new o-ring but don't want to go to the store right now to get one; this little trick could hold you for several days until you can get a new one.  Obviously, some engineer decided that he would design a fitting that was almost to spec, but enough off to force us to buy a new washer because we couldn't make it work.  This kind of crap is what industry standards are designed to prevent.  But, we're just 'consumers' we don't count.

So, now I have a hose and lance assembly that I can change tips on easily, inject detergent, and turbo wash to my heart's content.  Even after the Powerwasher company put a non-standard fitting on their product just to mess up people that want to do what I did.

Take THAT Powerwasher.


Friday, May 31, 2013

The Minute You Turn Your Back

Last weekend I noticed an odd increase in power that shouldn't have happened.  Then, it happened again a couple of days ago.  Here's the graph:


Notice the two humps in the red graph, one around 12PM and the other at 2PM.  These shouldn't be there because all the heavy power using devices have been shut down during the afternoon peak usage period.

As I described on my Power Usage page <link>, this could easily drive my bill up by a hundred dollars or so.  Needless to say, I was concerned and started checking every appliance in the house to see if it could have come on during this period.  The length and duration looked suspiciously like the water heater assist coil could have been activated, but everything on that device checked out OK.

I scratched my head for a while and noticed that this was a recurring event during the heat of the day.  Here's a graph of the next day showing a few of the same kind of thing.


So, I went outside, looked at the meter for the demand level to see what I might have to pay come bill time and the peak level was at 1.5 kW, not the 3kW or so I expected.  This means that the humps in power usage aren't real, they're some kind of artifact of the power reading process.

Voltages checked out, things seemed ok until I flipped off the GFI that supplies the power monitor <link> and it wouldn't come back on when I tried.  A ton of troubleshooting later which included having to climb up on a ladder and disconnect the garage door opener and a partial dismantling of the mains box, I found the problem.

See, there were several problem that have been going on that I thought were unrelated.  The GFI I mentioned failed a week ago and seemed to be fine after I replaced it,  the freezer in my kitchen has had a problem with the interior lights flashing erratically when the door is open, electric tools in the garage have strangely shut off, and the garage light (on the door opener) comes on sometimes for no reason.  This phantom power usage indication was what got me off my butt and looking for the problem.

It was an arching circuit breaker in the mains panel.  These things can be easily removed and have a slide on connector to the power buss inside the panel.  Since my panel is full, I have a number of double breakers where two half size breakers can take the place of one full size.  One of these was arching where it connects to the power buss.  Here's the breaker that failed:


And here's a close up of the connection that was giving me the problem:


If you look closely there is charring on the spring connector in the slot.  There was charring on the post in the power panel as well. Replacing the breaker corrected the problem and all the other strange things inside the house settled right down.

OK, here's the disclaimer:  There's enough power inside the mains box to kill you, so if you're the least bit uncomfortable, don't mess with it; leave it to someone that thinks they're qualified to work on this.  Me, I took it apart without a second thought, but that's just me.

What was happening was that the connection was loosening when the heat inside the panel rose during the heat of the day.  That side of the house is in the direct afternoon desert sun and gets really hot; you can't put your hand on the panel in the heat of the day without gloves.  All the equipment is rated for this since I live in the desert, but the environment takes its toll over time, so this kind of thing can happen.

The loose connection arched, got some carbon deposits that caused it to arch some more, and created enough noise on the power lines that it drove the sensitive electronics of the power monitor nuts.  It also caused the lights to flicker in my freezer because the second switch on the breaker was hooked to the freezer in the kitchen.  My garage door and the GFI that failed are fed from the same circuit the power monitor is plugged into.  This little two circuit breaker was driving my house electronics crazy.

The really good thing about this is that the problem showed up as a bad reading on the power monitor.  This was before the breaker failed completely and shut down a critical part of my house...my freezer.  If I had been away and the thing failed, I would have lost the contents of my freezer and had a mess to clean up.  See, there's another good reason to automate and monitor my house.

So, if you have strange flickering lights, GFIs that don't work right, and garage doors that behave strangely, it may not be ghosts.