Frage zu ha-pysmaplus

little.yoda
Site Admin
Beiträge: 958
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 34 Mal
Danksagung erhalten: 157 Mal

Re: Frage zu ha-pysmaplus

Beitrag von little.yoda » 08.10.2025, 20:10

Magst du deine Änderung noch posten, damit es auch von anderen genutzt werden kann?

Homer-S
Beiträge: 7
Registriert: 08.10.2025, 08:47

Re: Frage zu ha-pysmaplus

Beitrag von Homer-S » 09.10.2025, 19:40

Sehr gern:

Das ist was mir ChatGPT zum Adaptieren der example.py gegeben hatte. Das hat auch funktioniert, das einzige war, dass ich eine Fehlermeldung über veraltete Methode noch unterdrückt habe.

Code: Alles auswählen

1️⃣ MQTT vorbereiten

Am Anfang der Datei (z. B. direkt nach den Imports) fügst du hinzu:

import paho.mqtt.client as mqtt
import json

# --- MQTT-Konfiguration ---
MQTT_BROKER = "mqtt.example.com"   # <--- hier deine Adresse
MQTT_PORT = 1883
MQTT_TOPIC = "sma/inverter"


2️⃣ MQTT-Verbindung innerhalb von main_loop

Am Anfang von main_loop(args: argparse.Namespace) fügst du hinzu:


# MQTT-Client erstellen
mqtt_client = mqtt.Client()
mqtt_client.connect(MQTT_BROKER, MQTT_PORT, 60)


3️⃣ Werte senden

Direkt nach dieser Zeile in main_loop, wo du die Sensoren ausliest und die Werte ausgibst:

for deviceId in devicelist.keys():
    sensors[deviceId] = await VAR["sma"].get_sensors(deviceId)
    for sensor in sensors[deviceId]:
        sensor.enabled = True

    # MQTT-Payload senden
    # Suche relevante Sensoren: total, today, grid_power
    sensor_dict = {sen.key or sen.name: sen.value for sen in sensors[deviceId]}
    payload = {
        "total_kwh": sensor_dict.get("total", 0),
        "today_wh": sensor_dict.get("today", 0),
        "grid_power_w": sensor_dict.get("grid_power", 0)
    }
    mqtt_client.publish(MQTT_TOPIC, json.dumps(payload))
    print("MQTT gesendet:", payload)


4️⃣ MQTT sauber schließen

Am Ende von main_loop (vor await VAR["sma"].close_session()) fügst du hinzu:

mqtt_client.disconnect()

Antworten