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
- Repository klonen:
git clone https://github.com/yourusername/system2mqtt.git
cd system2mqtt
- Python-Abhängigkeiten installieren:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- 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 Sensorsvalue
: Aktueller Wert des Sensorsstate_class
: Art der Messung (measurement, total, total_increasing)unit_of_measurement
: Einheit der Messungdevice_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
Languages
Python
100%