#!/usr/bin/env python3 """ Analysera väderkonsekvenser för vägar """ import sqlite3 from datetime import datetime DB_PATH = "/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db" def analyze_weather_impact(temperature, precipitation): """ Analysera väderpåverkan på vägar Returnerar risknivå och rekommendationer """ risks = [] # Temperaturanalys if temperature < 0: risks.append({ "type": "ice_risk", "severity": "high", "description": "Risk för halka och isbildning" }) elif temperature < 5: risks.append({ "type": "frost_risk", "severity": "medium", "description": "Risk för frostskador på vägbanan" }) # Nederbördsanalys if precipitation > 10: risks.append({ "type": "flooding_risk", "severity": "high", "description": "Risk för översvämning och nedsatt framkomlighet" }) elif precipitation > 5: risks.append({ "type": "wet_road", "severity": "medium", "description": "Blöt vägbana, ökad bromssträcka" }) # Kombinerade effekter if temperature < 0 and precipitation > 0: risks.append({ "type": "black_ice", "severity": "critical", "description": "Mycket hög risk för svartis" }) return risks def get_affected_roads(county="Uppsala"): """Hämta vägar i ett specifikt län""" conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("SELECT id, road_number, name, type FROM roads WHERE county = ?", (county,)) roads = c.fetchall() conn.close() return roads def generate_weather_alerts(): """Generera vädervarningar för vägar""" # Hämta senaste väderdata import sys sys.path.insert(0, '/home/bernt/.openclaw/workspace/life-prod/ingestion') from smhi_weather import fetch_temperature, fetch_precipitation temp_data = fetch_temperature() precip_data = fetch_precipitation() if not temp_data or not precip_data: print("Ingen väderdata tillgänglig") return [] temperature = temp_data["temperature"] precipitation = precip_data["precipitation_mm"] # Analysera risker risks = analyze_weather_impact(temperature, precipitation) # Hämta påverkade vägar roads = get_affected_roads() alerts = [] for road in roads: for risk in risks: alerts.append({ "road_id": road[0], "road_number": road[1], "road_name": road[2], "road_type": road[3], "risk_type": risk["type"], "severity": risk["severity"], "description": risk["description"], "temperature": temperature, "precipitation": precipitation, "timestamp": datetime.now().isoformat() }) return alerts if __name__ == "__main__": alerts = generate_weather_alerts() print(f"Genererade {len(alerts)} vädervarningar") # Visa första 3 for alert in alerts[:3]: print(f" {alert['road_number']}: {alert['risk_type']} ({alert['severity']})")