ipweget
ipweget
- Details
- Category: ipweget
About
ipweget is a perl script to read the data provided by an ipwe1 weatherstation by ELV and convert it to several useful formats and uses: XML output, HTTP POST, MySQL and Weather Underground upload.
The idea behind the ipwe1 is nice: It's an ethernet-connected receiver for several seperate sensors, outdoor and indoor. But besides there are some essential sensors missing (air pressure and wind direction), the interface is the worst, I've ever seen.. No history, just a dull html table showing the current values. Since I'm used to the pretty comprehensive WeatherOffice, I used with my old WS2300 station, this was no option for me and so I started writing some software around it. First of all this script to gather the data provided to some of the services, I've been using for years now..
A small infosite with history graphs and stuff will follow soon..
The script is still at a very early beta phase and full of bugs, but since I really don't like the ipwe weatherstation, I will switch hardware soon and won't continue developing this script. So I decided to release it already - maybe some other ipwe-owner wants to use and/or continue working on it.. :)
Prequisites
- IPWE1 Weatherstation
- Perl
Modules:- utf8
- POSIX
- Getopt::Long
- LWP::UserAgent
- XML::Simple
- HTML::TableExtract
- Math::Round
- DBI
- URI::Escape
- HTTP::Request::Common
- Digest::MD5
Usage
All configuration and switches are done/set via command line. When called, the script will output the current data from your weather station and exit. To make real use of it, you'll need to add a cronjob to run every minute:
*/1 * * * * <username> <ipweget call>
e.g:
*/1 * * * * stimpy /usr/bin/perl /usr/local/bin/ipweget.pl 192.168.1.100
To enable more features, you'll need to provide more options:
XML
The simplest call will produce shorttagged xml-output:
./ipweget.pl <host>
e.g:
./ipweget.pl 192.168.1.100
To produce longer xml-tags use the switch -l (--long):
./ipweget.pl -l <host>
e.g:
./ipweget.pl -l 192.168.1.100
MySQL
To write the data to a mysql database, you'll have to provide host, dbname, username and password:
./ipweget.pl --mysql-host <host> --mysql-db <dbname> --mysql-user <username> --mysql-pass <password> <host>
e.g:
./ipweget.pl --mysql-host localhost --mysql-db weather --mysql-user weather --mysql-pass secret 192.168.1.100
Of course, you'll also need a matching database. See below for a sql dump...
HTTP POST
You can send the data to a remote script using HTTP POST by providing a destination url and password (will be sent md5-encoded):
./ipweget.pl --http <destination> --http-pass <password> <host>
e.g:
./ipweget.pl --http http://example.com/fetchscript.php --http-pass secret 192.168.1.100
Weather Underground
You can also send the incomplete data provided by the IPWE1 to Weather Underground. Besides your login data, you'll also need to provide sensor-mappings: Which sensor should be used for what data:
./ipweget.pl --wunder-id <wu stationid> --wunder-pass <wu password> --wunder-temp <outdoor temperature sensor name> --wunder-hum <outdoor humidity sensor name> --wunder-wind <wind sensor name> --wunder-rain <rain sensor name> --wunder-tempin <indoor temperature sensor name> --wunder-humin <indoor humidity sensor name> --wunder-temp2 <temperatur sensor 2 name> --wunder-temp3 <temperatur sensor 2 name> --wunder-temp4 <temperatur sensor 4 name> <host>
e.g:
./ipweget.pl --wunder-id IHESSENR2 --wunder-pass secret --wunder-temp OutsideShadow --wunder-hum OutsideHigh --wunder-wind OutsideHigh --wunder-rain OutdoorHigh --wunder-tempin Livingroom --wunder-humin Livingroom --wunder-temp2 OutsideHigh --wunder-temp3 OutsidePool --wunder-temp4 OutsideHeli 192.168.1.100
Everything
Of course, you can also combine all the parameters:
./ipweget.pl --mysql-host <host> --mysql-db <dbname> --mysql-user <username> --mysql-pass <password> --http <destination> --http-pass <password> --wunder-id <wu stationid> --wunder-pass <wu
password> --wunder-temp <outdoor temperature sensor name>
--wunder-hum <outdoor humidity sensor name> --wunder-wind <wind
sensor name> --wunder-rain <rain sensor name> --wunder-tempin
<indoor temperature sensor name> --wunder-humin <indoor
humidity sensor name> --wunder-temp2 <temperatur sensor 2 name>
--wunder-temp3 <temperatur sensor 2 name> --wunder-temp4
<temperatur sensor 4 name> <host>
e.g:
./ipweget.pl --mysql-host localhost --mysql-db weather
--mysql-user weather --mysql-pass secret --http http://example.com/fetchscript.php --http-pass secret --wunder-id IHESSENR2 --wunder-pass secret --wunder-temp OutdoorShadow
--wunder-hum OutdoorHigh --wunder-wind OutdoorHigh --wunder-rain OutdoorHigh --wunder-tempin Livingroom --wunder-humin Livingroom --wunder-temp2 OutdoorHigh --wunder-temp3 OutdoorPool --wunder-temp4 OutdoorHeli 192.168.1.100
More
There are some more options:
-q / --quiet | No output (no xml) |
-h / --help | short help text |
Download
GIT: https://gitlab.ambhost.net/stimpy/scripts_ipweget
Packages will follow soon..
WS2500
Harald Wollmayr has written some very similar scripts connectig the ipwe1 with a ws2500 database.