NEWS
Klingel über Homematic / iobroker
-
Hallo,
ich habe meine Türklingel über eine Homematic Tasterschnittstelle realisiert!
Wird der Kontakt geschlossen, spielt iobroker (Blockly) eine Gong mp3 ab! Das klappt auch schon lange sehr gut!
Allerdings wird für jedes Drücken natürlich die mp3 nochmal abgespielt, obwohl die erste noch nicht zu Ende ist!
Bei hektischen Klinglern kann das schonmal nerven, da man dann nur noch "Audiosalat" hört!
Was wäre die geschickteste Lösung die erneute Ausführung des Skriptes für eine gewisse Zeit (Dauer der mp3) zu verhindern. Natürlich sollten andere Prozesse dadurch nicht verzögert werden!
Ich bin ja sicher nicht der erste, der das so realisiert hat!
Danke !!!
-
zeigt doch erst dein Script, da lässt sich garntiert etwas basteln…
-
Ich würde es mit blockly und einer Variable regeln.
Solange mp3 läuft xxx Sekunden keine neuen Trigger acceptieren
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Ich würde es auch mit einer Variablen / einem eigenen Datenpunkt und zwei sep. Scripte machen.
Script 1:
Wird geklingelt, wird die Variable auf true geprüft. Ist sie false, wird die Variable auf true gesetzt.
Über einen Timer wird sie dann wieder auf false gesetzt.
Script 2
Es prüft die Änderung der Variable. Geht sie auf true, wird das mp3 angespielt.
Gruß,
Eric
Von unterwegs getippert
-
Skript ist ganz simpel:
Wie kann ich denn einfach den Trigger verzögern?
-
Das wurde hier in ähnlicher Form schon behandelt.
-
Warum eigentlich so kompliziert. Ich habe das in einem Javascript gelöst. Wenn die Taste gedrückt wird lese ich von dem Gong den Status .STATE aus. Ist er true, dann spielt noch das MP3 und ein erneuter Tastendruck wird ignoriert.
createState('wohnung.klingel.gedrueckt', false); createState('wohnung.klingel.aktiviert', true); /*Klingel*/ subscribe({id: whgKlingelSwitchShort, val:true}, function (obj) { klingelGedrueckt(); }); subscribe({id: whgKlingelSwitchLong, val:true}, function (obj) { klingelGedrueckt(); }); function klingelGedrueckt() { var klingel=getState('javascript.0.wohnung.klingel.aktiviert').val; //Prüfen ob Klingel aktiviert oder nicht var klingelState=getState(whgKlingel).val; //whgKlingel = Gong.STATE if ((klingel===true) && (klingelState===false)){ setState(whgKlingelSettings,"1,1,108000,0"); setState(whgKlingel,true); sendTo("pushover", "Klingel gedrückt!"); } }