NEWS
Hue über KNX-Taster dimmen?
-
Servus
nunja... du solltest nicht "relativ" dimmen - versuch % (Datentyp beachten)
Natürlich muss "Absolut dimmen" auch am Aktor gesetzt sein...
Mit relativ gibt es ein paar Sorgen (3bit - zumindest hab ich noch nicht gebraucht)
In einem Script kannst du dann +%- - ich persönlich mach das mit Schiebe Regler (bin Faul)
Rückmeldung nicht vergessen... (Status GA)Das HUE Gedönse ziehe ich immer über Node Red (weil es so schön einfach ist)
Im übrigen finde ich die Node Red Alexa Contrib recht angenehm...Node Red -> Manage Palette -> Install -> suche nach Node-red-contrib-alexa-home-skill
Account erstellen - Datenpunkte anlegen - läuft
LG
-
Versuch das auch mal über einen Dummy und beobachte was da reinkommt (soweit ich in Erinnerung habe wird das schrittweise erhöht (wird im Taster parametriert (Erhöhung um %) und der Aktor macht eigentlich den Rest).
Also GA vom Taster (in der ETS unbedingt den Datentyp eintragen - da der Dimm Aktor ja Hardwareseitig nicht vorhanden ist) auf einen IOBroker Dummy schreiben....
Im Prinzip müsstest du dann via script in % umrechnen (glaub relativ sind nur 3bit)...Script zur schrittweisen Erhöhung von 0 auf 100% kann dir bestimmt wer helfen - begrenzen auf 100% natürlich - Rückmeldung zum Taster erzeugen.
Es ist immer schwierig ohne Aktoren da diese darauf abgestimmt sind... und die ETS den entsprechenden Datenntyp automatisch vergibt. Flags können da auch oftmals problematisch werden...
hoffe das sind paar Ideen die dir helfen können
LG
-
Puuh.. Danke erstmal. Wieder viel Informationen mit denen ich nicht viel anfangen kann.
Also dimmen kann der Taster nur relativ.Was hat denn Alexa damit zu tun? Nutzen möchte ich es nicht.
Mein größtes Problem ist einfach die "Umwandlung" des KNX Telegramms in einen verständlichen Wert. Ob das nun in Blockly oder Node-Red passiert ist mir Schnuppe. Leider hab ich von beiden nicht viel Ahnung.
Habe nun auch versucht mit Dummy Objekten weiter zu kommen aber wie gesagt, ich komm einfach nicht drauf wie die Daten vom KNX Bus weiter zu verarbeiten sind. Beim Dummy kommt als Wert nur "Object,Object"
Der Datentyp in der ETS ist DPT3.007.Wenn ich die Dimmtaste drücke kommt beim KNX-Objekt im IOBroker
beim hochdimmen der Wert 1,1
beim runterdimmen der Wert 0,1
und beim loslassen der Wert 0,0kann ich damit evtl. was anfangen?
-
Hallo !
Habe bei mir folgendes Script am laufen.
Im unteren Teil werden noch die Status-Adressen befüllt.Das Script habe ich selber mal im Forum gefunden. Nach dem Update vom KNX-Adapter von Version 0.9 auf über 1.0 musste ich selber ewig rumprobieren, weil sich die Auswertung des Datenpunktes 3.007 geändert hat.
Hoffe du kannst damit was anfangen
/* ####### Relatives Dimmen von Philips Hue-Lampe oder Gruppe über KNX-Taster ####### # # Skript reagiert auf Tastendruck eines KNX-Tasters, Auswertung einer Gruppe mit # DPT-3 (relatives Dimmen).Es wird mit dem Tastendruck hoch bzw. runtergedimmt # in beliebigen Schritten und Geschwindigkeit. Mit dem Loslassen der Taste wird # der Vorgang gestoppt. # # Erstellt von A.Kos am 07.12.2017 ################################################################################## */ // Channel-IDs var idTaster = "knx.0.virtuelle_Dpt.dimmen.Terrasse_Wand_dimmen"/*Terrasse Wand dimmen*/; // ID der KNX-Gruppe mit DPT-3, z.B. Tastenwippe oder Tastenpaar var idHueLampe = "hue.0.Philips_hue.Terrasse"/*Philips_hue.Terrasse*/; // ID der Hue-Lampe oder Gruppe // Konstante zum Anpassen des Dimm-Verhaltens const REL_DIM_VAL = 20; // Schrittweite beim relativen Dimmen (Achtung, das ist (bei Hue) KEIN %-Wert) const ABS_DIM_MAX = 254; // Maximaler Absolutwert (Hue: 254) const ABS_DIM_MIN = 1; // Minimaler Absolutwert (0) const DIM_DELAY = 500; // Zeit im ms für die einzelnen Dimm-Schritte // Globale Variablen var BOOL_stop = 0; var emergency_counter = 1; // DimDown Runter-Dimmen on({id: idTaster, change: "any"} , function(obj) { //console.log(obj.state.val); // console.log(obj.state.val.decr_incr); if (obj.state.val == '0,1') { BOOL_stop = 0; emergency_counter = 0; dimdown(REL_DIM_VAL); } }); // DimUp Rauf-Dimmen on({id: idTaster, change: "any"} , function(obj) { //console.log(obj.state.val); //console.log(obj.state.val.decr_incr); if (obj.state.val == '1,1') { BOOL_stop = 0 emergency_counter = 0; dimup(REL_DIM_VAL); } }); function dimup(a) { if (BOOL_stop || getState(idHueLampe+".bri").val >= ABS_DIM_MAX || emergency_counter >= 100) { console.log("Ende"); BOOL_stop = 0; return 0; } if (getState(idHueLampe+".bri").val <= (ABS_DIM_MAX-REL_DIM_VAL)) { console.log("erhöhe um " + a + " auf den Wert " + (getState(idHueLampe+".bri").val + a) + " (" + emergency_counter + ")"); setState(idHueLampe+".bri", getState(idHueLampe+".bri").val + a); setTimeout(function() { emergency_counter++; dimup(REL_DIM_VAL); }, DIM_DELAY); } else { console.log("ELSE: erhöhe um " + (ABS_DIM_MAX-getState(idHueLampe+".bri").val) + " auf den Wert " + ABS_DIM_MAX + " (" + emergency_counter + ")"); setState(idHueLampe+".bri",ABS_DIM_MAX); emergency_counter++; return 0; } } function dimdown(a) { if (BOOL_stop || getState(idHueLampe+".bri").val <= ABS_DIM_MIN || emergency_counter >= 100) { console.log("Ende"); BOOL_stop = 0; return 0; } if (getState(idHueLampe+".bri").val >= (ABS_DIM_MIN+REL_DIM_VAL)) { console.log("verringere um " + a + " auf den Wert " + (getState(idHueLampe+".bri").val - a) + " (" + emergency_counter + ")"); setState(idHueLampe+".bri", getState(idHueLampe+".bri").val - a); setTimeout(function() { emergency_counter++; dimdown(REL_DIM_VAL); }, DIM_DELAY); } else { console.log("ELSE: verringere um " + (ABS_DIM_MIN+getState(idHueLampe+".bri").val) + " auf den Wert " + ABS_DIM_MIN + " (" + emergency_counter + ")"); setState(idHueLampe+".bri",ABS_DIM_MIN); emergency_counter++; return 0; } } // STOP on({id: idTaster, change: "any"} , function(obj) { if (obj.state.val == '0,0' || obj.state.val == '1,0' ) { // Info zum Testen: Diese Code-Zeile kann in der Praxis nicht erreicht werden, // ohne vorher die Funktion dimup oder dimdown ausgeführt zu haben. D.h. BOOL_stop ist vorher immer 0; BOOL_stop = 1; } }); // HUE-Lampe über GA schalten, Wert für HUE-Lampe wird aus eigenem Datenpunkt geholt on({id: 'knx.0.virtuelle_Dpt.schalten.Terrasse_Wand_schalten', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { setState("hue.0.Philips_hue.Terrasse.command"/*Philips_hue.Terrasse.command*/,getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val); } else if ((obj.state ? obj.state.val : "") == false) { setStateDelayed("hue.0.Philips_hue.Terrasse.on"/*Philips_hue.Terrasse.on*/, false, 100, true); } }); // Status-Adresse für Dimmwert in % schreiben wenn sich der Dimmwert geändert hat on({id: 'hue.0.Philips_hue.Terrasse.level', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("knx.0.virtuelle_Dpt.Dimmwert_Status.Terrasse_Wand_Dimmwert_Status"/*Terrasse Wand Dimmwert Status*/, parseFloat((obj.state ? obj.state.val : ""))); }); // Status_Adresse für EIN/AUS schreiben wenn Hue über App oder sonstiges eingeschaltet wurde on({id: 'hue.0.Philips_hue.Terrasse.on', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { setState("knx.0.virtuelle_Dpt.Status.Terrasse_Wand_Status"/*Terrasse Wand Status*/, true); } else if ((obj.state ? obj.state.val : "") == false) { setState("knx.0.virtuelle_Dpt.Status.Terrasse_Wand_Status"/*Terrasse Wand Status*/, false); } });
LG
-
Oh Wow das sieht ja schonmal sehr vielversprechend aus. VIELEN DANK!!!
Was ist mit den virtuellen dpt's gemeint?
Hast du sie nur so genannt oder hast du Dummy Objekte eingefügt?Edit
Wie ist das denn mit so einem Script?
Kann ich das einfach bei mir einfügen, meine Geräte einfügen bzw ändern und dann läuft es?
Oder muss ich irgendwo noch was einstellen?edit edit
Whoah es tut sich was!
Wenn ich die Leuchte mit dem Hue Dimmer anspreche bekomme ich die Rückmeldung auf den Bus geschrieben.
Dann muss ich jetzt noch die richtige Ansteuerung für den Taster finden. -
Um Scripte auszuführen musst du vorher den Javascript-Adapter installieren. Mehr dazu findest du bestimmt online, jetzt alles aufzuzählen wäre ein wenig viel
die virtuellen DP hab ich in der ETS so benannt damit ich gleich sehe das es ein Gerät ist welches nicht physikalisch am Bus hängt.
Der Teil :
getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val)
ist ein Datenpunkt in welchem der Wert steht mit welchem die HUE Lampe eingeschaltet werden soll. Dies ist ein selbst erstellter Datenpunkt vom Typ string mit folgendem Inhalt
{"on":true,"ct":5150,"level":100,"transitiontime":3}
die Lampe wird mit einer Farbtemperatur von 5150 auf 100% Helligkeit über eine Zeit von 3sek eingeschaltet.
Du kannst auch ohne diese Datenpunkte arbeiten und zum Beispiel den Teil zum einschalten der HUE Lampe mit :
setState("hue.0.Philips_hue.Terrasse.command"/*Philips_hue.Terrasse.command*/,getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val);
in
setState("hue.0.Philips_hue.Terrasse.on"/*Philips_hue.Terrasse.on*/, true);
ändern und sie wird damit einfach nur eingeschaltet.
Natürlich musst du auch noch die ganzen Datenpunkte auf deine Installation anpassen !
LG
-
Ja klar, Javascript habe ich installiert, das Script eingetragen und abgeändert.
Rückmeldung funktioniert, nur das Dimmen und schalten nicht.
Gibt es bei dem Punkt Channel-IDs am Anfang was zu beachten?
Ich habe da jetzt das Objekt meiner GA eingetragen die dimmen soll. -
Hallo
Bei den Channel-ID's musst du den Datenpunkt von der Hue Lampe oder Gruppe und dem Knx Taster eintragen
wobei der Teil am Anfang für das dimmen und der untere Teil für das ein/aus schalten und die Rückmeldung auf den Bus zuständig ist
und vielleicht nochmals schauen ob du überall deine DP richtig eingetragen hast ? -
Entwarnung! Alles funktioniert!!!!
Meine Testleuchte hat wohl grad ne Macke und aktualisiert ihre Zustände nicht von daher konnte das ja gar nicht funktionieren. Mit einer anderen läuft es soweit.
Allerdings habe ich lustigerweise jetzt keine Rückmeldung mehr... Die habe ich aber zur Not noch über Node-Red hinbekommen.
Nun kommt das Finetuning.Tausend Dank für die Hilfe!
-
Freut mich das es klappt
Den Rest bekommst du bestimmt auch noch hin.
PS: Das Script kann abgeändert auch zur Lautstärke-Regelung benutzt werden
-
Moin Moin!...So jetzt melde ich mich auch nochmal wieder zurück.
Im Testbetrieb funktioniert jetzt alles ganz gut auch die Rückmeldung, da hatte ich die falsche GA benutzt.Nun kommt die Königsdisziplin... --> RGB Steuerung!
Hättest du da evtl auch etwas anzubieten?
Ich habe schon versucht das Script abzuändern aber mit meinen quasi nicht vorhandenen Kenntnissen ist das natürlich nichts geworden.Dankschön!!
-
Nur zur Info: Ich hab das Skript zum Relativen Dimmen von HUE-Lampen über KNX-Taster auf den neuen Stand des KNX-Adapters angepasst.
Freut mich, dass es genutzt wird!
Link zum Foren-Beitrag mit dem Skript:
https://forum.iobroker.net/topic/9403/skript-für-relatives-dimmen-von-hue-lampen-oder-gruppen-über-knx-taster-und-eine-frage-dazu -
Du kannst mit dem Skript übrigens auch einfach Farben dimmen. Dazu musst du nur oben bei den Einstellungen im Skript ein paar Änderungen vornehmen (ich beziehe mich auf die aktuelle Version des Skripts):
- idHueLampe setzt du auf den Datenpunkt mit ".hue" hinten, mit dem wird die Farbe verstellt.
- Die Konstanten im Skript stellst du wie folgt ein (damit kann man natürlich experimentieren):
// Konstante zum Anpassen des Dimm-Verhaltens const REL_DIM_VAL = 3500; // Schrittweite beim Farbwechseln const ABS_DIM_MAX = 65280; // Maximaler Absolutwert (Hue: 254) const ABS_DIM_MIN = 0; // Minimaler Absolutwert (0) const DIM_DELAY = 500; // Zeit im ms für die einzelnen Dimm-Schritte
Meine Erfahrung hat gezeigt, dass das Farb-Dimmen über KNX nicht besonders elegant funktioniert. Ich musste teilweise auch die Delay-Zeit erhöhen auf 1000ms. Berichte, wie's bei dir läuft.
-
Ah das ist ja super, vielen Dank auch dir für die Arbeit!
RGB habe ich erstmal wieder hinten angestellt. Momentan gibt es wichtigeres bzw. soll das normale dimmen erstmal 100% funktionieren.
Mit einzelnen Leuchten funktioniert es super aber wenn ich eine Gruppe wähle geht das Dimmen ziemlich verzögert oder macht sich kurz selbstständig. Gibt es hierzu etwas zu beachten?Mit der neuen Zonen-Funktion geht es überhaupt nicht aber das noch nichtmal über ioB selbst. Da muss wohl der Adapter ein Update bekommen oder?
RGB werde ich bei Zeiten nochmal ausprobieren. Ich versuche größtenteils nativ über KNX zu arbeiten (mit MDT LED Controller). Nur da wo es nicht geht über ioB mit Hue Anbindung.