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:
git clone https://github.com/yourusername/system2mqtt.git
cd system2mqtt
  1. Python-Abhängigkeiten installieren:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. Konfiguration anpassen:
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:

# 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:

{
    "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

Description
No description provided
Readme 50 KiB
Languages
Python 100%