UNPKG

co2advisor

Version:

The CO2 Advisor API provides real-time insights into the carbon footprint per kilowatt-hour of electricity for various locations in Germany.

187 lines (138 loc) 4.35 kB
# CO2 Advisor Ein Express.js-basierter Microservice zur Visualisierung von CO2-Prognosen für den Stromverbrauch in Deutschland. Der Service nutzt die Corrently API, um stündliche CO2-Emissionswerte für den nächsten Tag basierend auf der Postleitzahl anzuzeigen. ## Live Demo Der Service kann unter folgender URL getestet werden: [https://co2advisor.corrently.io](https://co2advisor.corrently.io) ## Features - Webbasierte Benutzeroberfläche mit PLZ-Eingabe - Mehrere Ausgabeformate: - Interaktive HTML-Ansicht - Direkte PNG-Bildausgabe - JSON-API für maschinelle Verarbeitung - Visualisierung der CO2-Werte als Balkendiagramm - Farbcodierung der Werte (grün/gelb/rot) basierend auf Empfehlungen - Responsive Design - Base64-kodierte Bildausgabe für E-Mail-Integration - 5-Minuten-Caching für optimale Performance - Konfigurierbar über Umgebungsvariablen ## Installation ```bash # Option 1: Globale Installation npm install -g co2advisor # Option 2: Repository klonen git clone https://github.com/yourusername/co2advisor.git cd co2advisor npm install ``` ## Erforderliche Pakete ```json { "dependencies": { "express": "^4.18.2", "canvas": "^2.11.2", "chart.js": "^4.4.1", "chartjs-adapter-moment": "^1.0.1", "corrently-api": "^2.0.3", "moment": "^2.29.4", "dotenv": "^16.0.3" } } ``` ## Konfiguration ### Umgebungsvariablen Die Anwendung kann über folgende Umgebungsvariablen konfiguriert werden: ```bash PORT=3000 # Standard: 3000 APPID=your-corrently-appid # Optional: Standard-AppID wird verwendet ``` Tipp: Token und APPID können unter https://console.corrently.io erstellt werden. Diese können auch in einer `.env` Datei definiert werden. ## Verwendung ### Als globales Kommando Nach der globalen Installation: ```bash co2advisor ``` ### Als lokale Installation ```bash node index.js ``` Nach dem Start ist der Service unter `http://localhost:3000` erreichbar. ### Endpunkte 1. **Startseite** - URL: `/` - Methode: `GET` - Beschreibung: Zeigt ein Eingabeformular für die Postleitzahl 2. **HTML-Visualisierung** - URL: `/chart?zipcode=<PLZ>` - Methode: `GET` - Parameter: `zipcode` (Postleitzahl) - Beispiel: `/chart?zipcode=69502` - Beschreibung: Zeigt die CO2-Prognose als interaktives Diagramm 3. **Direkter PNG-Download** - URL: `/chart/<PLZ>.png` - Methode: `GET` - Beispiel: `/chart/69502.png` - Beschreibung: Liefert das Diagramm als PNG-Datei - Cache: 5 Minuten 4. **REST-API** - URL: `/api/chart?zipcode=<PLZ>` - Methode: `GET` - Parameter: `zipcode` (Postleitzahl) - Beispiel: `/api/chart?zipcode=69502` - Rückgabe: JSON mit Prognosedaten und Base64-kodiertem Diagramm ### API-Antwortformat ```json { "location": { "city": "Weinheim", "zipcode": "69502" }, "data": [...], "chart": "data:image/png;base64,..." } ``` ## Fehlermeldungen Der Service liefert folgende HTTP-Statuscodes: - `200 OK`: Anfrage erfolgreich - `400 Bad Request`: Fehlende oder ungültige Postleitzahl - `500 Internal Server Error`: Serverfehler oder API-Probleme ## Browser-Kompatibilität Der Service wurde mit folgenden Browsern getestet: - Chrome 90+ - Firefox 88+ - Safari 14+ - Edge 90+ ## Entwicklung ### Projektstruktur ``` co2advisor/ ├── index.js # Hauptanwendung ├── package.json # Projektabhängigkeiten ├── .env # Umgebungsvariablen (optional) └── README.md # Dokumentation ``` ### Lokale Entwicklung ```bash # Repository klonen git clone https://github.com/energychain/co2advisor.git # Abhängigkeiten installieren cd co2advisor npm install # Entwicklungsserver starten npm start ``` ## Lizenz [Apache-2.0](./LICENSE) ## Mitwirken Beiträge sind willkommen! Bitte erstellen Sie einen Pull Request oder ein Issue für Vorschläge und Verbesserungen. ## Support Bei Fragen oder Problemen können Sie: - Ein Issue im GitHub Repository erstellen - Den Service unter https://co2advisor.corrently.io testen - Die API-Dokumentation unter https://api.corrently.io/v2.0/docs konsultieren ## Danksagung - [Corrently API](https://api.corrently.io/) für die Bereitstellung der CO2-Daten - [Chart.js](https://www.chartjs.org/) für die Visualisierungsbibliothek --- Entwickelt mit ❤️ für eine nachhaltigere Zukunft