Skip to content

Documentation • Wetter

Technical Manual & Specification ​

Complete engineering reference for the weather and solar PV platform: Mathematical modeling of solar yield, native Android app with home screen widget, direct Open-Meteo REST integration, and zero-tracking architecture.

Introduction & Philosophy ​

Wetter is a privacy-first weather and solar PV ecosystem created by Jeremy Benz. Built upon the principles of Zero-Bloat and Privacy-by-Design:

  • No Relay Servers: All weather and geocoding requests are performed directly client-side against the open Open-Meteo API. No intermediate proxy logs IP addresses or coordinates.
  • Zero Telemetry: Neither the web application nor the native Android app contains analytics SDKs, advertising libraries, or tracking pixels.
  • Pure Performance: The web app uses HTML, CSS, and Canvas. No verified interaction latency measurement is available. The Android app uses Java without a WebView for its main interface.

Solar PV Physics Model ​

The following reference model from the former manual describes an idealized estimate. Check the current web app implementation separately; this formula is not a measurement. The yield calculation estimates instantaneous electrical power $P_{pv}$ (in Watts) for a 5 kWp residential photovoltaic system with monocrystalline silicon modules:

P_pv = P_peak × (G_eff / 1000 W/m²) × [1 + γ × (T_cell - 25°C)] × η_inverter

Model Parameters & Physical Coefficients: ​

  • P_peak = 5000 W (5.0 kWp): Nominal module peak capacity under Standard Test Conditions (STC: 1000 W/m², 25°C cell temperature, AM 1.5).
  • G_eff (effective irradiance): Calculated from solar elevation θ and cloud cover percentage:
    G_eff = G_clearsky × (1 - 0.75 × (cloud_cover / 100)^3.4)
  • γ = -0.0038 / °C (-0.38 %/°C): Negative temperature power coefficient for monocrystalline silicon cells. Higher cell temperatures diminish efficiency.
  • T_cell (module cell temperature): Estimated via the NOCT model (Nominal Operating Cell Temperature, 45°C):
    T_cell = T_ambient + ((45 - 20) / 800) × G_eff
  • η_inverter = 0.96 (96%): Conversion efficiency of modern transformerless string inverters including wiring losses.

When the sun is below the horizon (θ ≤ 0°), irradiance is strictly clamped to 0.0 W. Daily cumulative yield (kWh) is calculated by integrating hourly outputs: E_day = ∑ (P_pv / 1000) × 1h.

Current design and data sources ​

The web app directly uses Open-Meteo weather and geocoding APIs. Direct DWD integration and DWD radar are not implemented. The weather card and daily solar chart follow the compact design of the project page; solar estimates use a 5 kWp reference system.

Adapting the Android app and its widget to this design is planned. The widget preview on the project page shows the design target, not the current Android interface.

Native Android App & Home Screen Widget ​

The native Android app (com.benzjeremy.wetter) provides peak performance and zero browser dependency:

Home screen widget (4x2 / 4x1) ​

Displays current temperature, weather emoji, min/max range, location, solar PV output, and in v1.1 a battery-efficient real-time system clock (TextClock). Includes a one-tap refresh button via PendingIntent broadcast.

Configurable refresh and caching ​

New in v1.1: Configurable background interval (15m, 30m, 1h, or manual/off) using Android inexact AlarmManager. Automatically scheduled on device restart (BOOT_COMPLETED). SharedPreferences caching eliminates redundant cellular requests.

Installation & F-Droid Integration: ​

The app is officially distributed through the myfdroid repository:

https://myfdroid.benzjeremy.pp.ua/repo/?fingerprint=A2AD027C856AE9E111B17A55DF5303BB423DBF8D447DC981BDB0E21346963CB7

Current APK: GitHub Releases or myfdroid.

Open-Meteo API & WMO Codes ​

The system relies on standardized public REST endpoints provided by Open-Meteo without authentication:

GET https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,surface_pressure,wind_speed_10m&hourly=temperature_2m,precipitation_probability,cloud_cover&daily=weather_code,temperature_2m_max,temperature_2m_min&timezone=auto

WMO Weather Interpretation Table: ​

WMO codeSymbolMeaning
0☀️Clear sky
1, 2, 3🌤️ / ☁️Mainly clear to overcast
45, 48🌫️Fog and depositing rime fog
51, 53, 55🌦️Drizzle (light to dense)
61, 63, 65🌧️Rain (slight, moderate, heavy)
71, 73, 75❄️Snow fall
80, 81, 82🌦️Rain showers
95, 96, 99⛈️Thunderstorm (with hail)

Web, hosting, and source ​

LayerURLPurpose
Project pagehttps://wetter.benzjeremy.pp.ua/Overview and downloads
Web apphttps://wetter.benzjeremy.pp.ua/app/Interactive weather station
Wikihttps://wiki.benzjeremy.pp.ua/wetter/Documentation
SourceGitHub mainAndroid source and releases

FAQ & Troubleshooting ​

Why does the Android widget sometimes update with a delay? ​

Android enforces strict battery optimization (Doze Mode & App Standby). To preserve battery life, the weather app does not continuously poll the network in the background. You can instantly update the widget at any time by tapping the refresh icon (🔄).

How do I switch the temperature unit? ​

In the web application, select your preferred unit (°C, °F, or Kelvin) in the header. In the Android app, use the unit switch located directly in the dashboard header.

How accurate is the solar PV forecast? ​

The calculation assumes an unshaded south-facing installation with 35° roof pitch. Local shading from trees or surrounding buildings as well as snow cover can diminish real-world yields.