126 lines
3.3 KiB
Markdown
126 lines
3.3 KiB
Markdown
# system2mqtt
|
|
|
|
Ein System zur Überwachung von Hosts durch Sammeln von Metriken und Senden via MQTT an Home Assistant.
|
|
|
|
## Features
|
|
|
|
- Modulare Struktur für Metrik-Sammler
|
|
- Einfache Erweiterbarkeit durch neue Sammler
|
|
- Automatische Erkennung in Home Assistant
|
|
- Verschlüsselte MQTT-Kommunikation
|
|
- Detaillierte Geräteinformationen in Home Assistant
|
|
|
|
## Installation
|
|
|
|
1. Repository klonen:
|
|
```bash
|
|
git clone https://github.com/yourusername/system2mqtt.git
|
|
cd system2mqtt
|
|
```
|
|
|
|
2. Python-Abhängigkeiten installieren:
|
|
```bash
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. Konfiguration anpassen:
|
|
```yaml
|
|
mqtt:
|
|
host: "mqtt.example.com" # MQTT Broker Adresse
|
|
port: 1883 # MQTT Port
|
|
username: "your_username"
|
|
password: "your_password"
|
|
client_id: "system2mqtt"
|
|
discovery_prefix: "homeassistant" # Home Assistant Discovery Prefix
|
|
```
|
|
|
|
## Verwendung
|
|
|
|
Das System wird über das `run.sh` Skript gesteuert:
|
|
|
|
```bash
|
|
# Starten des Systems
|
|
./run.sh start
|
|
|
|
# Stoppen des Systems
|
|
./run.sh stop
|
|
|
|
# MQTT Topics aufräumen
|
|
./run.sh cleanup
|
|
```
|
|
|
|
## Sammler
|
|
|
|
### System Metrics
|
|
|
|
Sammelt grundlegende Systemmetriken:
|
|
- Last Boot Zeit
|
|
- Load Average (1, 5, 15 Minuten)
|
|
- Speichernutzung (Gesamt, Verfügbar, Verwendet)
|
|
- Swap-Nutzung (Gesamt, Verfügbar, Verwendet)
|
|
- CPU-Auslastung
|
|
- Speicherauslastung
|
|
- Swap-Auslastung
|
|
|
|
### CPU Temperature
|
|
|
|
Sammelt CPU-Temperaturdaten:
|
|
- Unterstützt Linux und FreeBSD
|
|
- Automatische Erkennung des Betriebssystems
|
|
- Korrekte Einheit (°C) und Device Class (temperature)
|
|
|
|
## Datenformat
|
|
|
|
Das Datenaustauschformat ist versioniert und folgt den Home Assistant Spezifikationen. Jeder Collector gibt ein JSON-Objekt zurück mit folgender Struktur:
|
|
|
|
```json
|
|
{
|
|
"entities": [
|
|
{
|
|
"sensor_id": "unique_sensor_id",
|
|
"name": "Sensor Name",
|
|
"value": "Sensor Value",
|
|
"state_class": "measurement|total|total_increasing",
|
|
"unit_of_measurement": "Unit",
|
|
"device_class": "temperature|humidity|pressure|...",
|
|
"icon": "mdi:icon-name",
|
|
"entity_category": "diagnostic|config|system",
|
|
"attributes": {
|
|
"friendly_name": "Friendly Name",
|
|
"source": "Data Source",
|
|
"additional_info": "Additional Information"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Felder
|
|
|
|
- `sensor_id`: Eindeutige ID für den Sensor (wird für MQTT-Topics verwendet)
|
|
- `name`: Anzeigename des Sensors
|
|
- `value`: Aktueller Wert des Sensors
|
|
- `state_class`: Art der Messung (measurement, total, total_increasing)
|
|
- `unit_of_measurement`: Einheit der Messung
|
|
- `device_class`: Art des Sensors (temperature, humidity, pressure, etc.)
|
|
- `icon`: Material Design Icon Name (mdi:...)
|
|
- `entity_category`: Kategorie des Sensors (diagnostic, config, system)
|
|
- `attributes`: Zusätzliche Informationen als Key-Value-Paare
|
|
|
|
### Versionierung
|
|
|
|
Das Format ist versioniert, um zukünftige Erweiterungen zu ermöglichen. Die aktuelle Version ist 1.0.
|
|
|
|
## Home Assistant Integration
|
|
|
|
Das System nutzt die MQTT Discovery-Funktion von Home Assistant. Die Sensoren werden automatisch erkannt und erscheinen in Home Assistant mit:
|
|
- Korrektem Namen und Icon
|
|
- Aktuellen Werten
|
|
- Historischen Daten
|
|
- Detaillierten Geräteinformationen
|
|
|
|
## Lizenz
|
|
|
|
MIT License |