Bill's Weather Station

Current Obs Last 24h Last 48h Week to now Last 2 weeks Climate Table Climate Graph

Latest Observations

Last meteo update: 1 Apr 22:32:04
Temp Inside: 59° F
Temp Outside: 46.2° F
* (not reporting) Barometer: 29.773 inHg
One Hour Δ Baro: -0.003 inHg
* (not reporting) Humidity Inside: 48.64%
Illumination: 0.00 Lux
Cam Photo Weather Underground PWS KNJLITTL12


This is a simple weather station recording temperature, gas consumption, and photos. It consists of a Raspberry Pi with logging software written in Python, several DS18B20 1-wire temperature sensors, a RTL-SDR radio receiver for gas data, and a still camera. Temperature, gas measurements, and photos are sent to the cloud-based server hosting this site and temperature measurements and photos are sent to Wunderground, where they are displayed on the WunderMap. In contrast to an earlier approach the measurement data is stored only in databases in the cloud server, not on the RPi. The RPi is used only for data capture and transmission to the server. The temperature sensors include:

Update 30 Aug 2018

A lightning strike at about 8:00 PM on 7 Aug 2018 fried the baro/humidity sensor and the D70 camera. Will deal with it someday.

Update 17 Jan 2018

I added a Bosch BMP280 I2C pressure and temperature sensor to the station. The barometric readings are stored in the database, displayed in Current Observations and dynamic graphs, and reported to Wunderground. No static barometric graphs yet and possibly never. Humidity is coming. Note, while there is some variance between the barometer readings here and some nearby private weather stations as reported on Wunderground, the elevation-corrected value here agrees with the nearest National Weather Service station - Belmar-Farmingdale (KBLM) - to within a fraction of a percent. The inaccuracy of the other stations may be due to inadequate elevation compensation.

Update 30 March 2018

I replaced the Bosch BMP280 I2C with a Bosch BME280 I2C, which includes humidity, and now report inside humidity in the latest obs. Added a TSL2561 I2C illumination sensor and now also report illumination in the latest obs. The sensor is near a north-facing window inside the house, not in direct sunlight yet, and reporting in Lux, not Watts/square-meter. Eventually I may log both in the database, make graphs, and move the baro/humidity sensor outside.

Update 2 May 2018

I finally added a radiation shield to the outside temperature sensor. This should eliminate the little spikes in temperature in the morning and evening on days between the equinoxes when the sensor was getting some direct sunlight.

Illumination Factoids

Station Data

Latest Observations Eye Candy


The image is captured by a Nikon D70 camera attached to the RPi and uploaded here and to Wunderground. The image is captured every ever hour during daylight hours (give or take) using the Linux gphoto2 program. In November, 2017 Wunderground stopped supporting personal web site photos but then reversed that decision under protest and the photos reappeared in late December, 2017.

The cameras are mounted inside and shoot through two panes of glass in colder months and one in warmer months. The panes are not optical glass and the inside one is old wavy glass. The wavy glass, four air/glass surfaces, and some soil on the glass all contribute to reduced image quality.

Update 20-Jan-2018: Added a second camera, a Raspberry Pi V2. Exploratory. Presently this captures a 640x480 image every five minutes and uploaded here for display, for videos, and to Wunderground.

Update 31-Jan-2018: Experimenting with capture every minute.

Static Temperature Graphs

These graphs show data current as of the past midnight and load much faster than the dynamic ones. The current week is generated daily just before midnight. The Current week static graph together with the Last 24 hours dynamic graph covers the current week to now.

Dynamic Temperature Graphs

These graphs show data up the the present. They require a bit of patience proportional to the length of the graph and can take several seconds as they are generated on demand.

Dynamic Barometric Pressure Graphs

Barometric Factoids

Climatological Data

The climatological data includes temperature averages, lows, highs and degree-days by year, month and day in tabular form and averages, lows, and highs for every day in the year by year in graphical form.

The highs and averages shown during the spring and summer, that is from the vernal equinox to the fall equinox, are higher than actual because the outside temperature sensor is exposed to direct solar radiation early in the morning and late in the evening. The outside wall with the sensor is aligned nearly perfectly with the Earth's east-west axis such that the solar gain is symmectric in morning and evening. This can be seen by the brief peaks at morning and evening in temperature graphs during the spring and summer months. Someday I'll add a radiation shield.


Gas Consumption

I am interested in recording natural gas consumption with the thought that the data would help identify thermal parameters of my home, areas to improve thermal behavior, and provide feedback for changes. I hope to correlate gas usage with meteorological parameters including temperature and wind. Many years ago and in a different home I made daily recordings by hand of the gas meter during one heating season. That data showed clearly the benefits of keeping the door between the basement and the first floor closed. I'm no longer up for manual recording and daily readings lack sufficient resolution for the usage I want to study and so I looked for an automatic solution.

It turns out that my gas company reads the meter from a vehicle on the street. If they can read it I though I could as well. The technology of Automatic Meter Reading (AMR) is well described online and others have already developed both open-source and proprietery products for this using software-defined-radio concepts. It was a simple matter to glue a few existing parts together to receive the broadcasts from the meter and then write a little software to record and display it.

My gas meter, an Itron 100G DLT, periodically broadcasts Standard Consumption Messages (SCM) in bubble-up mode, a peculiar term that means it broadcasts spontaneously, not on demand from a reader. The messages are received with a RTL-SDR dongle (an inexpensive DVB-T receiver containing a Realtek RTL2832U demodulator and R820T tuner) connected to a Raspberry Pi 2 B+. The RPi runs a program known as RTLAMR (written by Douglas Hall and generously contributed to the open-source community) to decode the meter signal and convert it to JSON text. A Python program reads the output from RTLAMR and send it to the cloud server for storage and presentation. The processor load on the RPi 2 B+ is 100%. It appears to drop some packets but works well enough to provide the meter readings at an adequate sampling rate, typically once every few minutes. The capture process is stochastic in nature because of intereference from other meters in the neighborhood and the frequency-hopping nature of the transmissions.

The graphs linked in the following table explores the option space of graph period, histogram bucket size, and measurement units. This is experimental to help understand the most useful display formats. The % Max column is specific to my Weil-McLain ECO 155 boiler with a maximum input of 155,000 BTUs/hour. It shows the actual usage as a percentage of the maximum input to the boiler. The cost column includes only components proportional to usage (gas and delivery), excludes the fixed Residental Customer Charge. Note that all of the columns display identical data. The graphs differ only in the units and scale factor of the Y-axis.

Period Cubic Feet BTU % Max Cost
Last 7 days by hour Show Show Show Show
Last 14 days by hour Show Show Show Show
Last 48 hours Show Show Show Show

Gas Heating Factoids

Future Work

I hope to add more sensors later including wind speed an direction, and possibly more.