Beiträge von Hanutaminator

    Moinssen,

    verschiedene Lampen habe ich mit einem Timer versehen, z.B. Flur für 90 sek an. Um nicht vom ausschalten überrascht zu werden, lasse ich sie 40sek vor Ablauf des Timers zwei mal kurz flackern, dafür habe mir eine Function gebaut.

    Funktioniert prima, aber wenn ich zu oft in kurzer Zeit auf den Schalter drücke, löscht er offenbar nicht den laufenden Timer sondern hängt immer neue an?!

    Wie könnte ich das umgehen, wie kann ich die laufenden Timer wirklich beenden - Timer.clear() scheint nicht die Lösung zu sein...

    Im zu schaltenden i4 ist ein Script hinterlegt, welches unter verschiedenen Bedingungen mehrere Shellys startet.

    Diese Schaltung wird von zwei i4s vorgenommen, d.h. dass das Script schon an zwei Stellen gepflegt werden muss. Jetzt möchte ich das auch noch vom PC aus über vb.net ansteuern, also müsste ich das Script konvertieren und hätte dann 3 Stellen zum pflegen.

    Aber ich habe jetzt etwas gefunden, das macht mich glücklich 😉

    Code
    http://192.168.x.xxx/rpc/Input.Trigger?id=2&event_type="single_push"

    Na danke für die Blumen 😉

    Die Call, die ich nutze, stammt aus der Toolbox. Shellys sind ja limitiert auf 5 RPC-Calls, das war ein Problem für die Möglichkeit, alle Lichter der Wohnung auf einmal auszuschalten.

    Ich danke dir vielmals für die ganzen Infos und deine Hilfe!!


    Und für alle, die ähnliche Probs haben, hier der komplette Code:


    Mit Happen aus deinem ersten Code habe ich mir grad folgendes zusammengebaut, der erste Test funktioniert:

    Der Auslöser der RGBW_setzeWeiss ist ja der erste Switch, das Gleiche würde ich jetzt für den zweiten Switch bauen, nur halt in farbig.

    Durch den Trigger des Switches ist dann ja dein Loop überflüssig.
    Wie liest du diesen Code, ist er sauber?

    Ah, ok, jetzt sehe ich das Problem. Und es gibt keine Möglichkeit, das Script einfach nur auf die Antwort warten zu lassen?
    Gehe ich vielleicht zu umständlich ran? Ich möchte eigentlich nur folgendes realisieren:

    2fach Switch.
    Taste 1 drücken:
    if (RGBW an und farbig) dann RGBW an und weiß
    if (RGBW aus) dann RGBW an und weiß
    if (RGBW an) dann RGBW aus

    Taste 2 drücken:
    if (RGBW an und weiß) dann RGBW an und farbig
    if (RGBW an) dann RGBW aus
    if (RGBW aus) dann RGBW an und farbig

    Moins Viedotraum,

    zuerst danke für dein Script, es funktioniert ohne Probs - Aber :-(

    Es löst nicht mein Problem. Ich möchte die Function "istLampeOn" direkt mit einem Rückgabewert nutzen. Und dies für mehrere andere Functions.

    Also nach diesem Prinzip:

    Code
    if (istLampeOn(IP) || andereBedingung) dann... 

    Du hast da die Variable "state", die ähnlich wie bei mir in einer Unterfunction genutzt wird. Ich habe schon ein "return state" am Ende der Function "istLampeOn" versucht, aber das kommt nicht an.

    Moinssen,

    ich versuche grad mit Shellys Scripting klar zu kommen.

    Würdet ihr mir helfen - was ist an folgendem Code falsch, warum bekomme ich nichts zurück?

    Edit: Die Toolbox ist implementiert. Und wenn ich innerhalb der Function einfach mit Print() arbeite, bekomme ich auch eine korrekte Antwort. Es fehlt lediglich eine vernünftige Übergabe an eine Variable.

    Oder kann ich das Ganze eleganter lösen??


    Code
    	function istLampeOn(IP) {
    			var ret=false;
    			Call("http.get",{url: "http://192.168.1." + IP + "/light/0", timeout: 3}, // Status der Lampe abfragen
    				function (x) { if (JSON.parse(x.body).ison) ret=true; });	
    			return ret;				
    		}
    
    
    
    print('Status: ' + istLampeOn(186));