Files
PublicCloud/README.md
T
2026-09-25 00:32:57 +02:00

5.6 KiB
Raw Blame History

PublicCloud – himlen över Örebro

Källkoden till https://publiccloud.se: en helskärmshimmel som följer solen, månen och det aktuella vädret, med en klocka i mitten och fyra glasrutor runt den.

Vad sidan gör

Himlen

  • Dag och natt följer klockan. Dagfilmen spelas från verklig soluppgång till solnedgång och nattfilmen från solnedgång till soluppgång, en bildruta åt gången, med mjuk övertoning mellan rutorna.
  • Vädret läggs ovanpå (Open-Meteo, var 10:e minut): klart (molnen tonas bort), växlande (solen genom molnen), mulet, dimma, duggregn, regn och kraftigt regn med droppar som rinner på "glaset", åska med blixtar och snö.
  • Vind (hastighet, byar, riktning): snett regn, blåsande snö och droppar, vindstråk, höstlöv (sep–nov) och byar. Vyn är vänd mot söder, så västlig vind blåser åt vänster.

Natten

  • Månen med rätt fas och position. Vid växlande molnighet skärs den av molnen i filmen, eftersom molnen ligger i lagret ovanför månen.
  • Stjärnor som glittrar realistiskt (scintillation, utan strålkors).
  • Mulet ger ett mörkt molntäcke.
  • Norrsken styrs av NOAA:s Kp-index: gröna band med ljus underkant som kommer lågt från horisonten och sveper upp över himlen.
  • Nymåne-överraskning: en egen SVG-siluett av en fotograf som sitter på en månskära med kameran (img/moon-photographer.svg). Den visas bara vid nymåne, när det är mörkt och klart.

Fyra rutor

  • Just nu: väder, temperatur, vind, måne, sol och plats.
  • Plats: en jordglob (MapLibre GL 6.11, globprojektion) med dag- och nattskugga i realtid, kust- och landsgränser (Natural Earth), en röd nål för vald plats, scroll- och knappzoom, "Utgå från min plats" (GPS), klick på globen och standardplatsen Örebro slott. Allt räknas om för vald plats.
    • Spara som min plats: sidan startar där nästa gång (sparas bara i webbläsaren).
    • Dela min pin: ett öppet, anonymt index på stadsnivå. Servern avrundar positionen till 0,1°, slår själv upp stad och land (ingen fritext) och visar alla delade städer som glödande punkter på globen. Klick på en delad pin flyttar dig direkt dit. Ägaren kan ta bort sin pin. Spärr: en delning per nätverk och 5 min (saltad IP-hash som går ut, IP sparas aldrig).
  • Kväll & natt: betyg för stjärnhimlen, chans till norrsken (Kp nu och prognos), meteorregn samt fullmåne och nymåne.
  • Fotoljus: gyllene och blå timmen med väderprognos, månens upp- och nedgång, dimma, regnbåge och nattlysande moln.

Textstorleken anpassas automatiskt så att allt får plats. På mobil staplas rutorna.

Molnlager och ikoner (standard, ?lager=0 stänger av): tre procedurella molnlager som driver med vinden på olika djup (månen och solen ligger mellan lagren), samt animerade SVG-väderikoner i rutorna.

Struktur

site/
  public/index.html              hela sidan (HTML, CSS, JS – inga byggsteg)
  public/img/moon-photographer.svg  nymåne-överraskningen
  public/_headers                cache-regler (filmerna cachas i ett år → nytt filnamn vid ny film)
  public/video/                  day-v2 / night som WebM (VP9) + MP4 (H.264, reserv för äldre Safari)
  public/vendor/maplibre-6.11.2/ MapLibre GL JS (självhostad, verifierad mot npm-registrets integritet, BSD-3)
  public/vendor/ne/              Natural Earth 1:110m kust- och landsgränser (public domain)
  worker.js                      Cloudflare Worker: statiska filer + HTTP Range (206) för /video/* + /api/pins (GET/POST/DELETE)
  wrangler.jsonc                 Worker-konfiguration (namn publiccloud-sky, D1-databasen publiccloud-pins)
  db/schema.sql                  tabellerna pins, ratelimit och geocache
tools/
  upscale-slowmo.sh              hur filmerna togs fram: Real-ESRGAN x4plus (uppskalning) + RIFE v4.6 (slowmotion)

Driftsättning

Sajten körs som en Cloudflare Worker med statiska filer och custom domain publiccloud.se.

cd site
export CLOUDFLARE_API_TOKEN=...   # konto-token med Workers-rättighet
export CLOUDFLARE_ACCOUNT_ID=...
npx wrangler d1 execute publiccloud-pins --remote --file db/schema.sql   # första gången
npx wrangler secret put PIN_SALT                                        # slumpat salt för IP-spärren
npx wrangler deploy

Testparametrar

Parameter Exempel Effekt
t ?t=2026-10-10T23:30%2B02:00 startar klockan vid en viss tid
speed ?speed=600 kör klockan snabbare
weather ?weather=thunder tvingar väder: clear, partly, overcast, fog, drizzle, rain, heavyrain, thunder, snow
wind, winddir ?wind=75&winddir=270 tvingar vind (km/h, grader)
kp ?kp=7 tvingar Kp-index (norrsken)
nymane ?nymane=1 visar nymåne-överraskningen oavsett månfas (på natten)
lager ?lager=0 stänger av molnlager + animerade ikoner (på som standard)
instant ?instant=1 inga övertoningar (för skärmdumpar)
debug ?debug=1 visar bildruta, sol, väder, vind, måne, norrsken

Datakällor

  • Väder och prognos per timme: Open-Meteo (gratis för icke-kommersiellt bruk)
  • Kp-index nu och 3-dygnsprognos: NOAA SWPC
  • Karta: OpenStreetMap via Leaflet 1.9.4 (cdnjs, SRI)
  • Platsnamn: OpenStreetMap Nominatim (i webbläsaren för vald plats, i Workern för delade pins)
  • Konturer: Natural Earth (public domain)
  • Sol- och månberäkningar: formler från SunCalc (Vladimir Agafonkin), inbäddade i sidan
  • Meteorregn: American Meteor Society / IMO:s kalendrar