Friday, August 19, 2016

Wii U - For an "Unpopular" Console, It's Really Fun!

We acquired our Wii U for Christmas last year in spite of all the doom and gloom that the press has been putting out.  Why?  We wanted a console that focused on family and kid friendly games (my kids range from 14 to 6) and the Wii U fit the bill.  Plus we loved our Wii and were excited to get the next generation console.

It does not disappoint.  We don't buy games prodigiously but the ones we have are a lot of fun.  Super Mario 3D, Mario Cart 8, and Splatoon have all been big hits in our house.  Plus the ability to play our old Wii games has been awesome.  My kids will play as much as their parents will let them.

We recently purchased Minecraft and the kids love the Mario skins and themes that are included in it.  They love playing multi-player and creating their own worlds.  Granted this is nothing new to them as we already own Minecraft for the PC and for the XBox 360.  However, they liked it enough to save up their own money to purchase it.

So, it's a fun console that focuses on family friendly games, but it's a distant 3rd in sales behind XBox and Playstation and isn't getting the new, hi res games that are front and center in the press and that kids seem to be clamoring for.  Why buy console that's not "cutting edge" and/or the be all/end all of consoles?

So here's the deal (in my humble opinion): If you want a console whose primary purpose is to entertain kids and families, get a Wii U.  If you want first person shooters, zombies, blood and guts, etc. get an Xbox or Playstation.  Can you find family friendly games on the XBox?  Sure but that's not their primary market.  Can you find shooter games on the Wii U?  Yes but, once again, that's not their primary market.  Nintendo makes and markets games that are fun to play, kid friendly, and all around enjoyable.  If you're a family with younger kids and you want a console for them, get a Wii U.

The Wii U also has a great online, multi-player service.  First of all it's free - no subscription required.  Second it has amazing parental controls.  I found this out when we purchased Splatoon.  After the purchase, we found that most of the gameplay was online.  Well, I was really nervous about giving my kids unfettered online access - especially knowing how other people talk and act online.  My kids are young, they don't need to deal with that kind of garbage just to play a game.  Well I was impressed to find out that the parental controls on the Wii U are excellent.  I can control just about everything the kids do online.  Whether or not they can browse the internet, chat, buy games, etc.  It's all there.  I was able to set my kids up so they can enjoy playing online without having to worry that they would get themselves into trouble online.  Now they're splatoon fanatics and I can let them enjoy their game without worry.

So there it is.  If you want your kids to have fun, stay safe, and enjoy their video games - get a Wii U.  It's fun!

Monday, August 15, 2016

Sonos Control with the Amazon Echo - Part 2: Raspberry Pi

So, a little while ago I posted how I set up my Amazon Echo to control my Sonos speakers (the article is here).  However, there was a major drawback:  If the computer ever went to sleep, got rebooted or if my user got logged out everything would stop working.  Compound this with the fact that my PC is shared by my kids and you can see that I had a lot of service interruptions.  The obvious solution is to have a permanent computer just to run this service.  I needed something I could leave on 24x7 and that was really inexpensive.  Enter the Raspberry Pi.

The Raspberry Pi computer is cheap, low power consumption, and small.  It seemed like the perfect fit.  So I found a kit (on Amazon of course) and ordered it.  Now to find out if it's as good as it seems.

First, I had to put it together.  That was really easy - I just had to stick the heat sinks on, put the Raspberry Pi board into the case, and put in the SD card.  Then I plugged in a keyboard, mouse, and monitor and I was on my way.

I chose to install the Raspbian OS (Linux for the Raspberry Pi) and in a few minutes it was up and running.  OK - now all I have to do is install node.js, the node-sonos-http-api program and I'm all set.  So I run an internet search on my new Raspberry Pi for instructions (by the way, the computer was set to use duckduckgo.com as the default search engine instead of google or bing or whatever - it worked fine), found some directions and I was off!

NOTE: This is not the full instructions on how to install the Echo control of Sonos, just how to move it from a Windows PC to a Raspberry Pi PC.  The full install instructions are here.

Install Node.js

Based on the instructions I found, I was first directed to update the OS.  That sounded like a good
My Little Raspberry Pi PC
idea so that's what I did:
  • Open up a command line terminal and run the following commands:
    • sudo apt-get update
    • sudo apt-get upgrade
Next it had me install the correct repository to get node.js.  I'm not including the instructions because, after doing this I found that it only got me node.js version 0.10 and I needed version 4.4.x - not even close!  OK, back to the internet.  After a bit more searching I found some better instructions so I did the following:
  • Open up a command line terminal and run the following commands:
    • curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - 
    • sudo apt-get install -y nodejs 
    • npm -version
Success!  I now have node.js (the correct version) on my Raspberry Pi PC.  

Install node-sonos-http-api

Fortunately, the Raspberry Pi comes with git installed so I didn't have to figure out how to install that in order to install the node-sonos-http-api.  Here's all I had to do:
  • Open up a command line terminal and type:
    • npm install https://github.com/jishi/node-sonos-http-api 
  • Test it by going to the web browser and using the test url:
    • http://localhost:5005/zones 
It worked!  OK - now I have the server set up.  I also copied my presets.json file from my Windows PC to my Raspberry Pi PC so that I would have all of custom presets I've been setting up over the last couple of weeks.

Allow for Remote Connections

At this point, I decided I'd rather be running the whole thing remotely because my kids wanted the keyboard, mouse, and monitor back so they could use the Windows PC.  Fair enough.  Here's how I enabled it:
  • Menu -> Preferences -> Raspberry Pi Configuration 
  • Change password to one I actually know
  • Note that the local user is pi 
  • Find the IP address - this was a challenge since I couldn't remember how to echo your IP address on linux so I looked it up in my router.
  • Go back to my Windows PC
    • Download putty
    • log in to Raspberry Pi PC using the IP address for host, pi for the user and my password for the password
Now I don't need my Raspberry Pi hooked up to anything but power.

Redirect Incoming Connections

So, in order to really test it, I need to redirect the incoming connections from my Alexa Skill from my Windows PC to my Raspberry Pi PC.  To do this I went into my router settings and simply changed my redirect from the IP address of my Windows PC to the IP address of my Raspberry Pi PC.

Oh, and I also made sure my Raspberry Pi PC had a static IP address.  It would be a real pain if it ever got assigned a different IP address.

Test It Out

Now it was time to test it out:
  • "Alexa, tell Sonos to play country"
    • It worked!
  • "Alexa, tell Sonos to pause all"
    • Success!
  • "Alexa, tell Sonos to resume all"
    • Yay!
OK - so now my new little PC is running the show.  Awesome!  However, I wasn't quite done for the day...

Run node-sonos-http-api as a Service

Running node-sonos-http-api from a putty terminal worked great until the computer went to sleep or I was timed out or logged out, etc.  OK - kind of the same problem I was trying to avoid.  So how to I make it run in the background?

After some internet searches and some experimenting, I found something that worked:
  • cd to the node-sonos-http-api home
  • Run the following command:
    • nohup npm start &
This starts it as a service (meaning it runs in the background as long as the PC is running).

I tested it by closing my putty session and logging out of my Windows PC.  Everything still worked.

So now I have a Raspberry Pi PC controlling my Sonos speakers via a custom Alexa Skill routed through an Amazon Lambda service.

Whew!  No wonder I put off doing this!

However, having Alexa controlling my Sonos speakers is REALLY cool!

Alexa, tell Sonos to play celebration music!

Tuesday, August 02, 2016

Awair Air Quality Monitor Review

Awair Air Quality Monitor
This post is a bit tricky for me to write.  My Awair air quality monitor is one of the most expensive gadgets I've purchased but it's impact has been the most subtle.  Usually when I buy a gadget, it's impact is much more dramatic like smart switches from Insteon, endless jokes and device control from Echo, temperature/humidity readings from Sensorpush, or automated sprinkler control with Rachio.  With Awair, however, the impact was more subtle.

One of the main reasons the impact was subtle was that my air quality was actually pretty good.  CO2 levels were good, humidity was mostly good, dust wasn't too bad.  Only VOCs (volatile organic compounds) were consistently high.  Not too high, they're usually at 2 but sometimes spike to 3.  What does the VOC measurement mean?  I don't know except that Awair puts a 2 or a 3 at not good orange (not horrible - that would be red).  So what do I do?

So, here's the thing.  I'd been thinking about air quality for a while.  Over the last few years my allergies seem to be getting worse.  Congestion, itchy eyes, sneezing, etc.  Living in Arizona, we tend to get ozone pollution come over from the west (thank you very much California).  So how do I clean the air I breathe?  Do I even need to?  These are the questions that got me to purchase the Awair in the first place.

I also purchased it for the advice it gives.  Of course one of the first bits of advice it gave was to open the windows to clear out the VOCs.  Well, I live in Arizona and when it's 112 degrees outside, I am NOT going to open my windows.  So what are my other options?  Well, the Awair suggested that I get a peace lily and/or a snake plant absorb VOCs.  That sounded good so I bought a couple of those.  They're not big but I have to start somewhere.  I've had them for a couple of weeks and they're not dead (if you know me and my reverse green thumb, you'll know that's an accomplishment) but they haven't reduced the VOC counter either.  So I keep looking.  Maybe in October when the weather cools down I'll try opening my windows.  Until then, I'll keep watering my plants and keep an eye on things.

So, my verdict on my Awair is mixed.

It lets me know my air quality which is good.  It let me know that I don't have terrible air quality - also good.  It's cool to be able to check it at any time and see how my air is doing.  It's great that it's portable and I may try it out in my office or in other rooms of the house to see how they are doing.  The display on it is very cool and gives me the information I need at a glance (no need to pull out my phone to see how my air is).  It gives me advice and help on how to improve my air quality.  It actually got me to buy plants for my house.  Life changing?  No.  Pretty cool?  Definitely.  Has it prodded me to make a few subtle changes and to pay more attention to my air quality? Yes.  Is it worth it?  Yes, I think it is.

Is it perfect? No.  There are a couple issues that I have.  First, the Android app crashes occasionally on startup.  It's not a big deal, I just start it again and it's fine.  What bothers me more are the stats.  The stats screen is great and shows everything but it only shows it for that day.  What if I want to see yesterday?  Last week?  What if I want to see trends over time?  Nope, not there.

So, overall I like it.  It gives me good, accurate (I hope) information about my air quality.  It's given me the extra push to actually get some plants in my house.  It's been a subtle nudge to improve things.

Wednesday, July 27, 2016

Sonos Control with the Amazon Echo - How I did it

I've had my Amazon Echo for a year or so and one thing that I've wanted ever since I purchased it, is to be able to use voice commands to control my Sonos speakers.  I waited patiently (OK  not patiently) for Sonos skill to appear on the Echo but it still hasn't come.  I was encouraged when Sonos announced it was going to focus more on voice but still nothing.  Isn't there any way to control my Sonos with my Echo?

Yes - sort of.

WARNING: This post is not for the faint of heart because the solution is not trivial.

So, I found a project on github that uses another project on github combined with a custom skill on
the Echo via a web service hosted by AWS Lambda.  OK, that was the easy part.  I knew that going in.  That's why, initially, I waited.  There must be an elegant solution out there.  I searched and waited and searched again and waited again.  Finally I decided to give it a try.  If it worked it would be really cool.  If it didn't, well I'm no worse off than before.

Now that it was decided, I sat down and went through the instructions provided by Ryan Graciano.  Here are the instructions with my extra notes.

Get jishi's node-sonos-http-api working

  1. Install node.js on a server on the same network as your Sonos.
    • Oddly enough, I didn't see this step which may have been a good thing because I may have done it wrong.  
  2. Grab https://github.com/jishi/node-sonos-http-api and run it on that server. On Mac, it's "npm install https://github.com/jishi/node-sonos-http-api", then go to the directory created and "npm start".
    • So I tried the command and, not unexpectedly, it failed miserably.  OK now I have to find out what "npm" is and how to install it.  Here's what I did.
      • I found the npm website and created an account (not sure if I really needed to do that)
      • Downloaded the program from https://nodejs.org/download/release/latest/ 
        • This was hard to find because there are a lot of options and it took a bit to find the right one (it was the node-v6.3.1-x86.msi for my 32 bit Windows machine) 
      • Installed the program 
    • Then I had to grab the node-sonos-http-api - the instructions say use the following command "npm install https://github.com/jishi/node-sonos-http-api"  
      • Tried it and it failed spectacularly (tons of error and warning messages) 
      • One of the first errors was "Error: not found: git" - I guess I need git as well 
        • Download git from https://git-scm.com/download/win 
        • Install git 
        • I chose to use the windows cmd.exe and the rest were the defaults 
        • Tried it again - it errored off 
        • Remembered that I just installed git so my DOS window that was already open wouldn't have the new environment variables.  I closed the window and opened an new one 
        • Tried it again - SUCCESS 
          • There were some warnings but it worked!
  3. Take the node-sonos-http-api/presets.json that I have here and drop it into your node-sonos-http-api root directory. Modify it to use your speaker names and your favorite stations. Don't worry about the "uri" field - it's unused. Make sure the preset names are lowercase (like "test" and "rock" in my example). NOTE: You can skip this step if you only want to use Playlists and Favorites, which require no configuration.
    • OK - I found the directory on the website that referenced the presets.json file but, instead of downloading the file, it brought up the file text.
      • Fine - I copied the file text (control c is my friend)
    • Found the node-sonos-http-api root directory and created the presets.json file with the data I copied from the web page.
  4. Test it by hitting http://yourserverip:5005/zones
    • I opened up Internet Explorer and tested it out - it worked!!
  5. If you get a response, great! Now try playing something: http://yourserverip:5005/preset/[your_preset_name]. Or, play a Playlist or Favorite (example: http://yourserverip:5005/kitchen/playlist/myplaylist). To stop, use /pauseall.
    • Also worked!
  6. If you have problems, make sure you are on the same network as your Sonos AND make sure you don't have a Sonos client running on the same machine. The client can interfere with the node.js server.

Expose your server to the outside world

  1. You need some way for Lambda to contact your server consistently. Services like DynDns and yDNS.eu will give you a consistent hostname for the outside world to use. If you have an Asus router like I do, then dynamic DNS is actually a built-in / free feature.
    • I have an ASUS router so this should be easy - yay!
  2. On your local router, find the "Port Forwarding" configuration. Forward all inbound requests to 5005 (or configure some other port) to your node server.
    • Logged into router settings 
    • Set up a dns name for my connection (.asuscomm.com) 
    • WAN -> DDNS 
    • Set up port forwarding  
    • WAN -> VIRTUAL SERVER/PORT FORWARDING 
    • Tested it: http://.asuscomm.com:5005/kitchen/pauseall 
    • It worked!!
  3. Make sure your server has a locally static IP, so port forwarding doesn't lose track of it.
    • Did that.
  4. Setup your server to auto-start or daemonize the node-sonos-http-api server.
    • I did not do this as I don't intend for my desktop to be a server.  I am aware I will need to manually restart the application if I ever log out or reboot my desktop.
  5. Test it by hitting http://yourdyndnsaddress:5005/zones.
    • It worked!

Create the Alexa Skill that will send events to AWS Lambda

  1. Create a new Skill in the Alexa Skills control panel on Amazon. You need a developer account to do this. The account must be the same as bound to your Echo, and make sure you are logged into that account on amazon.com. You will get access denied if the two accounts are different.
    • I went to developer.amazon.com and signed up for a new account.
  2. Name can be whatever you want. "Invocation" is what you say (I used "Sonos").
    • I used Sonos as well - it's my Sonos after all
  3. Check Custom Interaction Model if it is not already checked. Click Next
  4. Click Next, taking you to Interaction Model. Create a Custom Slot Type ("Add Slot Type"). Add a new type for PRESETS, another for ROOMS, and a final one for TOGGLES. Into each, copy/paste the contents of echo/custom_slots/PRESETS.slot.txt, echo/custom_slots/ROOMS.slot.txt and echo/custom_slots/TOGGLES.slot.txt.
    • Here once again I copied the text of the files from the github site and pasted them into the appropriate boxes.
  5. Still in Interaction Model, copy this repo's echo/intents.json into the "Intent Schema" field, and echo/utterances.txt into "Sample Utterances".
    • More cutting and pasting.
  6. Don't test yet, just save. Click back to "Skill Information" and copy the "Application ID". You'll need this for Lambda.

Configure the AWS Lambda service that will trigger your node-sonos-http-api server

  1. Create an AWS Lambda account if you don't have one already. It's free!
    • It free! but Amazon still requires a credit card number so they can charge you for any non-free services.  That almost did it for me but I had come this far and I wanted to finish it.
  2. In the Lambda console, look to the upper right. Make sure "N. Virginia" is selected, because not every zone supports Alexa yet.
    • He's not kidding here.  I picked one in the western US and it didn't work at all, I had to recreate my whole service in the N. Virginia zone.
  3. Create a new Lambda function. Skip the blueprint.
  4. Pick any name you want, and choose runtime Node.js.
  5. Go into this repo's lambda/src directory and copy options.example.js to options.js. Edit options.js to have your DynDNS hostname, your port, and the Alexa App ID you just copied.
    • Created a directory on my desktop and copied the text into the options.js file.
    • Made the updates as directed.
  6. In lambda/src, zip up everything. On Mac/Linux, cd src; chmod a+r *.js; zip src.zip *.js. Make sure you don't capture the folder, just the files.
    • Once again, I cut and pasted the text from the github source into the files on my desktop.
  7. Choose to upload the zip file for src.zip.
  8. The default handler is fine. Create a new role of type Basic Execution Role. Pick smallest possible memory and so on.
    • The role options have changed.  I just picked custom role and named it something.  I don't know if that was right or not but it let me continue.
  9. Click Next to proceed. Once created, click "Event Sources".
    • This has been changed to triggers.  It took me a while to figure that out.  I actually tried skipping it at first but the thing wouldn't work.
  10. Add a source. Choose "Alexa Skills Kit".
  11. Test it out. I included a test blueprint in this repo. Click "Test" and copy/paste this repo's lambda/play_intent_testreq.json to test. It will trigger the "test" preset in your presets.json file on your Sonos server. Don't forget to replace the Alexa App Id again.

Connect Alexa Skill to AWS Lambda

  1. In the Lambda console, copy the long "ARN" string in the upper right.
  2. Go back into the Alexa Skill console, open your skill, click "Skill Information", choose Lambda ARN and paste that ARN string in.
  3. Now you're ready to put it all together. Try "Alexa, use Sonos to play test"
And we're done!!  It's going to be so awesome!!  I try it out: "Alexa, tell Sonos to pause all" - It work's!!  "Alexa, tell Sonos to play playlist My Favorites in the Kitchen" - nothing.  "Alexa, tell Sonos to play favorite My Favorites in the Kitchen" - nothing.

OK - I can play and pause but I can't play playlists or favorites.  Not cool.

I do some research and dig through forums.  OK - it looks like it doesn't work right on node.js versions higher than 4.x and I have version 6.3.1. 

So I uninstall node.js 6.3.1 and install version 4.4.7 and restart the server.

Now it works!  Well, mostly.  It has a hard time with multi-word playlists and almost all of my playlists are multi-word.  Well, apart from that, it works.

I'm going to play around with it for a while and, if I can get it working like I want, I'll get a raspberry pi computer and run the whole thing from there.  More to come...

Thursday, July 21, 2016

My Smart Home - SensorPush

I am an efficiency nerd.  I love to use technology to make my life easier, better, or to save money.  I live in the Phoenix area of Arizona so it gets REALLY hot here.  Well, I had noticed that my garage would always seem to be hotter in the summer than outside.  I didn't think much of it the first couple years in my current house but this year it hit me.  The garage is always super hot.  The master bedroom - my bedroom - is right over the garage.  The master bedroom gets pretty warm as well - especially in the summer.  Is there a correlation?  How would I find out?

Well, I had a temperature sensor that I was using to measure outside temperature.  One of those Accurite indoor/outdoor temperature monitors.  Actually, I have two of those.  So I took the outdoor sensor from the one in the master bedroom and put it in the garage.  Now I could see what the temperature was in the garage and compare it to the outside temperature.  I found that my suspicions were correct.  It would often be hotter in the garage than outside.  In fact, I was seeing temperatures above 110 F and it was often significantly hotter than outside.

One of the outside walls of my garage has two vents in it.  One close to the ceiling and one close to
the floor.  In order to cool my garage, I bought a fan and placed it at the vent near the ceiling so that it would blow the hot air out of the garage.  After leaving it on for a couple of days, it seemed like the garage was staying cooler.  It would still get hotter than outside but it seemed better.  However, all my data was based on spot checking the temperatures.  How hot is it in the garage now?  I didn't have any trending data or long term data so I didn't know if my solution was actually helping.

Home Screen
What I needed is a temperature sensor that recorded data from outside and in the garage and let me see the correlation.  I started looking for something I could use.  I found some Internet connected sensors from Accurite but reviews said the user interface was really bad.  I found some really nice sensors from NetAtmo but, as cool as they were, they were expensive and overkill for what I was trying to do (though I will be keeping my eye on it).  Then I stumbled upon a little startup called SensorPush.

The SensorPush sensor was simple.  It recorded temperature and humidity and synced with your phone via bluetooth.  It had a nice looking app and would record your data so you could see trends and spikes, etc.  Plus, since it does not rely on a web service, it wouldn't be rendered useless if the company went out of business.  I decided to give it a try.

I purchased a sensor and set it up in my garage.  The setup was amazingly easy.  I installed the Android app on my Nexus 5x, tapped the plus sign to add a new sensor, and placed the sensor on the phone.  Boom! Done!  The hardest part was coming up with a name for the sensor.  I cleverly named it "Garage Sensor".

Then I sat back and let the data roll in.  After a couple of days, I started to notice something.  I would get these spikes and dips in the temperature.  I wasn't sure what it was until I noticed the timestamp on a Sunday.  The temperature dipped when we left for church (we park our minivan in the garage) and it spiked when we got home.  It seems obvious but that's when I realized that the biggest heat issue in the garage is the car.

It Only Graphs Data from One Sensor
I really liked the data rolling in but it was still difficult to compare it with outside temperatures because I didn't have anything to record them with.  Well, the SensorPush was working so well, I decided to get a second one.  This one I put outside (in the shade) to measure outdoor temperatures.  It helped correlate when the temperature is hotter in the garage than outside so I can better set up my fan.  It wasn't as easy as I'd hoped because the app can't show you temperatures from two sensors on the the same graph (I contacted the company and they said it's something they'd like to add).  However, I was still able to get some good data.

So, with this new data I made some modifications.  I am using an Insteon plug in module to schedule my fan which turns on at 5pm every evening and turns off at 9am.  This, on average, is when the air is cooler outside than in the garage.  I also try to turn the fan on whenever the minivan comes home because it is always hot.

Is it making a huge difference?  I'm not sure.  I probably need to go for a few days without turning on the fan and see if the temperature gets significantly higher in the garage.  I'll do that soon.

Now, as much as I like these sensors, there are (for me) two downsides.  First, as I mentioned previously, they don't display your graphs for multiple sensors on the same chart.  The second is that you can only get your data when your phone is in bluetooth range.  This means I can't check it at work or when I'm away from home.  This is more of an inconvenience than a problem and by not having a connection to a web service, the sensors don't depend on a web service to function and you don't have to have an Internet connection to run them.  So it's good and bad.

All in all, I really like the simplicity and the convenience and the data supplied by the sensors.  I'm quite happy with them and I'm thinking about getting a third one to put in my attic to see if I would benefit from a couple of attic fans...

Friday, July 15, 2016

My Smart Home - Insteon

There are a lot of smarthome devices and suppliers out there.  They all do things differently and have different devices that they're compatible with.  With all those choices out there, how do you pick a good one?

For me it came down to one question, "How many work with Windows Phone?"  At the time I started, the answer was pretty simple - Samsung Smartthings or Insteon.  Samsung was pretty new with Windows Phone support and with smarthome tech in general and Insteon was well established and even sold their stuff in the Microsoft Store.  They also had one more big advantage, they have a controller for ceiling fans.  With the way my house is set up, that actually is a big plus for me.  So, about a year ago, I ordered my starter kit:  an Insteon Hub that came with 2 plug in on/off switches, a leak sensor, an a motion sensor.  I also ordered a wall dimmer switch.

Installing it was an adventure.

Hooking up the Hub was a bit of a pain since they recommend plugging it right into the wall (Insteon uses both WiFi and house wiring to transmit its signals) so I had to rearrange things a bit to get that done.  That was the hard part.  After that I plugged it in, set up an account and I was good to go.

Installing the wall switch was where things got complicated.  I'm a bit nervous about electrical work (I know enough to be dangerous) but I got a simple volt meter and a youtube video and went to work.  My plan was the following:

  1. Turn off breaker
  2. Pull out the switch (but don't disconnect the wiring)
  3. Turn on the breaker
  4. Determine line and load with the volt meter
  5. Turn off the breaker
  6. Disconnect the switch
  7. Find the neutral wire 
  8. Connect the Insteon dimmer switch
  9. Turn on the breaker
  10. Pair the switch with the Insteon Hub
It was a great plan.  Here's what really happened:

  1. Turn off breaker
  2. Pull out the switch (but don't disconnect the wiring)
  3. Turn on the breaker
  4. Determine line and load with the volt meter
  5. Turn off the breaker
  6. Disconnect the switch
  7. Find the neutral wire (not connected to the original switch but shoved into the back of the housing)
  8. Connect the Insteon dimmer switch
  9. Blow half of the ground wire off of the Insteon switch because I didn't realize the switch next to the one I was replacing (in the same housing) was hot and the ground wire touch hot.  However, that popped the breaker so, apart from scaring me to death, it all worked out.
  10. Cram the switch into the housing (really tight fit).
  11. Turn on the breaker
  12. Find that nothing works and figure out that I had switched line and load (line is hot, not load).
  13. Turn off the breaker
  14. Switch the wiring to the proper placement
  15. Hope my adventure didn't fry the switch
  16. Turn on the breaker
  17. Pair the switch with the Insteon Hub
So, apart from almost electrocuting myself and popping a breaker and getting the initial wiring wrong, it went in pretty smoothly :-)

A nice perk for me was that I could control my new Insteon Wall switch (and my plug in switches) via my Amazon Echo.  Once I added my devices via the smarthome section of the Alexa controller, I could say "Alexa, turn off the dining room light." and it would turn off.

The kids thought that was amazing.  I have not seen lights turn off an on so much since my kids were 3 and discovered how to use a light switch - only it was way worse because I have 6 kids and they all wanted to try it.  Over and over and over again.  It was a little frustrating but, at the same time, fun because they were enjoying it so much.

In fact, after a few months of use, I realized that the center of my smart home was not my Insteon Hub but my Amazon Echo.  The Insteon app allowed me to set up schedules and remotely control my switches but the true game changer was voice commands.  It's so convenient and actually useful to control lights with voice commands.

There were other cool things I could do.  At Christmas time I programmed one of the plug in switches to turn on my Christmas lights at sunset and to turn them off at 10:30 PM after everybody had gone to bed.  Later I put a fan in my garage to blow the hot air out the garage to help it stay cool as it gets really hot in the summer (significantly hotter than outside due to the sun shining on it).

All in all, this has been a great investment.  The response time from the Amazon Echo is less than two seconds and the same from the app.  The app does crash on occasion and I had issues with setting a scene with sunset/sunrise times on Windows but I was able to fix the problem by redoing it on Android.  Mostly, it just works and I don't have to think about it and really, that's the best part of all.

Wednesday, July 13, 2016

Moving to the Rachio Sprinkler Controller

I am horrible with plants.  I've decided that I have a reverse green thumb - any plant I touch dies.  I don't know what it is but I have a past littered with the corpses of plants that had the misfortune of depending on me to take care of them.  My lawn is no different.  I have a good quality sprinkler controller and have scheduled watering but my lawn looked like was barely hanging on.  Obviously, I need help.  That's where Rachio came in.

A while ago a couple of the circuits in my sprinkler controller stopped working.  The result was that my front yard and a spot in my back yard stopped getting any water whatsoever.  I had to water them manually.  I tried to make it work for a long time but, as I stated above, my talents do not lie in that area.

I was on the web and I stumbled upon Rachio.  I don't remember if I found it on Amazon or read an article on a tech web site but I was intrigued.  Here was a controller that you could control from your phone, would adjust your schedule based on weather (it won't water if it's raining), and I could control it from my Amazon Echo.  This looked really cool but was it worth it?  Was it affordable?  Would it last?

I read the reviews and they were overwhelmingly positive.  This looked like the real deal.  Then I looked up what it cost vs what a replacement of my current controller would cost.  I found that they were about the same price except that Amazon was running a special that included a $50 Amazon gift card with the purchase of the Rachio controller.  I was still worried about installation and how to wire it up but my lawn was really not doing well and, after opening up my current controller and finding that the wiring was really pretty simple, I decided to try it out.  I ordered the Rachio controller for 8 zones and an outdoor enclosure.

Controller Wiring
Wiring from the original controller
Well, I guess my trepidation about wiring it up was well founded because that turned out to be the hardest part.  Power for my original controller was wired right to the electrical system so I couldn't just unplug it and plug the new one in.  No, I had to find the circuit breaker on my unlabeled panel and cross my fingers that I got the right one (fortunately I was right and was able to avoid any trips to the hospital).  Then I had to mount the controller to the wall.  This involved drilling pilot holes in the stucco mounting it very nicely and then finding the wires didn't reach all the way so I had to pull it out and mount it again but lower down the wall.  Not fun.  The wiring itself was really simple and it fact, I think I spent an hour getting the enclosure mounted properly and about 10 minutes wiring it up.

Wiring on the Rachio Controller
After that it was easy.  I plugged it in, turned on the power, and it started right up.  I downloaded the app to my phone and connected it to the controller.  The Rachio then tested all of the zones to ensure that they worked and then asked me about each one - is it a drip or sprinkler?  what kind of soil?  how much sun does it get?  Once it was all set up it gave me the option of setting the watering times, setting what days to water, or just letting Rachio set the whole thing.  I chose to water every other day and Rachio pulled the weather reports for Mesa and suggested the length of time each zone should run.  That was really cool!  Once that was set, I was done.  Well, almost.

I have an Amazon Echo and it's fun to give it voice commands for my connected home.  I wanted to add Rachio to that so I sat down at my PC and added the Rachio program to my Echo.  A quick test of "Alexa, ask Rachio to water zone 2 for 2 minutes" turned on my zone 2 sprinklers for two minutes.  Now that's fun!

The real test, of course, is how a machine does at watering my lawn.  The answer is great!  My front lawn is now green and thick instead of greenish brown and sickly.  My back yard is nice and green as well and the grass is coming back but it was a lot worse off.

It was also really cool to get an alert that due to rain (we had some good rain one weekend), the Rachio was skipping the regularly scheduled watering.  So it's bringing my lawn back to life, not watering when it doesn't happen and, at the beginning of the month, it automatically altered my watering schedule based on weather predictions for the next month.

Over all, I'm really impressed with the quality and usability.  I can set it and forget it or I can go in an manually tweak it.  All based on what I want to do.  Best of all, my lawn looks great!

Monday, July 11, 2016

Creating a Smart Home - Starting with the Amazon Echo

A little more than a year ago, my smart home began.  It sounds odd to say it that way - especially because I had no idea that I was actually beginning something.  I was buying a neato, techy thing and that was it.  I had no idea that it would grow into the beginnings of a "Smart Home."  Now the question is how far will it go.  I really don't have an answer for that.

But let's rewind a bit. A couple of years ago, Amazon announced the Echo.  I was intrigued.  It looked fun - not useful but fun.  I liked the idea of a personal assistant you can talk to.  I liked the idea of it telling jokes or the news or weather.  I liked the possibility of it expanding to other things.  I really like that it was half off for Amazon Prime customers.  However, I still thought that $99 was a bit steep for a toy so I held off.  I held off for a few months.  Then other people started getting theirs and the reviews started coming in.  Most were positive.  It was cool, it was fun.  I don't even remember what specifically pushed me over the edge, but I succumbed and placed an order in January 2015.

Then I waited.  And waited. And waited and waited and waited and...  It took a long time but I finally got mine at the end of May 2015.  Whew!  In this day and age of instant gratification, 4 months is a LOT of waiting.  So it finally came and it was a toy.  The weather reports were useful and the traffic reports were fine but, to me, it wasn't much more than a novelty device.  The kids, on the other hand, were entranced.

"Alexa, what time is it?", "Alexa, tell me a joke.", "Alexa, what's 1+1+1+1?"

It actually got so bad that we had to make a rule that you had to ask permission to talk to the Echo.  That calmed things down for a while.  However, the kids still get quite a kick asking it questions and having it tell jokes.  They also use it to set timers because their parents only give them limited time to play video games.

One of the most intriguing aspects of the Echo for me was the ability for it to play music.  "Alexa, play Jeff's Music" brings up the Jeff's Music playlist on Amazon Music.  So much easier than playing a CD, plugging in an MP3 player, or fiddling with an app.  The voice control is so effortless, it's truly amazing.  If only I could have that through my whole house...

So, here's the problem, the voice control is amazing but the speaker on the Echo is only pretty good (this is my personal opinion).  Further, I have already invested in Sonos speakers and have them spread throughout the house.  Sonos speakers sound amazing and having your music all through the house is, for me, a truly wonderful experience.  So when I saw how well voice control worked with the Echo, my first thought was - "I want to control my Sonos speakers with this!!"  Sadly, this functionality still has not come to the Echo.  I continue to wait.

So that's how it started.  The Echo now sits quietly in the kitchen, sometimes ignored and sometimes quite popular but never, in my opinion, living up to it's full potential.  That is, until I started installing automated light switches but that's a post for another time.

Thursday, July 07, 2016

Moving from Windows Phone to Android

The hardest part about moving to Android from Windows Phone was admitting that Windows Phone was not meeting my needs.  This was really hard because there is so much to love in Windows Phone.  I love the live tiles, I love the Cortana integration (especially how it automatically reads texts to me in the car via my Bluetooth car stereo), and I love the way it works.  In fact, I had tried out Android for 4 months and ended up coming back because of the things that Android just didn't do.

  • No live tiles
  • No unread count on phone, text, or email tiles on home screen
  • No reading texts via Bluetooth in my car
  • Lack of seamless integration with my Microsoft services (email, calendar, etc.)
So I gave the phone back to my wife.  She used it and was OK with it (although she missed a lot of the same things I did) until the camera lens cracked.  We don't know how it happened and there's not a scratch on the rest of the phone but the camera was unusable.  Well, this was unacceptable.  We looked at our warranty and there was a $79 copay to get it fixed.  Ouch!  I looked around more and found that Best Buy was selling the Lumia 640 (a nice mid-range Windows Phone) for $30.  So we got my wife one of those and she's happy with it.

So now we have an Android phone and nobody to use it.  Well, I have this issue with not being able to let a problem go without solving it so I continued to see if I could make Android as good as Windows Phone.  So, after researching I found workarounds for many of the issues.
  • The Nova Launcher has an add-on called TeslaUnread that shows unread counts for phone, text, and email programs.
  • The ReadItToMe app will read me texts via the Bluetooth in my car.  It's not as good as Cortana but it gets the job done.
So, as I thinking, "hey, this could actually work" the reality of the Windows 10 Mobile hit.  The reality is this - it's not as stable as Windows Phone 8.1.  It would crash a few times a week, it would lose wifi almost daily, Cortana would crash while reading texts.  I got really frustrated so I picked up my Nexus 5x and started using that.  After a month or so, I found that I had no real desire to go back to my Windows Phone.  It's not that didn't like Windows Phone - I still like it better than Android - but I needed a reliable tool and Windows 10 Mobile on my Lumia 930 was not providing it.

So, now I'm using an Android phone.  I do miss my Windows Phone and once Windows 10 Mobile gets stable I'll seriously consider going back but for now, Android is good enough in most areas and really great in others.  So I'm sticking with Android for now.  We'll see what the future holds...

Friday, April 01, 2016

My Android Experience

Last December, my wife's phone died.  Well, it didn't really die, it just stopped talking to cell towers.  Everything worked but she couldn't get calls or texts (even when the phone showed 5 bars).  Great!  Now we need a new phone.

I wanted to get a new Windows Phone but the new 950s were too expensive.  However, I didn't want to get an older phone because I didn't know how upgradable it would be (Windows 10 Mobile had just come out).  On top of all that, I was have a little frustration with some of the apps missing from Windows Phone along with a study that Kristina was doing that required an Android or iPhone.  It was really looking like Windows Phone was a dead end and, with iPhones being so expensive, I decided to try an Android phone.  After some discussion, I gave my phone to my wife and got myself the Android phone.

I decided to get a Nexus 5x.  Nexus phones are guaranteed two years of updates and are sold unlocked so I would have no carrier dependencies and would get security and other updates (these things are important to me and rare in the Android world).  So, after spending 4 months with Android, here is what I found:

Pros:

  • The apps are better on Android; there's more of them and they're usually more mature
  • The fingerprint scan is awesome!  I don't want to call it magical but it's pretty magical
  • The size is great for me - it's the first time I wasn't wishing for a screen that was a little bigger
  • Google Now let's me set timers - it may seem a little thing but I use timers all the time and Cortana doesn't do timers
  • Amazon Music - I use Amazon Music on my Sonos and it's cool to have it on my phone as well
  • Call notifications on my fitbit - kind of cool when it works but no text notifications
  • Thanks to the Chase app, I can deposit checks from my phone


Cons:


  • No live tiles - I tried widgets but they're not even close - no homescreen notification of texts, calls, or emails; now I have to manually pull up the notification screen and it's so full of email and other alerts that it's not always obvious if I missed a text or a call
  • No reading of text messages in my car (bluetooth enabled car stereo)- Cortana would read me my texts and let me respond all via voice; with android I just get an alert sound (I tried some apps that are supposed to do it but they made my phone hot and didn't work consistently)
  • Performance - the phone starts out snappy but some apps (especially chrome) slow it to a crawl; I find that I'm constantly quitting apps so that I can get good performance
  • Phone heats up - this phone gets warm and I find myself quitting apps to cool it down


In the end, I switched back to my trusty Windows Phone and upgraded it to Windows 10.  I am happy to have my live tiles back and Cortana reading me my texts while I drive.  I do miss the fingerprint scanner and a couple of the apps but I really didn't use them that much (Amazon Music may have been the exception but I listen to books while I commute now and the Audible app on Windows Phone is great).

So, I tried Android but I'll be sticking with Windows until I can't any more.  I guess I just like it too much.  Meanwhile, my wife is trying out the Android phone.  I may follow up on her experience later.