Die Verwaltung tausender Straßenlaternen stellt Städte und Facility-Manager vor erhebliche Herausforderungen. Traditionelle Steuerungssysteme reagieren starr auf Zeitpläne, erkennen Ausfälle erst bei Beschwerden und bieten keinerlei prädiktive Wartung. Der HolySheep Smart Street Light Agent nutzt modernste KI-Modelle – darunter GPT-5 für Anomalie-Erkennung, Claude für natürlichsprachliche调度话术 (Dispatch-Kommunikation) und DeepSeek V3.2 für kosteneffiziente Routineabfragen – um eine völlig neue Generation der Straßenbeleuchtungsverwaltung zu ermöglichen.
In diesem Tutorial zeige ich Ihnen, wie Sie innerhalb von 30 Minuten eine vollständige Einzellampen-Steuerungsarchitektur aufbauen, die echte Störungen von Fehlalarmen unterscheidet und automatisch Instandhaltungsteams koordiniert.
Vergleichstabelle: HolySheep vs. Offizielle APIs vs. Andere Relay-Dienste
| Kriterium | HolySheep AI | Offizielle OpenAI API | Offizielle Anthropic API | Generische Relay-Dienste |
|---|---|---|---|---|
| GPT-5 Zugriff | ✅ Verfügbar (GPT-4.1 $8/MTok) | ✅ Verfügbar | ❌ Nicht verfügbar | ❌ Meist nur GPT-4 |
| Claude Sonnet 4.5 | ✅ $15/MTok | ❌ Nicht verfügbar | ✅ $15/MTok | ❌ Nicht verfügbar |
| DeepSeek V3.2 | ✅ $0.42/MTok | ❌ Nicht verfügbar | ❌ Nicht verfügbar | Selten |
| Gemini 2.5 Flash | ✅ $2.50/MTok | ❌ Nicht verfügbar | ❌ Nicht verfügbar | Selten |
| Latenz (P50) | <50ms | 80-150ms | 100-200ms | 150-300ms |
| Startguthaben | ✅ Kostenlose Credits | $5 (begrenzt) | $5 (begrenzt) | Variabel |
| Zahlungsmethoden | WeChat, Alipay, Kreditkarte | Nur Kreditkarte | Nur Kreditkarte | Oft eingeschränkt |
| Kostenunterschied | 85%+ günstiger (¥1=$1) | Referenzpreis | Referenzpreis | 20-50% günstiger |
| IoT-spezifische Features | ✅ Agent-Framework, Batch-Inferenz | ❌ Nur generische API | ❌ Nur generische API | Basic |
Was ist der 智慧路灯单灯控制 Agent?
Der HolySheep Smart Street Light Agent ist ein KI-gestütztes Multi-Agenten-System, das speziell für die Verwaltung von Einzelampen in intelligenten Straßenbeleuchtungsnetzen entwickelt wurde. Im Gegensatz zu monolithischen Steuerungssystemen arbeitet er mit spezialisierten Sub-Agents:
- 故障预警 Agent (Fault Prediction Agent): Nutzt GPT-5/GPT-4.1 zur Mustererkennung in Sensordaten und erkennt potenzielle Ausfälle, bevor sie auftreten.
- 调度话术 Agent (Dispatch Communication Agent): Setzt Claude Sonnet 4.5 für natürlichsprachliche Kommunikation mit Wartungsteams ein – generiert strukturierte Einsatzberichte und priorisiert Tickets.
- Monitoring Agent: Verwendet DeepSeek V3.2 für kostengünstige, hochfrequente Statusabfragen (z.B. alle 30 Sekunden pro Lampe).
- Analytics Agent: Analysiert Energieverbrauch und erstellt Optimierungsvorschläge mit Gemini 2.5 Flash.
Geeignet / Nicht geeignet für
✅ Ideal geeignet für:
- Stadtverwaltungen mit >500 intelligenten Straßenlaternen
- Facility-Management-Unternehmen, die mehrere Standorte verwalten
- Energieversorger mit regionaler Beleuchtungsinfrastruktur
- Smart-City-Projekte mit integrierten IoT-Plattformen
- Privatwirtschaftliche Parkhaus- und Industriegelände-Betreiber
❌ Weniger geeignet für:
- Kleine Installationen mit <50 Lampen (Overhead nicht gerechtfertigt)
- Standorte ohne Internetverbindung (Offline-Szenarien)
- Projekte mit ausschließlich proprietären, nicht standardisierten Steuerungen
- Extrem latenzkritische Echtzeit-Sicherheitsanwendungen (<10ms Anforderung)
Preise und ROI
| Komponente | Modell | Preis bei HolySheep | Offizielle API-Kosten | Ersparnis |
|---|---|---|---|---|
| Fehlererkennung (pro Abfrage) | GPT-4.1 | $0.000008 (8 Mio Tokens/$) | $0.00010 | 92.5% |
| Dispatch-Kommunikation | Claude Sonnet 4.5 | $0.000015 (15 Mio Tokens/$) | $0.000015 | Identisch, aber ohne Sperren |
| Monitoring (Batch) | DeepSeek V3.2 | $0.00000042 (0.42 Mio Tokens/$) | Nicht verfügbar | Exklusiv |
| Analytics-Berichte | Gemini 2.5 Flash | $0.0000025 (2.5 Mio Tokens/$) | $0.00000125 | 50% teurer, aber stabiler |
ROI-Beispiel für 1.000 Lampen
- Monatliche API-Kosten: ca. $12-15 (inkl. Monitoring alle 30s)
- Stromkosten-Einsparung: 15-25% durch intelligente Dimmung = $200-400/Monat
- Wartungskosten-Reduktion: 30% weniger Notfall-Einsätze = $500-800/Monat
- Netto-ROI: Positiv ab dem ersten Monat
Technische Architektur
Systemübersicht
+---------------------------+
| Smart Street Light |
| Hardware (LoRaWAN/ |
| NB-IoT Controller) |
+-----------+---------------+
| MQTT/CoAP
v
+------------------+
| Edge Gateway |
+------------------+
|
v
+------------------+ +------------------+
| HolySheep API |<--->| Monitoring DB |
| (base_url) | +------------------+
+------------------+
| | |
v v v
+--------+ +-------------+ +------------------+
|GPT-4.1 | |Claude 4.5 | |DeepSeek V3.2 |
|Fault | |Dispatch | |Status-Check |
|Detection| |Communication| |(Batch) |
+--------+ +-------------+ +------------------+
| | |
v v v
+------------------+
| Dashboard & |
| Alerting |
+------------------+
Installation und Grundeinrichtung
Schritt 1: API-Client konfigurieren
#!/usr/bin/env python3
"""
HolySheep Smart Street Light Agent - Initial Setup
Dokumentation: https://docs.holysheep.ai/street-light-agent
"""
import os
from holySheep_agent import HolySheepAIClient
============================================
KONFIGURATION - Ersetzen Sie mit Ihren Werten
============================================
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Von https://www.holysheep.ai/register
BASE_URL = "https://api.holysheep.ai/v1" # WICHTIG: Niemals api.openai.com verwenden!
Agent-spezifische Parameter
AGENT_CONFIG = {
"fault_detection_model": "gpt-4.1", # GPT-5-Verfügbarkeit prüfen
"dispatch_model": "claude-sonnet-4.5",
"monitoring_model": "deepseek-v3.2",
"analytics_model": "gemini-2.5-flash",
"monitoring_interval_seconds": 30,
"alert_threshold_confidence": 0.85,
"language": "zh-CN" # Chinesisch für调度话术
}
IoT-Controller-Konfiguration
LIGHT_CONTROLLERS = [
{"id": "SL-001", "location": "Hauptstraße 12", "type": "LED-150W", "protocol": "mqtt"},
{"id": "SL-002", "location": "Parkstraße 5", "type": "LED-100W", "protocol": "coap"},
{"id": "SL-003", "location": "Marktplatz", "type": "LED-200W", "protocol": "mqtt"},
]
def initialize_agent():
"""Initialisiert den HolySheep Street Light Agent."""
client = HolySheepAIClient(
api_key=HOLYSHEEP_API_KEY,
base_url=BASE_URL,
config=AGENT_CONFIG
)
# Agent-Registry abrufen
available_agents = client.list_agents()
print(f"Verfügbare Agenten: {available_agents}")
# Spezifischen Street Light Agent laden
street_light_agent = client.get_agent("smart-street-light-v2")
print(f"Geladener Agent: {street_light_agent.name}")
print(f"Agent-Version: {street_light_agent.version}")
print(f"Unterstützte Modelle: {street_light_agent.supported_models}")
return client, street_light_agent
if __name__ == "__main__":
client, agent = initialize_agent()
print("✅ HolySheep Street Light Agent erfolgreich initialisiert!")
Schritt 2: Lampen-Registrierung und erstes Monitoring
#!/usr/bin/env python3
"""
Street Light Agent - Lampen-Registrierung und erstes Monitoring
"""
import json
import asyncio
from datetime import datetime
from holySheep_agent import HolySheepAIClient, StreetLightDevice
============================================
KONFIGURATION
============================================
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
async def register_lights_and_monitor():
"""Registriert Lampen und startet kontinuierliches Monitoring."""
client = HolySheepAIClient(
api_key=HOLYSHEEP_API_KEY,
base_url=BASE_URL
)
# -------------------------------------------------
# TEIL 1: Lampen registrieren
# -------------------------------------------------
registered_lights = []
for light_config in LIGHT_CONTROLLERS:
light = StreetLightDevice(
device_id=light_config["id"],
location=light_config["location"],
device_type=light_config["type"],
protocol=light_config["protocol"],
metadata={
"install_date": "2025-06-15",
"warranty_expires": "2028-06-14",
"last_maintenance": "2026-01-10"
}
)
# Bei HolySheep registrieren
response = await client.register_device(light)
registered_lights.append(response)
print(f"✅ Registriert: {light.device_id} -> {response.assigned_endpoint}")
# -------------------------------------------------
# TEIL 2: Erstes Status-Monitoring (DeepSeek V3.2)
# -------------------------------------------------
print("\n--- Starte Monitoring-Zyklus ---")
for light in registered_lights:
# Status abrufen (kostengünstig mit DeepSeek V3.2)
status = await client.get_light_status(
device_id=light.device_id,
model="deepseek-v3.2" # $0.42/MTok - perfekt für häufige Abfragen
)
print(f"\n📍 {light.location}")
print(f" Status: {status.power_state}")
print(f" Helligkeit: {status.dimming_level}%")
print(f" Leistung: {status.watts}W")
print(f" Temperatur: {status.temperature}°C")
print(f" Spannung: {status.voltage}V")
print(f" Lifetime hours: {status.operating_hours}h")
# Health-Score berechnen
health = await client.analyze_light_health(
device_id=light.device_id,
telemetry_data=status.dict(),
model="gpt-4.1"
)
print(f" Health Score: {health.score}/100 ({health.status})")
if health.alerts:
print(f" ⚠️ Alerts: {health.alerts}")
return registered_lights
Ausführen
if __name__ == "__main__":
asyncio.run(register_lights_and_monitor())
Schritt 3: Fehlererkennung mit GPT-5/GPT-4.1 und automatischem Dispatch
#!/usr/bin/env python3
"""
Street Light Agent - Fehlererkennung und automatischer Dispatch
Nutzt GPT-5 für Anomalie-Erkennung und Claude für Kommunikation
"""
import asyncio
from holySheep_agent import (
HolySheepAIClient,
AnomalyDetector,
DispatchAgent,
MaintenanceTicket
)
============================================
KONFIGURATION
============================================
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
class SmartStreetLightSupervisor:
"""Hauptklasse für die Überwachung und Störungsbearbeitung."""
def __init__(self, api_key: str):
self.client = HolySheepAIClient(
api_key=api_key,
base_url=BASE_URL
)
# Spezialisierte Agenten initialisieren
self.anomaly_detector = AnomalyDetector(
client=self.client,
primary_model="gpt-4.1", # Fallback: GPT-4.1
# primary_model="gpt-5" # Upgrade wenn verfügbar
)
self.dispatch_agent = DispatchAgent(
client=self.client,
model="claude-sonnet-4.5" #调度话术: natürlichsprachliche Kommunikation
)
async def check_and_dispatch(self, device_id: str):
"""
Prüft eine Lampe auf Anomalien und löst bei Bedarf
automatisch einen Wartungsauftrag aus.
"""
# --- SCHRITT 1: Telemetriedaten sammeln ---
telemetry = await self.client.get_full_telemetry(device_id)
# --- SCHRITT 2: Anomalie-Erkennung mit GPT ---
anomaly_result = await self.anomaly_detector.analyze(
device_id=device_id,
data=telemetry,
check_types=["power_fluctuation", "temperature_spike",
"flickering", "gradual_degradation"]
)
print(f"🔍 Anomalie-Analyse für {device_id}:")
print(f" Anomalie erkannt: {anomaly_result.is_anomaly}")
print(f" Konfidenz: {anomaly_result.confidence:.2%}")
print(f" Typ: {anomaly_result.anomaly_type}")
print(f" Schweregrad: {anomaly_result.severity}/10")
print(f" Empfehlung: {anomaly_result.recommendation}")
# --- SCHRITT 3: Bei Bedarf automatischer Dispatch ---
if anomaly_result.is_anomaly and anomaly_result.confidence >= 0.85:
print(f"\n📢 Erstelle Wartungsauftrag...")
# Claude-generiert strukturierten Dispatch-Bericht
dispatch_report = await self.dispatch_agent.create_report(
device_id=device_id,
anomaly_data=anomaly_result,
telemetry=telemetry
)
print(f" 📋 Dispatch-Bericht (generiert von Claude):")
print(f" --- 调度话术 Bericht ---")
print(f" {dispatch_report.summary}")
print(f" --- Ende Bericht ---")
print(f" Priorität: {dispatch_report.priority}")
print(f" Geschätzte Reparaturzeit: {dispatch_report.estimated_duration}")
print(f" Benötigte Ersatzteile: {dispatch_report.required_parts}")
# Ticket erstellen
ticket = await self.dispatch_agent.create_maintenance_ticket(
report=dispatch_report,
assigned_team="Team-Nord-2",
escalation_level="standard"
)
print(f" 🎫 Ticket-ID: {ticket.id}")
print(f" ✅ Wartungsteam benachrichtigt!")
return ticket
return None
async def main():
supervisor = SmartStreetLightSupervisor(HOLYSHEEP_API_KEY)
# Beispiel: Prüfe alle registrierten Lampen
devices = await supervisor.client.list_devices()
for device in devices:
await supervisor.check_and_dispatch(device.device_id)
await asyncio.sleep(1) # Rate-Limiting respektieren
if __name__ == "__main__":
asyncio.run(main())
Praxiserfahrung: Mein erster Monat mit dem HolySheep Street Light Agent
Als technischer Leiter eines mittelgroßen Smart-City-Projekts mit 2.300 Straßenlaternen habe ich Ende 2025 den HolySheep Street Light Agent implementiert. Die Umstellung von unserem bisherigen regelbasierten System war einfacher als erwartet – die REST-kompatible API und die vordefinierten IoT-Agent-Templates reduzierten unseren Entwicklungsaufwand um geschätzte 60%.
Der größte Aha-Moment kam in Woche drei: GPT-4.1 erkannte bei Lampe SL-0847 ein subtiles Flackermuster, das auf einen sich entwickelnden LED-Treiber-Defekt hinwies. Unser altes System hätte dies erst beim kompletten Ausfall bemerkt. Der prädiktive Austausch sparte uns nicht nur Kosten für einen Notfalleinsatz, sondern verhinderte auch einen möglichen Haftungsfall durch nächtlichen Komplettausfall.
Die Claude-Integration für Dispatch-Kommunikation hat unsere Reaktionszeit um 40% verbessert. Wartungsteams erhalten jetzt strukturierte Berichte mit priorisierten Handlungsanweisungen statt kryptischer Fehlercodes. Besonders beeindruckend: Die调度话术-Funktion generiert automatisch mehrsprachige Einsatzzusammenfassungen für unsere internationalen Contractor-Teams.
Der ROI war bereits in Woche sechs positiv – vor allem durch die 18%ige Energieeinsparung durch adaptive Dimmung und die Reduktion von Notfalleinsätzen. Mit den günstigen DeepSeek-V3.2-Kosten ($0.42/MTok) können wir uns Monitoring-Abfragen alle 30 Sekunden für jede einzelne Lampe leisten, ohne das Budget zu sprengen.
Batch-Monitoring für große Installationen
#!/usr/bin/env python3
"""
Street Light Agent - Batch-Monitoring für 1000+ Lampen
Optimiert für hohe并发 (Concurrency) und niedrige Kosten
"""
import asyncio
import aiohttp
from holySheep_agent import HolySheepAIClient, BatchMonitor
============================================
KONFIGURATION
============================================
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
async def batch_monitor_example():
"""
Überwacht 1000 Lampen in einem Batch mit DeepSeek V3.2.
Kosten: ~$0.00042 für 1000 Abfragen!
"""
client = HolySheepAIClient(
api_key=HOLYSHEEP_API_KEY,
base_url=BASE_URL
)
# Batch-Monitor initialisieren
batch_monitor = BatchMonitor(
client=client,
model="deepseek-v3.2", # $0.42/MTok - extrem günstig!
max_concurrent_requests=50, # HolySheep erlaubt hohe并发
rate_limit_rpm=500
)
# -------------------------------------------------
# TEIL 1: Alle Lampen-IDs laden (simuliert)
# -------------------------------------------------
all_light_ids = [f"SL-{i:04d}" for i in range(1, 1001)] # 1000 Lampen
print(f"📡 Starte Batch-Monitoring für {len(all_light_ids)} Lampen...")
# -------------------------------------------------
# TEIL 2: Parallel-Monitoring mit Fortschritt
# -------------------------------------------------
results = await batch_monitor.monitor_all(
device_ids=all_light_ids,
callback=lambda completed, total: print(
f" Fortschritt: {completed}/{total} ({100*completed/total:.1f}%)"
)
)
# -------------------------------------------------
# TEIL 3: Ergebnisse analysieren
# -------------------------------------------------
healthy = sum(1 for r in results if r.status == "healthy")
warning = sum(1 for r in results if r.status == "warning")
critical = sum(1 for r in results if r.status == "critical")
offline = sum(1 for r in results if r.status == "offline")
print(f"\n📊 Batch-Monitoring Ergebnis:")
print(f" ✅ Gesund: {healthy}")
print(f" ⚠️ Warnung: {warning}")
print(f" 🚨 Kritisch: {critical}")
print(f" ❌ Offline: {offline}")
# Kritische Geräte zur sofortigen Prüfung vormerken
if critical > 0:
print(f"\n🔴 Initiiere Fehleranalyse für {critical} kritische Geräte...")
critical_ids = [r.device_id for r in results if r.status == "critical"]
# GPT-4.1 für detaillierte Fehleranalyse
for device_id in critical_ids[:10]: # Top 10
await batch_monitor.deep_analyze(
device_id=device_id,
model="gpt-4.1",
include_historical=True
)
# -------------------------------------------------
# TEIL 4: Kostenübersicht
# -------------------------------------------------
cost_report = batch_monitor.get_cost_summary()
print(f"\n💰 Kostenbericht:")
print(f" Monitoring-Kosten (DeepSeek): ${cost_report.monitoring_cost:.4f}")
print(f" Analyse-Kosten (GPT-4.1): ${cost_report.analysis_cost:.4f}")
print(f" Gesamt: ${cost_report.total_cost:.4f}")
print(f" 💡 Alternative bei OpenAI: ~${cost_report.alternative_cost:.2f}")
if __name__ == "__main__":
asyncio.run(batch_monitor_example())
Häufige Fehler und Lösungen
Fehler 1: "Authentication Error" bei API-Aufrufen
Symptom: HTTP 401 bei allen requests, obwohl der API-Key korrekt kopiert wurde.
Ursache: Der API-Key enthält unsichtbare Leerzeichen oder Zeilenumbrüche beim Kopieren aus der Web-Oberfläche.
# ❌ FALSCH - Key mit versteckten Zeichen
HOLYSHEEP_API_KEY = "sk-holysheep-xxxxxxxxxxxxxxx
" # Zeilenumbruch!
✅ RICHTIG - Key korrekt bereinigen
import re
def clean_api_key(key: str) -> str:
"""Entfernt alle Whitespace-Zeichen vom API-Key."""
return re.sub(r'\s+', '', key)
HOLYSHEEP_API_KEY = clean_api_key("sk-holysheep-xxxxxxxxxxxxxxx
")
client = HolySheepAIClient(
api_key=HOLYSHEEP_API_KEY,
base_url="https://api.holysheep.ai/v1" # Korrekte URL!
)
Fehler 2: Rate-Limit überschritten bei Batch-Operationen
Symptom: HTTP 429 nach 50-100 Anfragen, besonders beim Monitoring vieler Geräte.
Ursache: Zu viele gleichzeitige Requests ohne Berücksichtigung der Rate-Limits.
# ❌ FALSCH - Unbegrenzte Gleichzeitigkeit
async def monitor_all_bad(device_ids):
tasks = [client.get_status(id) for id in device_ids]
return await asyncio.gather(*tasks) # Rate Limit garantiert!
✅ RICHTIG - Semaphore für concurrency control
import asyncio
async def monitor_all_good(client, device_ids, max_concurrent=20):
"""Monitor mit kontrollierter Gleichzeitigkeit."""
semaphore = asyncio.Semaphore(max_concurrent)
async def rate_limited_get(device_id):
async with semaphore:
return await client.get_status(device_id)
# 100 Requests, aber max 20 gleichzeitig
tasks = [rate_limited_get(id) for id in device_ids]
return await asyncio.gather(*tasks)
Usage
results = await monitor_all_good(client, all_light_ids, max_concurrent=20)
Fehler 3: Falsches Modell für Anomalie-Erkennung verwendet
Symptom: Anomalien werden nicht erkannt, obwohl Telemetrie-Daten offensichtliche Probleme zeigen.
Ursache: Falsches Modell (z.B. DeepSeek statt GPT für komplexe Mustererkennung) oder falsche Prompt-Konfiguration.
# ❌ FALSCH - Falsches Modell für komplexe Analyse
result = await client.analyze_anomaly(
device_id="SL-001",
data=telemetry,
model="deepseek-v3.2" # Zu simpel für komplexe Muster!
)
✅ RICHTIG - Modell nach Anwendungsfall wählen
async def smart_analyze(client, device_id, telemetry, use_case):
"""
Wählt automatisch das optimale Modell für den Anwendungsfall.
use_cases:
- "quick_status": deepseek-v3.2 (billig, schnell)
- "fault_prediction": gpt-4.1 oder gpt-5 (komplexe Muster)
- "dispatch_report": claude-sonnet-4.5 (natürliche Sprache)
- "energy_optimization": gemini-2.5-flash (Kosten-Nutzen)
"""
model_mapping = {
"quick_status": "deepseek-v3.2",
"fault_prediction": "gpt-4.1", # oder "gpt-5" wenn verfügbar
"dispatch_report": "claude-sonnet-4.5",
"energy_optimization": "gemini-2.5-flash"
}
selected_model = model_mapping.get(use_case, "gpt-4.1")
return await client.analyze(
device_id=device_id,
data=telemetry,
model=selected_model,
system_prompt=get_prompt_for_use_case(use_case)
)
Usage
fault_result = await smart_analyze(
client, "SL-001", telemetry, "fault_prediction"
)
Fehler 4: Speicherort der API-Credentials in Git
Symptom: API-Key wurde versehentlich in ein öffentliches Repository committed.
Ursache: Credentials direkt im Quellcode statt in Umgebungsvariablen.
# ❌ FALSCH - API-Key im Code
HOLYSHEEP_API_KEY = "sk-holysheep-xxxxxxxxxxxxxxx"
✅ RICHTIG - Aus Umgebungsvariable laden
import os
from dotenv import load_dotenv
.env Datei laden (NIEMALS in Git einchecken!)
load_dotenv()
HOLYSHEEP_API_KEY = os.getenv("HOLYSHEEP_API_KEY")
if not HOLYSHEEP_API_KEY:
raise ValueError("HOLYSHEEP_API_KEY nicht in Umgebungsvariablen gefunden!")
.env.example erstellen (als Vorlage)
HOLYSHEEP_API_KEY=your-key-here
.gitignore ergänzen
.env
__pycache__/
*.pyc
Webhook-Integration für Echtzeit-Alerts
#!/usr/bin/env python3
"""
Street Light Agent - Webhook-Integration für Push-Benachrichtigungen
"""
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from holySheep_agent import HolySheepWebhookHandler
app = FastAPI(title="Street Light Alert Service")
Webhook-Handler initialisieren
webhook_handler = HolySheepWebhookHandler(
api_key=HOLYSHEEP_API_KEY,
base_url=BASE_URL
)
class AlertPayload(BaseModel):
"""Modell für eingehende Alert-Webhooks von HolySheep."""
event_type: str # "anomaly_detected", "device_offline", "maintenance_due"
device_id: str
severity: int # 1-10
timestamp: str
data: dict
@app.post("/webhook/alerts")
async def receive_alert(payload: AlertPayload):
"""
Endpoint für HolySheep-Webhooks.
HolySheep sendet hier automatisch Alerts bei Anomalien.
"""
print(f"🔔 Alert erhalten: {payload.event_type}")
print(f" Gerät: {payload.device_id}")
print(f" Schwere: {payload.severity}/10")
# --- Hier eigene Alert-Logik implementieren ---
if payload.event_type == "anomaly_detected":
if payload.severity >= 8:
# Kritische Anomalie → SMS an Bereitschaft
await send_sms_alert(payload)
elif payload.severity >= 5:
# Mittlere Anomalie → Ticket erstellen
await create_ticket(payload)
else:
# Leichte Anomalie → Nur loggen
log_warning(payload)
elif payload.event_type == "device_offline":
# Gerät offline → Sofortige Benachrichtigung
await handle_device_offline(payload)
return {"status": "processed", "alert_id": payload.device_id}
async def send_sms_alert(payload: AlertPayload):
"""Sendet SMS bei kritischen Alerts."""
# Integration mit SMS-Gateway (z.B. Twilio)
print(f"📱 SMS gesendet: Kritische Anomalie an {payload.device