Inhaltsverzeichnis

Schnittstelle 1074: Stundenwetter abrufen und Tageswetter verdichten

Du rufst Stundenwetter für die in Filialen hinterlegten Orte ab und verdichtest es zu Tageswerten.

Stand: 02.10.2026, statische Analyse von PEP4 Desktop, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Statisch dokumentiert; Nutzerprüfung offen. Kein Schnittstellenlauf, Live-Schema- oder API-Test. Lokale PEP-Änderungen außerhalb dieser Schnittstellen wurden nicht einbezogen.

Zweck, Parameter und Eingangsvertrag

Trotz Enum-Präfix Imp als Programm registriert. DATVON/DATBIS: Datumsmuster via SetDatum, keine Von≤Bis-Prüfung. Kein PFAD, keine Eingangsdatei/Archivierung. Aktiver Shared-Einstieg ruft GetWeather2, nicht das noch vorhandene ältere GetWeather. Orte kommen aus TOOLS.My.Resources.Orte (CSV-Ressource: Schlüssel Feld1, Latitude/Lon Feld4/5) oder Filialen.GeoLocation='Lat;Lon'. Konvertiert mit Punkt→Komma, auf2 Stellen gerundet, gleiche Koordinaten gruppiert; kulturabhängig.

Je Koordinate/Tag synchroner HTTP-GET mit date yyyy-MM-dd und tz Europe/Berlin; Antwort BrightSkyResponse.Weather, Timestamp als DateTime, optionale Nullable-Zahlen/Stringwerte. Kein festgelegter Einheitenumrechner im Code. API-Vertrag/Einheiten/Stationswahl nicht live geprüft (Q12); keine echte URLabfrage ausgeführt.

SQL-Kette, Datenwirkung und Betrieb

Filialen.FilialID/GeoLocation SELECT → je gemappter Filiale/Tag DELETE WetterH vor HTTP → INSERT aller gelieferten Stunden mit Timestamp.Date=Datum → Calc_WetterDatum(DatVon,DatBis,ZeitVon,ZeitBis). Kein Upsert. HTTP-/Insertfehler im Tagesthread werden im leeren Catch verschluckt; nicht erfolgreiche HTTP-Statusantwort ergibt ebenfalls keinen Fehlerstatus. Gelöschte Tagesstunden können fehlen.

SP löscht Wetter aller Filialen im Datumintervall und fügt Tagesverdichtung aus WetterH ein: Min/MaxTemperatur gerundet, SonnenDauer/Niederschlag summiert, Wind max, Wolkendichte avg, ts max. DATEPART(hour) zwischen ZeitVon/ZeitBis inklusiv. Datum between DatVon/DatBis bezieht sich auf Zeitstempel: Endtag DATBIS als Mitternacht schließt spätere Stunden des letzten Tages aus, obwohl VB sie abgerufen hat.

SQL-Commands Default30, SQL_TIMEOUT nicht gelesen. HttpClient.Timeout kommt aus dem bereitgestellten Clientkontext, in dieser Klasse nicht gesetzt. Keine Transaktion, kein Fach-SP-Fehlercatch außen; Ressourcen-/DB-/SP-Ausnahmen können AusführungEnde überspringen.

Befunde und Grenzen

Shared GetWetter ohne Return liefert False, obwohl GetWeather2 Daten schreibt und True zurückgibt. Interner Erfolg ist weder Fehlerfrei() noch HTTP-Erfolgsnachweis. NULL-Wetterwerte werden DBNull, sight wird Real-Parameter→int, Timestamp→smalldatetime im Schema0878. Tagesziel Schema0873/0874/0877 enthält Result, das aktive GetWeather2/Calc_WetterDatum nicht schreibt. Alte JSON-Result-Ausgabe aus GetWeather ist kein aktiver Pfad.

Q12 benötigt bestätigten API-/Einheiten-/Zeitvertrag und isolierte Tests zu HTTP-Ausfall, fehlenden Koordinaten, Endtag, Rundung, NULL und DST. Kein direkter Umsätze-UPDATE.

Systemeinstellungen und gemeinsame Nebenwirkungen

Gemeinsamer Rückmeldepfad: cSchnitt_Basis mit bedingtem Logging, Mail-/Outbox- und Meldungs-API-Aufruf. MANUELL/SILENT und Rückmeldeschalter beeinflussen diesen Pfad; serverseitige API-Wirkungen bleiben offen.

Beziehung Schlüssel / Variable Default Einflussweg Wirkung Beleg
1074-S001 SCHNITT_WETTER_ZEITVON / SCHNITT_WETTER_ZEITVON 9 Calc_WetterDatum Stundenfilter erste eingeschlossene Stunde der Tagesverdichtung B,SQL,SET
1074-S002 SCHNITT_WETTER_ZEITBIS / SCHNITT_WETTER_ZEITBIS 19 Calc_WetterDatum Stundenfilter letzte eingeschlossene Stunde; keine Wirkung auf HTTP-Abrufmenge B,SQL,SET

Nur belegte Profilzuordnung; Fachdaten und Rückmeldung sind nicht atomar. Defaults sind keine Livewerte.

Feldbeziehungen

Unqualifizierte Fachobjekte in der Anmeldedatenbank; Import.dbo ausdrücklich Importdatenbank. Dateifelder stehen separat im Dateivertrag.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
1074-D001 Filialen.FilialID SELECT Filiale zur normalisierten Koordinate GeoLocation nicht NULL B
1074-D002 Filialen.GeoLocation SELECT Orte-Ressourcenkey oder Lat;Lon numerisch, auf2 Dezimalstellen gerundet B
1074-D003 WetterH.— Zeilen DELETE Alle Stunden der gemappten Filiale am angefragten Tag vor HTTP HTTP-Ausfall verhindert Wiederbefüllung B
1074-D004 WetterH.Filiale INSERT Filialen.FilialID HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D005 WetterH.Datum INSERT weather.timestamp HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D006 WetterH.Niederschlag INSERT precipitation HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D007 WetterH.Niederschlagswahrscheinlichkeit INSERT precipitation_probability HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D008 WetterH.Druck INSERT pressure_msl HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D009 WetterH.SonnenDauer INSERT sunshine HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D010 WetterH.SonnenIntensität INSERT solar HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D011 WetterH.Temperatur INSERT temperature HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D012 WetterH.Wind INSERT wind_speed HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D013 WetterH.Windrichtung INSERT wind_direction HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D014 WetterH.Wolkendichte INSERT cloud_cover HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D015 WetterH.Boeen INSERT wind_gust_speed HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D016 WetterH.Taupunkt INSERT dew_point HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D017 WetterH.Sicht INSERT visibility (VB Real-Parameter, DB int) HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D018 WetterH.Bedingung INSERT condition, varchar25 HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D019 WetterH.Icon INSERT icon, varchar25 HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D020 WetterH.ts INSERT getdate() HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull B,DDLH
1074-D021 WetterH.Filiale SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D022 WetterH.Datum SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D023 WetterH.Temperatur SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D024 WetterH.SonnenDauer SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D025 WetterH.Niederschlag SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D026 WetterH.Wind SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D027 WetterH.Wolkendichte SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D028 WetterH.ts SELECT Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis Datum zwischen Von/Bis; Enddatum Mitternacht beachten SQL
1074-D029 Wetter.— Zeilen DELETE Alle Filialen im Datumintervall Nicht auf tatsächlich abgerufene Locations begrenzt SQL
1074-D030 Wetter.Filiale INSERT WetterH.Filiale nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D031 Wetter.Datum INSERT convert(date,WetterH.Datum) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D032 Wetter.MinTemp INSERT round(min(Temperatur),2) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D033 Wetter.MaxTemp INSERT round(max(Temperatur),2) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D034 Wetter.Sonne INSERT sum(isnull(SonnenDauer,0)) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D035 Wetter.Regen INSERT sum(isnull(Niederschlag,0)) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D036 Wetter.WindSpeed INSERT max(Wind) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D037 Wetter.Wolken INSERT avg(Wolkendichte) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2
1074-D038 Wetter.ts INSERT max(ts) nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls SQL,DDL,DDL2

Quellen und weitere Schritte

Enum, aktive Registrierung, Projekteinschluss und die in der internen Einzelbeschreibung genannten VB-/SQL-Dateien wurden am Quellencommit geprüft. Konkrete fehlende Quellen und fachliche Fragen stehen oben; bei Tests benötigst du eine isolierte Umgebung und synthetische Dateien.

Übersicht der Schnittstellen