NEWS
Zigbee Lichter steuern
-
@ChrisPrefect sagte in Zigbee Lichter steuern:
Oder muss ich wirklich für jede einzelne Fernsteuerung sowas hier basteln? Da sind aber noch lange nicht alle Funktionen hinterlegt, z.B. Szenen durchschalten ist da nicht möglich und ich weiss nicht, was passiert wenn die Farbtemperatur über 100% geht?
Ausserdem wäre das extrem unübersichtlich.
Ich habe ca. 25 Tradfri Remotes. Alle mit 5 Buttons. Und dann ev. noch single und long press. Das wären also 250 (!) Skripte/Trigger? Das wäre absolut un-wartbar.Erst einmal vorweg - Du wirst nicht umhin kommen die Verbindungen zwischen Fernbedienung (Aktion) und Lampe (Reaktion) irgendwo zu definieren. Dafür gibt es verschiedene Wege.
Der von @Jeti benutzte Adapter kann da funktionieren - ich setze den nicht selber ein. Es mag auch andere Adapter geben die da helfen
Die von Dir als 'sehr aufwändig' bezeichnete Sammlung von Blockly Skripten würde auch gehen. Allerdings stimme ich Dir zu - das ist eigentlich für Blockly eine Nummer zu gross.
Als letzte Lösung (das setze ich ein) kann ein einzelnes JS mit geschickt gewählten Datenpunkten die gewünschten Verbindungen realisieren. Dabei habe ich halt ein Objekt mit der Zuweisung der Aktoren zu den Sensoren, und ein Skript was darauf aufbauend die ganzen Trigger setzt.Nebenbei - Gruppen kannst Du auch im Zigbee Adapter erzeugen. Alternativ bietet sich ggf. der Szenen Adapter an, wenn Du Gruppen von Geräten schalten willst die mit unterschiedlicher Hardware arbeiten.
A.
-
@ChrisPrefect
Schaue dir doch mal die App Jarvis an - wie ich finde ein tolles Projekt.
Deine Anforderungen sollten damit recht einfach zu lösen sein.Sehr gut beschrieben hier:
https://www.smarthome-tricks.de/software-iobroker/iobroker-jarvis-teil-21-szenen-steuern/Natürlich können auch einzelne Lampen darüber gesteuert werden.
-
@ditus3 Hmm, Jarvis ist doch eine Vis? Wie verknüpfe ich da die Buttons an den Wänden mit den Lampen? Ich brauche keine Vis.
-
@jeti Danke für den Tipp. Der Adapter sieht aber NOCH komplizierter aus als lauter Blockly-Skripte anzulegen. Da müsste ich ja für jeden einzelnen Button über mehrere Formular-Seiten hinweg einzelne Verknüpfungen anlegen. Also schon mal mindestens 125 solcher Einträge. Wenn der Heller-Button der vierten Fernbedienung im Gang nicht funktioniert kann ich schon mal ordentlich rumscrollen um das zu finden
Und ich glaube solche Aktionen wie "Einschalten und heller machen in 10% Schritten bis 100%" gehen da trotzdem nicht? Oder Szenen durchschalten mit den vor und zurück Buttons?
Hat denn jeder mit Zigbee nur zwei Lichter und zwei Schalter im Einsatz oder warum scheint das bei keinem sonst ein Problem zu sein?
-
@Asgothian Das JS-Skript tönt immerhin nach einer Lösung. Wie ist das aufgebaut? Ist das auch mit 80 Lampen und 25 Remotes noch wartbar?
Der Szenen-Adapter hat mich extrem abgeschreckt. Ich habe zum Teil 15 Lampen in einer Gruppe. Im Szenen-Adapter müsste ich 15 Mal das Helligkeits-Attribut hinzufügen, da die Helligkeit einstellen und 15 Mal das Farbtemperatur -Attribut jeder einzelnen Lampe hinzufügen und die gewünschte Farbe setzen. Also schon mal 30 Einträge nur für eine einzelne Szene. Bei 5 Szenen sind das wieder 150 Datenpunkte nur für einen Raum die ich pflegen müsste
In Phoscon setze ich die Werte einmal für die Gruppe und passe dann noch die abweichenden Lampen kurz im Webinterface an und speichere dann die Szene ab.
-
@ChrisPrefect
Das Hängt davon ab wie gut du daran bist, Datenpunkte sauber in ein Objekt einzutragen. Letztendlich hast du im Skript-Kopf eine lange Liste der betroffenen Datenpunkten, sowie eine 2. Liste mit den Verbindungen zwischen Datenpunkten von Lampen, Gruppen und Fernbedienungen.Eine Benutzeroberfläche gibt es nicht.
A.
-
@Asgothian OK. Und wie regelst du Dinge wie Szenen durchschalten und Helligkeiten erhöhen und erniedrigen?
Hast du ein Skript für alle Räume oder eines pro Raum?
Merci!
-
-
@Asgothian Wäre es möglich so ein Skript zu sehen? Danke!
-
@ChrisPrefect ich poste heute Abend mal ein Beispiel.
A. -
Anbei so ein Skript - allerdings eingekürzt auf einen aktiven Schalter
Im Array "events" findet die Verknüpfung zwischen den Lampen und den Schaltern statt. Aktuell definiert und in Benutzung sind nur on, off und toggle. Die Schalter die ich habe eignen sich nicht für ein Dimmen, da sie beim länger halten nur einen "long press" event auslösen und die Haltezeit nicht verfügbar ist (und auch kein "release" event)
Alle Meldungen die ich zu Debug zwecken brauche habe ich absichtlich als "warn" herausgegeben. mit der Constante "debug" können die unterdrückt werden.
const debug = 1; let Lampen = { LR_Group: { id: 'zigbee.0.group_1', on: 'state' , level:'brightness'}, Bedside: { id: 'zigbee.0.0017880103124dc3', on: 'state' , level:'brightness', ct:'colortemp'}, BR_Ceiling: { id: 'zigbee.0.000b57fffeda3ba9', on: 'state' , level:'brightness', ct:''}, LR_Glas: { id: 'deconz.0.lights.84182600000ec06a', on: 'on'}, }; let Schalter = { Bedside: 'zigbee.0.00158d0002b42aef', Ikea_LR: 'zigbee.0.000d6ffffe1dd7c0', LR_BR: 'zigbee.0.00158d00030406c2', LR_HW: 'zigbee.0.00158d0003057b0c', HW_Bath: 'zigbee.0.00158d0002b49c85', Ikea_KU: 'zigbee.0.d0cf5efffe016123', Ikea_HR: 'zigbee.0.d0cf5efffec6d1ed' } let events = [ {schalter: 'Bedside', event: 'right_click', light: ['Bedside'], action:'toggle'}, {schalter: 'Bedside', event: 'left_click', light: ['BR_Ceiling'], action:'toggle'}, {schalter: 'Bedside', event: 'both_click', light: ['Bedside', 'BR_Ceiling'], action:'toggle'}, {schalter: 'Bedside', event: 'right_click_double', light: ['Bedside'], action:'on'}, {schalter: 'Bedside', event: 'left_click_double', light: ['BR_Ceiling'], action:'on'}, {schalter: 'Bedside', event: 'both_click_double', light: ['Bedside', 'BR_Ceiling'], action:'on'}, {schalter: 'Bedside', event: 'right_click_long', light: ['Bedside'], action:'off'}, {schalter: 'Bedside', event: 'left_click_long', light: ['BR_Ceiling'], action:'off'}, {schalter: 'Bedside', event: 'both_click_long', light: ['Bedside', 'BR_Ceiling'], action:'off'}, ]; function warn(msg) { if (debug) console.warn(msg); } function itemFromObject(obj, control) { const Lamp = Lampen[obj]; warn("ifo Lamp " + JSON.stringify(Lamp)) if (Lamp == undefined) return undefined; if (Lamp[control] == undefined) return undefined; return Lamp.id + '.' + Lamp[control]; } function setOnOff(lights, onOff) { warn("setOnOff " + JSON.stringify(lights) + " " + JSON.stringify(onOff)); let dp = ''; lights.forEach(item => { dp = itemFromObject(item, 'on'); if (dp != undefined) setState(dp, onOff) }); } function toggle(lights) { let dp = ''; warn("Toggle " + JSON.stringify(lights)); lights.forEach(item => { dp = itemFromObject(item, 'on'); warn("Toggle " + JSON.stringify(dp)); if (dp != undefined) setState(dp, !getState(dp).val); }); }; function dim(lights, offset) { let dp = ''; lights.forEach(item => { dp = itemFromObject(item, 'level'); if (dp != undefined) getState(dp, function(err, obj) { setState(dp, Math.max(Math.min(obj.val + offset, 100), 0)) }); }); }; events.forEach(item => { let triggerdp = Schalter[item.schalter]+'.'+item.event; const Lights = item.light; if (item.action == 'toggle') { on ({ id:triggerdp , change: 'gt'}, function(obj) { warn("toggle triggered"); toggle(Lights)}); } else if (item.action == 'on') { on ({id:triggerdp, change: 'gt'}, function(obj) { warn("toggle triggered"); setOnOff(Lights, true)}); } else if (item.action == 'off') { on ({id:triggerdp, change: 'gt'}, function(obj) { warn("toggle triggered"); setOnOff(Lights, false)}); } });
-
@Asgothian Herzlichen Dank!
Das Skript ist sauber und macht Sinn. Ich sehe aber, dass da dringend irgendwas von ioBroker oder einer Extension bereitgestellt werden müsste. Das Problem haben ja eigentlich alle, die Zigbee Lampen und Schalter einsetzen.
Versucht das denn sonst jeder mit Blockly-Skripten hinzubasteln? Und dann sind Dinge wie Temperatursteuerung oder Szenen ja noch nicht gelöst.
Ist nicht geplant, sowas wie Phoscon für ioBroker bereitzustellen? Das fehlt doch extrem dringend, nicht?
-
@ChrisPrefect Den gibt es doch. Genau dafür ist der Adapter Smartcontrol gemacht.
Eine grafische Aufarbeitung wie bei deConz macht auf Grund der Vielfalt der möglichen Endgeräte einfach keinen Sinn.
In deinem Fall würdest Du bei dem Adapter primär Target-Devices, Trigger und ggf. Zonen benutzen. Hast Du dir diesen Adapter angeschaut ?
Ich dachte du wolltest eine andere Lösung.
A.
-
@Asgothian Ja, ich hatte den Adapter auf der Github-Seite und dem Manual dazu angeschaut. Das Interface sieht sehr umständlich aus und ich müsste wieder 250 einzelne Einträge machen um die Grundfunktionalität abdecken zu können. Auch da noch ohne Szenen oder Farbtemperatursteuerung.
Aber ich werde ihn mal installieren und testweise eine Tradfri-Remote belegen, mal sehen wie weit ich da komme.
-
@ChrisPrefect Mal ganz im ernst.. auch bei Deconz hast du diese gefühlten 250 Einstellungen machen müssen.
Du musst halt jedem Schalter einen Autor zuweisen. Das nimmt dir keiner Ab. Die Logik ist in allen Fällen die gleiche:
- Gruppen und Szenen definieren
- Zu schaltende Geräte definieren
- den Schaltern die Gruppen / Geräte hinzufügen.
A.
-
@Asgothian In Deconz geht das Belegen eines Schalters mit einer Funktion mit zwei Klicks. Die Schalter sind bereits einzelnen Gruppen zugewiesen und werden direkt als Vorauswahl mit vordefinierten Funktionen belegt. Ich muss also nie 125 Buttons zu 20 Gruppen zuordnen, sondern immer nur maximal 5 Buttons zu einer Gruppe.
Ich habe den Adapter installiert. Ich sehe aber, dass ich da keine Farbtemperaturen wechseln kann, keine Helligkeiten hoch oder runter setzen kann und keine Szenen durchschalten kann.
Auch muss ich sozusagen alle einzelnen Buttons jeder Fernbedienung (125 Buttons insgesamt) erst definieren mit jeweils dem Namen, Datenpunk und ein- und ausgeschaltetem Wert und die dann auf einer andere Formularseite für jeden dieser Buttons das zu schaltende Gerät angeben.
Ich hätte also in diesem viel zu kleinen Dropdown-Menü 125 Einträge. Da finde ich nichts mehr nach dem ich die ersten 50 Buttons erfasst habe:
Oder verstehe ich das alles noch immer komplett falsch?
-
@ChrisPrefect So sieht das in Phoscon aus:
-
Ich denke, ein Unterschied zwischen Phoscon und ioBroker ist, dass ioBroker noch nicht wirklich mit "Devices" arbeitet, sondern mit einzelnen Datenpunkten. D.h. in Phoscon verknüpfst du eine Lampe mit einem Schalter, und kannst dann intuitiv einstellen, was mit dieser Lampe passieren soll. In ioBroker setzt du einfach für das Auslösen eines Datenpunktes, einen anderen Datenpunkt. ioBroker muss hierbei nicht wissen, um was für ein Gerät es sich handelt oder was es bewirkt diesen Wert um 10% zu erhöhen, er tut es einfach.
Dafür kann ioBroker halt wesentlich mehr abdecken und ist auch wesentlich flexibler. -
Ganz offen - wenn Du mit dem was bei Deconz geboten wird zufrieden bist, dann nutz es. Aber Moment - du sagst ja selber das deconz mit der Menge deiner Geräte ein Problem hast.
Ich habe deconz auch eine gewisse Zeit genutzt, dann aber alle Einstellungen entfernt, da die vorhandenen Optionen und Einstellmöglichkeiten mich zu sehr eingeschränkt haben. Dinge die ich unbedingt realisieren wollte konnte ich nicht realisieren, und das System war instabil in der Bedienung, insbesondere wenn externe Automatisierung hinzu kamen. Seitdem nutze ich deconz nur noch zur Anbindung der Geräte an den ioBroker.
@ChrisPrefect sagte in Zigbee Lichter steuern:
Ist nicht geplant, sowas wie Phoscon für ioBroker bereitzustellen? Das fehlt doch extrem dringend, nicht?
Nein. Es fehlt nicht extrem dringend. Und es macht extremen Aufwand, so etwas aufzubauen, da
- verschiedene Geräte fast identische Abbildung in den Datenpunkten erfahren
- vergleichbare Geräte bei Anbindung durch unterschiedliche Hardware auch unterschiedliche Abbildung in den Datenpunkten erhalten.
- das Anforderungsprofil eine extrem breitere Aufstellung einer solchen Oberfläche erfordert.
Selbst der Smartcontrol adapter, der ja in diese Richtung geht ist weniger deswegen entstanden weil die Leute ein einfaches Interface für "standard" Funktionen haben wollten, sondern weil sie eine standardisierte Möglichkeit der Einstellung für komplexere Funktionen benötigen (Kombination von verschiedenen Events mit wechselnden Bedingungen)
Es spricht aber nichts dagegen das Du eine der Phoscon vergleichbaren Web-Oberfläche baust um dem ioBroker die Funktionalität bereit zu stellen. Oder vielleicht eine besser zu nutzende Oberfläche für den Smartcontrol adapter - der im Übrigen durchaus auch Szenen schalten kann - man muss sich aber auf die von @siggi85 beschriebene Eigenart vom ioBroker einlassen und die Szenen extern erzeugen und über Datenpunkte aktivieren / deaktivieren
Das Phoscon Interface funktioniert meiner Meinung nach ausschliesslich deswegen so intuitiv weil es ausschliesslich Lampen steuern kann. Schon beim Ansteuern von Steckdosen fallen die ersten Fehler auf - diese lassen sich per Phoscon Dimmen, obwohl das gar nicht geht. Über die Ansteuerung von Thermostaten, Rollos und anderen Geräten die inzwischen in deconz eingebunden werden können will ich nicht reden.
Lampen Steuern ist beim ioBroker nur eine von vielen Funktionen.
A.
Nachtrag: Dem von mir geposteten Skript in gleicher weise das dimmen oder CT steuern beizubringen ist trivial. Auch das kann ich heute Abend gerne posten.
-
@siggi85 Ja genau, ioBroker ist super für alles was mit den Standard-Tools nicht geht. Aber es braucht halt trotzdem noch ein Standard-Tool für Lichter und Schalter. Das fehlt momentan. Jeden einzelnen Button von Hand skripten zu wollen ist utopisch, da für bräuchte ich dann auch keinen ioBroker