Beispiel/neue Auswertungen zu AWTRIX3

Ulanzie Clock Anzeige TC001 für einzelne Daten.

Moderatoren: Ulrich, mr.big

Antworten
Benutzeravatar
mr.big
Beiträge: 595
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 15 Mal
Danksagung erhalten: 121 Mal

Beispiel/neue Auswertungen zu AWTRIX3

Beitrag von mr.big »

PV2
Auswertung PV-Daten und Anzeige Leistung, Tagesertrag und SOC,
in Abhängigkeit der Leistung werden verschiedene Datensets an Awtrix3 gesendet

Code: Alles auswählen

""" Auswertung PV-Daten und Anzeige Leistung, Tagesertrag und SOC
in Abhängigkeit der Leistung werden verschiedene Datensets an Awtrix3 gesendet"""

# Importieren der benötigten Funktionen aus der Funktionen-Bibliothek
from funktionen import (
    awtrix3_send_app,
)

def auswertung(app, data, config):
    """Auswertung PV-Daten und Anzeige Leistung, Tagesertrag und SOC"""

    # Zuweisung und mögliche Berechnungen und Anpassung der Werte
    Leistung = str(int(data["pv2_solaranzeige_Leistung"]))
    Tagesertrag = round(float(data["pv2_solaranzeige_Wh_GesamtHeute"] / 1000), 2)
    SOC = str(int(data["pv2_solaranzeige_SOC"]))

    # Aufbereitung der Daten für die Anzeige in der App
    # Farben für die Anzeige des Tagesertrags festlegen
    # hier für den Bereich von 0 bis 35 kWh, bitte anpassen
    if Tagesertrag >= 35:
        color_Tagesertrag = "#2cf046"
    elif Tagesertrag >= 28:
        color_Tagesertrag = "#b6e61a"
    elif Tagesertrag >= 21:
        color_Tagesertrag = "#f4ea1f"
    elif Tagesertrag >= 14:
        color_Tagesertrag = "#d8a90c"
    elif Tagesertrag >= 7:
        color_Tagesertrag = "#e56d17"
    else:
        color_Tagesertrag = "#ad0b0b"

    # wird gesendet wenn Leistung ungleich 0
    data_app_1 = {
        "text": [
            {"t": " PV: ", "c": "#fcff33"},
            {"t": Leistung + " W", "c": "#00ff00"},
            {"t": " + ", "c": "#ed7d3b"},
            {"t": "Tag: ", "c": "#fcff33"},
            {"t": str(Tagesertrag) + " kWh", "c": color_Tagesertrag},
            {"t": " + ", "c": "#ed7d3b"},
            {"t": "SOC ", "c": "#fcff33"},
            {"t": SOC + " %", "c": "#00ff00"},
        ],
        "icon": 27283,
        "pushIcon": 2,
        "progress": SOC,
        "progressc": "#00ff00",
    }

    # wird gesendet wenn Leistung gleich 0
    data_app_2 = {
        "text": [
            {"t": "Tagesertrag: ", "c": "#fcff33"},
            {"t": str(Tagesertrag) + " kWh", "c": color_Tagesertrag},
            #{"t": " + ", "c": "#ed7d3b"},
            #{"t": "SOC ", "c": "#fcff33"},
            #{"t": SOC + " %", "c": "#00ff00"},
        ],
        "icon": 51301,
        "pushIcon": 2,
        "progress": SOC,
        "progressc": "#00ff00",
    }

    # Senden der Daten an Awtrix3 in Abhängigkeit der Leistung
    data_app = data_app_1 if Leistung != "0" else data_app_2
    awtrix3_send_app(
        config["awtrix3"]["url"],
        app,
        data_app,
        config["settings"]["app_scroll_duration"],
        config["settings"]["app_show_time"],
    )
Die Erklärung dazu überlasse ich heute mal meinem neuen Mitarbeiter namens "Klaus die KI ;) "!

Zitat:
Dieser Python-Code ist für die Auswertung von Photovoltaik-Daten und die Anzeige von Leistung, Tagesertrag und SOC (State of Charge). Abhängig von der Leistung werden verschiedene Datensätze an Awtrix3 gesendet.

Die Funktion `auswertung(app, data, config)` nimmt drei Parameter: `app`, `data` und `config`.

- `app` ist wahrscheinlich die App, an die die Daten gesendet werden.
- `data` ist ein Wörterbuch, das die Photovoltaik-Daten enthält.
- `config` ist ein Wörterbuch, das die Konfigurationsdaten enthält.

Zuerst werden die Werte für Leistung, Tagesertrag und SOC aus dem `data` Wörterbuch extrahiert und entsprechend formatiert.

Danach wird die Farbe für die Anzeige des Tagesertrags festgelegt, basierend auf dem Wert des Tagesertrags.

Zwei verschiedene Datensätze (`data_app_1` und `data_app_2`) werden erstellt, die an die Awtrix3 App gesendet werden. Welcher Datensatz gesendet wird, hängt davon ab, ob die Leistung gleich 0 ist oder nicht.

Schließlich wird die Funktion `awtrix3_send_app` aufgerufen, um die Daten an die Awtrix3 App zu senden. Die URL für die Awtrix3 App, die App, die Daten, die Scroll-Dauer und die Anzeigezeit werden aus dem `config` Wörterbuch extrahiert und als Parameter an die Funktion `awtrix3_send_app` übergeben.
Macht er doch eigentlich ganz gut, oder?

Das ganze ist ab sofort unter pv2.py Bestandteil des Ordners "Auswertungen/Templates".

Alle die es sich nach installieren möchten gehen wie folgt vor:

Code: Alles auswählen

cd ~/scripts/AWTRIX3-Connector/Auswertungen/Templates/
 wget https://raw.githubusercontent.com/Deepintheeast/AWTRIX3-Connector/main/Auswertungen/Templates/pv2.py



Have Fun!

Antworten

Zurück zu „Ulanzi Anzeige TC001“