Support-Thread Modul 36_Shelly.pm

Begonnen von Prof. Dr. Peter Henning, 03 Februar 2021, 08:03:09

Vorheriges Thema - Nächstes Thema

phantom

Zitat von: Prof. Dr. Peter Henning am 19 Oktober 2026, 19:50:12
Zitat von: phantom am 19 Oktober 2026, 11:37:14Damit funktionieren sie nicht mehr korrekt mit dem Modul
Was genau heißt das?
LG
pah
Die ShellyPro3EM's hatten im Gegensatz zu den ShellyEMmini's das automatische Update auf v2.0.1 nicht korrekt ausgeführt. Sie wurden in FHEM nicht mehr aktualisiert und deren Webinterface war sehr lahm. Ich habe sie nun mal komplett mit allen 3 Phasen von Strom getrennt (anstelle eines reboot). Danach haben die recht lange (> 3Min.) gebootet und evtl. im Hintergrund das Update nochmal durchgeführt.
Nach dieser "Übung" laufen sie wieder korrekt mit dem Shelly-Modul  :D  :D   -- ist also erledigt --
LG phantom

olwaldi

Noch eine Nachfrage zu Shelly 1 mini gen3: Ich habe via webhook automatisch actions im Shelly anlegen lassen, die sowohl in der alten als auch in der neuen Version mit (festem) csrftoken funktionieren. Aber der webhook löst immer erst 3s nach dem Klacken des Relais aus. Sollte doch eigentlich verzögerungsfrei funktionieren...

Grüßle, Michael

olwaldi

Vielleicht noch ein Tip, um einen WLAN-Reset durch 5x Drücken des Tasters am Shelly1 auszulösen, OHNE den Strom abschalten zu müssen. Die gen3-Shellies unterstützen Skripte, und gemini hat mir dieses Shelly-Skript generiert:
let clickCount = 0;
let resetTimer = null;

// Konfiguration
const TARGET_CLICKS = 5;      // Wie oft muss gedrückt werden?
const TIME_WINDOW_MS = 3000;  // Zeitfenster in Millisekunden (3 Sekunden)

Shelly.addEventHandler(function (event) {
  // Wir lauschen auf die rohe Statusänderung "Taste runtergedrückt"
  if (event.component === "input:0" && event.info.event === "btn_down") {
   
    clickCount = clickCount + 1;
    print("Taster physisch gedrückt! Zählerstand: " + JSON.stringify(clickCount));

    // Beim ersten Klick starten wir das Zeitfenster
    if (clickCount === 1) {
      resetTimer = Timer.set(TIME_WINDOW_MS, false, function () {
        print("Zeitfenster abgelaufen. Zähler wird zurückgesetzt.");
        clickCount = 0;
      });
    }

    // Wenn die 5 Klicks innerhalb der Zeit erreicht wurden
    if (clickCount >= TARGET_CLICKS) {
      print("5 schnelle Klicks registriert! Führe Aktion aus...");
     
      // Timer vorsorglich löschen
      if (resetTimer) {
        Timer.clear(resetTimer);
      }
     
      // Zähler zurücksetzen
      clickCount = 0;
     
      Shelly.call("Shelly.FactoryReset");
    }
  }
});
Zum Testen sollte man natürlich das letzte Kommando auskommentieren.

Anlegen kann man Skripte in der Shelly-WebGUI, man muß einen Namen vergeben, das Skript speichern und starten. Das Skrpt muß man noch automatisch Starten lassen, damit es nach Stromausfall weiterhin funktioniert.

Ich hoffe, daß ich's nie brauche. Könnte aber im Notfall nützlich sein.


Grüßle, Michael