# 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