Hochlastzeit Daten für HLZ-Controller (atypische Netznutzung)
| .forgejo/workflows | ||
| crawler | ||
| de-ni | ||
| .gitignore | ||
| README.md | ||
| shelly_schedules_scripts.json | ||
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:
- Crawlt das aktuelle EWE HLZ-PDF für das nächste Jahr
- Extrahiert die Zeitfenster für Mittelspannung (20 kV)
- Generiert Shelly-kompatible Schedules
- Committed die neuen Schedules nach
de-ni/YYYY/schedules_hlz_20kv.json - 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):
- Gehe zu: https://git.te-c.net/TEC/hlz-data/actions
- Wähle "Update HLZ Schedules"
- Klicke auf "Run workflow"
- Optional: Wähle "manual_mode: true" und gib Zeitfenster manuell ein:
- Winter:
16:30-19:30 - Autumn:
17:00-19:00
- Winter:
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
- Zeitschaltuhr: https://git.te-c.net/UHV88_Friesland_Wilhelmshaven/Zeitschaltuhr (Shelly-Scripts)
- EWE Netz: https://www.ewe-netz.de (Quelle der HLZ-PDFs)
Troubleshooting
Schedules fehlen für ein Jahr
- Prüfe Forgejo Actions: https://git.te-c.net/TEC/hlz-data/actions
- Führe Workflow manuell aus (siehe oben)
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