jensweigele / ioBroker.yahka

Yet another HomeKit adapter for ioBroker
MIT License
132 stars 47 forks source link

Schalter von EIN wieder auf AUS springen lassen #373

Closed derpate1989 closed 3 months ago

derpate1989 commented 1 year ago

Hallo, Ich benötige Hilfe bei einem kleinen Projekt. Ich habe einen Futterautomat von Tuya und in der App eine Szene erstellt. Diese sehe ich nun im ioBroker und möchte diese als Switch an HomeKit weitergeben.

Daher möchte ich den Schalter in HomeKit von AUS auf EIN umlegen, nach wenigen Sekunden muss der Schalter aber wieder auf AUS wechseln. Die Szene lässt aus sobald der Schalter kurz auf EIN steht.

Gibt es dafür eine Möglichkeit, wenn ja wie?

Baenker commented 1 year ago

per Script. Datenpunkt anlegen als boolean. Den Datenpunkt in yahka einbinden und wenn der Datenpunkt auf true geschaltet wird merkt das Script das und stellt den Datenpunkt wieder auf false

adieball commented 1 year ago

Genau so habe ich es auch mit meinem Gartentor gemacht. Simuliert halt einen "Taster"

derpate1989 commented 1 year ago

Mit Scripten hatte ich noch keine Berührung. Wie muss das aussehen?

Baenker commented 1 year ago

So in etwa. Ist ein Script Ausschnitt für Alexa.

Grundsätzlich: Script soll reagieren wenn trigger geändert wird auf true. Dann wird geprüft ob der Trigger true ist und wird geändert in false. Die Prüfung ist eigentlich doppelt macht bei meinen kompletten Script aber Sinn.

Man könnte den Trigger auch mit Verzögerung von x Sekunden auf false stellen. Je nachdem kann alles andere raus wenn yahka den rest macht.

`/**

var id_trigger = '0_userdata.0.Garage.Garagentor.device_for_speaking.Garagentor_Alexa'/Garagentor Alexa/ var logging = true; var debugging = false;

var id_Garagentor = "hm-rpc.0.OEQ0200620.1.STATE"/Garagentor:1.STATE/; var id_Garage_auf = "hm-rpc.0.BidCoS-RF.9.PRESS_SHORT"/Garagentor auf:9.PRESS_SHORT/; // Garaentor öffnen var id_Garage_zu = "hm-rpc.0.BidCoS-RF.10.PRESS_SHORT"/Garagentor zu:10.PRESS_SHORT/; // Garaentor schließen

function func_Garage(){ //Trigger 0 = zu // 1 auf var trigger = getState(id_trigger).val; //Garagentor false = zu // true auf auf var Garagentor = getState(id_Garagentor).val;

if(trigger){
    if(debugging){
        log('Trigger ist true. Garage soll durch Alexa geöffnet werden');
    }
    setstate(id_trigger,false);

    if(!Garagentor){
        if(logging){
            log('Garage soll durch Alexa geöffnet werden');
        }
        setState(id_Garage_auf,true);
    }
    else{
        if(logging){
            log('Garage soll durch Alexa geöffnet werden. Ist aber bereits geöffnet');
        }
    }
}

}

on({id: id_trigger, val:true, change: "ne"}, func_Garage); `

Baenker commented 3 months ago

Könnte man das Issue schließen. Lösung wurde genannt.