I just got my power bill for November, 2011. I had a peak demand number of 4.9....crap ! I sort of knew this was going to happen because one day I saw the hot water heater going during the peak period. This shouldn't have happened, but:
I use an X10 appliance controller hooked to a contactor to control power to the heating element of my solar water heater. See, when it's cloudy, the solar collector can't generate enough hot water for the house and there's a helper coil in the heater to take over when that happens. Usually, I keep the power off to the helper coil using an X10 timer that shuts off the power to it during peak periods. X10 is notably unreliable and failed to turn the power off that day. Of course, I didn't know it and crawled in the tub to soak some sore back muscles. The water I used caused the heater to come on and my demand went up during a peak period.
If it hadn't been overcast and cold, or the X10 timer had worked, or I had manually shut it off before using the water, or I had an alarm that told me the usage was that high, I wouldn't have had this problem. This probably means a new device for the house. The obvious solution (from my perspective) is to put another timer in like the one I use for the Acid Pump. Just set this one to keep the helper element off during peak periods and let it run as it wants during off-peak. I can get the time from my XBee network and I would be able to include the status of the hot water heater on the House Controller.
But, it's the holiday season and time is at a premium so it'll have to wait until January.
So, how much did this little event cost me? Looking at my bill there were the following charges related to peak usage: Demand Charge on Peak - Generation $34.86 and Demand Charge on Peak - Delivery $10.24 for a total of $45.10. My usual Demand level is less than 2 kW averaging around 1.7 so my expected amount would be about 2/5 the billed amount for around $18.00. The actual power it used is trivial since it was only 4 kWh at $0.19 per kWh or around 80 cents and I would have used power later anyway. So, a soak in a hot bath tub to loosen some back muscles cost me $27.00 extra last month.
And, that's how they get us folks. One time, one mistake, and your entire month's bill is screwed up. Next month, you swear to be more careful and watch it more closely and something different happens; you're screwed again. In my opinion, the only way to overcome this is automation to control what happens in the house during the peak periods. I just didn't realize how reliable it absolutely has to be to declare success. So, in January, I'll be back to working on controls. This time I'll disable the water heater element based on peak, and not rely on a stupid X10 controller.
I live in the Arizona Desert, Southwestern USA. It gets hot here, and my power bills got out of hand. This is a journal of my various efforts to bring this problem under control using the cheapest technology I could find. Saving money shouldn't cost a fortune.
Tuesday, December 20, 2011
Monday, December 19, 2011
Temperature Sensitive Ardweeny
Yes, it was a temperature sensitive Ardweeny that was causing me trouble with the Acid Pump. I couldn't tell which part it was that was failing, so I just programmed a new one and put it in place. Pump is working fine now. I'll use the temperature sensitive one in some application inside the house where the temperature extremes are not as high; it should work fine there. Glad I put the Ardweeny in an IC socket, it made replacement easy.
The new fittings and pump head are also working fine. I'll have to give them some time to see if they start having problems and the temperatures are low so the chemical reactions are retarded and the problem might not come up until summer. In the meantime, I have gotten some check valves and adapters to try out. I went to US Plastics and browsed through their site and found something that may be good as a replacement, but haven't tried them yet. The new check valves have a metal spring in them; that could be a nasty problem to overcome. Almost all metals react with HCL, and some of them do it really fast. I have one of them already in place as the injection valve into the two inch pipe plumbing the pool. In this case, the spring is exposed to the pool water most of the time with only limited exposure to the acid. In this instance, it works fine, but the outlook is not as optimistic for something that is exposed to straight acid 24 x 7. Here's a picture of the candidate replacement parts:
Notice that everything is plastic except the spring, I wonder if I can find Kynar or Teflon springs somewhere.
The new fittings and pump head are also working fine. I'll have to give them some time to see if they start having problems and the temperatures are low so the chemical reactions are retarded and the problem might not come up until summer. In the meantime, I have gotten some check valves and adapters to try out. I went to US Plastics and browsed through their site and found something that may be good as a replacement, but haven't tried them yet. The new check valves have a metal spring in them; that could be a nasty problem to overcome. Almost all metals react with HCL, and some of them do it really fast. I have one of them already in place as the injection valve into the two inch pipe plumbing the pool. In this case, the spring is exposed to the pool water most of the time with only limited exposure to the acid. In this instance, it works fine, but the outlook is not as optimistic for something that is exposed to straight acid 24 x 7. Here's a picture of the candidate replacement parts:
Notice that everything is plastic except the spring, I wonder if I can find Kynar or Teflon springs somewhere.
Friday, December 9, 2011
Updating the Ardweeny Bootloader
I've been having trouble with one of my Ardweeny devices. I use one of the little guys in a timer that runs my Acid Pump. It has been running well, but recently started to hang up daily. I added a watchdog timer based on the code I developed for the Arduino Mega2560 that should have caused it to recover if this happened, but that didn't solve the problem. I finally realized that I may be suffering from a problem with temperature. It gets cold at night now and the device may be temperature sensitive. However, before I thought of that, I decided to use the normal watchdog timer code that is supported for the Arduino; it didn't work.
It appears the Ardweeny uses the standard bootloader for the Arduino Duemilanove which doesn't support the watchdog timer properly. Easy, just replace the bootloader with the one developed by Lady Ada right? Except, I couldn't find the hex file for it. I spent a couple of hours looking around the web for it and just couldn't find the darn thing. I know it's out there, people say they use it and have burned it into their roms, but I couldn't locate it. Finally, I just gave up and got the optiboot loader for the Arduino Uno and loaded it on.
People talk about how the first of optiboot loaders had a number of problems and they have since been fixed, but I'm here to testify that it's pretty darn hard to find one that has the various problems fixed that you can load on a board. After trying several of them I finally found one that actually works. Version 4.4 of the optiboot loader will burn into an Ardweeny and works just fine. It supports the higher loading speed, is considerably smaller and supports the watchdog timer. I got it here as text and simply copied and pasted it into a hex file. Then I used an ISP (In-circuit Serial Programmer, specifically Lady Ada's USBTinyISP) to program it into the Ardweeny.
However, the Ardweeny doesn't have an ISP plug. That means you have to figure out which pins from the programmer go to which pins on the Ardweeny and jumper them to it. However, that's not too hard and only drove me nuts for around an hour or so, after all it's only six wires.......
I really like this solution. It gives me the very latest and greatest bootloader on the Ardweeny and totally supports the watchdog. Now, some more testing to see which of my parts is temperature sensitive, I may have to break down and buy some freeze spray.
It appears the Ardweeny uses the standard bootloader for the Arduino Duemilanove which doesn't support the watchdog timer properly. Easy, just replace the bootloader with the one developed by Lady Ada right? Except, I couldn't find the hex file for it. I spent a couple of hours looking around the web for it and just couldn't find the darn thing. I know it's out there, people say they use it and have burned it into their roms, but I couldn't locate it. Finally, I just gave up and got the optiboot loader for the Arduino Uno and loaded it on.
People talk about how the first of optiboot loaders had a number of problems and they have since been fixed, but I'm here to testify that it's pretty darn hard to find one that has the various problems fixed that you can load on a board. After trying several of them I finally found one that actually works. Version 4.4 of the optiboot loader will burn into an Ardweeny and works just fine. It supports the higher loading speed, is considerably smaller and supports the watchdog timer. I got it here as text and simply copied and pasted it into a hex file. Then I used an ISP (In-circuit Serial Programmer, specifically Lady Ada's USBTinyISP) to program it into the Ardweeny.
However, the Ardweeny doesn't have an ISP plug. That means you have to figure out which pins from the programmer go to which pins on the Ardweeny and jumper them to it. However, that's not too hard and only drove me nuts for around an hour or so, after all it's only six wires.......
I really like this solution. It gives me the very latest and greatest bootloader on the Ardweeny and totally supports the watchdog. Now, some more testing to see which of my parts is temperature sensitive, I may have to break down and buy some freeze spray.
Acid Pump - New Pump Head Arrived
As I mentioned before, the acid pump fittings melted and the company was sending me a new pump head under warranty. It came in and I got around to installing it, the day before yesterday. Wasn't hard, and it seemed to work. I took a look at the fittings and there are some serious shortcomings to the way they work. Yes, I realize I'm not a mechanical or hydraulic engineer so my opinion is suspect. But, there's some common sense things that should have been thought of here.
First, the materials they use simply shouldn't dissolve when they are used for purposes clearly spelled out in their flyers. They specifically say it will handle concentrated HCl...the pump does, but the nuts that hold the hoses in place don't, they melt. They say the self-priming height is 5 feet, it's about a foot, maybe a little more. If the pump loses prime, you have to lift the bucket up to the height of the pump to get it to prime. The darn thing has a serious tendency to leak. The way the fittings screw into the pump head doesn't allow the O ring to compress well and great care has to be taken to make sure it seals.
But the thing that ruined the previous set of fittings is the simple nipple that holds the tubing to the pump head. This is what it looks like.
First, the materials they use simply shouldn't dissolve when they are used for purposes clearly spelled out in their flyers. They specifically say it will handle concentrated HCl...the pump does, but the nuts that hold the hoses in place don't, they melt. They say the self-priming height is 5 feet, it's about a foot, maybe a little more. If the pump loses prime, you have to lift the bucket up to the height of the pump to get it to prime. The darn thing has a serious tendency to leak. The way the fittings screw into the pump head doesn't allow the O ring to compress well and great care has to be taken to make sure it seals.
But the thing that ruined the previous set of fittings is the simple nipple that holds the tubing to the pump head. This is what it looks like.
There are several of these, one each for suction, discharge and injection, and each of them have the same shortcoming. I took this drawing directly from their installation manual:
Notice where the tubing is pressed onto the fitting? This is only about 3/8 inch long and has no barbs; it relies on the compression nut to hold it in place and the compression nut will bottom out on the threads so you can't actually compress it enough. Any deterioration to the tubing such as aging for a couple of months under pressure and it will start to leak. So, between the bottom of the fitting not compressing an O ring that should seal it and the compression nut not being tight enough on the tubing, it will fail over time. Also, notice in the picture above that the nut is a slightly different color? The nut is obviously made from a different material than the rest of the fitting. Shouldn't the nut have the same chemical resistance as the rest of the assembly?? Some engineer somewhere didn't think so. There is a different compression nut available:
It's a different color and probably a different material. This one might work, but they sell it in lots of a hundred. HUNDRED?? What the heck would anyone need a hundred of these things for? Do they fail often enough that one would need a hundred on the shelf as replacements? Maybe, just maybe I answered my own question......
I spent a bunch of money on this device and I don't intend to just give up on it. It's likely that I can find valves that will work and don't have the shortcomings I detailed above, or maybe a little redneck modification can over come the problems. For example, if I wrapped the threads of the fittings with teflon tape so the threads sealed, the O ring problem might go away since it would serve only as a backup to the threads being sealed. Similarly, I could wrap the tubing with teflon tape to increase the pressure from the compression nut to help overcome the sealing problem. Maybe drill out the nipple where the tubing slides on and thread in a barbed fitting for the tubing?
I haven't given up yet.
Monday, November 28, 2011
Rocky Soil in the Desert
My relatives and friends that don't live in the desert don't understand why I complain all the time about the rocky soil. Those city folk that live on asphalt and the country folk that live on land farmed for generations don't think about what the dirt is really like in the desert where man and nature have conspired against me.
Today I am working on a continuing project; a deck on the East side of my house. I didn't have it built when the house was constructed because I wanted to move in. I was living in a motorhome on the edge of town commuting out to the house each day and that was getting old, so I had the house inspected and moved in without several patio areas. This is the largest and will take the most time and money to build. Enough background, I had to dig a hole to put in a support to keep the deck from bouncing and sagging. This is one of those pre-made ten inch concrete things that you put under things to hold it down in the wind and support it when walked on. Normal stuff.
So I dug a hole roughly 18 inches square and 12 or so inches deep to hold the support; here's a picture of it.
Today I am working on a continuing project; a deck on the East side of my house. I didn't have it built when the house was constructed because I wanted to move in. I was living in a motorhome on the edge of town commuting out to the house each day and that was getting old, so I had the house inspected and moved in without several patio areas. This is the largest and will take the most time and money to build. Enough background, I had to dig a hole to put in a support to keep the deck from bouncing and sagging. This is one of those pre-made ten inch concrete things that you put under things to hold it down in the wind and support it when walked on. Normal stuff.
So I dug a hole roughly 18 inches square and 12 or so inches deep to hold the support; here's a picture of it.
No big deal right? Well, this little hole took me a couple of hours to dig. Why?? well, here's the pile of rocks I got out of this one hole:
I put the framing hammer there to give you a sense of scale. There's enough rock there that I couldn't possibly fit them back into the hole. Each one of them had to be pried out of the ground with a 6 foot, tempered steel rock bar. There wasn't enough dirt taken out of the hole to fill it back up even after I put the 10 by 10 hunk of concrete in it. It was all rock like this with coarse sand holding them in place.
Shovels are for moving the coarse sand around, picks are for loosening the rocks a bit, and rock bars are for leveraging them loose enough to lift out of the hole. You DON'T just go outside and dig a hole, it's a major undertaking.
Now, on to the next board....
Acid Pump Problems, Part 2
Called Hanna Instruments today about the pump melting. They were polite and friendly, but didn't totally set my mind at ease. They were willing to send me a new pump, but I explained that it appeared the fittings were the problem, not the pump itself. They took a look at the picture in the previous post and are sending me a new pump head with the fittings. I'll give it a shot.
However, these fittings are the only ones they have, and if the new ones start to melt, there is no other option available from them. I'll get the new ones, install them, and see what happens. It's not a comfortable feeling knowing that I could be looking at another failure in a couple of months.
However, these fittings are the only ones they have, and if the new ones start to melt, there is no other option available from them. I'll get the new ones, install them, and see what happens. It's not a comfortable feeling knowing that I could be looking at another failure in a couple of months.
Friday, November 25, 2011
Acid Pump - Problems.
I've had the acid pump I put together and controlling remotely working for a while now and it has already started giving me trouble. The pump itself is fine, but the check valve fittings are starting to dissolve. DISSOLVE??? WTF??
This is a chemical dosing pump that should handle acids as strong as they make them. It even says that it will handle hydroflouric acid, you know, that stuff that dissolves human bodies on TV? I shut it off and will call the company after the holiday to see what the heck is going on. The tubing is HDPE ( high density polyethylene) and it is handling the acid just fine. The pump body and mechanism is handling the acid just fine. The stupid valve fittings are the problem.
Here's a picture of the problem:
This is a chemical dosing pump that should handle acids as strong as they make them. It even says that it will handle hydroflouric acid, you know, that stuff that dissolves human bodies on TV? I shut it off and will call the company after the holiday to see what the heck is going on. The tubing is HDPE ( high density polyethylene) and it is handling the acid just fine. The pump body and mechanism is handling the acid just fine. The stupid valve fittings are the problem.
Here's a picture of the problem:
If you click on the picture, you'll get a bigger version where you can really see what's happening. Annoying isn't it?
Thursday, November 24, 2011
Measuring temperature, what not to do.
So, it was about 62F outside and an overcast day. I checked the temperature coming from my outdoor temperature sensor and it said 75F. I started checking the wall and put a thermometer near the device. It seems the house is actually radiating a little heat through the wall outlet it's plugged into. This won't make any difference in the summer since the outdoor heat is so much higher than the indoor heat, but in the winter it will throw all my readings off. Guess I'll build one of those little houses that hold sensors out in the yard and paint it white. I'll run power into it and that way I can have other devices in there if I want them.
I'll also seal the outlet. R twenty something insulation in the walls and an outlet gets overlooked. Spray foam, here I come.
I'll also seal the outlet. R twenty something insulation in the walls and an outlet gets overlooked. Spray foam, here I come.
Saturday, October 29, 2011
The 2560 Board is Not So Stupid Anymore
As I noted here, the Arduino 2560 has a couple of problems right out of the box. The bootloader will refuse to load any sketch(program) that has three exclamation points in row in it. Things like Serial.print("hello!!!"); will lock the loader up and it never completes. This is insidious since the three exclamation points can be in data. Even the compiler can create this. So, your sketch just won't load.
After complaining publicly about this a couple of folk stepped up and fixed it so that this problem has been solved. You have to burn a new boot loader, but that's not too hard. The file I used is available here. It's a hex file, so copy, paste and save it as a .hex file using notepad.
However, they didn't address the problem of the watchdog timer. I've been using timer three to work around the problem, but I didn't like that solution much. Timer three is a nice general purpose timer and messing with it can affect PWM operations, so I've been thinking about how to solve it. I got a clue today on the Arduino forum and put together some code that solves this problem for me with a side benefit. I can have watchdog timers that exceed the 8 second limit in the hardware as well.
Here is the code, have fun with it.
#include <avr/wdt.h>
unsigned long resetTime = 0;
#define TIMEOUTPERIOD 5000 // You can make this time as long as you want,
// it's not limited to 8 seconds like the normal
// watchdog
#define doggieTickle() resetTime = millis(); // This macro will reset the timer
void(* resetFunc) (void) = 0; //declare reset function @ address 0
void watchdogSetup()
{
cli(); // disable all interrupts
wdt_reset(); // reset the WDT timer
MCUSR &= ~(1<<WDRF); // because the data sheet said to
/*
WDTCSR configuration:
WDIE = 1 :Interrupt Enable
WDE = 1 :Reset Enable - I won't be using this on the 2560
WDP3 = 0 :For 1000ms Time-out
WDP2 = 1 :bit pattern is
WDP1 = 1 :0110 change this for a different
WDP0 = 0 :timeout period.
*/
// Enter Watchdog Configuration mode:
WDTCSR = (1<<WDCE) | (1<<WDE);
// Set Watchdog settings: interrupte enable, 0110 for timer
WDTCSR = (1<<WDIE) | (0<<WDP3) | (1<<WDP2) | (1<<WDP1) | (0<<WDP0);
sei();
Serial.println("finished watchdog setup"); // just here for testing
}
ISR(WDT_vect) // Watchdog timer interrupt.
{
if(millis() - resetTime > TIMEOUTPERIOD){
Serial.println("This is where it would have rebooted"); // just here for testing
doggieTickle(); // take these lines out
// resetFunc(); // This will call location zero and cause a reboot.
}
else // these lines should
Serial.println("Howdy"); // be removed also
}
void setup(){
watchdogSetup();
Serial.begin(57600);
Serial.println("Hello, in setup");
}
int firstTime = true;
void loop() {
if (firstTime){
firstTime = false;
Serial.println("In loop waiting for Watchdog");
}
if(millis() - resetTime > 2000){
//doggieTickle(); // if you uncomment this line, it will keep resetting the timer.
}
}
And yes, I know about the millisecond timer rolling over. That is left as an exercise for the student.
Update Feb 2, 2012: I've gotten comments both here and in email that the routine above isn't truly a watchdog timer. OK, facts are that it is as good a simulation as one can get in software. Sure, the code could get overwritten and fail if one has a bad enough bug, but that's unlikely. When it fires, it goes to location zero which is in ROM and can't be over written which will reload the RAM code and start all over. I've been using it for months now without a problem. Just put it at the beginning of your code and it should be fine. Eventually, someone will correct the bootloader and all will be well.
Update May 30, 2012: The bootloader problems have been solved and there is a new loader that can be put on the board to avoid these problems. I post about the solution here.
After complaining publicly about this a couple of folk stepped up and fixed it so that this problem has been solved. You have to burn a new boot loader, but that's not too hard. The file I used is available here. It's a hex file, so copy, paste and save it as a .hex file using notepad.
However, they didn't address the problem of the watchdog timer. I've been using timer three to work around the problem, but I didn't like that solution much. Timer three is a nice general purpose timer and messing with it can affect PWM operations, so I've been thinking about how to solve it. I got a clue today on the Arduino forum and put together some code that solves this problem for me with a side benefit. I can have watchdog timers that exceed the 8 second limit in the hardware as well.
Here is the code, have fun with it.
#include <avr/wdt.h>
unsigned long resetTime = 0;
#define TIMEOUTPERIOD 5000 // You can make this time as long as you want,
// it's not limited to 8 seconds like the normal
// watchdog
#define doggieTickle() resetTime = millis(); // This macro will reset the timer
void(* resetFunc) (void) = 0; //declare reset function @ address 0
void watchdogSetup()
{
cli(); // disable all interrupts
wdt_reset(); // reset the WDT timer
MCUSR &= ~(1<<WDRF); // because the data sheet said to
/*
WDTCSR configuration:
WDIE = 1 :Interrupt Enable
WDE = 1 :Reset Enable - I won't be using this on the 2560
WDP3 = 0 :For 1000ms Time-out
WDP2 = 1 :bit pattern is
WDP1 = 1 :0110 change this for a different
WDP0 = 0 :timeout period.
*/
// Enter Watchdog Configuration mode:
WDTCSR = (1<<WDCE) | (1<<WDE);
// Set Watchdog settings: interrupte enable, 0110 for timer
WDTCSR = (1<<WDIE) | (0<<WDP3) | (1<<WDP2) | (1<<WDP1) | (0<<WDP0);
sei();
Serial.println("finished watchdog setup"); // just here for testing
}
ISR(WDT_vect) // Watchdog timer interrupt.
{
if(millis() - resetTime > TIMEOUTPERIOD){
Serial.println("This is where it would have rebooted"); // just here for testing
doggieTickle(); // take these lines out
// resetFunc(); // This will call location zero and cause a reboot.
}
else // these lines should
Serial.println("Howdy"); // be removed also
}
void setup(){
watchdogSetup();
Serial.begin(57600);
Serial.println("Hello, in setup");
}
int firstTime = true;
void loop() {
if (firstTime){
firstTime = false;
Serial.println("In loop waiting for Watchdog");
}
if(millis() - resetTime > 2000){
//doggieTickle(); // if you uncomment this line, it will keep resetting the timer.
}
}
And yes, I know about the millisecond timer rolling over. That is left as an exercise for the student.
Update Feb 2, 2012: I've gotten comments both here and in email that the routine above isn't truly a watchdog timer. OK, facts are that it is as good a simulation as one can get in software. Sure, the code could get overwritten and fail if one has a bad enough bug, but that's unlikely. When it fires, it goes to location zero which is in ROM and can't be over written which will reload the RAM code and start all over. I've been using it for months now without a problem. Just put it at the beginning of your code and it should be fine. Eventually, someone will correct the bootloader and all will be well.
Update May 30, 2012: The bootloader problems have been solved and there is a new loader that can be put on the board to avoid these problems. I post about the solution here.
Friday, October 28, 2011
Winter is coming
I've had the fancy thermostats for a year now and they have been updated as new capabilities were needed and work pretty darn well. I've had the house controller for several months and it is still growing and worked pretty well during the summer. Now, winter is coming and I have to think and experiment with the various controls a little differently.
For example when it is well over 90F outside, 70F is too cold inside for me. When it is 48F outside, will 70F still feel cold or will it be warm? Especially since I'll actually be wearing clothes and maybe even shoes. I don't know.
The current plan is to set the house for heating and the inside temp at 70F with recirculation and see what happens. I can test the heat and such to see what is the most comfortable and least costly. I like a cool room to sleep, so there may be different settings depending on the outside temperature.
So, maybe I'll turn the thermostats completely off if the outside temperature is between 70F and 80F and then adjust the inside temperature based on outside temp.
I just don't know and will have to research this over the coming winter. Wish me luck.
On another front, the house controller went through a major set of changes this last week and a half. I found a way to make the internet connection and response much, much better. The Arduino library will send one byte packets if you use certain facilities. This means each single byte of real data sent has about 50 bytes of overhead to get it to the destination. This is not a bug in the Arduino code, it's a pretty nice feature that allows new users a lot of flexibility. For me, it was something that was causing me a lot of trouble and had to go. It was simple to fix, just use client.write() instead of client.print(). This means I have to do my own formatting of data for display, but I was almost totally doing that already. So, I went through all the code and changed this. Now, the ethernet is very reliable and seems to work every single time.
I took the special code around Pachube out and modified it to allow for errors. Pachube has been incredibly reliable, but sometimes it takes more than 10 seconds to respond to a request. That would exceed my watchdog timer and cause the device to reset. So, I changed the ethernet library to allow me to set a time limit on connect() requests and time the Pachube connection out in 5 seconds. This is no big deal since I'll be back to that point in a minute anyway and Pachube seldom fails to respond in that amount of time. This is a nice solution because I can also time other interactions with the internet to prevent hanging up waiting for a connection to time out. The timeout for something like this seems to be around 30 seconds. For me, that's too long to wait.
The problem with this is that I now have a custom ethernet library. So, when the Arduino folks come out with a better IDE, I'll have to fit my changes into their stuff. That also means I have to keep careful track of my changes and make sure I have them all the time. I guess I'll have to look into cloud storage of my various code pieces for the devices and IDE. It's getting to the point now where I have a ton of time invested in these controlling devices and I'd hate to lose it all to a hard disk crash.
Also, the fixes to the internet interaction turned up another problem. The way I'm using the XBees allows for collisions. The more of them I have, the more likely collisions are to happen. Each collision causes a packet to get messed up and then my packet decoder will mess up. Yes, I know that each packet has a checksum, but what they don't tell you is that the XBee sending broadcasts will split a broadcast between two or more packets. That means each part of a packet has the correct checksum. Sigh, hard to find problem that was relatively easy to fix. Since I have packets constantly coming telling the status of the devices, I just have to check for the packet for consistency and dump it if it fails. There'll be another one in a minute or less. So, I check the incoming packets and discard the ones that have been fragmented. This works fine now and my little box has been running perfectly for a few days. The only reboot that has happened is the one I force at midnight every day to just clean it out.
The really, really cool thing about this is that I CAN do it. See, prior to starting this experiment, I couldn't control any of this, much less wonder what to do if the outside temperature went up or down. People just don't understand what is actually possible and are constantly frustrated by high bills or uncomfortable environments. My frustrations are related to how I want to control it, not whether I can or not.
Nice.
For example when it is well over 90F outside, 70F is too cold inside for me. When it is 48F outside, will 70F still feel cold or will it be warm? Especially since I'll actually be wearing clothes and maybe even shoes. I don't know.
The current plan is to set the house for heating and the inside temp at 70F with recirculation and see what happens. I can test the heat and such to see what is the most comfortable and least costly. I like a cool room to sleep, so there may be different settings depending on the outside temperature.
So, maybe I'll turn the thermostats completely off if the outside temperature is between 70F and 80F and then adjust the inside temperature based on outside temp.
I just don't know and will have to research this over the coming winter. Wish me luck.
On another front, the house controller went through a major set of changes this last week and a half. I found a way to make the internet connection and response much, much better. The Arduino library will send one byte packets if you use certain facilities. This means each single byte of real data sent has about 50 bytes of overhead to get it to the destination. This is not a bug in the Arduino code, it's a pretty nice feature that allows new users a lot of flexibility. For me, it was something that was causing me a lot of trouble and had to go. It was simple to fix, just use client.write() instead of client.print(). This means I have to do my own formatting of data for display, but I was almost totally doing that already. So, I went through all the code and changed this. Now, the ethernet is very reliable and seems to work every single time.
I took the special code around Pachube out and modified it to allow for errors. Pachube has been incredibly reliable, but sometimes it takes more than 10 seconds to respond to a request. That would exceed my watchdog timer and cause the device to reset. So, I changed the ethernet library to allow me to set a time limit on connect() requests and time the Pachube connection out in 5 seconds. This is no big deal since I'll be back to that point in a minute anyway and Pachube seldom fails to respond in that amount of time. This is a nice solution because I can also time other interactions with the internet to prevent hanging up waiting for a connection to time out. The timeout for something like this seems to be around 30 seconds. For me, that's too long to wait.
The problem with this is that I now have a custom ethernet library. So, when the Arduino folks come out with a better IDE, I'll have to fit my changes into their stuff. That also means I have to keep careful track of my changes and make sure I have them all the time. I guess I'll have to look into cloud storage of my various code pieces for the devices and IDE. It's getting to the point now where I have a ton of time invested in these controlling devices and I'd hate to lose it all to a hard disk crash.
Also, the fixes to the internet interaction turned up another problem. The way I'm using the XBees allows for collisions. The more of them I have, the more likely collisions are to happen. Each collision causes a packet to get messed up and then my packet decoder will mess up. Yes, I know that each packet has a checksum, but what they don't tell you is that the XBee sending broadcasts will split a broadcast between two or more packets. That means each part of a packet has the correct checksum. Sigh, hard to find problem that was relatively easy to fix. Since I have packets constantly coming telling the status of the devices, I just have to check for the packet for consistency and dump it if it fails. There'll be another one in a minute or less. So, I check the incoming packets and discard the ones that have been fragmented. This works fine now and my little box has been running perfectly for a few days. The only reboot that has happened is the one I force at midnight every day to just clean it out.
The really, really cool thing about this is that I CAN do it. See, prior to starting this experiment, I couldn't control any of this, much less wonder what to do if the outside temperature went up or down. People just don't understand what is actually possible and are constantly frustrated by high bills or uncomfortable environments. My frustrations are related to how I want to control it, not whether I can or not.
Nice.
Friday, October 14, 2011
Playing with Graphs part 2
I did it. With a heck of a lot of help from the support staff at Pachube, I can now read the data for whatever period I want and graph it. I don't have an illustration on the web yet because it takes time to gather the data and people get tired of waiting and just click off somewhere else.
However, this is so cool. I can sample data at one minute intervals for, say an hour, any hour, any day, for the last year (or however long I have had the sensor running) and look at it in detail. Ever wonder what happens when the clouds block the sun from your solar heater sensor? What happens to the pump power demand when the sun comes back. I know all about this now.
However, this is so cool. I can sample data at one minute intervals for, say an hour, any hour, any day, for the last year (or however long I have had the sensor running) and look at it in detail. Ever wonder what happens when the clouds block the sun from your solar heater sensor? What happens to the pump power demand when the sun comes back. I know all about this now.
Saturday, October 8, 2011
Playing with Graphs
I'm just testing the Google visualization library. The chart below should show the last few hours of power usage and temperature changes. This is something I want to do with the data I collect around the house and this is my first javascript code to try it. I currently can't get more than 5 hours of data back from Pachube without it paging on me. This will take some thought.
Friday, September 30, 2011
Acid Pump - Level Indicator Working!
Twice now I've had the level indicator work. It worked exactly as I wanted it to. It tripped at around a gallon so I have a couple of days to actually do something about it, and the House Controller indicated low so that I didn't even have to walk by the injector to tell what was going on. I only added a gallon when it tripped so I could see that it worked when the gallon was gone. So, anyone wanting to try something like this, here's a working example.
Now, I have something else to brag about. On to the next project.
Now, I have something else to brag about. On to the next project.
Thursday, September 22, 2011
Long Term Data Collection
I had an interesting failure yesterday. Something somewhere stopped working and my data stopped being recorded. I have no idea if my devices stopped sending or Pachube stopped receiving but something stopped working. This chart illustrates it:
The ... part is where data was not being saved. So, there was a period of several hours where data just disappeared into a black hole. My little devices don't have enough storage to hold something like that so I don't have a clue what went wrong. Oh well, it's not like I can't interpolate the actual usage from experience, but it really is annoying.
Thursday, September 15, 2011
Acid Pump Level Indicator Try #2
The glue dried on my latest attempt at measuring the level of acid in my acid injector. This time it seems to be working. I used the same float, but hooked it to a rod and led the rod out of the bucket so I could put a switch outside the acidic environment. Since this one looks like it will work for a while, I'm putting it on my Swimming Pool page, or click here to go directly there.
Wednesday, September 14, 2011
Acid Pump, What Not to Do
So, I have the acid pump and it runs every other day; now I want to know when it is getting low so I can pour some more acid in it. I looked at various methods and asked around for suggestions. Most of the answers I got, although really good suggestions, wouldn't work. Ultrasonic had to have a clear path to the liquid level, and the acid fumes would rot the sensors. Capacitance sensors were way too expensive except for the one you can build from foil and sensitive circuits, but they won't last when exposed to the weather. Weight sensors under the bucket were either too expensive or wouldn't survive the outdoors. Conductors through the side of the bucket would dissolve eventually in the acid. Various float devices have metal parts that will rot in the acid. An external tube with a magnetic float inside will probably leak since the input is below the level of the acid. However, this gave me an idea.
Suppose I suspended a float from a string through the lid of the bucket and hooked the string to a lever on a microswitch? That actually sounded like it might work. There would be no weight on the string until the float was down far enough and then it would pull the switch down. So, I needed to find some string that wouldn't dissolve in the acid as well as a float. The float was easy; toilet floats are made as cheaply as possible and that suits me just fine because a cheap plastic float that has no metal components will survive the acid. Home Depot had one for a few dollars so I picked one up. I looked for PVC string, twine or cord and came up empty, but there is such a thing as Teflon string for sealing plumbing parts. I ordered this stuff:
Suppose I suspended a float from a string through the lid of the bucket and hooked the string to a lever on a microswitch? That actually sounded like it might work. There would be no weight on the string until the float was down far enough and then it would pull the switch down. So, I needed to find some string that wouldn't dissolve in the acid as well as a float. The float was easy; toilet floats are made as cheaply as possible and that suits me just fine because a cheap plastic float that has no metal components will survive the acid. Home Depot had one for a few dollars so I picked one up. I looked for PVC string, twine or cord and came up empty, but there is such a thing as Teflon string for sealing plumbing parts. I ordered this stuff:
Nice product for packing plumbing threads. Should be just the ticket. So, I rigged up a microswitch in one of the duplex boxes that will protect it, attached the string to the float and tied it off to the switch. After modifying the code in the timer to sense the switch, I was ready to try it out.
The switch is in the gray box and you can barely see the Teflon string going into the bucket through a little hole in the top. Here is an inside view of the float:
Simple. The float will only pull on the microswitch when the level is low enough and that should survive the environment. But....
The string dissolved in the acid. WTF? This is Teflon, Teflon doesn't dissolve in acids. So I tested a bit more of the string and sure enough, it flat out dissolved in the acid. Drug out my microscope and took a look at it. It appears to be string coated with a thick layer of Teflon dust or grease or something. Should work fine for sealing and lubricating plumbing joints (what it was actually designed to do), but the string just goes away in a concentrated acid bath. So, I got some Teflon tape (had a roll of that already) and used it instead. I hooked it to the float and then spun the float to twist the tape into a thread. Worked nicely and then hooked the thread to the switch. Now I was getting somewhere.
However, the float would move around and bind up on the tubing to the intake for the pump. The thread bound up on the hole through the lid and the hole in the bottom of the duplex box. The Teflon would come untied from the microswitch too easily and it was horrible trying to adjust, Teflon is slick and the knots would untie themselves!
Some great ideas just don't work when you actually try them out.
Wednesday, August 31, 2011
Acid Injection Pump
In the years I've had this pool I have gotten increasingly frustrated with having to check it often to be sure the pH is correct. Chlorine generators on salt water pools tend to raise the pH a little each time they run. The chemistry of this is described out there, but us pool owners have to deal with it. The sad part is that the pool companies don't tell us in advance. I would still have a salt pool, but it would have been nice to know what to expect going in.
Anyway, I finally decided to build an acid injection system and stop having to worry about the pH all the time. It is described on the Swimming Pool tab above, or click here to go direct to the description. This is yet another ongoing project that will evolve over time as I get or steal new ideas.
Anyway, I finally decided to build an acid injection system and stop having to worry about the pH all the time. It is described on the Swimming Pool tab above, or click here to go direct to the description. This is yet another ongoing project that will evolve over time as I get or steal new ideas.
Tuesday, August 30, 2011
Swimming Pool Fittings (part 5)
First get a union and cut a ring about 3/8 of an inch wide off the end of it. This can be made easier by putting the union on the end of a pipe (no, don't glue it on) and clamp down the pipe. I used a reciprocating saw for this, but a hack saw will work fine.
Now glue it to the end of the fitting you want to convert to a barb. I used a street ell in this example since that is the fitting I need. You can use a piece of pipe just as easily. However, there is a possible problem. The recommended way to glue these is to use a primer and then the glue. That can fall apart when you put it under pressure. Especially if you have cyclically changing pressure like a pump turning on and off at various times. Exactly what I want to use it for. Well, a call to the glue company solved this problem for me. Use the "Red Hot" version of the glue WITHOUT any primer. It seems the primer and glue combination is actually weaker than the regular old glue used alone and to get a really good bond, use the "Red Hot" version. Some areas require that you use the primer; if that's one of your problems, just paint it with primer after you're done. They can't tell the difference.
Wait an hour for the glue to set up some, go to the bench grinder and bevel the ring. If you don't have a bench grinder, use a rasp and finish it off with sand paper. If you don't have a rasp, go to the store and get one.
This is the end result. The barb can be tailored to fit the flexible tube exactly the way you want it to and it will hold. My solar heater is back online running just fine at less than 8 pounds of pressure. Here is a picture of the 'real' fitting that is needed. If you can find this thing, it will make your life easier, but none, that is exactly zero, of the places in town that I managed to contact had even heard of anything like this. If it wasn't for the price of gasoline I'd take this thing to each of the stores and show them that it exists and they should carry a couple of them. But, I noticed during this project that Home Depot doesn't even carry a 2 inch street ell in their store stock; I had to go to either Ace Hardware or Lowe's to get one. It's also nice to know that I can take this fitting and reuse it even though I cut it off the end of a pipe and it has a piece of 2 inch inside of it. All I have to do is use either an inside coupler or a pipe extender to hook it up. These two pieces of plumbing apparatus are basically unknown and not carried by stores. So, this project has bumped up my experience level and now, I pass it on to you.
Now, I promise I won't talk about fittings again until I get the flexible tubing in that I ordered.
Next project??
Saturday, August 27, 2011
Swimming Pool Fittings (part 4)
OK, I think I have the plumbing problem for solar heating on my swimming pool under control. The latest set of plumbing parts came in and I've been testing fit and construction. Everything seems to work. I can create a connection that is short and will hold a flexible hose clamped around it just fine. I used the pipe extender I mentioned below. I'm still at least a week away from having the proper flexible tubing, but I only need that for one joint because I already have enough for the rest.
Shown above is the fitting before I cut some of it off and then how it can be inserted into fittings and pipe to make a secure connection to a flexible tube. This way I can construct a fitting anyplace I want to, like the end of a pipe or a street ell. I hope other folks that have to deal with this stumble across this set of posts because this kind of thing can be a real pain.
This will all be installed day after tomorrow early in the morning. It's 135 degrees F on my roof right now and there's no way I'm going up there. So, now I move on to the automatic acid injector project for the pool. The injector is actually running right now, but I haven't started writing it up.
Shown above is the fitting before I cut some of it off and then how it can be inserted into fittings and pipe to make a secure connection to a flexible tube. This way I can construct a fitting anyplace I want to, like the end of a pipe or a street ell. I hope other folks that have to deal with this stumble across this set of posts because this kind of thing can be a real pain.
This will all be installed day after tomorrow early in the morning. It's 135 degrees F on my roof right now and there's no way I'm going up there. So, now I move on to the automatic acid injector project for the pool. The injector is actually running right now, but I haven't started writing it up.
Friday, August 19, 2011
Swimming Pool Fittings (part 3)
For crying out loud. In my continuing battle against stupid 2 inch fittings for a solar pool heater, I've had some successes and some failures. Mostly failures. As I described previously, these things have to be fitted together with flexible hose so they can move a little and to allow them to be taken apart for servicing the roof. However, nobody wants to sell the connectors needed to hook a pressurized 2 inch pipe to a 2.375 hose. I finally got in a set of barb fittings that turned out to be too small, so I ordered another set that were the right size for the hose, but a little loose on the pipe.
The white one is a 2" x 2" barb fitting. It is the same size as 2" pipe, so you use a coupler, but the barb is too small. The other one is a 2.5" x 2.5" barb fitting and will fit around the 2" pipe with 1/10" of free play. Turns out that this tiny bit of play is enough to cause it to fail if you're not totally careful about gluing it in place, but the barb is the right size. Since this setup will operate unattended for days at a time pumping hundreds of gallons of water around, I'd like to feel a little better about it. So, I tried the fitting below that is called a "pipe extender".
It is designed to fit INSIDE a 2" pipe and stick out so you can attach something to it. The fitting was designed for situations where you just don't have enough room or a pipe is broken off in concrete or some other bulkhead. It's basically a repair fitting. I sawed off some of the end of it and, if you push the uncut tube into a pipe a ways, leaving a separation, you have a nice place to put a hose clamp. I can't post a picture of this right now, it's installed on the roof and I didn't take my camera up there. However, I used up all my fittings and stuff experimenting so I'll have to get more and I'll get some pictures of the combination then.
Interesting items for the do-it-yourselfer: All of the fittings above are hard to find. The various chain hardware stores don't carry them, and I couldn't find them at plumbing supply houses either. The plumbing supply houses didn't even have a clue what I was talking about. They were in one supplier's catalog, but they cost twice what I paid and I'd have to wait a couple of weeks to get them. Even Grainger, the huge wholesaler didn't have them in their catalogs. When you start adding fittings to PVC pipe, you have to cut something off; that shortens the pipe and gives you less room to work. Then you add stuff that lengthens the pipe and you run out of space the other way. Be darn sure to look at it closely and do the very best you can to figure out what is needed before you order stuff. Else, you'll be stringing the job out over weeks like I am. But, on the bright side, the "pipe extender" fitting above can be a life saver because it fits INSIDE the two inch pipe and doesn't take a lot of room; it also can be partly inserted to make up for being a little short on something else. There's also something called an "inside coupler", this fitting connects two pipes by going INSIDE them. Saves space and allows the reuse of a fitting that you had to cut off. Nice little fittings to keep around; I'm going to order a few of them just for repair purposes and keep them on hand.
More later on this little plumbing drama (after the next set of parts comes in the mail)...
The white one is a 2" x 2" barb fitting. It is the same size as 2" pipe, so you use a coupler, but the barb is too small. The other one is a 2.5" x 2.5" barb fitting and will fit around the 2" pipe with 1/10" of free play. Turns out that this tiny bit of play is enough to cause it to fail if you're not totally careful about gluing it in place, but the barb is the right size. Since this setup will operate unattended for days at a time pumping hundreds of gallons of water around, I'd like to feel a little better about it. So, I tried the fitting below that is called a "pipe extender".
It is designed to fit INSIDE a 2" pipe and stick out so you can attach something to it. The fitting was designed for situations where you just don't have enough room or a pipe is broken off in concrete or some other bulkhead. It's basically a repair fitting. I sawed off some of the end of it and, if you push the uncut tube into a pipe a ways, leaving a separation, you have a nice place to put a hose clamp. I can't post a picture of this right now, it's installed on the roof and I didn't take my camera up there. However, I used up all my fittings and stuff experimenting so I'll have to get more and I'll get some pictures of the combination then.
Interesting items for the do-it-yourselfer: All of the fittings above are hard to find. The various chain hardware stores don't carry them, and I couldn't find them at plumbing supply houses either. The plumbing supply houses didn't even have a clue what I was talking about. They were in one supplier's catalog, but they cost twice what I paid and I'd have to wait a couple of weeks to get them. Even Grainger, the huge wholesaler didn't have them in their catalogs. When you start adding fittings to PVC pipe, you have to cut something off; that shortens the pipe and gives you less room to work. Then you add stuff that lengthens the pipe and you run out of space the other way. Be darn sure to look at it closely and do the very best you can to figure out what is needed before you order stuff. Else, you'll be stringing the job out over weeks like I am. But, on the bright side, the "pipe extender" fitting above can be a life saver because it fits INSIDE the two inch pipe and doesn't take a lot of room; it also can be partly inserted to make up for being a little short on something else. There's also something called an "inside coupler", this fitting connects two pipes by going INSIDE them. Saves space and allows the reuse of a fitting that you had to cut off. Nice little fittings to keep around; I'm going to order a few of them just for repair purposes and keep them on hand.
More later on this little plumbing drama (after the next set of parts comes in the mail)...
Tuesday, August 16, 2011
Swimming Pool Fittings (part 2)
I'm still working on the pool solar heater and it is really getting frustrating. This is not a field frequented by the do-it-yourselfer, except to experiment a little with black water hoses. To connect two solar panels or to connect a panel to a pipe, a person needs a piece of hose that can handle around 40 pounds of pressure and survive in the outdoors. Automotive radiator hoses are designed for this kind of thing, but they are generally smaller than the 2 3/8 (2.375) inches diameter needed to join the panel to a 2 inch plumbing pipe. So, during a search of the web that encountered massive information overload, I found the following possibilities:
Aquatherm/Solar Industries part number 02-0070 @ $6.70 for 4 inch piece.
Dayco 76238 straight radiator hose @ $43.90 for 3 feet.
Gates 24438 straight radiator hose @ $65.00 for 3 feet.
Based on the prices, the Aquatherm hose would be appropriately priced if it wasn't for the shipping. So, the task is to find something that will hold up under the pressure, take the desert outdoor exposure and last a few years. Wrapping the hose in metal will eliminate direct sun deterioration, and if I can find thin stainless, it will help reinforce whatever I wind up with.
Sooooo, looking around the web even more I found out that Dayco is one of the companies that deal directly with Amazon.com. That means that I can order the Dayco hose through Amazon and avoid all the pitfalls of having to drive to several auto parts stores using several gallons of gas, but I still have the problem of not knowing if it will actually work. As luck would have it (sometimes) I happened on a page at Amazon that listed the Dayco hose for 13.13 with a 4 week delivery time. However, as sometimes happens, this page wasn't there in a normal search of the Amazon site for a Dayco 76238; this search turned up the 40+ price. Therefore, being the honest and forthright person that I am, I ordered it quickly before they discovered the mistake.
Aquatherm/Solar Industries part number 02-0070 @ $6.70 for 4 inch piece.
Dayco 76238 straight radiator hose @ $43.90 for 3 feet.
Gates 24438 straight radiator hose @ $65.00 for 3 feet.
Based on the prices, the Aquatherm hose would be appropriately priced if it wasn't for the shipping. So, the task is to find something that will hold up under the pressure, take the desert outdoor exposure and last a few years. Wrapping the hose in metal will eliminate direct sun deterioration, and if I can find thin stainless, it will help reinforce whatever I wind up with.
Sooooo, looking around the web even more I found out that Dayco is one of the companies that deal directly with Amazon.com. That means that I can order the Dayco hose through Amazon and avoid all the pitfalls of having to drive to several auto parts stores using several gallons of gas, but I still have the problem of not knowing if it will actually work. As luck would have it (sometimes) I happened on a page at Amazon that listed the Dayco hose for 13.13 with a 4 week delivery time. However, as sometimes happens, this page wasn't there in a normal search of the Amazon site for a Dayco 76238; this search turned up the 40+ price. Therefore, being the honest and forthright person that I am, I ordered it quickly before they discovered the mistake.
Monday, August 15, 2011
Swimming Pool Fittings
I've been running for a few months with my solar pool heater hooked up for low pressure operation. On the swimming pool tab above I describe how I put a valve in to close off the vacuum break to prevent air getting into the system when the pressure was so low it wouldn't close the break. Well, seems you need to use special fittings when you go to a flexible hose from a two inch pipe. This configuration worked fine for months, then a storm came a loosened something and the pipes blew apart, dumping a few hundred gallons of water on the roof.
A little research shows that one needs to use a barb fitting for this kind of thing, but no one sells them. There is a special adapter to adapt 2 inch pvc pipe to a flexible hose, but none of the plumbing supply places carry them. Solar specialty companies are especially reluctant to talk about them because they want to come out and charge me for a service call.
A little research shows that one needs to use a barb fitting for this kind of thing, but no one sells them. There is a special adapter to adapt 2 inch pvc pipe to a flexible hose, but none of the plumbing supply places carry them. Solar specialty companies are especially reluctant to talk about them because they want to come out and charge me for a service call.
Notice that it has a barb on one end and the other end is the same as two inch pipe. I found one source online that had 2 inch barb fittings, but the barb was too small. I found this out when it arrived. Sigh. Without being able to actually hold something like this in my hand it's tough to work out the details.
Meanwhile, my solar heater is back to the original configuration while I rattle around trying to find the right parts. When I get it working again, I'll post updates on the swimming pool page to show people how to do this kind of thing and NOT lose several hundred gallons from the pool across the roof into the yard.
Monday, July 25, 2011
So, a pack rat got into my swimming pool wiring. I think it was a pack rat because stuff was missing; usually when a normal rat, mouse or squirrel gets to wiring it's all still there, just torn apart. This time large pieces were missing. Took all morning to put it back together and then the pool controller got the famous Goldline burned solder connection problem. See http://www.nocellpower.com/ for a complete description of the problem and solution. Goldline, and now Hayward since they bought the company, have known about this problem literally for years and nothing has been done about it. The darn pool manufacturers sell these things and tell us how good they are. Sigh....
Anyway, I got it all fixed and then cleaned the salt generator and pool and ran the motor on high speed to test everything out. Worked fine, but I forgot to turn the motor back off before the peak period. Timers usually do this for me, but I overrode them to test the pool system. Well, I now have a 2.4 peak demand number for the 45 minutes that I ran the pool. That'll cost me a little bit, but since I have family coming this month, I sort of expected to have a higher bill.
I'm going to have to think about this a bit. There must be a solution to forgetting something like this, it just isn't coming to mind right now. I don't want to constantly turn stuff off to be sure it stays off. Maybe an alarm that sounds when the power gets too high or something. I'm not quite ready to start on the load shedding project I want to do eventually.
Anyway, I got it all fixed and then cleaned the salt generator and pool and ran the motor on high speed to test everything out. Worked fine, but I forgot to turn the motor back off before the peak period. Timers usually do this for me, but I overrode them to test the pool system. Well, I now have a 2.4 peak demand number for the 45 minutes that I ran the pool. That'll cost me a little bit, but since I have family coming this month, I sort of expected to have a higher bill.
I'm going to have to think about this a bit. There must be a solution to forgetting something like this, it just isn't coming to mind right now. I don't want to constantly turn stuff off to be sure it stays off. Maybe an alarm that sounds when the power gets too high or something. I'm not quite ready to start on the load shedding project I want to do eventually.
Tuesday, June 28, 2011
Bragging about the house controller ... again.
I'm actually pretty impressed with the capabilities of these little computers (as if you couldn't tell). I added a short video of the House Controller to the tab above. It isn't real impressive since it only does the mundane stuff like help me save around $100 bucks a month on my power bill, but it is fun and still growing.
Monday, June 20, 2011
House Controller
Finally started documenting the House Controller. I've mentioned it several times, but the darn thing is a ton of code and has been the focus of most of my efforts for a few weeks now. It uses XBee to connect into the network I constructed and has an ethernet board so that I can tell it what to do as well as get information from it. It also uses the ethernet board to control my two web enabled thermostats. I control the pool and the thermostats as well as sample the data from my various devices. I can see the inside temperature, outside temperature, power usage and such from my laptop in a chair anywhere in the world. I use the Arduino TimeAlarm library like a task controller to schedule various events like turning off the A/C at certain times. I also turn the pool pump off in the evening just in case someone (me most likely) left it on.
It has an LCD display that shows various items I like to watch in sequence and a ton of colored LEDs that show the various conversations going on around the house. Naturally, it isn't done yet, not by a long shot. Heck, I've only used about a fifth of the memory on it and I have CPU cycles to spare. I will be expanding it to control the X10 devices I have, and as I add new devices, I'll put in code to handle them.
It's on the House Controller tab above and I'll have pictures so you can see it soon. If you want to sample the web output, click here.
It has an LCD display that shows various items I like to watch in sequence and a ton of colored LEDs that show the various conversations going on around the house. Naturally, it isn't done yet, not by a long shot. Heck, I've only used about a fifth of the memory on it and I have CPU cycles to spare. I will be expanding it to control the X10 devices I have, and as I add new devices, I'll put in code to handle them.
It's on the House Controller tab above and I'll have pictures so you can see it soon. If you want to sample the web output, click here.
Monday, June 6, 2011
Stupid Arduino 2560 Board
The Arduino mega2560 board is cool. It has several rs232 ports and a ton of digital io ports to play with. It has enough ram and rom to make a really nice little computer for coordinating other devices around the house and a really small footprint. The problem is the boot loader is brand new and suffers from a couple of pretty severe bugs. I left town for a few days and the device died. No, I couldn't use the watchdog timer; a bug in the boot loader stopped me. Seems that once you use the watchdog timer, you can't boot back up. Sad. I spent last night working up a timer interrupt to do basically the same thing by timing out and then checking a flag I keep resetting in the main loop.
Actually, this is a pretty elegant solution since I can decide within the timer interrupt service routine if I really want to reboot or not and set flags and such to act on when it comes back on line. However, it is unfortunate that the darn boot loader hasn't been fixed yet.
#include <TimerThree.h>
// pick this library up at http://www.arduino.cc/playground/Code/Timer1
// scroll down the page to the Timer3 entry.
unsigned long resetTimer = 0;
unsigned long timerRate = 2000000; // this is the MICRO seconds to wait between interrupts
int resetWait = 10000; // this variable is in MILLI seconds for how long to wait
// before resetting
void(* resetFunc) (void) = 0; //declare reset function @ address 0
void resetMe(){ // There are certain compiler items that this little trick
resetFunc(); // can over come. Like putting this in a callback.
}
void checkActive(){
// this routine gets called every timerRate (see above)
// and here I check resetWait to see if the device has been
// hung up for resetWait number of milliseconds
if(millis() - resetTimer > resetWait){
Serial.println("Fake Watchdog Timer Reset..........");
resetMe();
}
// Serial.print("Timer3 at "); // uncomment these two lines to watch what's
// Serial.println(millis()); // going on
}
void setup()
{
int errorCount = 0;
Serial.begin(57600);
Serial.println("Initializing..");
}
boolean firsttime = true;
void loop(){
if(firsttime == true){
Serial.print("First time through loop, set up timer");
firsttime = false;
resetTimer = millis();
// set timer3 to expire in 2 seconds. So, every 2 seconds the checkActive routine
// will get called and it will check the resetTimer variable to see how long in
// milliseconds it has been since the variable was last updated.
Timer3.initialize(timerRate); // This sets timer3 to expire in 2 seconds
Timer3.attachInterrupt(checkActive);
// Note that this could have been in the setup() routine above, but
// I put it here because sometimes I have a LOT of stuff to do during
// the setup() routine.
}
// to test this, comment out the line below and the board should reboot.
resetTimer = millis(); // This keeps resetting the timer
}
Update 10/29/2011: I found a way to use the watchdog timer and documented it here. The solution uses the watchdog interrupt as a timer interrupt and works nicely. A little bit more code, but it is actually pretty cool.
Actually, this is a pretty elegant solution since I can decide within the timer interrupt service routine if I really want to reboot or not and set flags and such to act on when it comes back on line. However, it is unfortunate that the darn boot loader hasn't been fixed yet.
Sketch to illustrate the Timer3 watch dog trick
#include <TimerThree.h>
// pick this library up at http://www.arduino.cc/playground/Code/Timer1
// scroll down the page to the Timer3 entry.
unsigned long resetTimer = 0;
unsigned long timerRate = 2000000; // this is the MICRO seconds to wait between interrupts
int resetWait = 10000; // this variable is in MILLI seconds for how long to wait
// before resetting
void(* resetFunc) (void) = 0; //declare reset function @ address 0
void resetMe(){ // There are certain compiler items that this little trick
resetFunc(); // can over come. Like putting this in a callback.
}
void checkActive(){
// this routine gets called every timerRate (see above)
// and here I check resetWait to see if the device has been
// hung up for resetWait number of milliseconds
if(millis() - resetTimer > resetWait){
Serial.println("Fake Watchdog Timer Reset..........");
resetMe();
}
// Serial.print("Timer3 at "); // uncomment these two lines to watch what's
// Serial.println(millis()); // going on
}
void setup()
{
int errorCount = 0;
Serial.begin(57600);
Serial.println("Initializing..");
}
boolean firsttime = true;
void loop(){
if(firsttime == true){
Serial.print("First time through loop, set up timer");
firsttime = false;
resetTimer = millis();
// set timer3 to expire in 2 seconds. So, every 2 seconds the checkActive routine
// will get called and it will check the resetTimer variable to see how long in
// milliseconds it has been since the variable was last updated.
Timer3.initialize(timerRate); // This sets timer3 to expire in 2 seconds
Timer3.attachInterrupt(checkActive);
// Note that this could have been in the setup() routine above, but
// I put it here because sometimes I have a LOT of stuff to do during
// the setup() routine.
}
// to test this, comment out the line below and the board should reboot.
resetTimer = millis(); // This keeps resetting the timer
}
Update 10/29/2011: I found a way to use the watchdog timer and documented it here. The solution uses the watchdog interrupt as a timer interrupt and works nicely. A little bit more code, but it is actually pretty cool.
Thursday, May 26, 2011
Updating the Blog
I updated the XBee and Swimming Pool pages. They have links to the various parts to make it easier to find things. I also added several items here and there. Notable is the addition of my changes to the swimming pool solar heater to support the low flow rate my new variable speed permanent magnet pool motor (love saying that) can handle. I can run the solar heater with as low as 5 pounds head pressure. For you folks that don't understand that, this is a very good thing. It means I can run the pool at about 270 watts during the peak period and still heat the water....for almost free.
Thursday, May 19, 2011
Modifications to my Power Display
As I mentioned in one of my posts, I've had a strange hardware failure in the WiShield used to gather data for the display. Seems something there causes the Arduino to reboot. I spent a couple of days looking for the problem and finally cut the script back to the point where the only thing running was the WiShield and it still failed. I even went all the way to the example script and it failed there too. That was actually the point where I started experimenting with XBees as a replacement network for the house. Wifi is nice and does the job, but it is complex and takes a lot of code to keep running. It has the advantage of being installed in laptops so you can watch it, being able to get to the internet, but what happens when the phone line dies?
Well, I finally got back to the display. It stayed low on my priority list because the fail safes I built into the code were causing the display to come back to life in only a few seconds so it became an annoyance rather than a real problem. I removed the WiShield and hooked up an XBee. About 80 percent of the code disappeared! I gather the power levels, time and temperatures from the various devices around the house and present them on the display. The Pachube feed has been handled by my House Controller for a couple of weeks so that was removed as well. Shortly, I'll update the Power Display page with the new script. I'm going to keep the old script there as well for those folk that use Wifi, but this works really well.
Guess you can tell I'm pretty well sold on XBees as a network device for home automation.
Well, I finally got back to the display. It stayed low on my priority list because the fail safes I built into the code were causing the display to come back to life in only a few seconds so it became an annoyance rather than a real problem. I removed the WiShield and hooked up an XBee. About 80 percent of the code disappeared! I gather the power levels, time and temperatures from the various devices around the house and present them on the display. The Pachube feed has been handled by my House Controller for a couple of weeks so that was removed as well. Shortly, I'll update the Power Display page with the new script. I'm going to keep the old script there as well for those folk that use Wifi, but this works really well.
Guess you can tell I'm pretty well sold on XBees as a network device for home automation.
Saturday, May 14, 2011
Swimming Pool Continued
Work on the pool controller is at its first stage of completion. I can control the functions I want pretty well and have the devices in a weather resistant box mounted to the wall near my pool electronics. It is on my XBee network and can be controlled from anywhere in the house since the XBees automatically forward data from remote nodes. This was an incredibly cool (from a total nerd's viewpoint) project and actually does something useful. Now I can set up timers to control what the pool system does and when it does it. I already hooked it into my house controller and can lounge in my recliner and turn on the pool light at night to attract the bats.
You can see the web controls here <link>, but the buttons won't work for machines outside my home network. A picture of the device, most of the code and description are under the 'Swimming Pool' tab above.
You can see the web controls here <link>, but the buttons won't work for machines outside my home network. A picture of the device, most of the code and description are under the 'Swimming Pool' tab above.
Monday, May 2, 2011
Swimming Pool
I've been working on having control of my swimming pool. There is very little information on this kind of thing available and Goldline, the manufacturer of my pool controller told me the information was a trade secret. Trade secret? That sounds like a challenge doesn't it? There is a new tab above that describes in some detail the protocol they use and how to implement your own remote control. Yes, it uses an Arduino. I've been working on this on and off for a few months and had a few breakthroughs recently so my own control device is in the works and will be hooked into my evolving overall scheme for controlling things around the house.
Trade secret my butt. This is the 21st century, the era of open source and information sharing. Gimme a break! Once you put it on the internet, it's there forever.....somewhere.
Trade secret my butt. This is the 21st century, the era of open source and information sharing. Gimme a break! Once you put it on the internet, it's there forever.....somewhere.
Thursday, April 21, 2011
Updated the Xbee page
I put a picture and description of the XBee thermometer I made on the "World of Xbee" page (tab above). This was the first "XBee only" project I tried and it went surprisingly well.
Wednesday, April 20, 2011
Expanding the System even more
The lessons I've learned about XBees and ethernet on an Arduino started coming together. My latest project is expanding the monitoring around the house. I followed up on my own ideas and put my Mega 2560 in an enclosure with it's ethernet card and an Xbee running in API mode. I sample the two thermostats and average their temperature reading giving me the inside temperature. Then I mounted an XBee to the side of a wall wart and hooked a temperature sensor to the side of it and plugged the new device into an outlet outside. I now have outside temperature available.
That means I absolutely HAVE to upload it to Pachube doesn't it? I put code in the new box to support a web server and client for Pachube and now I have all the readings from before regarding power but also record the outside temperature as well. One funny thing is that the LM34 temperature sensor combined with the 1.2 volt maximum on the XBee means I have a maximum temperature of 120F that I can record. Well....this is Arizona and it gets over that pretty regularly in the summer so I used a voltage divider to double the range up to 240F. Let's hope that's enough (global warming and all).
I'm going to create a new page for the new black box I'm calling the House Controller and put the wall wart temperature sensor on the XBee page. Those little XBees are not the cheapest radios in the world, but the temperature sensor is wireless and still has three analog ports I can use for around $28. If I was to use one of the cheaper radios and arduino with the supporting hardware, I'd be pushing at least $40. At some point in the future I'm going to have these little radios all over the house
The pachube page is : House Monitor The House Controller is: House Controller
And, for you hackers out there, it checks to be sure you're coming from an inside address and have the secret word before it'll let you change anything. It isn't perfect protection, but the worst one can do is change the temperature on the thermostat during off-peak hours. It's an arduino, not a big ol' web server.
That means I absolutely HAVE to upload it to Pachube doesn't it? I put code in the new box to support a web server and client for Pachube and now I have all the readings from before regarding power but also record the outside temperature as well. One funny thing is that the LM34 temperature sensor combined with the 1.2 volt maximum on the XBee means I have a maximum temperature of 120F that I can record. Well....this is Arizona and it gets over that pretty regularly in the summer so I used a voltage divider to double the range up to 240F. Let's hope that's enough (global warming and all).
I'm going to create a new page for the new black box I'm calling the House Controller and put the wall wart temperature sensor on the XBee page. Those little XBees are not the cheapest radios in the world, but the temperature sensor is wireless and still has three analog ports I can use for around $28. If I was to use one of the cheaper radios and arduino with the supporting hardware, I'd be pushing at least $40. At some point in the future I'm going to have these little radios all over the house
The pachube page is : House Monitor The House Controller is: House Controller
And, for you hackers out there, it checks to be sure you're coming from an inside address and have the secret word before it'll let you change anything. It isn't perfect protection, but the worst one can do is change the temperature on the thermostat during off-peak hours. It's an arduino, not a big ol' web server.
Tuesday, April 5, 2011
Latest Arduino Ethernet Board.
Got a brand new ethernet board and mega2560 to build a whole house controller and web interface. The mega is a great board and the ethernet board has some improvements. It has a reset controller that makes sure it gets properly reset when the power fails. However, I had to disconnect it. Seems the new board has the same problems as the old one regarding connections not establishing and being maintained. I had to make the same modifications to this board as the old one like I detailed in the thermostat pages. Sigh. There have been a bunch of people complain about these problems, but most of them seem to have given up. The method I use works well and has been in place for a few months now with no problems.
So, anyway, I have an XBee hooked up to the mega running in API mode because there are problems with collisions after all. The checksum on the frame works well and you can tell when you get a bad packet by checking it; this requires API mode or creating my own checksums. API mode gives me originator address and some other stuff that will come in handy later. So, I catch the broadcast messages and present them with a web page and also forward them to Pachube. Slick. I have a bunch of stuff in mind for this board including X10, and a bunch of XBee interaction. I even want temperature sensors in each room eventually. For now though, I'm going to fix the problems I encountered when my WiShield went bad by using the XBee network and put this device in a box with enough room to handle some more interface devices.
So, anyway, I have an XBee hooked up to the mega running in API mode because there are problems with collisions after all. The checksum on the frame works well and you can tell when you get a bad packet by checking it; this requires API mode or creating my own checksums. API mode gives me originator address and some other stuff that will come in handy later. So, I catch the broadcast messages and present them with a web page and also forward them to Pachube. Slick. I have a bunch of stuff in mind for this board including X10, and a bunch of XBee interaction. I even want temperature sensors in each room eventually. For now though, I'm going to fix the problems I encountered when my WiShield went bad by using the XBee network and put this device in a box with enough room to handle some more interface devices.
Wednesday, March 23, 2011
Using XBee Broadcast
OK, I have no life; I admit it.
I modified the sketch for the power monitor to transmit the power reading over my (brand new) XBee network. Now I can plug an XBee into my laptop and watch the power reading stream by every five seconds. That was cool so I used a breakout board from SparkFun and added an XBee to the House Clock. Now I have the time coming out every 10 seconds from it as well. There were a couple of reasons for doing this: First, I wanted to see what happens with collisions. Second, how well do these things work over time? They seem to handle collisions (where they both try to transmit at the same time) perfectly. Never have a short or garbled frame from them. The second item will have to wait a few days.
What was amazing is how easily it was to install the two devices. I simply hooked up power, ground and transmit on one of them and found someplace to mount it. It just worked fine, the very first time. Not often one has this kind of thing happen. Of course, I spent a couple of weeks figuring out how to use them. The two deployed ones are running in AT (transparent) mode and just sending broadcasts so there is something on the network a lot of the time. This is NOT the way one would work if there were battery operated end devices out there. The battery devices would be on most of the time catching the broadcasts, but for now, this is a fine way to get more experience.
And yes, it is during peak period and I'm using a little over 700 watts. This is a really good number, so far my demand number is running 1.4KW and my bill has stayed low. Note that this is with my new swimming pool pump running water through my solar heater. That used to take 2800 watts all by itself so I couldn't run it at all in the afternoon. I'm so proud.
I modified the sketch for the power monitor to transmit the power reading over my (brand new) XBee network. Now I can plug an XBee into my laptop and watch the power reading stream by every five seconds. That was cool so I used a breakout board from SparkFun and added an XBee to the House Clock. Now I have the time coming out every 10 seconds from it as well. There were a couple of reasons for doing this: First, I wanted to see what happens with collisions. Second, how well do these things work over time? They seem to handle collisions (where they both try to transmit at the same time) perfectly. Never have a short or garbled frame from them. The second item will have to wait a few days.
What was amazing is how easily it was to install the two devices. I simply hooked up power, ground and transmit on one of them and found someplace to mount it. It just worked fine, the very first time. Not often one has this kind of thing happen. Of course, I spent a couple of weeks figuring out how to use them. The two deployed ones are running in AT (transparent) mode and just sending broadcasts so there is something on the network a lot of the time. This is NOT the way one would work if there were battery operated end devices out there. The battery devices would be on most of the time catching the broadcasts, but for now, this is a fine way to get more experience.
And yes, it is during peak period and I'm using a little over 700 watts. This is a really good number, so far my demand number is running 1.4KW and my bill has stayed low. Note that this is with my new swimming pool pump running water through my solar heater. That used to take 2800 watts all by itself so I couldn't run it at all in the afternoon. I'm so proud.
Monday, March 21, 2011
Still messing with XBees, probably will be for a long time
I just published my findings on XBee implementation. It's really not the fault of the designers of these little devices that they seem hard to use. Anything that will set up its own network and handle store forward without operator intervention will have some things that are counter-intuitive and difficult to understand. Early results are that these devices work really well and can do a ton of stuff for the home experimenter. However, there are some gotchas that aren't mentioned by most of the tutorials on the web. I'm not sure why this is since I ran into them right off the bat and had to overcome them to move forward. So, take a look at my XBee page to see the kind of problems a new user will likely encounter.
I also updated the Power Monitor page to include the schematic. I'm not going to figure that thing out again. I'll probably put the new sketch in for transmission over XBee at some point, but currently I'm changing it every couple of days. The device is now off the breadboard and actually has parts soldered down. I guess I should post a new picture as well.....
I also updated the Power Monitor page to include the schematic. I'm not going to figure that thing out again. I'll probably put the new sketch in for transmission over XBee at some point, but currently I'm changing it every couple of days. The device is now off the breadboard and actually has parts soldered down. I guess I should post a new picture as well.....
Wednesday, March 9, 2011
First XBee running
Spent most of the day rebuilding the power monitor in the garage and interfacing it to an XBee. I had forgotten how I built the monitor so I had to create the schematic by reverse engineering then take it apart and rebuild it. This time I'm keeping the schematic!. Anyway, I learned a lot more about the XBee module that I haven't seen online in one place. I'll record as much of what I found out as I can remember for the next person that has to overcome some of the same problems.
Anyway, the power monitor is serving the power levels on both wifi and XBee. I plan on modifying the code in the satellite clock to serve the levels on wifi and forward them to Pachube so I can take the broken wifi adapter out of the power display and get the data I need from the satellite clock for display. This is a serious redo of the architecture I originally envisioned, but what the heck. I'll have to serve the time and power levels over the XBee network and I haven't quite decided how I want to do that yet.
However, there's nothing to prevent me from using the XBees just like small web servers and allow them to be interrogated by the coordinator radio. The coordinator can simply poll each XBee for data and then hold it for an internet request. This doesn't have to be too hard to get working. This will probably mean I have to go into API mode on the coordinator radio and implement some kind of round robin interrogation to gather data, but that is somewhat doable if I can get good documentation on the API mode.
For those of you that didn't understand most of what I said, I'll be documenting this stuff as I go along. It's really not that hard, just strange sounding.
Anyway, the power monitor is serving the power levels on both wifi and XBee. I plan on modifying the code in the satellite clock to serve the levels on wifi and forward them to Pachube so I can take the broken wifi adapter out of the power display and get the data I need from the satellite clock for display. This is a serious redo of the architecture I originally envisioned, but what the heck. I'll have to serve the time and power levels over the XBee network and I haven't quite decided how I want to do that yet.
However, there's nothing to prevent me from using the XBees just like small web servers and allow them to be interrogated by the coordinator radio. The coordinator can simply poll each XBee for data and then hold it for an internet request. This doesn't have to be too hard to get working. This will probably mean I have to go into API mode on the coordinator radio and implement some kind of round robin interrogation to gather data, but that is somewhat doable if I can get good documentation on the API mode.
For those of you that didn't understand most of what I said, I'll be documenting this stuff as I go along. It's really not that hard, just strange sounding.
Tuesday, March 8, 2011
Time to rebuild some stuff
I've been experimenting with XBees and they seem to work if you try hard enough and follow enough conflicting instructions from various places on the web. The problem with these little devices seems to be that there are just too darn many models of them with differing firmware to run. Add to this the intricacies of protocol layers and libraries written by computer science majors that weren't given any usability reviews and you have a mess.
I got mine to work.
So, I'm going to pull the power monitor out of the garage and modify it to use both XBee and wifi communication to push the power readings out. Then, I'll start implementing other devices based on the ZigBee protocol around the house. I'm going to avoid the libraries if I can. Those things may make it easier to code, but they make it infinitely harder to understand for normal people.
The two thermostats that control the heat pumps will remain ethernet, they are wired devices and work quite well so I won't fix what isn't broken.
No wonder I can't pick up girls at a bar.........
I got mine to work.
So, I'm going to pull the power monitor out of the garage and modify it to use both XBee and wifi communication to push the power readings out. Then, I'll start implementing other devices based on the ZigBee protocol around the house. I'm going to avoid the libraries if I can. Those things may make it easier to code, but they make it infinitely harder to understand for normal people.
The two thermostats that control the heat pumps will remain ethernet, they are wired devices and work quite well so I won't fix what isn't broken.
No wonder I can't pick up girls at a bar.........
Saturday, March 5, 2011
Hardware failure.....darn
After a few months of working perfectly I had a WiShield die. It failed in a rather obscure way though; the darn thing is causing my power display to reboot every 2.5 to 3 minutes. The interesting part of it is that the code I had for recovery worked perfectly and the device reboots and just keeps on trucking. The time even updates properly. The most serious outcome is annoyance. The other WiShield in the power monitor is working just fine.
Just to add insult to annoyance, Asynclabs.com hasn't been updated or attended to since early December last year, so just replacing the hardware isn't an option. The forum has lost a lot of interest and people are looking elsewhere for wireless solutions. So, I've dug out a couple of Xbee radios and have started a project to populate them around the house as a replacement for wifi. Granted, wifi is fun and easy to monitor and the ZigBee protocol is a pain, but I can create a gateway at the coordinator node and forward whatever I need to the wifi from there. Besides, we NEED a simpler method of using the XBee devices. If you look around the web, you see a ton of outdated instructions and people looking for help to get these things running. I suspect a lot of the XBees sold are in boxes on a shelf somewhere because most folk just give up on making them work.
But, let's be real about this. An extendable network that has acknowledgement and forwarding would overcome a lot of problems we face monitoring and controlling things. The extremely low power consumption won't hurt either.
Just to add insult to annoyance, Asynclabs.com hasn't been updated or attended to since early December last year, so just replacing the hardware isn't an option. The forum has lost a lot of interest and people are looking elsewhere for wireless solutions. So, I've dug out a couple of Xbee radios and have started a project to populate them around the house as a replacement for wifi. Granted, wifi is fun and easy to monitor and the ZigBee protocol is a pain, but I can create a gateway at the coordinator node and forward whatever I need to the wifi from there. Besides, we NEED a simpler method of using the XBee devices. If you look around the web, you see a ton of outdated instructions and people looking for help to get these things running. I suspect a lot of the XBees sold are in boxes on a shelf somewhere because most folk just give up on making them work.
But, let's be real about this. An extendable network that has acknowledgement and forwarding would overcome a lot of problems we face monitoring and controlling things. The extremely low power consumption won't hurt either.
Monday, February 21, 2011
This is so Cool
I went a little nuts on the whole house monitor. This seems like the ultimate place to collect and analyze data. With a dedicated computer and the software available out there right now a person could do almost anything. Now I'm thinking about wireless mesh network sensor and control systems, smart attic fans and temperature equalization systems.
To the man with a hammer the world looks like a nail; to the man with an Arduino, Zigbee, laptop, and sensors the world looks like something he should be controlling.
To the man with a hammer the world looks like a nail; to the man with an Arduino, Zigbee, laptop, and sensors the world looks like something he should be controlling.
Saturday, February 19, 2011
Started my whole house monitor
While I'm waiting for parts to come in I started on my monitor for the whole house. This is where I'll incorporate all the controls and displays for the various devices. It's on the tab above and is far from done, but it is a nice start.
Sunday, February 13, 2011
New Swimming Pool Pump
The pump I mentioned before is installed and working. After trying to research every energy efficient pump out there I decided on the Hayward Ecostar. Turned out to be a really cool pump. This thing is a permanent magnet variable speed pump that can be dialed in to whatever I need. I'm currently running it at 1750 rpm most of the time and kicking it up to 3000 for several hours in the evening to make sure things stay clean. At 1750 rpm it only uses 265 watts and that means I can run it during the peak period. Since my peak period is from noon to seven PM, I pay the lowest rates possible. There's a bunch of other things that work in my favor as well. The lower pressure puts less strain on the plumbing system, makes my solar heater work better, less wear on the pump, salt water chlorination is more efficient, etc. Why don't they recommend installing at least a two speed pump when you buy a pool?
I may not save any money running it this way, but it is nice being able to run the pool in the afternoon. This is Arizona!
Update, September 7, 2012: This pump failed. Hayward (the manufacturer) did an excellent job of resolving the problem; they actually replaced the pump with a new one. The date of this edit is well after the problem occurred because I didn't think to update it until now; to see the post where I describe the problem look here <link>. -dave
I may not save any money running it this way, but it is nice being able to run the pool in the afternoon. This is Arizona!
Update, September 7, 2012: This pump failed. Hayward (the manufacturer) did an excellent job of resolving the problem; they actually replaced the pump with a new one. The date of this edit is well after the problem occurred because I didn't think to update it until now; to see the post where I describe the problem look here <link>. -dave
Thursday, February 3, 2011
Cold Weather
Fine, after all the planning and testing, the weather snapped cold. I know it isn't as cold as the Central and Eastern states, but it got down into the teens here in the freaking desert! So much for power savings.
My no-freeze system kicked in on the pool and the 2.8KW pump turned on and stayed that way until the temperature went over 38F. I also had to give in and run a few appliances to keep my stuff from freezing up. The rotten thing about it is the day before the cold snap I got a new pool pump. One of those permanent magnet, variable speed things that could have done the no-freeze circulation task at 250-300 watts, but it was too cold to try and install (you get wet doing things like that). So, when you're admiring my accomplishments at controlling power usage, remember something always goes wrong.
My no-freeze system kicked in on the pool and the 2.8KW pump turned on and stayed that way until the temperature went over 38F. I also had to give in and run a few appliances to keep my stuff from freezing up. The rotten thing about it is the day before the cold snap I got a new pool pump. One of those permanent magnet, variable speed things that could have done the no-freeze circulation task at 250-300 watts, but it was too cold to try and install (you get wet doing things like that). So, when you're admiring my accomplishments at controlling power usage, remember something always goes wrong.
Saturday, January 29, 2011
House Clock
Naturally, when you depend on the internet, it fails. I now have a satellite based clock to sync the house for the various controls instead of using the NIS servers. See the clock tab above or click here.
Friday, January 14, 2011
Thermostat Installed
Got remaining parts in and actually installed the thermostat. It is working great and can actually be controlled over the network in my house. Of course I won't put it on the web for other people to control since this could become a problem. I updated the description and posted a picture of the installation.
Subscribe to:
Posts (Atom)