October 2007 Archives

Wed Oct 24 7:28AM (2007)

SOLVED: Perl "Argument ... isn't numeric in subroutine entry" warning

Problem: Argument "2.121_08" isn't numeric in subroutine entry at /usr/lib/perl5/vendor_perl/5.8.8/MLDBM/Serializer/Data/Dumper.pm line 5 Solution: You probably have -w in your hashbang line: #!/usr/bin/perl -w Get rid of it. Replace it with use warnings;

Posted by Ed | Permanent link | File under: Linux

Thu Oct 04 2:04PM (2007)

La Crosse WS-2316 on Linux: Success

For those of you Googling before buying: yes, it works! I've wanted a weather station for years. When I saw the La Crosse WS-2316 in Costco this weekend for $90, I couldn't resist buying it. The good news is, it works perfectly fine on Linux (2.6.22). The WS-2316 includes a USB-to-serial dongle which lsusb reports as:

  Bus 004 Device 005: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO

The driver for that is ftdi_sio:

    Device Drivers -->
      USB Support  --->
        USB Serial Converter support --->
	  USB FTDI Single Port Serial Driver (EXPERIMENTAL)

Here's a udev rule you might want:

   SUBSYSTEM=="tty", ATTRS{manufacturer}=="FTDI", SYMLINK="lacrosse", MODE="0666"

This creates a /dev/lacrosse symlink to the appropriate /dev/ttyUSBx. This is especially important if you have multiple USB-serial adapters. I put that in /etc/udev/rules.d/99-local.rules . That's for a Gentoo system; Debian and others may be different.

You can use Open2300 to talk to the station. Open2300 is clean, simple, elegant, well documented, and has a good API for writing your own tools. UPDATE: Oct 29: If you're a Perl person, try my new Device::LaCrosse::WS23xx

UPDATE: Oct 16: The honeymoon is over. I'm a little disappointed by the unit:

  • Occasional bad data. Between 1-3 times a day, one of the data values is garbage. For instance, outside temperature goes to 136 or -20, or pressure goes to 4 or 40. This could be the Open2300 software, or the unit, or even the USB-to-serial adapter. I don't know, but it's frustrating.
  • No Wind Averaging. Wind speed and direction are instantaneous values, whatever the sensor happens to be reading at the moment it is queried. If you log every 5 minutes, you don't get a sense of what's really going on. If you want to average, you need to hook up the wired connection (wireless only updates every 2 minutes), log wind speed/direction every 32 seconds, and make your own averages.
  • Barometer doesn't work well at high altitude. The minimum pressure it handles is 22.44 inHg, which is about 29.70 inHg relative at our elevation (7200 feet). In other words, we're right near its limit. In practice, readings around and below 29.80 seem flaky.
  • Poor display. The LCD display is poorly thought out. There's no way to see outside temperature and rainfall simultaneously, you need to push buttons until you get the desired reading. But time and date, which are pretty useless for those of us with clocks, are constantly displayed. In practice, I just fire up my web page instead of looking at the LCD.

You get what you pay for. At $90, this was still a good deal. More importantly, I can afford it while the $1,000 Davis remains a distant dream. I don't care that much about pressure or wind speed: what I care about is rain, and to a lesser degree temperature. So I hope the rain gauge works...

Posted by Ed | Permanent link | File under: Linux