Beiträge von Satalaner

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.

    Vielen Dank für die abermals schnelle Hilfe.

    Das ist absolut richtig:

    Wenn ---> "bwm_Unten && not"bwm_Oben" ---> do Sequens ---> "Treppe_Rauf"

    Wenn ---> "bwm_Oben && not"bwm_Unten" ---> do Sequens ---> "Treppe_Runter"

    Wenn ---> not"bwm_Oben" && not"bwm_Unten" ---> do Sequens --> "Alles_Aus"

    mir geht es nur um die Ausschaltsequenz. Ich möchte hier nicht nur auf die BWM reagieren sondern „Alles_Aus“ soll nach einer Zeit z.b. 20 Sekunden ausgehen, nachdem die BWM beide aus sind. Somit Regel ich die Nachlaufzeit über den i4 und nicht komplett über die BMW. Dazu habe ich den Dimmer2 nutzen wollen, da dieser nach 20 Sekunden ausschaltet, da mir ein Timer einbauen recht kompliziert erscheint oder?

    Oder kann man das in einer if lösen, in etwa:

    Wenn ---> not"bwm_Oben" && not"bwm_Unten" ---> do Sequens “Timer_20_sekunden“

    Wenn ---> not"bwm_Oben" && not"bwm_Unten" && Timer_20_sekunden--->

    do Sequens --> "Alles_Aus"

    Wenn ja, wie baut man das in dein Schleifensystem?

    sry für die späte Antwort und danke für die Unterstützung.

    Du hattest mir zum Dimmer2 netterweise auch eine Erklärung geschickt das ich ihn über http://ip_des_Shellys/status abfragen kann aber wie frage ich ihn in der if als bedingung ab?

    Also, ich habe 3 If abfragen

    if(event.info.id === REMOTE.BWM_unten && "abfrage Status Dimmer zwei ob aus") ------> do function RGBW012345 (diese enthält die Ausgänge der RGBW hintereinander mit Zeitverzug einzuschalten)

    Also diese function:

    Code
    function RGBW012345(ip,ip2){
      print('LEDs werden eingeschaltet');
        callLimit= 1, cSp= 1; //active Call Limit and speed betwinn calls
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/1?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/0?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/3?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/2?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/1?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/0?turn=on', timeout: 1});
    }

    if(event.info.id === REMOTE.BWM_oben && "abfrage Status Dimmer zwei ob aus") ------> do functionRGBW22 (diese enthält immer zwei gleichzeitig an und dann die nächsten 2 einschalten)

    also die function müsste evtl. so aussehen (muss ich noch testen):

    Code
    function RGBW22(ip,ip2){
      print('LEDs werden eingeschaltet');
        callLimit= 1, cSp= 1; //active Call Limit and speed betwinn calls
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/1?turn=on'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/0?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/3?turn=on'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/2?turn=on', timeout: 1});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/1?turn=on'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/0?turn=on', timeout: 1});
    }

    Hier wird etwas kompliziert denn eigentlich muss die IF, NOT sein (wärein Java !=, können die Shellys das), also

    if(event.info.id !== REMOTE.BWM_unten "ist aus" && event.info.id !== REMOTE.BWM_oben "ist aus" && "abfrage Status Dimmer zwei ob aus") ------> do function Aus


    Code
    function Aus(ip,ip2){
      print('LEDs werden ausgeschaltet');
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/1?turn=off'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip2 + '/white/0?turn=off'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/1?turn=off'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/0?turn=off'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/3?turn=off'});
        Call('HTTP.get',{url: 'http://' + REMOTE.ip + '/white/2?turn=off'});
        
    }

    Das funktioniert. Die Frage ist nur, die Zeilen unterhalb Main erwartet bzw reagieren auf die Function Main. Wie zu sehen muss ich mehrere Functionen anlegen. Wie kann diese den Funktionen unterhalb Main zuordnen ohne für jede weitere Main alle Funktionen nochmal aufzulisten?

    Das was in der "Main" Funktion steht wird zuerst ausgeführt, das ist so zu sagen der Hauptteil.

    Danke für deine Antwort. Kann ich das denn irgendwie mit einem Aufruf aus dem if Teil "umgehen"?

    Ich möchte ja erreichen das erst wenn if (event.info.id === REMOTE.BWM_unten)die Calls ausgeführt werden.

    Das Skript führt jeden Call mit einer Sekunde Abstand aus, plus der Zeit, die der Call für die Antwort benötigt. Wenn die LEDs ungleichmäßig angehen, liegt das möglicherweise an deinem WLAN oder daran, dass die Shellys, an denen die LEDs angeschlossen sind, nicht schnell genug die Calls bearbeiten. Versuch mal den

    Ich habe den Teil mit den Calls mal hinter die IF Schleife gehangen, dann funktioniert es kurioserweise sauberer.

    Wenn das Skript nicht funktioniert, sehe ich nicht, wie es überhaupt klappen soll. Du könntest versuchen, mehrere Calls mit einem "Turnoff-Timer" gleichzeitig zu verschicken (callLimit von 1 auf 5 stellen), also das parallele Call-Limit erhöhen und nen Timer in die Calls einbauen. Den richtigen Wert musst du selbst ermitteln. Ob das dann gleichmäßig funktioniert, hängt stark von deinem WLAN ab.

    Wie meinst du das genau, also wo soll ich das dranhängen?

    Hab es jetzt mal so eingefügt. Wie verhinder ich das er in die Functions? Ich dachte eigentlich das erst zur Function gesprungen wird wenn der Aufruf erfolgt?

    Danke für den Code, allerdings führt er das Einschalten der LEDs nicht gleichmäßig aus sondern mal geht der erste langsam und der zweite schnell danach an und mal andersrum oder der vierte dauert dann ewig bis er eingeschaltet wird. Manchmal geht es aber auch zügig.

    Woran könnte das liegen?

    Ich komm enur hier nicht weiter die Verzögerung von 1 Sekunde einzubauen. Wie kann ich das aus deinem Code hier nutzen?

    Ich habe den haken bei Fulllog nicht gesetzt. Das kommt so wie ich es geschrieben habe im log, es sei denn ich muss noch etwas anderes einstellen, damit der log nicht so aussieht?

    Ich möchte vor dem Thema dimmer2 erstmal die schleife machen, da dein Code funktioniert fehlt mir jetzt nur die Erklärung warum ich mit meinen Schleifen und deinem teil den Hinweis zur url bekomme?

    ja die Zeit passt allerdings kommen ne ganze Menge Meldungen:

    Konsole

    Code
    Hello Shelly Funktion
    18:46:54
    Hello Shelly Schleife1
    18:46:54
    undefined -103 Missing required argument 'URL'!

    Wie darf ich das bestehen bzw. wo liegt mein Fehler?

    Hier ein Beispiel wie man einen Timer benutzt, damit sollten deine 6 RGBW Lichter im Abstand von 1 Sekunde leuchten, ich hoffe das hilft dir weiter.


    Wenn du nur Call Timeouts als Rückmeldung bekommst, dann kannst du mal versuchen den timeout: 1, im Call zu erhöhen, aber bedenke bitte was ich vorher erklärt hab, Calls sind Asynchron und du solltest darauf achten das nicht >5 offene Calls im Hintergrund laufen (wobei mein Beispiel schon für dich darauf achtet und alles über 5 dropped), ein zu hoher Timeout Wert führt wieder zu einem Too Many Call Error bzw to dopped calls, du musst die Balance finden, also evtl. auch das Delay zwischen den Calls erhöhen wenn du den Timeout erhöhst. Eine andere Möglichkeit wäre evtl. die Calls auf zwei oder drei Script Slots aufzuteilen, wenn dir der 1 sec Abstand wirklich wichtig ist.

    Wenn ich das so übernehme, bekomme ich den Hinweis "Calls not defined". Wie muss ich das ganze denn in die Funktion einsetzen?

    Also ich bekomme beim normalen langsamen ein und ausschalten die Meldung "Hello World" aber wenn ich schnell Kanal 1 ein und ausschalte kommt:


    Hier der aktuelle Quellcode

    Vorab, das ist das erste mal das ich versuche sowas zu bauen, da werden ne Menge Fehler drin sein. Wäre super wenn ihr mir hier weiterhelft. z.b. Wie hole ich mir die Info vom Dimmer2 ob der Ausgang geschaltet ist?