Hochlastzeit Daten für HLZ-Controller (atypische Netznutzung)
Find a file
2026-01-04 18:05:27 +01:00
.forgejo/workflows Add crawler and Forgejo Actions workflow 2025-12-30 15:53:40 +01:00
crawler Add crawler and Forgejo Actions workflow 2025-12-30 15:53:40 +01:00
de-ni Anpassung Ausschaltzeit Herbst 2026 2026-01-04 18:05:27 +01:00
.gitignore Add crawler and Forgejo Actions workflow 2025-12-30 15:53:40 +01:00
README.md Add crawler and Forgejo Actions workflow 2025-12-30 15:53:40 +01:00
shelly_schedules_scripts.json added script schedules updated updated switch schedules 2025-12-13 21:04:41 +01:00

HLZ-Data

Repository mit automatisch generierten Hochlastzeitfenster-Schedules für Shelly-basierte HLZ-Controller.

Zweck

Dieses Repository dient als zentrale Datenquelle für HLZ-Schedules (Hochlastzeitfenster) der EWE Netz GmbH für die Region Niedersachsen. Die Schedules werden automatisch aus den veröffentlichten PDFs generiert und können direkt von Shelly-Geräten abgerufen werden.

Struktur

hlz-data/
├── crawler/                        # Python-Crawler für EWE PDFs
│   ├── ewe_hlz2shelly.py          # Hauptscript
│   ├── requirements.txt           # Python-Dependencies
│   └── README.md                  # Crawler-Dokumentation
├── de-ni/                          # Region: Deutschland - Niedersachsen
│   ├── 2025/
│   │   └── schedules_hlz_20kv.json # Schedules für 2025 (Mittelspannung)
│   ├── 2026/
│   │   └── schedules_hlz_20kv.json # Schedules für 2026
│   └── bridgedays.json             # Brückentage-Definitionen
├── shelly_schedules_scripts.json   # Script-Schedules (CRON-Jobs für Shelly-Scripts)
└── .forgejo/
    └── workflows/
        └── update-schedules.yml    # Forgejo Action für automatische Updates

Automatisierung

Forgejo Action (Schedule-Generierung)

Die Forgejo Action läuft täglich von Oktober bis November um 03:00 UTC und:

  1. Crawlt das aktuelle EWE HLZ-PDF für das nächste Jahr
  2. Extrahiert die Zeitfenster für Mittelspannung (20 kV)
  3. Generiert Shelly-kompatible Schedules
  4. Committed die neuen Schedules nach de-ni/YYYY/schedules_hlz_20kv.json
  5. Erstellt Git-Tag und Release: vYYYY.0

Shelly Auto-Update (28. Dezember)

Shellys können mit dem ImportSchedules.js Script automatisch die neuen Schedules laden:

  • Wann: 28. Dezember, 03:00 Uhr
  • Was: Lädt Schedules für das nächste Jahr aus diesem Repo
  • Danach: Triggert CheckBankHoliday_KVS.js zur Feiertags-Prüfung

Verwendung

Raw-URL (für Shelly HTTP.GET)

# Schedules für 2026 laden
curl https://git.te-c.net/TEC/hlz-data/raw/branch/main/de-ni/2026/schedules_hlz_20kv.json

# Script-Schedules laden
curl https://git.te-c.net/TEC/hlz-data/raw/branch/main/shelly_schedules_scripts.json

Von Shelly-Script

var year = (new Date()).getFullYear();
var url = "https://git.te-c.net/TEC/hlz-data/raw/branch/main/de-ni/" + year + "/schedules_hlz_20kv.json";

Shelly.call("HTTP.GET", { url: url, timeout: 20 }, function(result) {
  if (result.code === 200) {
    var schedules = JSON.parse(result.body);
    // Verarbeite schedules...
  }
});

Manuelle Workflow-Ausführung

Falls die automatische Generierung fehlschlägt (z.B. PDF-Struktur geändert):

  1. Gehe zu: https://git.te-c.net/TEC/hlz-data/actions
  2. Wähle "Update HLZ Schedules"
  3. Klicke auf "Run workflow"
  4. Optional: Wähle "manual_mode: true" und gib Zeitfenster manuell ein:
    • Winter: 16:30-19:30
    • Autumn: 17:00-19:00

Schedule-Format

Die Schedules folgen dem Shelly Schedule-API Format:

{
  "jobs": [
    {
      "enable": true,
      "timespec": "0 30 16 * 1,2,12 1-5",
      "calls": [
        {
          "method": "Switch.Set",
          "params": {
            "id": 1,
            "on": true
          }
        }
      ]
    }
  ]
}

Timespec Format: sec min hour day month dow

  • Monate: 1,2,12 = Januar, Februar, Dezember
  • Wochentage: 1-5 = Montag-Freitag

Switch-IDs:

  • id: 0 = "Sperrzeit kommt/geht" (15 min Vorlauf/Nachlauf)
  • id: 1 = "Sperrzeit an/aus"

Crawler lokal ausführen

cd crawler
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Automatisch (crawlt EWE Website)
python ewe_hlz2shelly.py --year 2026 -v

# Manuell (mit expliziten Zeitfenstern)
python ewe_hlz2shelly.py --year 2026 --manual --winter "16:30-19:30" --autumn "17:00-19:00"

# Dry-run
python ewe_hlz2shelly.py --year 2026 -d -v

Verwandte Repositories

Troubleshooting

Schedules fehlen für ein Jahr

PDF-Parsing schlägt fehl

  • Verwende manuellen Modus in der Forgejo Action
  • Zeitfenster aus dem EWE-PDF manuell eingeben

Shelly lädt keine neuen Schedules

  • Prüfe Shelly-Logs (Web-UI → Scripts → ImportSchedules)
  • Teste manuell via Script.Start

Lizenz

MIT License