Tweeting the weather with a WS2350, Open2300 and Raspberry Pi

13 06 2012

Well the last day or two have brought another USB/Serial adapter and some success, the weather station (Ws2350) is now communicating with the Raspberry Pi via USB. So what was the problem and what was the solution?

The weather station is well know for being a picky little device (read non standard) about its serial comunications, you’ll find many horror stories from people who have had to link it via a USB adapter. It’s worth noting that even though I now have communications there may be further problems to come, so the side project of adding a serial port to the GPIO of the Raspberry Pi is only on hold.

Anyway the problem was having a USB/Serial adapter that both the Raspberry Pi and the weather station were happy with. Other people with similar issues have thought it may be power related as the Raspberry Pi doesn’t have a lot of power to pass to the USB, but these adapters draw less than 25mA and I tried via a powered USB hub too, it wasn’t a power issue.

Original (supplied with the weather station) FTDI adapter (FT232BM), worked with the weather station and using Ubuntu on a PC, hung the Raspberry Pi when accessed but was recognised by the Raspberry Pi when plugged in.

PL2323 Adapater, bought to try a different chipset. Raspberry Pi was quite happy with it, even hooked up a PSION Series 5 as a terminal (see this) but the weather station via Raspberry Pi or via Ubuntu on a PC did not want to play. This failure was almost certainly down to the WS2350 being picky about its adapters or possibly a non standard pin out on the adapter.

FTDI Adapter (FT232RL) I had a post about the problem at RasberryPi.org and someone confirmed that they had an FTDI device working with Raspberry Pi, a device using a newer chipset. I did some research at the chip manufacturer and decided to track down an adapter using the newer FT232RL chip, thinking that as the weather station was happy with the old FTDI adapter maybe it would be with the new one too. I found one at tronisoft.com and ordered it on Sunday evening, it arrived Tuesday am. It worked.

Now that communications were in full swing I started to hack a little bit of python code to read the Open2300 log file and tweet it, my current Cumulus software tweets the weather every hour or so and its pretty easy to tweet from code.

 

The tweet2300.py code

#
#tweet2300 Steve Wardell 2012
#
from subprocess import call
import twitter
#auth twitter
auth = twitter.OAuth("your", "twitter", "oauth", "keys")
t = twitter.Twitter(auth=auth)
t.account.verify_credentials()
#run log2300
call(["rm", "log2300.txt"])
call(["log2300", "log2300.txt"])
#open and read the tweet.txt file produced by log2300
file = open("log2300.txt","r")
log2300 = file.read()
file.close()
#chop up the string to get only the basics we are interested in
words = log2300.split()
tweet = "Forecast " + words[17] + " : Wind " + words[8] + "mph " + words[10] + " : Baro " + words[15] + "hpa " + words[16] + " : Temp " + words[4] + "c" + " : Rain " + words[13] + "mm " + " : Humidity " + words[7] + "%"
#tweet the content of tweet.txt
t.statuses.update(status=tweet)
#the end

Its not very elegant but as a quick hack it did the job.

Open2300 is a suite of programs to read data from the Ws2350 by Kenneth Lavrsen (his web site). For this quick hack we first get authorised with twitter then the Log2300 program writes (appends in fact) to a file a short data stream from the Ws2350. As I just want a file with a single data set the code above first deletes any existing log then writes a new one. The log is then read into a python variable and split into an array, the array is then mashed up into a suitable order with some additional text to form a tweet.

All very basic stuff and quite a bodge but we get a tweet

This simple script could be added to a CRON job to run every hour and keep on tweeting. Now that I’m happy with basic communications and have a little bit of code and a tweet to show for my efforts I can focus on developing some python routines to make use of Open2300’s fetch2300 program to write feeds for my web site weather.60redwood.com and the live gauges.

More posts as progress is made

Advertisements




The Weather with Raspberry Pi – unsettled but brightening up later

9 06 2012

Well, my Raspberry Pi weather station project has been stumbling along. So, first, a little update on where I am at with it.

pywws doesn’t work with my weather station, ws2350, not unexpected and a quick chat with its author confirmed it. There are a few other weather enthusiasts out thee who are trying to get it working on the RPi so check on the forums. I will be keeping an eye on progress as getting basic comms working is a common problem, as you will see….

Open2300 has been most successful at this point, its a simple set of programs that will obtain and decode the weather station data and help you use it, there is even a program that will update Weather Underground for you. Compilation on RPi did kick out some warnigns, but I had similar warnings when I compiled it on Ubuntu. The bad news, I am still not able to confirm this works on RPI, because…

Serial/USB converters – as you would expect, take two well defined standards, the latter of which was ushered in as the replacement for the former and connect them together, yeah, it was never going to just work was it! Lets be clear this is NOT a RPi issue, it’s bigger than that.

So my weather station, an entry level consumer product, about a hundred quid, has a serial link. It also comes with a serial to USB adapter as very few modern computers come with an old RS232 serial port. The USB adapter is well known as a source of endless data trouble with even the most reliable connections producing corrupt data from time to time.

Plugging this adapter, which identifies itself as FTDI, seems fine, its recognised but trying to run Open2300 with it hangs the RPi. hard to know which bit is at fault or if all of it is contributing. Running the same adapter and Open2300 under Ubuntu (on a PC not RPi) works fine though, the weather station data is retrieved and decoded.. Using a powered USB hub makes no difference in this case, the adapter is drawing around 25ma at most so power shouldn’t be the issue anyway.

To see if it was the weather station on the end of the wire causing the problem I dusted off a Psion Series 5 and serial cable, plugged it in to the RPi via said adapter and tried the terminal program, nothing, dead, hung RPi.

A second adapter arrived this morning, this time using the Prolifc PL2303 chipset (or rip off of), first off, as it was still sat on the desk, I plugged in the Psion Series 5 and, LIFE! The terminal app on the Psion communicated with the RPi.

Encouraged by some communications success I plugged in the weather station and tried Open2300, nothing for a few minutes then a time out of sorts. Moving the test to an Ubuntu PC produced the same disappointing result, it seems that although RPi is happy with the PL2303 the weather station is not.

So two different types (chipset) of Serial/USB converters and different failures. At this point I started to look for any other adapter types but on such cheap items expecting a datasheet is a little too much.

Clearly the combination of things is a key and finding an adapter that both the RPi and the WS2350 are happy with is critical, it could also be like looking for a very specific bit of hay in a haystack (I always thought that looking for a needle in a haystack sounded quite do abel to me, big magnet, little needle, problem solved)

It was time to start exploring alternative options and RPi is not without some, namely the GPIO header.

Next step, obtain or build an RS232 interface for the GPIO header, the good news is others are way ahead of me and it looks like it should be fairly straight forward, though I cant find anything pre-made for the RPi, yet.

After some hours trying to find out more about the issue via the RPi forums, lots of folks with similar issues, and more generally looking for Debian, Arm, FTDI and so on it would seem that the FTDI drivers are not ARM compatible, so if this is correct the FTDI based adapters are not going to work. I think them being identified by RPi when plugged in and checked means nothing at this point as that’s not using the driver it’s just listing the USB data, but I don’t know.