Nota Bene: The online service that provides weather data for this project no longer exists. You can never depend on a online service, even if you pay for it. The company that runs it (in this case, WeatherUnderground) may get purchased by another company (in this case, IBM) and they go and wreck everything.

Item What's it for? Where I got it an RPi running the Things Gateway It's our target to have the weather station provide values to the Things Gateway General Download & Install Instructions

or see my own install instructions:

General Install & Zigbee setup,

Philip Hue setup,

IKEA TRÅDFRI setup,

Z-Wave setup,

TP-Link setup A laptop or desktop PC the machine to run the Virtual Weather Station. You can use the RPi itself. My examples will be for a Linux machine a couple things set up on the Things Gateway to control this could be bulbs or switches I'm using Aeotec Smart Switches to run red and green LED bulbs. the webthing and configman Python3 packages these are libraries used by the Virtual Weather Station see the pip install directions below a clone of the pywot github repository it is where the the Virtual Weather Station code lives see the git clone directions below a developer key for online weather data this gives you the ability to download data from Weather Underground it's free from Weather Underground

it's no longer available from Weather Underground

configman

webthing

pywot

$ sudo pip3 install configman $ sudo pip3 install webthing $ git clone https://github.com/twobraids/pywot.git $ cd pywot $ export PYTHONPATH=$PYTHONPATH:$PWD $ cd demo

configman

collections.Mapping

webthing

webthing

pywot

pywot

webthing

webthing

webthing

pywot

…/pywot/demo

virtual_weather_station.py

is our focus today

$ ./virtual_weather_station.py -K YOUR_WU_API_KEY --city_name=Missoula --state_code=MT

http://IP_ADDRESS:8888

seconds_between_polling

Step 7: Drag the "Green" light into the other half of the blank pane, use the drop down box to select the "ON" property.

Step 8: Go to the top of the page, set a useful name to your rule, press <enter> and then use the left arrow to leave the rule editor.

Bonus Step: want to run the Virtual Weather Station, but don't want to include the WU API key on the command line? Try this:

$ ./virtual_weather_station.py -K YOUR_WU_API_KEY --admin.dump_conf=config.ini

./config.ini

./config.ini

$ ./virtual_weather_station.py -admin.conf=config.ini --city_name=Missoula --state_code=MT

$ weather_underground_api_key=YOUR_WU_KEY $ city_name=Missoula $ state_code=MT $ ./virtual_weather_station.py

Today, I'm going to talk about creating a Virtual Weather Station using the Things Gateway from Mozilla and a developer account from Weather Underground . The two combined enable home automation control from weather events like temperature, wind, and precipitation.I've already written the code and this blog is about how to use it. In the next blog posting, I'll talk about how the code actually works.: Download and install theandPython 3 packages. Clone thegithub repository in a local directory appropriate for software development. While this can be done directly on the RPi, I'm choosing to use my Linux workstation. I like its software development environment better.So what isThis is an obscure library for configuration that I wrote years and years ago. I continue to use it because it is really handy. It combines command line, config files, the environment or anything conforming to the abstract typeto universally manage program configuration. Configuration requirements can be spread across classes and then used for dynamic loading and dependency injection. For more information, see my slides for my PyOhio 2014 talk: Configman What isis a Mozilla package for Python 3, that implements the Web Things api. It provides a set of classes that represent devices and their properties, giving them an implementation that can be controlled over an HTTP connection.What isis my project to create a wrapper aroundthat offers a more Pythonic interface thandoes alone.closely follows a reference implementation written in Javascript, so it offers an API with a distinctly different idiom than most Python modules.is an attempt to pave over the idiomatic differences.: In thedirectory, there are several example files.. In this posting, we're just going to run it, then we'll tear it apart and analyze it in the next posting.Get a developers account for Weather Underground . Take note of your API key that they assign to you. You'll need this in the next step.: Using your WU API key, your city and state, run the program like this:: We're going to assume that there are two light bulbs already configured and named: Red, Green. Add the virtual weather station to the Things Gateway. by pressing the "+" key.Sometimes, I've noticed that the Things Gateway doesn't immediately find my Virtual Weather Station. I've not nailed it down as to why, but something about mDNS on my network can be very slow to update - sometimes up to ten minutes. In this case, you don't have to wait, just press "Add by URL..." and then enter the IP address of the machine running the Virtual Weather Station with this URL template: ": The Virtual Weather Station is now fetching weather data every five minutes (as controlled by the configuration value called, you can change that on the command line) . The Things Gateway should have that data immediately: press the "splat" on the "THING" icon for the weather station:: Now we can make a rule to turn on the "Green" light whenever the wind speed exceeds the minimum rated speed for our kite.Select RULES from the drop down menu. Drag the Weather Station up into the top half of the screen; select "Wind Speed" from the drop down box; change the ""; use the up/down buttons to set the minimum wind speed threshold. I'm choosing 5.: You've now seen how to make a rule based on properties of the Weather Station. Your task is to now make the rule for the Red light. I made mine turn on the red light when the wind is less than 5mph - I call that calm winds. You can make your red light rule do whatever you want.That should be about it.Remember that making a rule implies the creation of a converse rule. The rule that I made above says the Green light should come on when the wind speed is greater than 5mph. The converse rule says that wind speeds below 5mph, the light will go out.If the wind speed was greater than five at the moment that the rule was created, there may be some counterintuitive behavior. It appears that rules aren't applied immediately as they're created. They trigger on an "event" that happens when a property changes value. If the wind was greater than 5mph when the rule was created, the rule didn't yet exist when the "event" happened. The kite light will still work once the wind speed changes again at the next five minute polling point. Be patient.That created a config file called:Open upin an editor and uncomment the line that has your WU API key. Save the file. You can specify the the config file on the command line when you run the Virtual Weather Station. Any of the parameters can be loaded from the ini file.Still too much typing? Instead of the config file, you could just set any/all of the parameters as environment variables:In my next blog post, I'm going to explain the code that runs the Virtual Weather Station in great detail.