Beiträge von eiche

    deebeo

    API calls sind immer erforderlich, lokal braucht man dazu aber keinen URL.

    Das gelingt mit einem registrierten EventHandler oder StatusHandler. Auf Grund des Messwertes und einer oder zwei Schwellen (Hysterese!) kann geschaltet werden.

    Dies gelingt bereits mit einem kleinen Skript. Ungetestet, da ich derzeit nur einen Rollladen-Shelly Plus 2PM zum testen verwenden kann.

    Für ein zielgerichteteres Skript ist eine genauere Beschreibung deines Ziels erforderlich. ;)

    mit seiner IP konnte ich ihn auch nicht erreichen

    Was hast du denn bisher versucht?

    Wenn du sein eigenes WLAN, wegen seines aktiven Access Point, auf dem Handy siehst, dann kannst du folgendes tun.

    1. Das Handy, Tablet oder Notebook, etwas mit WLAN Adapter, mit dem WLAN des EM verbinden.
    2. Mit einem Web Browser die IP Adresse 192.168.33.1 nutzen.
    3. Hat 2. keinen Erfolg, ein ping 192.168.33.1 absetzen - immer auch prüfen, ob dein Endgerät noch mit dem EM WLAN gekoppelt ist!

    Berichten, was du erlebt hast. ;)

    leon2k6

    Wenn über die Taster keine externe Spannung geführt werden darf, ist zunächst , ohne es zu wissen, anzunehmen, dass die Taster zwei Eingänge der Steuerelektronik (braun, weiß) auf Bezugspotential (vielleicht Ground, Masse, ...) legen sollen.

    Mit dem, was dir vorliegt, kann entweder keine Fehlersuche durchgeführt werden oder dies nur mit viel Erfahrung mit solcher Steuerelektronik erfolgen kann. Ob der Hersteller/Vertreiber dir als Anwender mehr Unterlagen zusenden wird, bleibt offen. Ein Elektro-Betrieb sollte jedenfalls mehr erhalten können.

    Ohne weitere Unterlagen bliebe tatsächlich nach messen noch "aufschrauben" und analysieren, wie es thgoebel täte. ;)

    Jedenfalls solltest du keine externe Spannung über die Taster schalten lassen!

    Es bleibt zu hoffen, dass dir bald bessere Unterlagen vorliegen werden.

    rickert

    Auch eine solche Maßnahme erscheint mir nicht als erstrebenswert. Falls so etwas nur einmal genügt, um die Funktionalität herzustellen, ist das noch akzeptabel.

    Da mit Bewegungsmeldern keine hinreichende Funktionssicherheit erreichbar ist und du möglicherweise in Haftung treten musst, wenn etwas unerwünschtes geschieht, wäre vermutlich ein Notlicht hilfreich.

    dann leuchtet die Lampe nur solange, wie ich den Taster drücke

    Ich konnte nur an einem Plus 1 nachsehen.

    Select Input Mode: Button - hast du offenbar bereits

    Set Output Type: Momentary - schaltet mit jedem Tastendruck um

    Das sollte im Plus 2PM nicht anders sein.

    Kann ich denn den ShellyI4 dazu bringen, beim 2PM ein Skript auszuführen?

    Damit geht alles. ;) Auch Anwender spezifische Funktionen in einem Skript ausführen lassen. Dafür gibt es unterschiedliche Kombinationsmöglichkeiten.

    1. auf i4 Actions (ohne Skript) -> vorgesehene Funktion per URL zum 2PM
    2. auf i4 vom Skript -> vorgesehene Funktion per URL zum 2PM
    3. auf i4 Actions (ohne Skript) -> per URL Anwender spezifische Funktion per Skript auf 2PM
    4. auf i4 vom Skript -> per URL Anwender spezifische Funktion per Skript auf 2PM

    Welche Kombination zielführend ist, hängt von den Wünschen des Anwenders ab.

    Somit muss von Anwenderseite erst einmal eindeutig geklärt werden, was gewünscht ist - und ggf. welcher Aufwand für die Implementation getrieben werden darf. 8)

    Auch Zeitsteuerungen sind möglich, sogar zeitanbängiges Verhalten der Tastenfunktionen.

    Afaik kann man im tasmotizer einstellen, dass die Firmware vor dem Flashen gesichert werden soll.

    Falls du das getan hasst, sollte es möglich sein, mit dieser Sicherung die Original Firmware wieder zu flashen, mit dem tasmotizer.

    Es wäre ein Versuch wert.

    Falls du nicht gesichert hast, kann ich hier nicht weiterhelfen.

    Bei Deiner besseren Ergänzung muss ich dann auch einen Job im Browser starten?

    Ja, das kurze obige Skript ist per Schedule Job, wie in #2 angelegt, um 00:00 Uhr (oder so) zu starten.

    Es stoppt zunächst das saldierende Skript.

    Dann löscht es die beiden KVS Einträge.

    Nach 5s startet es das saldierende Skript.

    Nach 10s, also 5s nach dem Start von Skript 1, stoppt es sich selbst.

    Du willst gegen 00:00 Uhr all dies durchführen lassen. Somit ist dafür genau ein Schedule Job wie in #2 erforderlich.

    Edit:

    Na ja, manche mögen dafür im Skript einen Timer und Zeitvergleiche einsetzen. Ein Schedule Job passt hierfür aber bestens und der Scheduler arbeitet verlässlich.

    Kleine Korrektur:

    Der Job wird nicht per Browser "gestartet" sondern angelegt. Der Scheduler in der Firmware ruft an Hand der timespec Angabe die eingetragene Methode mit den eingetragenen Parametern auf.

    Jeder eingetragene und freigegebene (enable=true) Schedule Job ist ein Auftrag an den Firmware internen Scheduler, den Job auszuführen.

    Dann habe ich eine verbessernde Ergänzung:

    Code
    Shelly.call("script.stop", {id:1}); // stoppt Skript 1
    Shelly.call("kvs.delete", {key:"EnergyConsumed"});
    Shelly.call("kvs.delete", {key:"EnergyReturned"});
    Timer.set(5000, false, function() {Shelly.call("script.start", {id:1});}); // startet Skript 1
    Timer.set(10000, false, function() {Shelly.call("script.stop", {id:Shelly.getCurrentScriptId()});}); // stoppt sich selbst

    Edit:

    Vielleicht können die letzten beiden Aufrufe Shelly.call... auch ohne Wartezeiten per Timer genutzt werden. Das müsste aber getestet werden.

    Es ginge bspw. auch mit einem einzelnen Schedule Job und einer Funktion "reset" im Skript. Diese Funktion sollte die Skript internen Salden auf 0 setzen, je nach Skript auch die KVS Werte.

    Dann braucht der Shedule Job die Methode "script.eval" und "params":["id":1,"code":"reset()"]

    Die KVS Daten nur auf null setzten klappt nicht, da sie im Skript gespeichert sind und alle 10Sek übergeben werden.

    Dazu habe ich in #7 auf drei Jobs hingewiesen.

    Job 1 stoppt das Skript. timespec="55 59 23 * * *"

    Job 2 setzt die KVS Werte auf 0. timespec="0 0 0 * * *"

    Job 3 startet das Skript. timespec="5 0 0 * * *"

    Hab's gefunden.

    Ich hatte etwas später noch korrigiert. In #2 steht es mittlerweile richtig.

    Deine Schedule Einträge:

    Code
    {"jobs":[{"id":1,"enable":true,"timespec":"0 * * * * *","calls":[{"method":"script.start","params":{"id":1}}]},{"id":2,"enable":true,"timespec":"0 0 0 * * *","calls":[{"method":"script.start","params":{id:2}}]}], "rev":65}

    Im Job 2 muss hinter "params" der Key id in Anführungszeichen stehen.

    Edit:

    Interessant. Dann tritt ein solcher Fehler beim Methodenaufruf auf und nicht etwa während des Eintragens.

    Da die Daten Saldiert werden und wenn das Skript weiter läuft die KVS-Daten nicht zurückgesetzt werden

    Dann sollte das Rücksetzen der Werte auf 0 genügen. Teste doch mal den Schedule Job von #3! Nur den oberen Teil bitte, nicht das Listing! ;)

    Ok, vielleicht ist ein kurzzeitiges Anhalten vor dem Werte-Rücksetzen zielführend. Dann wäre das Skript kurz nach dem Rücksetzen zu starten. Das sind dann drei Schedule Jobs.

    Nur zu Info: der 3Pro EM hat keine Web Ui, mit ihm kann man keine Schedule Job editieren.

    Tatsache? Das ist dann aber schwach.

    SyntaxError: JSON.parse: expected property name or '}' at line 1 column 203 of the JSON data

    Du sollst den Schedule Job ja auch nicht in ein Skript packen!

    Außerdem wird dein Job 1 per timespec jede volle Minute gestartet. Ok, zum testen halt ...