Beiträge von eiche

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

    Das siehst du falsch.

    Ich ging davon aus, dass dies bei dir anders ist, weshalb ich nachfragte. Meine Darlegung sollte zeigen, was ich bisher aus eigener Erfahrung kenne, mehr nicht.

    Auf Grund deiner Erklärung zusammengefasst:

    Du suchst eine Regelung, die erfasst, dass von deiner Anlage in das öffentliche Netz gespeist wird und am besten wieviel. Wenn eine untere Schwelle dieses ungewollten "Ausspeisens" überschritten wird (untere Hystereseschwelle) soll das Wasser deines Speichers per Heizstab erwärmt werden.

    Du erklärst bisher nicht, wo welche Messdaten verfügbar/abfragbar sind. Genau das ist aber grundlegend für eine mögliche Regelung.

    Auch ist noch unklar, ob der Heizstab per Temperaturmessung (im/am Warmwasserspeicher) bei Erreichen einer oberen Temperaturschwelle (obere Hystereseschwelle) bereits abgeschaltet wird oder dies die gewünschte Regelung tun muss.

    Dein vermuteter Stand: Der Shelly 3EM misst auf drei Phasen unmittelbar hinter dem Zähler/FI Schutzschalter die fließenden Ströme -> Leistung.

    Gibt es weitere Messungen per Shelly?

    Ok, dann skizziere bitte mal deine Anlage! Dabei ist von wesentlicher Bedeutung, von welcher Komponente welche Informationen zu bekommen sind.

    Auf Grund meiner PV Kleinanlage (=Balkonkraftwerk) kenne ich folgende Struktur.

    1. Der PV Ertrag wird einem Speicher zugeführt, der entweder per Zeitplan, oder via Messwerten geregelt, die Energie speichert/verteilt
    2. Was der Speicher nicht speichert, wird einem Wechselrichter zugeführt, der die Energie in das Hausnetz einspeist.

    depty24

    Wenn du dich tatsächlich einarbeiten willst, unterstütze ich deine Mühe auch gerne.

    Was brauchst du dazu?

    1. Den Menüpunkt "Scripts" im WebUI finden und nutzen können
    2. Grundlegende Kenntnisse in JavaScript
    3. Zumindest Datenstrukturen im JSON (JavaSCript Object Notation) Format analysierend lesen können
    4. Auf einen Teil (ich nenne so etwas Komponente) eines Objektes per Punktnotation zugreifen können
    5. Die weitgehendst präzise API Dokumentation (teilweise) verstehend lesen können

    Du kannst auch Informationen an Hand eines Links in meiner Signatur finden.

    Ich beginne mal mit einem ersten Skript Gerüst.

    Code
    function process(event) {
    	print(event);
    }
    
    Shelly.addEventHandler(process);

    Shelly.addEventHandler meldet dem System (Firmware), dass es beim eintreffen eines Ereignisses eine Funktion (=Unterprogramm) darüber informieren soll. Eine solche Funktion wird Eventhandler genannt. Hier ist das die Funktion "process", welche zwingend einen Parameter, hier bspw. event genannt (Name kann anders gewählt werden), entgegennehmen muss. Ich nenne ein solches Entgegennehmen "importieren". process tut hier nichts anderes, als den Wert (=Inhalt) des Parameters event auszugeben.

    Der an Hand des Parameters event importierte Wert ist immer ein Objekt, welches print im JSON Format ausgibt. Eine oder mehrere solcher Ausgaben solltest du kopieren und in einen Editor zwecks Analyse einkleben und bei Bedarf abspeichern. Wenn du deren Struktur (halbwegs) verstanden hast, hast du die erste Hürde überwunden. Es werden voraussichtlich ständig Ereignisse auftreten, weshalb das Console Fenster nach und nach gefüllt wird.

    Eine kompaktere Form der Ausgabe erhältst du mit

    Code
    print(JSON.stringify(event));

    Hinweis:

    Shelly Skripte sind grundsätzlich Ereignis gesteuert. Sie werden nicht wie ein SPS Programm oder die Funktion loop() in Arduino zyklisch abgearbeitet. Deshalb solltest du beim Versuch, eine Wiederholungsstruktur (Schleife) einzubauen immer darauf achten, dass diese sicher nach wenigen Wiederholungen zu Ende ist. Eine Warteschleife kann "tödlich" sein - Finger weg von so etwas! Eine Zähler gesteuerte Schleife (for ...) ist i.d.R. noch geeignet, solange die Schleifenbedingung den Zählerstand entscheidend berücksichtigt.

    Ich versuche, Anwendungsmöglichkeiten des WD auszuloten. Dazu brauche ich Informationen, auf welche Nachrichten das WD (wie) reagiert.

    Dies betrifft insbesondere MQTT, aber auch RPC wären interessant.

    Ich fand bisher keine solche Information, allenfalls beispielhaft in einem veröffentlichten Skript zur BLU TRV Synchronisierung, was ich nicht brauche. Da der Skript Autor offenbar über eine entsprechende Information verfügt, frage ich, wo solche vorliegen. In der API Dokumentation fand ich nichts WD Spezifisches dazu.

    Anlass: Versuch, mehrere Shelly BLU Sensoren bzw. dessen Werte auf dem Display darstellen zu lassen.

    puhx666 Das wird nun hier off topic. Vielleicht sollte ein Moderator deinen und meine Beiträge separieren.

    Zu deinem Anliegen helfe ich gerne weiter. Dazu muss ich deine beteiligten Geräte genauer kennen.

    1. Wie stellst du die (störende) Sonneneinstrahlung messtechnisch fest?
    2. Mit welchen Mitteln steuerst du ansonsten deine Rollläden?
    3. Nutzt du bisher VPN?

    SiloBau

    Neue Skriptversion - die Beschreibung des Verhaltens wie in #39.

    Zusätzlich wird der Eingang mit dem Schaltensperren auch gesperrt und mit dem Schaltenfreigeben auch freigegeben. Du kannst diesen Zusatz mit

    Code
    InpCfg = false

    auch deaktivieren - Zeile 6 im Skript.

    Vorteil:

    Damit wird die Wirkung des Eingangssignals während der Einschaltsperrphase ebenfalls verhindert und danach wieder aktiviert. Damit kannst du auch das Eingangssignal mit einem "sichtbaren" Shelly schalten, wodurch der "unsichtbare" und schaltende Shelly wirkungsmächtig während der Sperrphase am Schalten gehindert wird - dann gibt es auch kein sehr kurzes Einschalten während der Sperrphase.

    Nachteil:

    Mit jedem Einschalten wird etwas in den nichtflüchtigen Speicher geschrieben, welcher bekanntermaßen deutlich weniger Schreibzugriffe verträgt als flüchtiger Speicher (RAM). Vermutlich wird der Shelly trotzdem lange genug leben bzw. nicht aus diesem Grund sterben (Elkos dürften problematischer sein, allerdings austauschbar).

    Was du bevorzugst, musst du selbst entscheiden. Je häufiger eingeschaltet wird, desto schneller altert der nichtflüchtige Speicher.

    Das Skript

    Soeben fällt mir eine noch bessere Variante ein, welche ich nachreichen will und die nicht in den nichtflüchtigen Speicher schreibt.

    Dazu wird der Eingang von der direkten Wirkung auf den Ausgang entkoppelt (Eingang als "detached" konfigurieren). Der Eventhandler check() kann dann Signaländerungen am Eingang erfassen und passend entscheiden, ob der Ausgang eingeschaltet wird oder nicht. Das kann ich aber erst testen, wenn ich wieder zu Hause bin.

    Gibt es eine "Plattform" , die ich sämtliche Daten aus Fronius, Shelly und dem Speicher bündeln kann?

    Ich nutze für so etwas Node-RED. Das ist eine Programmierumgebung, die oftmals das Programmieren durch grafische Symbole deutlich erleichtert. Damit kann ich sehr viel experimentieren und herausfinden. Bei Bedarf schiebe ich mir damit auch Adapter zusammen, allerdings zumeist auch mit JavaScript Code.

    Ein übergeordnetes System (openHAB, ioBroker, HomeAssistant, ...) könnte dich bei deinen Anliegen unterstützen.

    SiloBau

    Hier nun mein erster Entwurf. Beschreibung des Verhaltens:

    1. Es wird eingeschaltet.
      1. Regulär, d.h. außerhalb der Sperrzeit (Schalten ist freigegeben) -> Nach 5s wird ausgeschaltet und Sperren gestartet.
      2. Irregulär, d.h. innerhalb der Sperrzeit (Schalten ist gesperrt) -> Es wird sofort ausgeschaltet, ohne Sperren zu manipulieren.
    2. Es wird ausgeschaltet.
      1. Weil Einschaltdauer abgelaufen -> Sperren gestartet, nach 2min wird Sperren beendet
      2. Weil vom Anwender "dazwischengefunkt" (irregulär) -> nichts sonst
    3. Einschaltdauer abgelaufen (mit oder ohne schalten) -> Sperren gestartet, nach 2min wird Sperren beendet

    Irreguläres Schalten hat keinerlei Sperr-/Freigabewirkung. Reguläres (vorgesehenes) Einschalten schaltet nach Ablauf der Einschaltdauer aus und startet die Sperrphase. Nach Ablauf der Sperrphase wird das reguläre Einschalten freigegeben.

    Damit findet kein retriggern statt.

    Hiermit wird ein sehr kurzes, irreguläres Einschalten nicht verhindert, weil dies mit einem Shelly per se unmöglich ist. Stattdessen wird ein irreguläres Einschalten sofort beendet.

    Der Anwender kann jederzeit ausschalten, aber das Sperren wird erst nach Ablauf der Einschaltdauer gestartet.

    Vermutlich wird dir dieses Verhalten bereits genügen. Andernfalls siehe in #36

    Noch einmal der Hinweis zur Alternative: ...

    Das Skript

    Hinweis: Die Console Ausgaben via print kannst du dazu nutzen, das Verhalten genauer zu prüfen. Dabei solltest du die Zeitstempel am rechten Rand jeder Ausgabe hinzuziehen. Daran kannst du das Zeitverhalten erkennen. Testen kannst du mit einem Schalter/Taster am Eingang oder einem weiteren Browser Tab, in welchem du die Startseite des Shelly dazu verwendest, um zu schalten - oder auch mit der App.