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.

    Merkwürdig. Mein Test läuft mit Firmware 1.6.2. Ich lasse allerdings die beiden RPC Aufrufe nicht arbeiten. Vielleicht erwirken zu viele RPC Aufrufe das Problem.

    Ich werde nun das Skript länger laufen lassen.

    Mich interessiert dein Skript mit der Id 2, welches du stoppen und starten lässt.

    woodblack

    Nun will ich endlich meinen Skriptentwurf nachreichen.

    Das folgende Skript implementiert deine Anwendung. Es ist noch ungetestet, funktioniert aber vermutlich. Ich habe es auf einem Shelly Plus 1 (Generation 2) mit einem BLU Door/Window und print Ausgaben statt Aufrufen der RPC Methoden erfolgreich getestet. Somit wird es auch auf einem Shelly Plus 2PM funktionieren. Es kann bei Bedarf relativ flexibel um weitere Aktionen auf Grund von BLU Nachrichten erweitert werden. Die Ausgaben per print() dienen ausschließlich der Kontrolle und können später entfernt werden.


    Das folgende Skript ist eine von mir auf das funktional notwendige Maß verkürzte Version des Originals "ble-shelly-blu.js". Es kann durch entfernen der vielen Kommentare noch weiter gekürzt werden. Statt dieses Skripts kann selbstverständlich auch das Original genutzt werden.

    Mein gedachter Favorit wäre die Kombination aus

    1. Shelly 2PM Generation 3 (wegen besserer BLU Kompatibilität) - Generation 2 ist auch nutzbar,
    2. evtl. BLU Motion zwecks Bewegungserkennung (nur für Komfortzwecke, nicht zwingend),
    3. BLU Button (beacon Modus erforderlich, meldet vermutlich auch seine Batteriespannung in %, zumindest als Schätzwert geeignet),
    4. Skript (ob auch Szenen Aktionen geeignet sind, weiß ich nicht).

    Das Skript wertet den BLU Button Batteriewert aus und sperrt das Schließen des Terrassenrolladens in folgender Weise. Ein niedriger Batteriestand oder ein zu lange nicht mehr eingetroffene Nachricht seitens des BLU Buttons wird persistent gespeichert und mit dem Hochfahren des 2PM gelesen. Somit steht immer die (nicht vorhandene) Verlässlichkeit des BLU Buttons zur Verfügung. Ist diese Verlässlichkeit nicht gegeben und der Rollladen wird geschlossen, öffnet das Skript diesen sofort wieder, was als Signal zu werten ist, dass der BLU Button oder dessen Batterie auszuwechseln ist.

    Das Skript kann auch ein Drücken des BLU Buttons auswerten und den Rollladen öffnen. Dies braucht aber vermutlich vielleicht nicht zu sein. Ich kann dies derzeit mangels funktionierendem BLU Button nicht testen.

    Diese Kombination dürfte eine sehr verlässliche Funktionsweise gegen das Aussperren ergeben. Allerdings wird die Knopfzelle des BLU Button wegen des beacon mode weniger lange durchhalten - vielleicht 1/2 Jahr.

    Btw, das wäre auch eine Lösung bei meiner Schwiegermutter - mal sehen. Somit bedanke ich mich für die Frage. ;)

    Wurstpeel

    Ich sehe nicht, dass ich eine Grundsatzdiskussion begann. Ich versuche es kurz machen.

    Shelly Geräte werden (bisher) unter einer total anderen Philosophie entwickelt als es mit anderen, proprietären IoT Geräten der Fall ist. Wer sich mit den Möglichkeiten der Shelly Geräte nicht befassen will, darf das selbstverständlich gerne tun. Dann sollte er sich aber nicht anmaßen, seinen spezifischen Anwendungsfall als üblichen Normalfall darzustellen und den Shelly Entwicklern einen Vorwurf daraus zu machen, dass diese dafür keinen simplen Weg vorgesehen haben.

    Statt solcher unqualifizierten und überflüssigen Bemerkungen herauszulassen, kann jeder einen Fachmann damit beauftragen, der genau das umzusetzen hat, was der Auftraggeber haben will. Btw, Shelly als Nr. 1 in diesem Markt zu bezeichnen, geht aller Wahrscheinlichkeit nach an der Realität vorbei.

    Dein Vorhaben umzusetzen, ist tatsächlich mit hinreichenden Kenntnissen gut möglich - insbesondere ohne Cloud. Es gibt einen sehr bekannten Spruch in der Linux Gemeinde. "Wer keine Ahnung hat, einfach mal ....". Fragen ist völlig in Ordnung. Sich als Nichtwisser über die Shelly Entwickler ein Urteil zu erlauben - "Peinlich für Shelly" - ist absolut unangemessen.

    Trotzdem wünsche ich dir noch viel Freude mit deiner Licht Anwendung.

    Meine Ecowitt Geräte sind

    1. die Wetterstation Wittboy und
    2. das Gateway dazu.

    Das Gateway liefert per MQTT im Abstand von ca. 1 Minute Nachrichten, die alle möglichen Daten in einer Zeichenkette enthält. Ich brauche dafür weder App noch Cloud. Allerdings war die App zeitweise hilfreich beim erkennen, welche Daten in der übertragenen Nachricht vorliegen bzw. wie diese zu interpretieren sind. Zu Letzterem habe ich einige Zeit in meine Recherchen investiert.

    Mein Beispiel:

    Code
    "PASSKEY=xxxxxxxxxxxxxxxx&stationtype=GW2000A_V3.2.5&runtime=1497300&heap=81132&dateutc=2025-06-25%2022%3A35%3A51&dns_ip=172.16.1.2&dns_err_cnt=0&cdnflg=29&tempinf=78.44&humidityin=47&baromrelin=29.515&baromabsin=29.515&tempf=73.76&humidity=63&vpd=0.311&winddir=255&windspeedmph=0.00&windgustmph=0.00&maxdailygust=1.34&solarradiation=0.00&uv=0&rrain_piezo=0.000&erain_piezo=0.000&hrain_piezo=0.000&drain_piezo=0.000&wrain_piezo=0.004&mrain_piezo=1.039&yrain_piezo=1.039&srain_piezo=0&ws90cap_volt=5.1&ws90_ver=155&wh90batt=3.16&freq=868M&model=GW2000A&interval=60"

    Daraus lassen sich die gewünschten Daten isolieren, verarbeiten und speichern, mit welchen Werkzeugen auch immer. Ich nutze hierfür etwas JavaScript Code in Node-RED. Entscheidend ist es, den langen String in seine Bestandteile zu zerlegen. Es folgt die Zusammensetzung meines JavaScript Codes.

    Code
    let p = msg.payload.split('&'); // msg.payload ist die MQTT Nachricht, auch Payload (Nutzlast) genannt.
    let s = '{', n, e = [];
    for(let i=p.length-1; i>=0; --i) {
        e = p[i].split('=');
        n = isNaN(e[1]);
        s += '"' + e[0] + '":' + (n ? '"' : '') + e[1] + (n ? '"' : '') + (i>0 ? ',' : '');
    }
    s += '}';
    p = JSON.parse(s); // Konvertierung des String in ein Objekt

    Nun liegen die Daten als Key Value Paare im Objekt p vor und können leicht verarbeitet werden. Meine Verarbeitung enthält Selektionen und Konvertierung in von mir bevorzugte Einheiten.

    Das Objekt d enthält nun alle mich interessierenden Daten.

    Hyde_

    1. Eine Zeitsteuerung ist auf einem Shelly Plus 1 sehr flexibel möglich und sehr verlässlich. Dazu braucht es kein Amazon Echo.
    2. Wenn deine Wetterstation ausschließlich proprietäre Kommunikation mit einer App (leider der übliche Unsinn) bietet, kann keine Automatisierung implementiert werden.
    3. Ist die Abbildung in #9 die Darstellung eines Web Browsers? Das ist zu vermuten, wenn diese Abbildung deine Antwort auf die gestellte Frage ist. Dann kann es prinzipiell möglich sein, wenn auch vielleicht unschön und aufwändig, auf die Daten deiner Wetterstation zuzugreifen, da dort nicht nur Grafiken sondern auch Zahlenwerte dargestellt werden.

    Für eine Lösung gemäß 3. ist sowohl der URL (Browser Adresszeile) als auch der HTML Code der Webseite erforderlich.

    Vermutete Lösungsmöglichkeit

    Am besten wäre eine standardisierte Kommunikation, welche nicht an eine App gebunden ist. Vermutlich kann dies mit deiner Wetterstation genutzt werden.

    Ich nutze ebenfalls eine Ecowitt Wetterstation mit einem Gateway Funk -> LAN (bei Bedarf WLAN). Auf dem Gateway kann MQTT genutzt werden, was ich auch tue. Damit ist es möglich, per übergeordnetem System (ioBroker, Home Assistant, openHAB, ... ich nutze ausschließlich Node-RED) oder einem Shelly Skript die Daten der Wetterstation zu erhalten, nicht abzufragen. Mit diesen Daten kann selbstverständlich eine Bewässerung automatisiert werden. Allerdings erscheint es mir zielführend, dafür zusätzlich die Bodenfeuchtigkeit zu messen. Wie gut eine Kommunikation ohne MQTT gelingt, habe ich bisher nicht getestet, weil ich gerne MQTT verwende.

    Du solltest herausfinden, welche Kommunikation deine Station zur Verfügung stellt - im Handbuch und/oder der Konfiguration. Daraus und aus deiner IoT Umgebung sowie deinen Ambitionen ergeben sich die Wege zu deinem Ziel.

    ShellBeto

    Kleiner Hinweis:

    Statt deiner zwei Timer.set Aufrufe genügt einer - in Zeile 16.

    Code
    Timer.set(Zeitfenster, true, Schleife02);

    Der Aufruf in Zeile 13 kann dann entfallen.

    Frage: Wozu dient die Funktion Schleife01? Vermutlich um zur Halben Zyklusdauer etwas ausführen zu lassen.

    Btw, die Schedule Jobs sind dafür auch sehr nützlich - und Uhrzeit bezogen sekundengenau.

    Anmerkung: Inzwischen lassen sich relativ viele JavaScript Methoden nutzen. Die API Dokumentation ist auch recht ausführlich dokumentiert. Wenn man sich erst einmal an das Shelly Konzept gewöhnt hat, ist es gut verständlich. ;)

    Ich habe soeben noch einmal das neue Laden des betreffenden Shelly getestet, mit laufendem Skript großen Umfangs.

    Die Webseite war sofort da. Das Problem tritt also vermutlich erst nach längerem Nichtladen des WebUI auf. Alles nebulös.

    Inzwischen musste ich feststellen, dass die Firmware 1.6.2 tatsächlich zu erheblichen und unerträglichen Verzögerungen beim laden des WebUI führt. Offenbar haben wir es bei den Firmware Versionen über 1.5.1 mit den üblicherweise beim Kunden reifenden Bananen zu tun.

    Jrtripper01

    Da wirst du reichlich zu tun haben, wenn du das gesamte Forum nach solchen "wichtigen Dingen" durchsuchen willst. Wenn die Elektrofachleute, also diejenigen, die professionell Elektroinstallationen durchführen, wenigstens ähnlich "richtige" Bezeichnungen in allen einschlägigen Themen verwenden täten, wäre die Welt hier vielleicht heile.

    Der N(Neutralleiter) war noch nie der Nulleiter.

    Alt: Nulleiter Neu: PEN

    Interessant. Dann ist also der nicht existierende Nulleiter ein Null Eiter? Es gibt die Null und den Leiter -> Nullleiter, auch wenn es nur das Wort, aber nicht den Gegenstand geben sollte. Offenbar hängst du der veralteten Schreibweise nach, in welcher drei unmittelbar aufeinanderfolgende Konsonanten sehr selten gültig war.

    Dieses Wort "Null(l)eiter" ist also die alte Bezeichnung, welche noch nie galt? Wenn du dich schon bemühst, mich (und vielleicht andere) in dieser "freundlichen" Weise zu verbessern, dann bitte nicht derart nachlässig!

    Damit ich richtig verstanden werde. Ich habe nichts gegen deine Erklärungen und nehme solche gerne entgegen, merken werde ich mir PEN vermutlich nicht. Mir missfällt deine besserwisserischere und anmaßende Ausdrucksweise - und das gewaltig. X(

    Ich bin gespannt, wo du an anderen Stellen in diesem Forum ähnlich wichtige Belehrungen loslassen willst. Am grundlegenden Sachverstand werden solche genormten Bezeichnungen nichts verbessern können. Ich bin außerdem überrascht, dass du das Wort Phase nicht bemängelst ...

    Btw, ich halte den VDE für einen sehr arroganten Verein, pardon Verband. Und ich bin sicher nicht der Einzige mit dieser Einschätzung.

    woodblack

    Diese Struktur gefällt mir nicht.

    1. Wozu dient der Text zu Beginn? Ich kann dessen Funktion nicht erkennen. Vermutlich wird statt eines Datenfeldes ein Objekt verwendet.
      Teile bitte die komplette Datenstruktur mit, in welcher deine drei Teile eingetragen sind!
    2. Es wird zweimal dieselbe Kombination aus id und event verwendet und dahinter ein call Datenfeld.
      Entweder es braucht nicht das Datenfeld "call" und stattdessen "method" und "parameter" oder
      man bringt die Methoden incl. Parameter in das Datenfeld "call" von Eintrag 1 unter.
      Ich halte für deinen Zweck die erste Variante für leichter verständlich.
    3. Einem einzigen BLU Gerät werden mehrere Aktionen zugeordnet, die von verschiedenen Events getriggert werden. Deshalb halte ich eine Adresse und eine diesem BLU Gerät zugeordnete Funktion für zielführender. Hierfür ist eine relativ einfache Struktur geeignet.

    Was bei dir "id" heißt, nenne ich "addr", weil dies besser zu meinem Skript passt.

    Diese Struktur "Config" ist ausschließlich für Erweiterungen erforderlich. Solange nur dieser eine Sensor genutzt werden soll, kann diese Struktur weggelassen und die Funktion vom Eventhandler aufgerufen werden.

    Eine Sensor spezifische aber generische Funktion erfordert umständliche Konfigurationseinträge. Für gewünschte Aktionen kurze Funktionen mit aussagekräftigen Kommentaren zu nutzen, halte ich für angemessener. Bei Nutzung von vielen BLU Geräten können die Aktionen spezifischen Funktionen benannt und aus "Config" ausgelagert werden.

    Wenn du den Inhalt der obigen function verstehst und anpassen kannst, sollte diese Struktur für dein Anliegen angemessen sein.

    Vorsicht!
    Die obige Struktur soll dir nur einen Eindruck verschaffen. Ich werde diese Struktur in einem Testskript einbauen - mit anderem addr Wert.

    Soll ich auf 1.6.2 updaten?

    Nein!

    Oder muss ich noch die Einstellung vornehmen, wie der Shelly sich nach stromausfall verhalten soll?

    Nein!

    aus der FB kann ich ihn also nicht aufrufen.

    Das kenne ich und finde solches in der Anwendung "ShellyScanner" in gleicher Weise. Das ignoriere ich und setze im Browsertab die mir bekannte IP-Adresse ein.

    Und ja, das erscheint merkwürdig. Ich kenne die Ursache dieser Erscheinung auch nicht.

    woodblack

    Ich kann dir eine Kombination aus meinem einfachen Skript und dem Skript ble_shelly_blu.js empfehlen. Diese Kombination funktioniert bisher mit Firmware 1.6.x.

    eiche
    4. Juni 2025 um 19:12

    Wenn du die von dir genutzten Nachrichten beschreibst - HTTP, MQTT - kann ich gelegentlich mein Skript dazu für dich anpassen.

    Ich teste nun beide Skripte mit der Firmware 1.7.0-beta2 auf einem Plus Uni. Mal sehen, was sich ergibt.

    tvbshelly zu #24

    Ist das das einzige Skript auf deinem Testshelly?

    Was läuft da ggf. sonst noch?

    Btw, ich denke, dass Shelly aufpassen sollte, dass der Überblick in der Firmware nicht verloren geht. Es gibt in letzter Zeit einiges an Merkwürdigkeiten, welche der weiteren erfolgreichen Vermarktung im Wege stehen werden. Skripte machen die Shelly erst wirklich interessant. Ohne Skripte versinken die Shelly imho in der Masse der IoT Geräte.

    Hast du da irgendeine Idee was hier falsch läuft? Darf man sowas nicht machen?

    Vermutlich sollte man eine Beta Firmware "mit spitzen Fingern anfassen". ;)

    Nein, ich sehe nichts, was man in diesem Skript nicht tun sollte. Ich sehe da keinerlei Wiederholungsstruktur oder ähnlich mitunter "Gefährliches".

    Mit einem Shelly Gen 3 braucht man eigentlich das Easy_call Skript nicht, weil auf einem solchen Shelly die BLU Geräte als Komponenten konfiguriert werden können. Ein zusätzliches erheblich kürzeres Skript kann die gewünschten Prozesse ausführen lassen.

    Beispiel dazu hier: BLU Daten per Shelly Gen 3 und MQTT senden - ohne oder mit Skript

    Statt der beispielhaften MQTT Nachrichten kann man andere Prozesse triggern.

    Hinweis:

    Mit einem Firmware Update auf 1.5 (?) oder 1.6 wurden Änderungen wirksam, die in manchen Skripten zu Fehlern führen. Solche Skripte können, wenn man diese Änderungen kennt, relativ leicht angepasst werden.

    S.a. Änderung mindestens einer KVS Methode von Firmware 1.4.4 auf 1.5.1