NEWS
[Script] HomeMatic-RF Dimmer mit Tastern schalten
-
Hallo zusammen,
in einer HomeMatic-Installation von mir werden HM-wired und HM-RF Komponenten eingesetzt. Da bei HM - im Gegensatz zu HM-IP - keine direkten Verknüpfungen von wired auf Funk möglich sind und ich ursprünglich einmal vorhatte, alle Programme als Scripts in ioBroker umzusetzen, wollte ich mit einer Wired-Taste einen Dimmaktor ein- bzw. ausschalten (nicht dimmen).
Von diesem Vorgehen bin ich zwar schon abgekommen, da ich nun alle Subsysteme in sich selbst werken lasse und ioBroker tatsächlich nur den Broker bei systemübergreifenden Funktionen darstellt. Aber, ich dachte, dass dieses Skript möglichweise auch überall dort sinnvoll sein und von jemanden gebraucht werden kann, wo ein HM-RF Dimmer über eine beliebige Taste eines anderen Systems geschaltet (beachte wieder: nicht gedimmmt) werden kann. Der Taster muss nur einen Datenpunkt auf true setzen beim betätigen.
Leider reicht der LEVEL-Datenpunkt beim Dimmer alleine nicht aus, aber zum Glück bringt der Dimmer ja noch die Datenpunkte DIRECTION und WORKING mit, die auch benötigt werden, um ihn sauber auf- und abzudimmen.Hier das Script:
/* ################################################## # Script schaltet einen Dimmaktor von # # HomeMatic-RF aus und ein über einen beliebigen # # Taster (von HM wired, KNX, Amazon Dash, etc.). # # # # Kos A. am 28.12.2017 # ################################################## */ // #### DIMMPEGEL #### const ON_LEVEL = 100; // Pegel mit dem eingeschaltet wird const OFF_LEVEL = 0; // Pegel mit dem ausgeschaltet wird // #### TASTER #### // Hier alle Datenpunkte aller Taster angeben, die den Dimmer // schalten sollen. Wenn nur einer, dann ohne Beistrich hinten. // Wichtig: Taster muss true liefern beim betätigen. var idTaster = [ "hm-rpc.1.IEQ0382640.1.PRESS_SHORT", "hm-rpc.1.IEQ0382640.2.PRESS_SHORT" ]; // #### DIMM-AKTOR #### // Hier die 3 richtigen Datenpunkte für LEVEL, WORKING und DIRECTION angeben: var idAktorLevel = "hm-rpc.0.JEQ0053892.1.LEVEL"; var idAktorWorking = "hm-rpc.0.JEQ0053892.1.WORKING"; var idAktorDirection = "hm-rpc.0.JEQ0053892.1.DIRECTION"; // ########### Nach dieser Zeile nicht mehr ändern ############## // ########### Do not change anything below this Line ########### on({id: idTaster, change: "any", val: true}, function(){ var working = getState(idAktorWorking).val; var direction = getState(idAktorDirection).val; // Wenn der Dimmer gerade noch arbeitet (in eine Richtung dimmt) if (working) { // Wenn gerade DOWN-gedimmt wird, dann aufdimmen if (direction == 2) setState(idAktorLevel, ON_LEVEL); // Wenn gerade UP-gedimmt wird, dann abdimmen if (direction == 1) setState(idAktorLevel, OFF_LEVEL); } else { // Wenn der Dimmer gerade nicht arbeitet, dann abhängig vom derzeitigen // Status dimmen setState(idAktorLevel, getState(idAktorLevel).val > 0 ? OFF_LEVEL : ON_LEVEL); } });
Liebe Grüße,
Andreas