
Switching from WeatherLink/Meteobridge to GraphWeather
A migration guide for station operators moving from WeatherLink or Meteobridge to GraphWeather β covering data export, template conversion, and publishing reconfiguration.
Every weather-station operator eventually hits a wall with their software. For WeatherLink users, it is usually the creeping cloud dependency β the feeling that your own data is being held hostage behind an API that can change its terms on a Tuesday afternoon. For Meteobridge users, it is the hardware lock-in β when the little black box dies, so does your pipeline. I have migrated stations out of both platforms into GraphWeather, and this guide distils those experiences into a repeatable process.
By the time you finish reading, you will know how to export your historical data, convert your templates, reconfigure FTP publishing, and run both systems in parallel during the transition period. The goal is zero data loss and minimal downtime β hours, not days.
Quick-Answer Summary
- Export everything first. Download your historical data from WeatherLink's cloud or Meteobridge's SD card before you change anything.
- Install GraphWeather on your station PC. Do not remove the old software yet.
- Import historical data into GraphWeather's database.
- Convert templates β map old variable names to GraphWeather variables.
- Reconfigure FTP publishing to point at your web host.
- Run both systems in parallel for at least two weeks.
- Decommission the old system once you have verified data parity.
Why Operators Switch
Leaving WeatherLink
WeatherLink has moved aggressively toward a cloud-first model. The desktop application still exists, but Davis increasingly funnels users toward WeatherLink Cloud (v2), which stores data on their servers and exposes it through a subscription-tiered API. The free tier has rate limits that make automated data pulls impractical for anything beyond casual use.
The core problem: your data lives on someone else's server, governed by someone else's terms of service. If Davis changes the API, raises prices, or β worst case β discontinues the service, your historical records are at risk. GraphWeather stores everything locally. You own the files. Full stop.
Leaving Meteobridge
Meteobridge is a dedicated hardware device (or a firmware image for certain routers) that sits between your station and the internet. It is elegant in its simplicity, but that simplicity becomes a liability when the hardware fails. The Meteobridge Pro, for example, is a single-board computer with an SD card β a known point of failure.
The deeper issue is flexibility. Meteobridge pushes data to predefined services (Weather Underground, CWOP, a custom URL) but does not give you a local template engine or a scheduling system with the granularity that GraphWeather offers. If you want to control the presentation layer, you need to look elsewhere.
Prerequisites
- A working weather station currently connected to WeatherLink or Meteobridge.
- The GraphWeather installer, downloaded from the GraphWeather page.
- A Windows PC that can run GraphWeather (or a Linux setup as described in the Linux deployment guide).
- FTP credentials for your web host (the FTP publishing guide covers setup).
- Time. Budget a full day for the migration itself, plus two weeks of parallel operation.
Step 1 β Export Historical Data from WeatherLink
Using the WeatherLink Desktop Application
If you still have the desktop application installed and your data is stored locally:
- Open WeatherLink. Navigate to File β Export.
- Select the date range β go all the way back to the first record.
- Choose CSV as the export format.
- Save the file somewhere accessible.
The exported CSV will contain columns like Temp Out, Hi Temp, Low Temp, Out Hum, Dew Pt, Wind Speed, Wind Dir, Bar, Rain, etc.
Using the WeatherLink Cloud API
If your data is only in the cloud:
- Log into weatherlink.com and navigate to Data β Download.
- Select the station, the date range, and the archive interval.
- Download as CSV.
The cloud export has a per-request row limit (typically 2,500 records). For multi-year histories, you will need to download in chunks β one month at a time is practical.
Critical warning: Export your data before cancelling any WeatherLink subscription. Once your subscription lapses, API access to historical data may be restricted or removed entirely. I have seen operators lose years of records because they cancelled first and tried to export after.
API Access for Automation
For large datasets, the WeatherLink v2 API is more efficient than manual downloads:
curl -s "https://api.weatherlink.com/v2/historic/YOUR_STATION_ID?api-key=YOUR_KEY&start-timestamp=1609459200&end-timestamp=1640995200" \
-H "x-api-secret: YOUR_SECRET" \
> weatherlink_export.json
You will need to convert the JSON output to CSV for GraphWeather import. A simple Python script handles this:
import json, csv, sys
with open("weatherlink_export.json") as f:
data = json.load(f)
writer = csv.writer(sys.stdout)
writer.writerow(["timestamp", "temperature", "humidity", "pressure",
"wind_speed", "wind_dir", "rain"])
for record in data["sensors"][0]["data"]:
writer.writerow([
record.get("ts", ""),
record.get("temp_out", ""),
record.get("hum_out", ""),
record.get("bar", ""),
record.get("wind_speed", ""),
record.get("wind_dir", ""),
record.get("rain_day_in", ""),
])
Step 2 β Export Historical Data from Meteobridge
Meteobridge stores data on its internal SD card in a SQLite database. Access it via the web admin interface:
- Navigate to http://meteobridge-ip/cgi-bin/livedata.cgi (or the admin panel's data download section).
- Select the date range and export format (CSV).
- Download the file.
Alternatively, SSH into the Meteobridge and copy the database directly:
scp root@meteobridge-ip:/var/log/meteobridge.db ./meteobridge_export.db
Then extract the data with SQLite:
sqlite3 meteobridge_export.db \
"SELECT datetime, temp, humidity, pressure, windspeed, winddir, rain FROM weather_data;" \
-csv > meteobridge_export.csv
Meteobridge timestamps are in UTC by default. Confirm this before importing β a timezone mismatch will shift your entire historical record by several hours.
Step 3 β Import into GraphWeather
GraphWeather includes a data import tool that accepts CSV. Launch it from Tools β Import Data in the desktop application.
Map the columns from your exported CSV to GraphWeather's expected fields:
Variable Mapping Table β WeatherLink to GraphWeather
| WeatherLink column | GraphWeather field | Notes |
|---|---|---|
Temp Out |
temperature |
Confirm units (Β°F vs Β°C) |
Hi Temp |
temp_max |
Daily maximum |
Low Temp |
temp_min |
Daily minimum |
Out Hum |
humidity |
Percentage |
Dew Pt |
dewpoint |
Calculated if not present |
Wind Speed |
wind_speed |
Confirm units (mph vs km/h) |
Wind Dir |
wind_dir |
Degrees or compass β GraphWeather accepts both |
Hi Speed |
wind_gust |
Maximum gust in interval |
Bar |
pressure |
Confirm units (inHg vs hPa) |
Rain |
rain_daily |
Confirm units (in vs mm) |
UV Index |
uv_index |
Only if sensor present |
Solar Rad |
solar_radiation |
Only if sensor present |
Variable Mapping Table β Meteobridge to GraphWeather
| Meteobridge column | GraphWeather field | Notes |
|---|---|---|
temp |
temperature |
Usually Β°C |
humidity |
humidity |
Percentage |
pressure |
pressure |
Usually hPa |
windspeed |
wind_speed |
Confirm units |
winddir |
wind_dir |
Degrees |
windgust |
wind_gust |
Confirm units |
rain |
rain_daily |
Usually mm |
uv |
uv_index |
If present |
Unit conversion: WeatherLink defaults to imperial units (Β°F, mph, inHg, inches of rain). GraphWeather can work in either system, but I recommend importing in metric and setting GraphWeather to display in your preferred units. This avoids conversion errors in the database layer.
The import tool will show a preview of the first 50 rows with the mapped columns. Verify that timestamps align, values look reasonable, and no columns are shifted. Then click Import. For large datasets (several years of minute-resolution data), the import may take a few minutes.
Step 4 β Template Conversion
If you have custom web pages built with WeatherLink's template tags, you will need to convert them to GraphWeather's syntax. The WeatherLink and templates guide is your primary reference for the original variable names, and the custom templates and plugin development guide covers GraphWeather's template engine in depth.
The conversion is mostly mechanical: find-and-replace variable names, adjust format specifiers, and add conditional guards for optional sensors.
Example Conversion
WeatherLink template:
<p>Temperature: <!--temperature--> Β°F</p>
<p>Wind: <!--windSpeed--> mph from <!--windDir--></p>
GraphWeather template:
<p>Temperature: <%temperature:.1f%> Β°C</p>
<p>Wind: <%wind_speed:.1f%> km/h from <%wind_dir:s%></p>
Note the differences: GraphWeather uses <%...%> delimiters instead of HTML comments, supports inline format specifiers, and uses underscore-separated variable names. If you are migrating a large template set, write a conversion script rather than editing each file by hand β the patterns are regular enough to automate.
Handling Template Features That Do Not Map Directly
WeatherLink's template system is simpler than GraphWeather's. Things like conditional blocks and loops exist in GraphWeather but may not have had equivalents in your WeatherLink templates. Take the opportunity to enhance your pages during the migration β add 7-day history tables, conditional frost warnings, and sensor-availability guards that were not possible before.
Step 5 β Reconfigure FTP Publishing
GraphWeather's FTP publisher is more flexible than both WeatherLink's and Meteobridge's. Configure it in Settings β Publishing β FTP:
- Host, port, username, password β same credentials you used before.
- Remote directory β the path on your web host where pages are uploaded.
- Upload schedule β set a primary interval (e.g., 60 seconds for the current-conditions page) and a secondary interval (e.g., 15 minutes for historical pages).
- File list β specify which files to upload on each schedule.
Test the connection with GraphWeather's Test Upload button before going live. The FTP publishing guide has detailed troubleshooting for common issues (passive vs. active FTP, TLS certificate errors, directory permission problems).
Step 6 β Run Both Systems in Parallel
Do not flip the switch overnight. Run both the old system and GraphWeather simultaneously for at least two weeks. During this period:
- Both systems read from the station hardware. Most Davis consoles support multiple readers (the data logger broadcasts to all connected software). If yours does not, use a serial splitter or configure one system to read and export to a file that the other imports.
- Compare the published output from both systems daily. Check timestamps, values, and completeness.
- Watch for drift. A 0.1 Β°C difference in temperature is normal (different calibration offsets). A 2 Β°C difference means one system has a unit conversion error.
- Verify that your Grafana dashboards (if you followed the Grafana dashboard guide) continue to receive data seamlessly during the transition.
Once you are confident the data matches, decommission the old system. Keep the WeatherLink desktop application installed (but not running) as a backup data viewer for at least six months.
Migration Checklist
Use this checklist to track your progress:
- Export all historical data from WeatherLink or Meteobridge
- Verify exported data is complete (check first and last dates, row counts)
- Install GraphWeather
- Import historical data with correct column mapping
- Verify imported data in GraphWeather's data viewer
- Convert templates to GraphWeather syntax
- Test templates in preview mode
- Configure FTP publishing credentials and schedule
- Test FTP upload
- Enable parallel operation (both systems running)
- Compare published output daily for two weeks
- Verify data parity (timestamps, values, completeness)
- Decommission old system
- Remove old system's scheduled tasks / services
- Confirm web host is receiving only GraphWeather uploads
- Archive old system's configuration and data as backup
Common Mistakes
- Losing historical data by not exporting before cancelling subscriptions. I cannot stress this enough. WeatherLink Cloud access is tied to your subscription. Export first, cancel second. There is no undo.
- Timezone mismatches during import. WeatherLink desktop stores data in local time. WeatherLink Cloud uses UTC. Meteobridge uses UTC by default. GraphWeather can import either, but you must tell it which one. A wrong guess shifts your entire history by your UTC offset.
- Unit conversion errors. WeatherLink defaults to imperial. GraphWeather defaults to metric. If you import Β°F data into a field expecting Β°C, every temperature reading will be wildly wrong. Double-check units for every column during the mapping step.
- Forgetting to update external services. If your old system uploaded to Weather Underground, CWOP, or PWSWeather, configure those uploads in GraphWeather too β otherwise your station will go offline on those networks during the transition.
- Not running in parallel long enough. Two days is not enough. Weather data has daily cycles, weekly patterns, and event-driven anomalies (storms, sensor failures). Two weeks gives you enough variety to catch issues that would not appear in a calm 48-hour window.
Related Reading
- GraphWeather overview β features, download, and getting started.
- Publishing your weather pages β the full pipeline from template to live site.
- WeatherLink and templates guide β variable reference for your existing WeatherLink templates.
- FTP publishing guide β detailed FTP setup and troubleshooting.
- Build a Grafana Weather Dashboard β visualise your migrated data in Grafana.
- GraphWeather vs. Weewx vs. CumulusMX β if you are evaluating alternatives during the migration.
- Custom Templates & Plugin Development β deep dive into the template system you are migrating to.
- Running GraphWeather on Linux β if your migration also involves changing operating systems.
FAQ
Can I import WeatherLink data incrementally, or does it have to be all at once? GraphWeather's import tool handles both. You can import a full historical dump and then set up a scheduled import for any remaining gap. However, once GraphWeather is reading directly from the station hardware, new data flows automatically β you only need import for the historical backfill.
What if my WeatherLink data has gaps? Import what you have. GraphWeather marks gaps in its database and handles them gracefully in reports and charts β no interpolation, no fabricated data. The gaps will be visible in historical views, which is honest and correct.
Do I need to keep my Davis data logger? Yes. The data logger is part of the station hardware, not part of WeatherLink. GraphWeather reads from the logger just like WeatherLink did. Do not remove or reset the logger during migration β it contains the most recent records that may not have been exported yet.
Can I migrate from Meteobridge to GraphWeather without a Windows PC? You can run GraphWeather on Linux via Wine or Docker β the Linux deployment guide covers the options. The migration process is the same regardless of the host operating system.
How long does a typical migration take? The active work β exporting, importing, converting templates, configuring FTP β takes about one full day. The parallel operation period adds two weeks. Total calendar time: roughly three weeks from start to decommission. Do not rush it. Your historical data is irreplaceable.