---
title: "Weathercloud"
description: "Weathercloud cloud weather data integration. Poll real-time station data — temperature, humidity, wind, rain, UV index and more — via HTTP in TapHome."
url: "https://taphome.com/en/compatibility/weathercloud/"
language: en
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","sensor","weather","cloud-service","packet-parser"]
  questions: ["How to integrate Weathercloud with TapHome?","What weather data does the Weathercloud TapHome template provide?","How to get the Weathercloud Device ID for TapHome?","Why does Weathercloud show stale data in TapHome?","How to authenticate with Weathercloud for the TapHome integration?","What sensors does the Weathercloud template read?"]
---

# Weathercloud

Communication: Packet Parser → HTTP

- [Weathercloud Website](https://weathercloud.net)

## Integration guide

Weathercloud is a cloud-based weather data platform with a global network of over 100,000 personal weather stations. TapHome connects to Weathercloud via an HTTP Packet Parser template that polls real-time weather data from the platform's internal web API. The integration is read-only — all 14 devices in the template are sensors that display weather data from a linked station.

> [!WARNING]
> This integration uses an **unofficial, reverse-engineered API** (the internal endpoints of the Weathercloud web application). Weathercloud does not offer a public data retrieval API. The endpoints may change or be blocked without notice.

## Configuration

During template import, enter the **Device ID** — a ten-digit number that identifies the weather station on Weathercloud. The template uses this ID to poll `app.weathercloud.net/device/values?code={DeviceID}`.

### Obtaining the Device ID

1. Log in to the Weathercloud account at [weathercloud.net](https://weathercloud.net)
2. Open the **Devices** page from the profile menu
3. Click the **Settings** gear icon on the target device
4. Select **Link device** — the **Weathercloud ID** is the required Device ID

### Cookie authentication

The Weathercloud API requires a session cookie for authentication. The template sends a `cookie` header with every request. To obtain a valid session cookie:

1. Sign in to `app.weathercloud.net` in a browser
2. Open the browser developer tools (F12) and inspect the request headers
3. Copy the full `cookie` value from any request to `app.weathercloud.net`
4. Replace the `COOKIE` placeholder in the template's read script header with the actual cookie string

Session cookies expire after a period of inactivity. If the integration stops returning data, re-authenticate and update the cookie value in TapHome.

## Device capabilities

The template provides 14 read-only devices that parse fields from a single JSON response. All devices share the same HTTP polling mechanism with a 15-second poll interval (UV Index polls at 2.5 seconds). Every read script includes error handling — if the response is null or contains `"error"`, the device returns `NaN`.

### Temperature and humidity

- **Temperature & Humidity** — outdoor temperature in °C and relative humidity. Humidity is reported as 0–100 in the API and converted to a 0–1 ratio by the template.
- **Dew Point** — dew point temperature in °C
- **Wind Chill** — perceived temperature accounting for wind cooling effect, in °C. Optional — not all stations report wind chill.

### Wind measurements

- **Wind Speed** — current wind speed, converted from m/s to km/h (multiplied by 3.6)
- **Average Wind Speed** — averaged wind speed over the station's reporting interval, converted from m/s to km/h
- **Wind Gust** — peak wind speed, converted from m/s to km/h
- **Wind Direction** — current wind direction in degrees (0–360)
- **Average Wind Direction** — averaged wind direction in degrees

### Precipitation

- **Rain Rate** — current precipitation intensity in mm/h
- **Rainfall Today** — cumulative rainfall since midnight in mm

### Atmospheric and solar

- **Atmospheric Pressure** — barometric pressure in hPa
- **Solar Radiation** — solar irradiance in W/m². Optional — available only on stations equipped with a solar radiation sensor.
- **UV Index** — UV radiation level displayed as a multi-value indicator with 10 values grouped into 5 named levels: 0–1 Low, 2–3 Medium, 4–5 Medium High, 6–7 High, 8–9 Very High. Optional — requires a UV sensor on the station.

### Data freshness

- **Last Update Time** — Unix timestamp (seconds) of the last data upload from the weather station. Useful for verifying that the station is actively reporting.

### Additional capabilities

The Weathercloud API also exposes heat index, temperature-humidity-wind (THW) index, visibility, secondary temperature and humidity sensors, and indoor environment readings (temperature, humidity, dew point, heat index — available only to the station owner). These can be added in a future template update.

## Troubleshooting

### Data not updating

1. Check the **Last Update Time** value — if it is not advancing, the weather station has stopped uploading to Weathercloud
2. Verify the station is online at `app.weathercloud.net` — search for the Device ID and check the last update timestamp
3. Free Weathercloud accounts update every 10 minutes. Even though TapHome polls every 15 seconds, new data only appears at the station's upload interval.

### All values show NaN

1. Confirm the **Device ID** is correct — it must be the ten-digit number from the Weathercloud "Link device" settings, not the station name
2. Check the **cookie** value in the template read script. If the session has expired, the API returns an error and all devices fall back to NaN. Re-authenticate and update the cookie.
3. Verify the station exists and is publicly accessible on Weathercloud — private stations may require owner authentication

### Some sensors show NaN while others work

Not all weather stations have the same sensors. Fields like solar radiation (`solarrad`), UV index (`uvi`), and wind chill (`chill`) are optional and depend on the physical hardware of the station. If a field is not reported by the station, the API omits it and the template returns NaN for that device.

> [!NOTE]
> The template poll interval is 15 seconds, but Weathercloud data only refreshes at the station's upload rate (10 minutes for free accounts, 1 minute for paid). Polling more frequently does not yield newer data — it only confirms the latest available reading.

## Available devices 14

These devices appear in TapHome after import.

WeatherCloud Module

Custom Variables

|                 |                                                                            |
|-----------------|----------------------------------------------------------------------------|
| `code` (string) | WeatherCloud station device ID used in API request URL (set during import) |

Read (module)

```taphome
#documentation https://github.com/maxime-mrl/weathercloud-js/blob/main/api-documentation.md#api-documentation
VAR request := HTTPREQUEST("/device/values?code=" + code, "GET");
request.Headers := { "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With: XMLHttpRequest", "cookie: COOKIE"};
request.Method := "GET";
VAR response := SENDHTTPREQUEST(request);


IF response.IsSuccess
    VAR content := response.Content;
    responseJson := content;
    END
```

Average Wind Direction Variable Read-only

numeric Unit: ° json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wdiravg"))
```

Average Wind Speed Variable Read-only

Averaged wind speed over the station's reporting interval — converted from m/s to km/h

numeric Unit: km/h json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wspdavg")*3.6)
```

Temperature & Humidity Temperature Sensor Read-only

Outdoor temperature (°C) and relative humidity from the weather station

numeric Unit: °C / % json\_path

Read humidity

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"hum")/100)
```

Read temperature

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"temp"))
```

Dew Point Variable Read-only

numeric Unit: °C json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"dew"))
```

Atmospheric Pressure Variable Read-only

numeric Unit: hPa json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"bar"))
```

Rain Rate Variable Read-only

numeric Unit: mm/h json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"rainrate"))
```

Rainfall Today Variable Read-only

numeric Unit: mm json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"rain"))
```

Solar Radiation Variable Read-only

Solar irradiance in W/m² — available only on stations with a solar radiation sensor

numeric Unit: W/m² json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"solarrad"))
```

Last Update Time Variable Read-only

Unix timestamp of the last data upload from the weather station — useful for verifying station activity

numeric json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"epoch"))
```

UV Index Multi-value Switch Read-only

UV radiation level — 0-1 Low, 2-3 Medium, 4-5 Medium High, 6-7 High, 8-9 Very High

integer multi\_value

Values / States: 0 - Low · 1 - Low · 2 - Medium · 3 - Medium · 4 - Medium High · 5 - Medium High · 6 - High · 7 - High · 8 - Very High · 9 - Very High

Read switch state

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, round(PARSEJSON(responseJson,"uvi")))
```

Wind Direction Variable Read-only

numeric Unit: ° json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wdir"))
```

Wind Gust Variable Read-only

Peak wind speed — converted from m/s to km/h

numeric Unit: km/h json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wspdhi")*3.6)
```

Wind Chill Variable Read-only

Perceived temperature accounting for wind cooling effect — not all stations report this value

numeric Unit: °C json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"chill"))
```

Wind Speed Variable Read-only

Current wind speed — converted from m/s to km/h

numeric Unit: km/h json\_path

Read

```taphome
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wspd")*3.6)
```

**Connection:** Packet Parser → HTTP

Possible improvements (9)

- Heat Index — Perceived temperature accounting for humidity. Optional field, unit °C.
- Temperature-Humidity-Wind Index — Combined feel-like index considering temperature, humidity, and wind. Optional field, unit °C.
- Visibility — Visibility in 100m units (divide by 100 for km). Optional field.
- Secondary Temperature — Secondary temperature sensor reading. Optional field, unit °C.
- Secondary Humidity — Secondary humidity sensor reading. Optional field, unit %.
- Indoor Temperature — Indoor temperature — requires owner authentication. Unit °C.
- Indoor Humidity — Indoor humidity — requires owner authentication. Unit %.
- Indoor Dew Point — Indoor dew point — requires owner authentication. Unit °C.
- Indoor Heat Index — Indoor heat index — requires owner authentication. Unit °C.

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default   |
|------------------|-----------|
| Device ID        | `xxxxxxx` |

## Sources

- Weathercloud API Documentation (unofficial, reverse-engineered)
  
  [github.com](https://github.com/maxime-mrl/weathercloud-js/blob/main/api-documentation.md) 2026-03-28
- Weathercloud FAQ & Setup Guide
  
  [weathercloud.net](https://weathercloud.net/en/faq) 2026-03-28

## Related Documentation

- [Packet Parser Integration](https://taphome.com/en/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)

