Connect your weather station to WindShare
Your station can help every sailor on Balaton. WindShare shows your wind on the sailors' map and feeds it into the local wind forecast. Your temperature, pressure and rain are used too. It takes a few minutes: register the station, copy two values into your station's app or software, and check that the data arrives.
Magyarul: https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/hu/
In short
- Register your station. You get a Station ID and a Station key at once.
- Find your device in the table below and follow its section.
- Check your station on the status page. The first values should appear within a few minutes.
- A moderator reviews the station. After approval it appears on the WindShare map.
Register your station
Open the registration page and fill in:
| Field | What to enter |
|---|---|
| Station name | A short public name, e.g. Balatonfüred harbour or Tihany, Sajkod |
| Owner name | Optional. Never published |
| Contact e-mail | Required. Never published. We use it only to contact you about the station |
| Position | Latitude and longitude in decimal degrees (WGS84), e.g. 46.9573, 17.8936 |
| Ground elevation | Height of the ground at the station above sea level, in metres |
| Anemometer height | Height of the wind sensor above the ground, in metres |
| Thermometer height | Height of the temperature/humidity sensor above the ground, in metres |
| Exposure | Open water, shoreline, pier or breakwater, rooftop, garden, open field, or other |
| Hardware | Brand and model, e.g. Ecowitt GW2000 + WS90 |
| Connection | How the station will send data (see which device) |
| Water temperature channel | Optional. If an Ecowitt WN34 probe floats in the lake, its channel (1–8) |
| Site description | A sentence or two: what is around the sensors, how far the water is |
| Consent | You agree that the station's name, position and measurements are published |
Tip: To read a position, long-press the spot in Google Maps. The two numbers that appear are latitude and longitude.
The station must stand within about 15 km of Balaton's forecast areas. Stations further away are not used for the lake's wind.
After you submit the form you get two values:
| Value | Example | Notes |
|---|---|---|
| Station ID | WS4K7Q2M | 8 characters, always starts with WS. Upper or lower case both work |
| Station key | k7m2q9x4h3c8v6tp | 16 lowercase letters and digits. Type it exactly |
Note: The key is shown only once. Copy it somewhere safe now. If you lose it, write to the moderator for a new one.
The station key does two things only: it sends data for this one station, and it opens that station's own status page. It cannot log in anywhere, change any setting or show anyone's personal details, not even yours. That is why it is safe to type it into a device that sends it unencrypted. It is not an account password. Some other networks ask for your account password instead. We never do.
New stations start as pending. While a station is pending, its uploads are received and stored, and you can watch them on the status page. They appear on the WindShare map and go into the forecast only after a moderator approves the station. The moderator checks the position, the siting and whether the values look plausible, and gives the station a WMO siting class (1–5). A station can be used for some quantities and not others. For example, a sheltered anemometer can still give good temperature and pressure.
A pending station that sends nothing for 14 days is removed. Register again when the station is ready.
Two ways in
| Route | Status | How often | Notes |
|---|---|---|---|
| Direct upload (recommended) | Available | Every minute (5 s to 10 min works) | Your station or software sends straight to WindShare. No third party, no API key that expires |
| Pull from Weather Underground, WeatherLink.com or Netatmo | Planned, not available yet | — | For devices that cannot send to a custom server. Until then, use a bridge (see Davis) |
Direct upload works in three ways. Your device or software decides which one you use:
- Weather Underground protocol. Most consoles, Wi-Fi gateways and weather programs can send data in Weather Underground format to a custom server. This is the route for most stations.
- Ecowitt protocol. Ecowitt and other Fine Offset gateways have their own format, which carries a little more data.
- WindShare API. For your own software, data loggers and scripts. It uses metric units. See own software and API.
Which app or device do you have?
The station's manual or box usually names the app you used to set up its Wi-Fi. That app decides which section you need.
| You set up your station with… | Typical brands and models | Go to |
|---|---|---|
| WS View Plus or the Ecowitt app | Ecowitt, Froggit, Sainlogic, Eurochron, Alecto, Ventus, Misol, some Sencor, Gogen and Garni | Ecowitt and WS View Plus |
| The gateway's own web page | Ecowitt GW1100, GW1200, GW2000, GW3000; WS3900, HP2560 consoles | Ecowitt and WS View Plus |
| WSLink | Sencor SWS 12500 and SWS 10500, Garni Arcus family, Bresser Wi-Fi stations | WSLink |
| Weather software on a PC or Raspberry Pi | WeeWX, Meteobridge, CumulusMX, Weather Display, Meteohub | Weather software |
| WeatherLink (Davis) | Vantage Pro2, Vantage Vue, WeatherLink Live, EnviroMonitor | Davis |
| The Netatmo app | Netatmo Smart Weather Station | Netatmo |
| Your own logger or script | Campbell, Vaisala, Arduino, Raspberry Pi, anything that speaks HTTP | Own software and API |
| Anything that can send to a "Wunderground-compatible custom server" | — | Weather software |
Ecowitt and WS View Plus
For the Fine Offset family: Ecowitt, Froggit, Sainlogic, Eurochron (Conrad), Alecto, Ventus, Misol, and several Sencor, Gogen and Garni models. This is the most common station type around the lake.
Open the Customized upload settings in one of these ways:
- WS View Plus: My Devices → select your station → More → Weather Services → swipe to the Customized page.
- Ecowitt app: open the station → the menu at the top right → Others → DIY Upload Servers → Customized.
- Gateway web page (GW1100, GW1200, GW2000, GW3000, and WS3900 or HP2560 consoles): type the device's IP address into a browser on the same Wi-Fi → Weather Services → scroll down to Customized.
Then fill in the fields. Choose one of the two protocols:
| Field | Wunderground protocol | Ecowitt protocol |
|---|---|---|
| Customized | Enable | Enable |
| Protocol Type Same As | Wunderground | Ecowitt |
| Server IP / Hostname | windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io | windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io |
| Path | /weatherstation/updateweatherstation.php? | /pws/ecowitt/ + your ID + / + your key |
| Station ID | your Station ID | (field not shown) |
| Station Key | your Station key | (field not shown) |
| Port | 80 | 80 |
| Upload Interval | 60 seconds | 60 seconds |
Press Save (at the top in the apps, at the bottom of the web page). Then check your station. The first values appear within a few minutes.
With the example values, the Ecowitt path is:
/pws/ecowitt/WS4K7Q2M/k7m2q9x4h3c8v6tp
Note: Type the hostname in lowercase, without
http://and without a trailing/. In Wunderground mode the path must end with?, because these devices append their data straight after it.
Which protocol should you choose?
- Ecowitt sends slightly richer data, for example the station (absolute) pressure and the console's 10-minute averages. Your ID and key go into the path, because this protocol has no ID or key fields.
- Wunderground works on every Fine Offset clone, including older firmware.
Either is fine. The device has one Customized slot, so the station sends to WindShare one way only.
The Customized upload runs alongside Weather Underground, Ecowitt.net and Weathercloud. You do not have to give any of them up.
Tip: No Customized page? Update the station's firmware from the app, and update the app itself. Older firmware does not have the option.
These stations send rain as last hour and since midnight totals, not as a 24-hour total.
WSLink stations
For stations you set up with the WSLink app: Sencor SWS 12500 and SWS 10500, the Garni Arcus family, and several Bresser Wi-Fi stations.
- Open the station in WSLink and go to its settings, to the weather servers. Besides Weather Underground and Weathercloud there is a custom server ("own server") option. On some Garni models it is on the device's own setup page, under User's own server.
- Protocol: Wunderground. If there is a "WSLink" protocol box, untick it.
- Server:
windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io - Path:
/weatherstation/updateweatherstation(no?here, unlike Ecowitt). - Station ID: your Station ID. Station key or password: your Station key.
- Port:
80. - Save, then check your station.
If the app asks for one full address instead of separate fields, enter:
http://windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io/weatherstation/updateweatherstation.php
Tip: No custom server option? Update the station's firmware in WSLink. If it is still missing, the console cannot send to us directly. A small bridge such as WeeWX on a Raspberry Pi can read it and send for it (see weather software).
Weather software
Any program that can send to a "Wunderground-compatible custom server" works with these settings:
| Setting | Value |
|---|---|
| Server / URL | http://windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io/weatherstation/updateweatherstation.php |
| HTTPS, if the software supports it | https://windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io/weatherstation/updateweatherstation.php |
| Station ID | your Station ID |
| Password / key | your Station key |
The server answers success, as Weather Underground does. Software that checks the answer is satisfied.
WeeWX
In weewx.conf, point the Wunderground uploader at WindShare:
[StdRESTful]
[[Wunderground]]
enable = true
station = WS4K7Q2M
password = k7m2q9x4h3c8v6tp
server_url = http://windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io/weatherstation/updateweatherstation.php
rapidfire = False
Restart WeeWX and watch its log: each upload should be followed by a success line. Check the option names against the WeeWX documentation for your version. The built-in [[Wunderground]] section sends to one server only. If it already feeds Weather Underground itself, keep that and add WindShare with a second uploader extension.
Meteobridge
Use a push service that sends an HTTP request every minute (Services → Push Services → HTTP request). Send it to the metric URL template described under own software and API, with Meteobridge's template variables in place of the values. For example:
https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/upload?id=WS4K7Q2M&key=k7m2q9x4h3c8v6tp&wind_speed_ms=[wind0avgwind-act]&wind_gust_ms=[wind0wind-max1]&wind_dir_deg=[wind0dir-act]&air_temp_c=[th0temp-act]&rel_humidity_pct=[th0hum-act]&pressure_station_hpa=[thb0press-act]&rain_day_mm=[rain0total-daysum]
The variable names above are illustrative. Check them against Meteobridge's template documentation for your sensors. Meteobridge works in metric units by default.
CumulusMX
Under Settings → Third Party → Custom HTTP, enable Custom HTTP Seconds (e.g. every 60 seconds) and enter the metric URL template with Cumulus web tags. For example:
https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/upload?id=WS4K7Q2M&key=k7m2q9x4h3c8v6tp&wind_speed_ms=<#wspeed rc=y>&wind_gust_ms=<#wgust rc=y>&wind_dir_deg=<#bearing>&air_temp_c=<#temp rc=y>&rel_humidity_pct=<#hum>&pressure_msl_hpa=<#press rc=y>&rain_day_mm=<#rfall rc=y>&rain_rate_mmh=<#rrate rc=y>
- Set Cumulus's wind unit to m/s, temperature to °C, pressure to hPa and rain to mm, or convert in the template.
rc=yreplaces the decimal comma with a point. On a Hungarian-language system this is essential.- If your average wind period is 10 minutes, add
&wind_avg_s=600. - Use the web-tag names from the CumulusMX documentation for your version. The ones above are an illustration.
Weather Display, Meteohub and others
Look for a custom or Wunderground-compatible server setting, and use the values from the table at the top of this section. Meteohub can also send through a custom HTTP template like the one under own software and API.
Davis stations
Davis Vantage Pro2, Vantage Vue, WeatherLink Live and EnviroMonitor cannot send to a custom server by themselves. They send only to WeatherLink.com. To connect one now, use a bridge:
- Meteobridge, with a Davis USB or serial data logger, then the Meteobridge settings. Check Meteobridge's hardware list for WeatherLink Live support.
- WeeWX, with the WeatherLink Live driver or a Davis data logger, then the WeeWX settings.
- CumulusMX, which reads both Vantage loggers and WeatherLink Live, then the CumulusMX settings.
A direct pull from WeatherLink.com or from Weather Underground is planned but not available yet.
Netatmo
Netatmo stations cannot upload to other servers. A Netatmo connection, which would read your data through Netatmo's own interface, is planned but not available yet.
Most Netatmo wind gauges sit low, on a pole or a railing close to buildings. Even once the connection exists, a moderator will often use a Netatmo station for temperature and pressure rather than wind.
Own software and API
For data loggers, scripts and developers. Units are metric, and you can send averages made the way you want.
URL template (GET or POST)
For software that can only build a URL:
https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/upload?id=WS4K7Q2M&key=k7m2q9x4h3c8v6tp&wind_speed_ms=5.2&wind_gust_ms=8.1&wind_dir_deg=230&air_temp_c=12.3&rel_humidity_pct=71&pressure_msl_hpa=1015.1
The same template also works over plain HTTP, at http://windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/upload, for devices without HTTPS. With POST, the fields may also go in a form-encoded body.
JSON API
POST https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/observations, with HTTP Basic authentication: the username is the Station ID and the password is the Station key.
curl -u WS4K7Q2M:k7m2q9x4h3c8v6tp \
-H "Content-Type: application/json" \
-d '{"observations":[{"time":"2026-11-13T10:20:00Z","wind_speed_ms":5.2,"wind_gust_ms":8.1,"wind_dir_deg":230,"wind_avg_s":600,"gust_s":3,"air_temp_c":12.3,"rel_humidity_pct":71,"pressure_msl_hpa":1015.1}]}' \
https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io/pws/v1/observations
- Up to 100 observations per request.
- Observations may be up to 48 hours old, so a logger can send its backlog after an outage.
- The response says how many observations were accepted and why any were rejected:
{"status":"ok","station_id":"WS4K7Q2M","station_status":"pending","accepted":1,"stored":1,"rejected":[]}
A rejected observation is listed as {"index": i, "reason": "..."}, where index is its position in your array. If none of them can be used, the answer is 400 with the same list. stored can be lower than accepted: uploads within the same minute are combined into one record (see how we check the data). An observation may be stamped at most 2 minutes ahead of the server's clock.
Fields
Every field is optional. Leave out what you do not measure.
| Field | Unit | Meaning |
|---|---|---|
time | ISO 8601 UTC or Unix seconds | The end of the averaging period. Left out = the time of arrival |
wind_speed_ms | m/s | Mean wind speed |
wind_dir_deg | degrees | Direction the wind blows from, 0–360, true north |
wind_gust_ms | m/s | Peak gust |
wind_avg_s | seconds | Averaging period of speed and direction, e.g. 600 for a 10-minute mean |
gust_s | seconds | Gust duration, e.g. 3 |
air_temp_c | °C | Air temperature |
rel_humidity_pct | % | Relative humidity |
dew_point_c | °C | Dew point |
pressure_station_hpa | hPa | Absolute pressure at the station |
pressure_msl_hpa | hPa | Pressure reduced to mean sea level |
rain_1h_mm | mm | Rain in the last hour |
rain_day_mm | mm | Rain since local midnight |
rain_rate_mmh | mm/h | Rain rate |
solar_wm2 | W/m² | Global solar radiation |
uv_index | — | UV index |
water_temp_c | °C | Lake water temperature |
Answers
The URL template and the JSON API answer with the same HTTP status codes:
| Code | Meaning |
|---|---|
200 | Accepted |
400 | The data could not be read, or a value is invalid |
401 | Wrong Station ID or key, or the station was retired |
403 | The station is suspended |
429 | Uploads arrive too often. Slow down |
Measuring the WMO way
If your logger can compute them, send what the World Meteorological Organization (WMO-No. 8) defines:
- A 10-minute mean wind, with
wind_avg_s=600, ending on the ten minutes (HH:00, HH:10, …). - A 3-second gust (the highest 3-second running mean in the period), with
gust_s=3. - Direction averaged as a vector: average the wind's east and north components, never the angles. The mean of 350° and 10° is 0°, not 180°.
- Recording the heights at registration is enough. Do not "correct" the speed to 10 m yourself.
Check your station
The status page has a Check my station section. Enter your Station ID and key to see:
- the station's status: pending, active or suspended;
- when the last upload arrived, and the protocol and software the server detected;
- the last values as the server understood them, in metric units;
- any quality flags, for example a wrong clock, a value out of range, or a gust lower than the mean wind;
- the names of the raw fields your device sent, with the credentials removed.
This is always the first step when something does not look right. If the page shows no upload at all, the device is not reaching the server: check the hostname, path, port and key. If it shows uploads but odd values, check the units and the siting.
Siting your sensors
Good siting matters more than an expensive sensor. These rules follow the WMO guide (WMO-No. 8). A perfect site is rare, so do what you can and describe the rest truthfully at registration.
Wind
- Ideally 10 m above open ground, the international standard height.
- Keep obstacles at a distance of at least 10 times their height. A 5 m tree should be at least 50 m away.
- On the lake shore, a mast or a pier head with free fetch over the water is best. That is the wind sailors sail in.
- On a roof, mount the sensor at least 2–3 m above the ridge or the highest nearby obstacle. Close to the roof the flow is disturbed.
- Tell us the real height. We record it and do not "correct" the speed, so the forecast can take it into account.
- Ultrasonic sensors (e.g. Ecowitt WS80, WS90) are fine.
Temperature and humidity
- 1.25–2 m above the ground, over grass or natural ground.
- In a ventilated radiation shield (louvred or Stevenson type). Never in direct sun.
- Not over asphalt or paving, not on a roof, and away from walls, windows, chimneys and air-conditioner outlets.
- The small plastic shield of cheap all-in-one sensors heats up in sunshine and calm weather. A separate, better shield helps a lot.
Pressure
- Enter the correct ground elevation at registration.
- If the device sends absolute (station) pressure, as Ecowitt does, we use that and reduce it to sea level ourselves.
- Otherwise, calibrate the relative pressure on a calm day against the nearest official station (HungaroMet, met.hu).
Rain
- The gauge must be level, with its rim 0.5–1.5 m above the ground.
- Nothing may rise above a 45° line from the rim. The distance to an obstacle should be at least twice its height, ideally four times.
- Clean the funnel regularly. Leaves and insects block it.
Sun, UV and water
- Solar radiation and UV: unshaded all day, and level.
- Water temperature: a floating probe (e.g. Ecowitt WN34) 10–30 cm under the surface, away from the shallow edge of the shore, and shaded from the sun.
How we check the data
Every upload is checked before it is stored:
| Check | What happens |
|---|---|
| Range limits | Each quantity has plausible limits, e.g. air temperature −40 to +50 °C, mean wind 0–60 m/s, gusts 0–75 m/s, sea-level pressure 900–1080 hPa. A value outside them is dropped and flagged, not stored |
| Gust and mean wind | A gust lower than the mean wind is dropped and flagged |
| Clock | If the device clock is more than 10 minutes off, we use the time the upload arrived and flag it |
| Missing values | A field you leave out stays empty. Weather Underground's -9999 also means "missing" |
How the measurements are combined:
- One record per minute. Faster uploads (RapidFire, real-time, every 5–16 s) are accepted and combined on the server into one record per minute. The wind is vector-averaged and the peak gust is kept. So uploading faster does not make your station "better" on the map, and every 60 s is plenty.
- 10-minute records, aligned to the WMO clock (HH:00, HH:10, HH:20, …). These go into the forecast, with the number of measurements behind each one.
The moderator's part:
- After approval, the moderator gives each station a WMO siting class from 1 (best) to 5. The forecast can weigh stations by it.
- A station is used for each quantity only where it is fit for it. A sheltered anemometer's wind may be left out while its temperature and pressure are used.
Questions and troubleshooting
There is no Customized page in the app
Update the station's firmware from the app, and update the app. Older firmware lacks the option.
The status page shows no upload
- Path: for Ecowitt in Wunderground mode, the path must end with
?:/weatherstation/updateweatherstation.php?. For WSLink, use no?:/weatherstation/updateweatherstation. - Hostname: enter only
windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.io, withouthttp://and without a trailing/. - Key: the key is lowercase letters and digits. Type it exactly. The Station ID is not case-sensitive.
- HTTP only: many consoles cannot do HTTPS. Use
windshare-pws.wittysmoke-181349cf.eastus.azurecontainerapps.iowith port80. The main server address (https://windshare-server.wittysmoke-181349cf.eastus.azurecontainerapps.io) accepts HTTPS only.
The device log says INVALIDPASSWORDID
The Station ID or key is wrong. Copy them again from your notes, or ask the moderator for a new key.
My station is still pending
New stations wait for a moderator's review. Your data is stored meanwhile, so nothing is lost. If it takes more than a few days, write to us.
My wind does not show on the map
Check the status page. The moderator may have excluded the station's wind because of its siting. Or it may simply be calm, and zero wind is a valid reading.
The pressure looks wrong
Usually the elevation is wrong, or the relative pressure was never calibrated. See pressure, and tell the moderator the correct elevation.
Why is there no 24-hour rain total?
Most consoles send only last-hour and since-midnight totals, so that is what we use.
How often should the station upload?
Every 60 seconds is ideal. Anything from 5 seconds to 10 minutes works.
Can I keep sending to Weather Underground or Weathercloud?
Yes. The WindShare upload runs alongside them.
I moved the station
Tell the moderator the new position, heights and surroundings. A position change needs approval again.
Privacy and data use
- After approval, the station's name, position and measurements are published. They appear in the WindShare app and on WindShare's race and forecast pages, and are used in the wind forecast.
- Your name and e-mail address are never published. We use them only to contact you about the station.
- You can ask for your station and its data to be deleted at
peter@synergocom.eu. - How long we keep the data: the 1-minute records for about a month, the 10-minute records for about two years.
Stuck? Contact us
Write to peter@synergocom.eu and include:
- your Station ID (never the key);
- the device and the app or software you use;
- where you got stuck;
- a screenshot of the status page.