Beiträge von dieckfr

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.

    Tasmota und Rules ist auch so eine Sache, und ist dann halt auch nicht so simpel in der Cloud, bzw. halt anders zu integrieren. Würde gerne beim Shelly Ökosystem bleiben...

    Habs mal mit Chat Gpt versucht, und bis auf das blinken vor dem Ablauf der PIR Zeit scheint es zu funktionieren, irgendwie erschreckend... hier mal der KI generierte Source Code:

    /******************************************************
    * Shelly Dimmer 0-10V PM Gen3
    * PIR + Taster Steuerung mit Blink + PIR-Sperre
    * Fertiges Script basierend auf realen Events
    ******************************************************/

    /************** KONFIGURATION ************************/
    let DIM_AUTO = 40; // Helligkeit PIR
    let DIM_MANUAL = 90; // Dauerlicht Taster
    let AUTO_OFF_TIME = 60000; // ms
    let WARNING_TIME = 4000; // Blink vor AUS
    let BLOCK_TIME = 15000; // PIR Sperre nach Taster
    let BLINK_TIME = 300; // Blinkintervall

    /************** STATUS ********************************/
    let state = "OFF";

    // Timer Handles
    let tAuto=null, tWarn1=null, tWarn2=null, tBlock=null;

    // Zeitstempel
    let autoOffAt=0, warnAt=0, blockUntil=0;

    // Flanken
    let lastPIR=false, lastBTN=false;

    /************** HILFSFUNKTIONEN ************************/
    function logEvent(msg){ print("[EVENT]",msg); }
    function setLight(pct){ Shelly.call("Light.Set",{id:0,on:pct>0,brightness:pct}); }
    function clearTimer(t){ if(t) Timer.clear(t); }
    function clearAllTimers(){ clearTimer(tAuto); clearTimer(tWarn1); clearTimer(tWarn2); }

    /************** HARDWARE-KONFIGURATION *****************/
    function configureHardware(){
    setLight(0);
    logEvent("Dimmer auf 0% gesetzt");

    Shelly.call("Input.SetConfig",{id:0,mode:"detached"},function(r){
    if(r && r.success) logEvent("S1 (PIR) auf detached gesetzt");
    else logEvent("S1 Konfig versucht (keine Rückmeldung)");
    });

    Shelly.call("Input.SetConfig",{id:1,mode:"detached"},function(r){
    if(r && r.success) logEvent("S2 (Taster) auf detached gesetzt");
    else logEvent("S2 Konfig versucht (keine Rückmeldung)");
    });
    }

    /************** ZUSTANDSFUNKTIONEN *********************/
    function setOff(){
    setLight(0);
    state="OFF"; autoOffAt=0; warnAt=0;
    logEvent("STATE → OFF");
    }
    function enterAuto(){
    setLight(DIM_AUTO);
    state="AUTO";
    logEvent("STATE → AUTO (PIR aktiv)");
    restartAutoTimer();
    }
    function enterManual(){
    clearAllTimers();
    setLight(DIM_MANUAL);
    state="MANUAL";
    logEvent("STATE → MANUAL (Dauerlicht)");
    }
    function enterBlocked(){
    setOff();
    state="BLOCKED";
    blockUntil=Date.now()+BLOCK_TIME;
    logEvent("STATE → BLOCKED (PIR gesperrt)");

    clearTimer(tBlock);
    tBlock=Timer.set(BLOCK_TIME,false,function(){
    state="OFF"; blockUntil=0;
    logEvent("BLOCK ENDE → OFF");
    });
    }

    /************** TIMER **********************************/
    function restartAutoTimer(){
    clearTimer(tAuto);
    warnAt=Date.now()+(AUTO_OFF_TIME-WARNING_TIME);
    autoOffAt=Date.now()+AUTO_OFF_TIME;

    tAuto=Timer.set(AUTO_OFF_TIME-WARNING_TIME,false,startWarning);
    }
    function startWarning(){
    state="WARNING";
    logEvent("STATE → WARNING (Blink vor AUS)");

    setLight(0);
    tWarn1=Timer.set(BLINK_TIME,false,function(){ setLight(DIM_AUTO); });
    tWarn2=Timer.set(BLINK_TIME*2,false,function(){ setLight(0); });
    Timer.set(WARNING_TIME,false,setOff);
    }

    /************** INPUT HANDLING ************************/
    Shelly.addEventHandler(function(e){
    if(e.name!=="input") return;

    // PIR S1 (id:0)
    if(e.id===0){
    let pirHigh=false;
    if("event" in e.info && e.info.event==="toggle") pirHigh = e.info.state;

    if(pirHigh===lastPIR) return;
    lastPIR=pirHigh;

    if(pirHigh){
    logEvent("PIR → HIGH");
    if(state==="BLOCKED"){ logEvent("PIR ignoriert (BLOCKED)"); return; }
    if(state==="OFF"){ enterAuto(); return; }
    if(state==="AUTO" || state==="WARNING"){ restartAutoTimer(); logEvent("AUTO Timer Reset"); }
    }
    }

    // Taster S2 (id:1)
    if(e.id===1){
    let btnHigh=false;
    if("event" in e.info && e.info.event==="toggle") btnHigh = e.info.state;

    if(btnHigh===lastBTN) return;
    lastBTN=btnHigh;

    if(btnHigh){
    logEvent("TASTER gedrückt");
    if(state==="OFF"){ enterManual(); return; }
    if(state==="AUTO" || state==="WARNING" || state==="MANUAL"){ enterBlocked(); return; }
    }
    }
    });

    /************** DEBUG TICK ****************************/
    Timer.set(1000,true,function(){
    let now=Date.now();
    let a=autoOffAt?((autoOffAt-now)/1000).toFixed(1):"-";
    let w=warnAt?((warnAt-now)/1000).toFixed(1):"-";
    let b=blockUntil?((blockUntil-now)/1000).toFixed(1):"-";
    print("[DBG] STATE:",state,"| auto:",a,"| warn:",w,"| block:",b);
    });

    /************** INIT **********************************/
    configureHardware();
    setOff();
    logEvent("SYSTEM START → Licht AUS, Eingänge konfiguriert, bereit");

    Hallo zusammen,

    ich bin leicht frustriert, bzw. geistig festgefahren, da ich normalerweise auf IEC Basis programiere... Daher erlaube ich mir hier um Rat zu fragen... :)

    Folgendes möchte ich gerne mit einem Shelly Dimmer 0/1-10V PM Gen 3 umsetzen:

    - Beleuchtung meines Schuppens mit Bewegungsmelder gedimmt, sowie Wandtaster bei 90%

    - Wenn die Beleuchtung aus, und auf Eingang X kommt ein Signal vom PIR, soll die Beleuchtung auf 40% gehen und nach einer Zeit X abschalten

    - Eine erneute positive Flanke startet die Zeit der gedimmten Beleuchtung neu, zurücksetzen des Abschalttimers

    - Der Bewegungsmelder ist auf minimale Zeit eingestellt, so das andauernd nachgetriggert wird, wenn ich mich im Erfassungsbereich bewege

    - Bleibt das nachtriggern aus, dimmen diech die LED Deckenstrahler auf 0% und der Shelly schaltet ab...

    - ABER Zusätztlich soll die Beleuchtugn folgendes können, damit mein Vater Ruhe gibt...

    - 1 Egal ob über PIR oder sonstwie, wenn die Beleuchtung an ist, Dimmwert egal, genügt eine positive Flanke im 2ten Eingang, um diese auszuschalten (runterdimmen, aus)

    - Für X Sekunden wird das Signal vom PIR Ignoriert, damit ich das Hallentor schliessen kann, ohne das die Beleuchtung wieder angeht, da von einem Bewegungsmelder erfasst worden.

    - Wenn die Beleuchtung aus ist, bewirkt eine pos. Flanke vom Taster ein dauerhaftes Einschalten, bei X Prozent der Beleuchtung, dabei ist das so zu handhaben, das wenn das gedimmte Licht vom PIR

    imput, mit der ersten positiven Flanke vom Taster ausgeschaltet wird, und erneutes Tasten die Beleuchtung mit X Prozent bei Dauer ein wieder einschaltet.


    --- NICE to Have, bzw. alter Stand der Technik mit ner Logo umgesetzt...

    Bevor die Beleuchtung nach der positiven Flamnke vom PIR Sensor ausgeht, soll die Beleuchtung X Sekunden vorher 2mal kurz blinken, damit man sich ausserhalb des Erfassungsbereiches darauf einstellen kann...


    -- Frage zur Hardware, bzw. Actions...

    Die 0-10V Gen3 mit Schalter, sorgen in eingeschaltetem Zustand aber 0% Helligkeit zum abschalten der LED Deckenfluter, und das bei ca. 0,4 Watt Stanby der Beleuchtungen, was ich einem kompletten abschalten der Treiberelektronik vorziehen wollen würde...

    Ich habe mir mit dem Gedanken, das wohl 0-10V Dimmer (ohne PM) beim Ansteuerungsverhalten der LED Fluter genauso unterwegs wäre diese für das Projekt bestellt, allerdings, verhalten sich diese komplett anders, bei 0% bleiben die Beleuchtungen an, zusätzlich haben Sie deutliche Latenzen, wenn ich im detached Modus über Actions arbeite, also das sind auch mal 2-3 Sekunden...

    Und zum Schluss erlaube ich mir die Frage, (weil sich es mir nicht erschließt) ist es wirklich so, das Actions immer nur einen Trigger haben können, und keinerlei Timer für das Ausführen zu integrieren ist? Entprellung über Zeit geht, Zeit fürs Dimmen auch, aber mir erschliest sich nicht, wie ich zum Beispiel " Wenn Eingang mit neg. Flanke führe nach X Sekunden folgendes aus:..... , wenn positive Flanke lösche die Zeit, starte mit negativer Flanke neu.

    Das ganze hätte ich wohl in 10minuten mit Automation Basic B&R, Oder mit 3s aller Beckhoff zusammen gebastelt, bzw. mit ner Logo auch kein Problem, aber für mein Ego und Verständnis, mit Actions, ist das nicht machbar, oder? Aber wie wäre denn der Ansatz mit den Scripting... Bin kurz davor die HArdware auf Tasmota zu flashen, da bin bei den Rules auch fitter :)


    Wenn Du lieber Leser bis hierhin gekommen bist, freut mich das nicht nur, bin dankbar für Deine Hilfestellung, vor allem danke ich allen lesenden, das Sie etwas mit mir teilen... Ich helfe gerne, und wenn auch nicht immer leicht, verneife ich mir meines Karmas wegen schlechte Kommentare :) Natürlich habe ich das Probnlem in 2 Wochen mit googel gelöst, oder es ne Ki machenn lassen, aber ich selbet, bewundere ja oftmals Probleme, und erfreue mich dem Kollektiv :)


    Also freue mich über das was kommt, und viele Grüsse aus dem Münsterland, Franz-Josef

    Hey danke utschu,

    aber dann ändert sich die sprache der App, bzw der Cloud, aber ich meinte die WebUi des einzelnen Gerätes, also wenn ich die IP Adresse des Aktors eingebe :)

    Die ändert sich dann ja nicht.

    Ein freundliches Hallo zusammen!

    Ich sitze hier gerade vor meinem ersten Shelly, ein 2.5, soweit so gut :) Aber ich habe mal ne ernsthafte Frage, bitte nicht lachen, aber ich habe echt nix im Netz gefunden...

    Gibt es eine Möglichkeit das Webinterface auf Deutsch umzustellen??? Ich kann nichts finden...

    Eventuell eine angepasste Firmware verwenden wie bei Tasmota?

    Wäre echt dankbar für einen Tipp!!

    Liebe Grüsse aus dem Münsterland!

    Franz-Josef