Introduction
OpenJ2300 is a pure Java program to control the LaCrosse Technology series 2300 weather stations. The API is based on and follows the Open2300 version but is object oriented and written entirely in Java. The Open2300 C library is not used. Instead communication is directly over the serial interface.
Detailed Description
OpenJ2300 uses the power of many existing open source libraries to provide a completely functional weather station package. It can read values from a 2300 series weather station, store these in a database and publish data, either directly from a built in web server or via FTP to a remote website.
The project is at initial stages and will mainly interest people wishing to get their hands dirty.
You can view a live weather station at this URL
http://pistehors.com/backcountry/wiki/Weather/Weather-Stations (data published every 30 minutes when my PC is online)
The weather station is located at Crolles in the French Alps.
Petr Brouzda also has a weather station at:
http://lovecka.info/meteo/ - Weather station is located at 50°43'18.34"N, 15°10'41.25"E. This station is using little different software setup:
- OpenJ2300 changed to log data into MySQL
- Added support for Serial-over-Ethernet (I'm using Lantronix MSS-100)
- Removed jetty and all the visualisation things from OpenJ2300
- Created PHP visualisation layer, which allow users to browse historical data, compare data from two years and so on.
This version od
OpenJ2300 is available for download here:
http://lovecka.info/openj2300/
Attached Files
Open2300J-jars.tar.gz Open2300J-0.21.tar.gz
Installation
Java
Open2300 uses features of Java version 5.0 (aka 1.5). You will need to install the appropriate JRE or JDK.
http://java.sun.com/
Java Communications API
Needed to talk over a serial (RS232) port.
Because Sun silently withdrew support for the Windows operating system for its Serial API at the end of 2005
OpenJ2300 now uses the RXTX package. This has support for over 100 operating systems. Included in the
OpenJ2300 library file are drivers for Max OSX, Solaris, Windows and Linux. More information on RXTX is available here:
http://rxtx.qbang.org/wiki/index.php/Main_Page
To get serial communications running copy the driver library (.so or .dll) from the appropriate operating system directory under ws2300/lib to a directory in your java.library.path system property or $LD_LIBRARY_PATH (Unix). For example on Microsoft Windows:
copy ws2300/lib/i386-mingw/rxtxSerial.dll to c:/Program Files/Java/jre1.5.0_03/bin
On Linux you will need to copy the file librxtxSerial.so to a location in your $LD_LIBRARY_PATH environment variable. For example
$ cp librxtxSerial.so /usr/java/j2sdk1.5.0/jre/lib/i386/
RXTXcomm.jar replaces the old Sun comm.jar file. You shouldn't need a java.comm.properties file.
Note that under windows the first serial port is COM1 and this is /dev/ttys01 under Unix. You will need to edit the
OpenJ2300.properties file to set this value.
Apache Commons.Net
This package is used for FTP communication with a remote Web Server. The FTP server location is set through the
OpenJ2300.properties file or can be disabled completely.
http://jakarta.apache.org/commons/net/
Apache Commens.Collection
Used by Commons.Net
http://jakarta.apache.org/commons/collections/
HSQL Database Engine
The hsqldb open source pure Java RDBMS is used for storing historical data
http://sourceforge.net/projects/hsqldb/
Database tables get written to the ws2300/db directory. The database is created automatically on first startup by the db/open2300.script file. You could use an alternative database by setting the JDBC driver in the
OpenJ2300.properties directory but you would need to create the database tables as per the open2300.script file.
Jetty
The embedded Java HTTP Server and Servlet Container is used for serving weather data to the Web and for administration screens
http://jetty.mortbay.org/jetty/
The port and document root can be set in the
OpenJ2300.properties file or the Web server can be disabled completely (the default). In this case CTL-C (SIGINT) will shut the weather station software down cleanly.
Velocity
The Velocity template engine is used to create user editable Web pages
http://jakarta.apache.org/velocity/
The template files (.vm) are stored in the htdocs directory and can be customized for your server.
JFreeChart
JFreeChart Java class library is used for graphic historical data
http://www.jfree.org/jfreechart/
Java Media Framework - Web Camera
If you install the Java Media Framework
http://java.sun.com/products/java-media/jmf/2.1.1/download.html
OpenJ2300 will capture pictures from your web camera and upload them to the site.
User Guide
The software comes as two packages. A compressed "jars" tar file (use Winzip or WinRAR to unpack) which contains all the libraries and the source and executables in another compressed tar file.
When you have unpacked the two files you should end up with a directory structure:
ws2300/
bin/ - compiled classes
lib/ - jar files
db/ - hsql database tables and properties
src/ - source code
htdocs/ - HTML output from weather station and templates
run.sh - Unix/Cygwin script for starting OpenJ2300
run.bat - DOS/Windows script for starting OpenJ2300
OpenJ2300.properties - User configuration properties, you will need to edit this file
use the run.sh command to start
OpenJ2300. If you see a "COM" port error check that there is no other program such as HeavyWeather using the port and that the weather station is plugged in to the correct port.
You may need to edit run.sh or run.bat to make sure that the correct values for your system are used.
OpenJ2300.properties
There are a number of things you can control through the propeties file and you will almost certainly have to edit this file to get
OpenJ2300 working on your system. For example you can increase the log message level to get more debug information. You can configure an alternative database such as
MySQL (you will need to create the tables manually). You can disable the interal webserver - in this case CTL-C (SIGINT) will shut the weather station down cleanly. You can disable FTP publishing of weather data.
Current Status
- Retrieves Temperature, Pressure, Humidity and Wind information from the weather station
- Generates 24 hour graphs of outdoor temperature, humidity, sea level pressure, wind speed and direction, zero isotherm
- Generates prevailing wind polar chart
- Webcam function
- Uploads to ftp server
- Seperate ftp server for images if required
- Integrated Web server
The next releases will clean up the graphing functions to produce clearer charts.
Great project. Note that I converted (removed) all your HTML code. TWiki does not need all that HTML. It does most if it all by itself.
--
KennethLavrsen - 17 Sep 2005
I've found some time to make some changes. The program now has an embedded webserver, if you connect to:
http://localhost:8080 you will see a two-paned web page. This lets you shut down
OpenJ2300 cleanly - which will save your Weather Data and it also lets you access a web page which shows current outside temperature and a graph of temperature changes over the last 24 hours.
Next thing to do is to clean up the current code and make all the various parameters configurable through the properties file. Still the current 0.12 release does show the general structure.
--
DavidGeorge - 22 Sep 2005
I've just uploaded v0.13. This is a cleanup of the main code body. The shutdown procedure has been improved, shutdown is achieved through a local webpage, however the shutdown servlet just sets a flag telling the main thread to exit when it wakes up. Clean shutdown is necessary to save data into the RDBMS.
I've also added FTP upload to a remote webserver.
--
DavidGeorge - 28 Sep 2005
Version 0.14 changes the structure again. FTP and Web publishing are move into their own thread and the main thread is now the Web server. The shutdown process has been improved. The data collection thread now inserts history records from the weather station to update date gaps when the program is not running.
--
DavidGeorge - 11 Oct 2005
Version 0.15 adds the ability to connect a web camera via the Java Media Framework. I made some changes so that if a weather station is not connected the last values from the database are displayed. Also added humidity and dewpoint and 24 hour humidity graphs.
--
DavidGeorge - 15 Oct 2005
Version 0.17
- Allows a seperate FTP/Web server for hosting images
- Decreased blocking in weather station read function for improved throughput
- Wind speeds are now averaged over 5 tries with gust information
- Cloudbase and zero isotherm information is displayed
- Wind speed chart scaling has been improved
- Rain figures are rounded to 1 decimal to avoid "negative" rainfalls due to double scaling
--
DavidGeorge - 24 Nov 2005
Version 0.18 includes a couple of bug fixes
- Zero isotherm calculation are now correct
- A fix from Petr Brouzda for accessing historic Rain data
- Petr has also including a DOS/Windows Batch file to start OpenJ2300
Petr has some 3 and 7 day charts which I'm hoping he will include in a 0.19 release. I also plan to separate the wind speed and direction charts so this data is clearer. I also have a sunset calculator so that sunset/sunrise and overnight minimum temperatures can be calculated.
--
DavidGeorge - 03 May 2006
There area a number of changes for release 0.20 largely concerned with management.
- On the graphing side the wind direction/speed graph has been improved
- Internal Web server can be disable throught the properties file - set the port to -1. In this case CTL-C or SIGINT will shut the weather station down cleanly
- The FTP publisher can be disabled by leaving the server fields blank. At its most basic OpenJ2300 will just log data to the internal database
- The location of where images and HTML data is published can be set through the docRoot property. In this case copy all the .vm template files from the htdocs directory to the new docRoot
- Logging levels can be user set, the default is INFO - most messages can be controlled through this mechanism
--
DavidGeorge - 12 Jun 2006
Release 0.21 changes the format of the Wind Rose to make it a bit clearer. It also adds a new feature to the
OpenJ2300.properties files. For Temperature, Humidity and Zero Isotherm charts you can specify the graphs to produce using the
graph.temperature.interval=24h,3d
property. The above example will produce a 24 hour temperature chart and a 3 day temperature chart. For the outside temperature this are called
- Outdoor-Temp-24-Hours.jpg
- Outdoor-Temp-3-Days.jpg
You will need to modify the Velocity template file: temperature.vm to include the graphs you generate. You can create as many graphs as you like but remember that each one uses resources on your computer.
--
DavidGeorge - 13 Jun 2006
Hi all,
the JAVA version looks nice. Currently I run the C version.
I would like to downsize my hardware. My idea is to have a webservice installed on a tiny box. One could call the webservice to get the current weatherdata. In general what is need is a wrapper around XML2300.
I have no experience with C and JAVA as a webserivce. Dose someone of you have a solution?
~~~
--
OschenLars - 21 Apr 2016