Files
weather-station/server/src/openweather.mjs
2026-06-27 18:31:44 -04:00

29 lines
951 B
JavaScript

import {existsSync, mkdirSync, writeFileSync} from 'fs';
import * as path from 'node:path';
import {resolve, dirname} from 'path';
import {fileURLToPath} from 'url';
const DIR = resolve(dirname(fileURLToPath(import.meta.url)), '../data/icons');
export async function downloadIcon(icon, path) {
if(!existsSync(DIR)) mkdirSync(dirname(path), {recursive: true});
const res = await fetch(`https://openweathermap.org/img/wn/${icon}@2x.png`);
const buf = Buffer.from(await res.arrayBuffer());
writeFileSync(path, buf);
}
export async function fetchIcon(icon) {
const iconPath = path.join(DIR, icon + '.png');
if(!existsSync(DIR) || !existsSync(iconPath))
await downloadIcon(icon, iconPath);
return iconPath;
}
export function frostRisk(tempC, dewPointC, humidity) {
if (tempC > 4) return 'None'
if (tempC <= 0 && dewPointC <= 0) return 'High'
if (tempC <= 2 && humidity > 85) return 'Moderate'
if (tempC <= 4) return 'Low'
return 'None'
}