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.

    Ich "mache" daran nichts. Ich hatte per Konversation einige Lösungsmöglichkeiten aufgezeigt, die der TE aber so nicht nutzen will. Er sucht eine Möglichkeit per Cloud/App oder notfalls HomeAssistant den Schaltzustand eine Lampe per Fernzugriff abzulesen. Diese Lampe wird aber nicht direkt von einem Shelly geschaltet. Da er einen messenden Shelly an der Lampe nutzt, könnte dieser den Schaltzustand mitteilen.

    Der TE möchte eine sehr einfache und nicht erst zu interpretierende Darstellung des Schaltzustandes.

    Ich denke, er sollte mit deinen Hinweisen weiterkommen. Mehr will und kann ich nicht einbringen.

    apreick

    Ich bin im Vorfeld dieses Threads ein Stück weit involviert. Deshalb meine zusätzliche Frage.

    Dein Beispiel-Template ist mit dem Ausgangszustand eines Gerätes verknüpft, wenn ich es richtig verstehe.

    Dem TE stehen hierfür allerdings ausschließlich die Messungen am Verbraucher per nicht schaltendem Shelly zur Verfügung. Dieser Shelly kann eine Nachricht senden - an HomeAssistant (von welchem ich nur den Namen kenne). Deshalb ist er darauf angewiesen, dass das HA-Template auf eine solche Nachricht reagiert. Vermutlich gibt es hierfür einen (Software-)Adapter, welcher per MQTT, URL oder sonstwie erreichbar ist und der den Anzeigezustand des Template manipulieren kann.

    Damit sollte sich das Anliegen des TE erfüllen lassen.

    Kannst du bitte auf dieses Szenario eingehen?

    Ich fand soeben hierher - interessantes Projekt.

    Nur als Info und Anregung, da ich dies aktuell mangels Equipment nicht selbst testen kann.

    Die Lösung per Skript, ohne Cloud und ohne übergeordnetes System

    1. Die Messwerte zu erfassen und umzurechnen ist sehr einfach - Eventhandler oder zyklische Abfrage.
    2. Die Ansteuerung des Ventils ist bereits vorhanden.
    3. Die Wasserverbräuche können persistent in einer (Skript-)Datei auf dem Shelly gespeichert und bei Bedarf abgefragt werden. Dabei ist prinzipiell jede Zeitzuordnung möglich.

    Zum lesen, interpretieren und ggf. erstellen einer Grafik muss ein anderer Weg als die Cloud/App genutzt werden. Ein Raspberry Pi mit einem übergeordneten System kann dies bewerkstelligen. Ich bevorzuge für solches Node-RED, den MQTT Broker Mosquitto, das Zeitreihendatenbanksystem Influx und zwecks grafischen Darstellungen Grafana. Diese Kombination ist der Cloud deutlich überlegen.

    Wenn nur die auf dem Shelly persistent gespeicherten Werte manuell übertragen und bspw. per Tabellenkalkulation auswerten will, braucht die o.a. Raspberry Pi Ausstattung nicht. Hierfür können gelegentlich alle auf dem Shelly gespeicherten Daten unter Verwendung dessen Web UI und Copy & Paste auf einen PC übertragen werden. Danach können diese Daten bei Bedarf auf dem Shelly gelöscht werden.

    Eine solche persistente Messwertaufzeichnung per Skript habe ich implementiert. Sie könnte auf diesen Anwendungsfall angepasst werden.

    Zum Skript

    Da ich (noch) keinen Plus UNI besitze, kann ich leider keine Erfahrung zur geeigneten Erfassung der Messwerte sammeln. Deshalb hier zunächst nur das Prinzip.

    1. Beide Messwerte zyklisch abfragen oder per Eventhandler entgegennehmen und zwischenspeichern. Ich täte Eventhandler bevorzugen, weil dieser bei Änderung eines Messwertes benachrichtigt werden wird.
    2. Die zwischengespeicherten Werte (ebenfalls bspw. im Eventhandler) verarbeiten, was sehr einfach sein dürfte.
    3. Die Resultate per Skriptfunktion MQTT.publish() veröffentlichen.

    Bei Verwendung eines Eventhandlers kann alles erforderliche in dieser Funktion abgearbeitet werden.

    Bei Verwendung eines Timers kann alles erforderliche in dessen callback Funktion abgearbeitet werden.

    In beiden alternativen Verwendungen wird nur mit einem zwischengespeicherten Messwert und einem aktuell eingetroffenen Messwert gearbeitet werden können, da beide Werte nur asynchron eintreffen. Eine "Gleichzeitigkeit" beider Messwerte gibt es nicht.

    Romeda

    1. Hast du weitere Shelly in Gebrauch, welche dieses Problem nicht mit sich führen?
    2. Vermutlich nutzt die nicht wirklich die o.a. IP Adressbereiche. Es könnte hilfreich sein, deine tatsächlich nicht gerouteten IP Adressen und -Bereiche des Routers zu kennen.
      1. Subnetz (Maske oder /Bitanzahl)?
      2. DHCP Einstellung?

    Mit diesen Informationen ließe sich vermutlich mehr anfangen.

    Zusätzlich habe ich noch ein Plus AddOn mit zwei Mikrotastern vorgesehen, über welche die Zieltemperatur manuell schrittweise verändert werden kann. Hierfür bietet die Webseite drei Anzeige (Refresh) Modi.

    Screenshot dieser Webseite

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Selbstverständlich kann MQTT zwecks Kommunikation mit einem übergeordneten System oder einer MQTT Client App verwendet werden.

    Ich nutze hierfür parallel ein Node-RED Dashboard.

    Das Skript läuft ausschließlich auf dem regelnden Shelly, was für die Autarkie auch erforderlich ist. Mit einer Cloud oder App hat dies nichts zu tun.

    Die vom Skript gelieferte Webseite wird von einem Web Browser dargestellt.

    Edit:
    Und sollte das WLAN ausfallen, erreicht man den Shelly und die Webseite über dessen AP Adresse 192.168.33.1, nachdem man das Endgerät (Smartphone, Tablet, ...) mit diesem AP verbunden hat.

    Edit 2:
    Neben dem C&P ist noch das einmalige Anlegen von bspw. 8 Schedule Jobs erforderlich, was mit einer meiner unterstützenden Webseiten relativ leicht möglich ist, allerdings nicht DAU sicher.

    oder gib ordentlich Geld aus und schreibe Scripte.

    Das ist nicht ganz stimmig. Ein Stellantrieb kostet ca. 15 €, eine Shelly Plus 1 liegt geschätzt bei 20 € (lange keinen mehr gekauft). Diese Kombination ist somit recht preisgünstig. Das Schreiben bzw. verstehen eines Skriptes ist wohl am aufwändigsten. Meines könntest du kostenfrei von mir erhalten. Ob dir die per Skript gelieferte Weboberfläche gefallen täte, ist eine offene Frage. Ich möchte sie tatsächlich noch verbessern, weiß aber nicht, wann ich genügend Antrieb dazu haben werde.

    Gruß Gerhard

    Afaik werden die TRV nicht mehr produziert.

    Ich bin auch nicht sehr zufrieden damit und habe einen Ersatz dafür mit einem Shelly Plus 1 und einem umfangreicheren Skript erstellt. Hierzu ist ein vom Shelly geschalteter Antrieb für das Stellventil (Stift) erforderlich. Diese Zusammenstellung arbeitet bei mir an einem Heizkörper sehr zuverlässig und insbesondere autark. Eine Spannungsversorgung ist dafür vor Ort notwendig. Ich habe bis zu 8 aktive Zeitpläne vorgesehen, deren Anzahl auf bis zu 16 erweitert werden könnte. Profile dazu habe ich nicht erstellt.

    Meine TRV werde ich sukzessive und nach Bedarf durch diese Kombination ersetzen. Mit den FRITZ! Thermostaten von avm habe ich keine Erfahrung.

    Flutschi und HighFive

    Ich kann nicht erkennen, wo der Beitrag #4 auch nur annähernd etwas konstruktives aufweist.

    Das ist wohl logisch.

    Das ist alles andere als "logisch" sondern ein Fakt, welcher aus zwar naheliegenden Gründen des Aufwandes aber nicht notwendigerweise so ist. Die Scheduler (Cron) Implementation wurde im Laufe von etlichen Jahren fortlaufend verbessert und wir können diese dankenswerterweise nutzen. Es ist aber durchaus möglich, auch nach einem Stromausfall eine zeitgesteuerte Aktion nachträglich noch ausführen zu lassen, bspw. per Skript oder einer sonstigen Implementation.

    Wo hast du jetzt etwas von Skripte geschrieben?

    Ich ging auf die Frage des TE ein und habe sie andeutungsweise beantwortet. Es liegt am TE, bei Bedarf genauer nachzufragen.

    leerraum

    Ich wollte dir eine PN zukommen lassen. Gelingt leider nicht mit dieser Fehlermeldung:

    Zitat

    Sie haben das zulässige Limit für Konversationen bereits erreicht und können keine neuen Konversationen starten.

    Wir sind derzeit zu dritt. ... ;)

    Eine reine Uhrzeit gesteuerte Funktion lässt sich zunächst mit Zeitplänen, sog. Schedule Jobs, realisieren. Diese können inzwischen per Web UI weitgehend flexibel angelegt und geändert werden.

    Der einzige Nachteil solcher Jobs liegt darin, dass sie ausschließlich zu den konfigurierten Zeiten triggern - also nicht nachträglich, falls zum Triggerzeitpunkt keine Stromversorgung vorliegt. Ich bin ein Fan solcher Schedule Jobs, weil der Scheduler bereits im Betriebssystem (Firmware) arbeitet.

    Ein solcher Job kann jegliche verfügbare Methode nutzen, also nicht etwa nur etwas ein- oder ausschalten. Allerdings unterstützt das Web UI nicht das Eintragen/Editieren beliebiger Methoden. Hierfür ist ein HTTP Request geeignet, welcher per Web Browser abgeschickt werden kann (Adresszeile). Dies ist alles in der API Dokumentation verteilt beschrieben.

    Ich habe u.a. eine Webseite erstellt, welche das Anlegen und Ändern von Schedule Jobs unterstützt, welche die Methode "Script.Eval" nutzen. Damit kann eine Skript interne Funktion aufgerufen werden, welche das Gewünschte sehr flexibel implementieren kann. Hiermit fügt sich die Flexibilität von Schedule Jobs und Skripten auf ideale Weise zusammen.

    Ein solcher Schedule Job kann auch mehrere Methoden triggern. Dann ist der Eintrag aber sehr komplex und man muss sich sehr genau mit der Syntax solcher Einträge beschäftigen.

    Die Verwendung solcher Jobs und/oder Skripten bietet den Vorteil der autarken Funktion eines Shelly, welche zumeist auch dann wirkt, wenn temporär kein WLAN verfügbar ist. Zu den Einschränkungen von Schedule Jobs bei fehlendem WLAN teile ich erst bei Interesse mehr mit, weil dies mehrere Aspekte umfasst.

    Ergänzung zu Skriptlösung mit Plus 2PM je Jalousie und einem i4 an Tastern

    • Je Plus 2PM ein Skript
    • i4 kann ggf. ohne Skript genutzt werden

    Skript mit EventHandler "evh()" und mindestens zwei Prozessfunktionen "close()", "light()" - Namen beispielhaft.

    close() schließt die Jalousie und stellt eine Variable "todo" auf eine leere Funktion "none()". light() schließt die Jalousie und stellt "todo" auf eine Funktion "aslant()".

    evh() reagiert auf den Status closed, indem die Funktion hinter "todo" aufgerufen wird. "aslant()" fährt die Jalousie kurz auf, damit die Lamellen quer gestellt werden und stellt "todo" auf "none()".

    Der i4 erhält Actions, deren URL die Methode "Script.Eval" nutzen und darüber eine der Funktionen "close()" oder "light()" aufgerufen wird.

    Code
    http://<IP Adresse des Plus 2PM>/rpc/script.eval?id=<Skript Id>&code="close()" bzw. "light()"

    Dies erlaubt den kürzest möglichen Prozess zum abschließenden querstellen der Lamellen, da das Skript praktisch unmittelbar auf das Ereignis "Jalousie geschlossen" reagiert. Das Skript ist relativ einfach und lässt weitere gewünschte Optionen zu.

    Genau diese maximale Zeit soll nicht ablaufen, das hat er so ja schon per Szene gelöst.

    Die maximale Dauer ist nur die Wartezeit, nach welcher kurz geöffnet wird und nicht etwa die Fahrdauer der Jalousie, deren Zielposition ja im URL festgelegt werden kann.

    Alternativ könnte der "Fahrzustand" der Jalousie im Sekundenabstand abgefragt werden, bis diese steht. Danach dann das kurze Öffnen der Lamellen.

    Entweder müsste ein Script auf jedem Rollladenaktor laufen ...

    Das dürfte nicht erforderlich sein, weil das i4 Skript dies kann.

    Edit:

    Gegen eine zusätzliche Unterstützung von lokal auf den Schalt-Shelly laufenden Skripten ist selbstverständlich nichts einzuwenden. Hierfür täte sich die Methode "Script.Eval" anbieten.

    Prinzip einer Skriptlösung auf einem Shelly i4

    Zunächst die maximale Dauer Tmax zum Fahren der Jalousie messen.

    1. EventHandler reagiert auf gewünschten Tastendruck, Reaktion s.u.
    2. Jalousie auf die gewünschte Position fahren lassen.
      Timer starten mit Tmax (oder geringfügig länger).
    3. Wenn Timer abgelaufen ist (callback Funktion) die geeignete Dauer (bspw. 2000 ms) lang öffnen lassen.
    4. Fahren lassen und kurz öffnen lassen per URL füt alle gewünschten Jalousien im selben Skript/EventHandler.

    Das sollte zum Ziel führen. Ggf. zu jeder Jalousie die zielführenden Zeiten separat im Skript verwenden.