Getting and installing the software


The meteo package is free software distributed under the GNU general public license GPL. The full license is included with the package. The current version is 0.9.23, it can be downloaded from


Before configuring and building the software, make sure that your build system meets all the prerequisites as described on the prerequisites page.

Configuration and Installation of the package follow the familiar configure; make; make install pattern. For details see the INSTALL in the distribution. As a quick guide to meteo, read SETUP.

The most common failures during build usually have to do with missing libraries and header files. Many Linux systems have separate packages for libraries and headers, to build the software, you have to install both. E.g. SuSE systems have the headers in RPMs with the string -devel in the name.

If you encounter problems installing or using the meteo package, you can try your luck with the mailing list, just send a message containing nothing but "subscribe meteo" in the body to


The install target of the Makefile installs the programs in /usr/local/bin and /usr/local/sbin, the libraries in /usr/local/lib and a sample configuration file in /usr/local/etc/meteo.xml.

Database setup

Most meteo programs need access to the database. The database not only contains the data read from the weather station, but also structural information about the sensors of a station. This is done so that applications don't need to be able to read the meteo XML configuration file to make use of the data. The meteo XML configuration file contains instructions that are relevant to the meteo programs only, e.g. the communications parameters to talk to the weather station, or the description of the graphs drawn by meteodraw.

To create an initially empty database, you can use the script meteo.sql in the db directory of the distribution. This will create the necessary tables and add entries for the fields known to meteo. Since it will also create entries in the station and sensor tables for weather stations used during development, you will probably want to modify existing records or add records describing your own station.

To add records to these tables are modify some records, you can use a web based tool like phpMyAdmin or send SQL statements directly to the database using the mysql program. To add an entry for a new station Foo with id 47 (must be smaller than 128), you would use

mysql> insert into station(name, id, timezone, offset) values ('Foo', 47, 'BRT', -10800);
This station is 3 hours west of Grenwich.

Each station has a couple of sensor arrays. The VantagePro station usually comes with some sensors in the console, and some in the integrated sensor suite ISS, so the VantagePro has the sensor arrays console and iss. But you can add additional sensors to the VantagePro, e.g. a soil station or an extra temperature/humidity sensor. A sensor array can only have one sensor of a given type, e.g. it can only have one temperature sensor. For the console, the temperatur sensor is the inside temperature, for the iss, it is the outside temperature, and if you have a soil1 sensor array connected to your VantagePro, its temperature sensor measures soil temperature.

For each sensor array, you need an entry in the sensor table. The sensor table just keeps track of the names of the sensor arrays and connects them to stations. To create sensor entries for the Foo-station above, you could use

mysql> insert into sensor(name, id, stationid) values ('console', 85, 47);
mysql> insert into sensor(name, id, stationid) values ('iss', 86, 47);

The mfield table contains the various field types known to meteo. The only column of interest is unit, which specifies the units for the values stored in the database. The defaults in meteo.sql use metric units. Note that all stations in the database use the same units, and all fields of the same type use the same units. E.g. you cannot have metric units for soil temperature and Fahrenheit for outside temperature. Note that you can still convert values to other units for graphing using the XML expression syntax of meteodraw. The unit column only affects the units in the database.

When meteo adds an entry to the sdata or avg tables, it builds the primary key from the time, the sensor id and the fieldid (as found in the mfield table).

Database Access Rights

All meteo programs that access the database must be able to read all 5 tables. The following statement creates a user meteo who has read access to all tables of the meteo database:

mysql> grant select on meteo.* to meteo@localhost identified by 'public';
The meteoavg and meteopoll programs need update rights to the sdata and avg tables. The following statement actually grants some more rights:
mysql> grant all on meteo.* to writer@localhost identified by 'secret';

Upgrade from a previous version

Please read the ChangeLog or the NEWS files for specific information about upgrading. If any large scale conversions are necessary, there will be programms supporting this in the support directory of the distribution.

Upgrade to 0.9.14

The station table now includes longitude, latitude and altitude fields, which can be added using the following SQL:

  mysql> alter table station add column longitude double not null;
  mysql> alter table station add column latitude double not null;
  mysql> alter table station add column altitude double not null;
  mysql> update station set longitude = ..., latitude = ..., altitude = ...
         where id = ...;

Upgrade to 0.9.8-0.9.13

Just install over 0.9.7, there are no changes in database structure or configuration files. Please note, however, that the 0.9.7 sample config file had a bug, it included a average element for a nonexistent winddir operator. This didn't stop meteoavg from working, but it caused many error messages. If you still have this element in your meteo.xml, you should remove to save space on your log partition.

Upgrade to 0.9.7

This release adds the offset field to the station table. To create this field and populate it, use the following commands:

mysql> alter table station add column offset int not null default 0;
mysql> update station set offset = -10800 where name = 'Lajeado';
All the references to the offset in station configurations in meteo.xml can be deleted. The graph definitions still need offsets. The reason for this change was that the offset is needed by independent applications, so it should be available through the database. It previously was only available through the XML configuration file.

The averages are no longer computed automatically. There is now a new averages element in the station definition in the XML configuration file which defines how each field is to be averaged. The sample configuration file includes suitable definitions for VantagePro and Weather Monitor II, which you can copy into your existing configuration file. Please read the new section in the meteo.xml(5) manual page for details.

Upgrade to 0.9.6

The header table is no longer needed, you can drop it using

mysql> drop table header;