NEWS
Zigbee Lichter steuern
-
@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
-
wenn Du mit dem was bei Deconz geboten wird zufrieden bist, dann nutz es.
Kann ich ja nicht. Wenn ich auf das TI-Board umsteigen will dann verliere ich Phoscon. Deshalb suche ich ja nach einer Alternative.
Ja, Deconz ist das Problem. Ich bin nur wegen Phoscon noch bei Deconz.
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
Das verstehe ich nicht. Du hast doch mit dem deconz-adapter 1:1 dasselbe wie mit dem Zigbee-Adapter? Du kannst alles genau gleich flexibel skripten, wenn du möchtest. Der Vorteil von deconz ist, dass es dazu aber auch noch Phoscon gibt, welches alle Standardaufgaben abdeckt. Die Flexibilität in ioBroker nimmt dir aber keiner, oder? In Deconz gibt es ja keine Einstellungen zu machen.
Wenn du Phoscon nicht nutzt, warum nutzt du dann Deconz noch? Dann könntest du auch gleich alles mit dem Zigbee-Adapter machen, nicht?
Nein. Es fehlt nicht extrem dringend.
Für mich ist das essenziell. Ohne eine Art von Phoscon für ioBroker kann ich meine 140 Zigbee-Geräte nicht direkt in ioBroker verwalten. Alles von Hand zu skripten ist nicht praktikabel.
verschiedene Geräte fast identische Abbildung in den Datenpunkten erfahren
Ja, das Problem wurde in der IT ja schon oft gelöst, nämlich mit Treibern. Es muss also eine einheitliche Schnittstelle geben die verschiedene Geräte ansteuern kann. Bei Zigbee ist das nicht so ein Problem, es geht ja hier wirklich ausschliesslich um die Steuerung von Lampen. Die haben alle nur eine Handvoll von sehr ähnlichen Attributen. Ein/Aus, Helligkeit, Farbtemperatur oder Farbe. Mehr nicht. Das kann man sehr einfach vereinheitlichen.
das Anforderungsprofil eine extrem breitere Aufstellung einer solchen Oberfläche erfordert.
Nö, eben nicht. Dafür gibt es ja ioBroker. Ein Adapter muss nicht ALLE Anwendungsfälle und Features abdecken. Das kann man jederzeit von Hand skripten oder mit einem anderen Adapter kombinieren.
Ein Phoscon oder "iobroker.lights" adapter musste wirklich nur die Steuerung von Lichtern mit Schaltern ermöglichen. Alles andere, wie Bewegungsmelder oder Zeitsteuerungen usw. kann man fallweise in Blockly oder jScript machen.
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)
Ja, aber leider fehlt jetzt genau der Standardfall irgendwie komplett. Eine Helligkeits- oder Farbtemperatur-Steuerung ist anscheinend damit nicht möglich? Und 125 Buttons mit den Lichtern zu verbinden ist aufgrund der dann viel zu langen Dropdown-Listen über dieses Interface praktisch unmöglich.
Das Phoscon Interface funktioniert meiner Meinung nach ausschliesslich deswegen so intuitiv weil es ausschliesslich Lampen steuern kann.
Ja, und genau das fehlt für ioBroker.
Alles andere macht man in Skripten oder anderen Adaptern.
Gibt es irgend eine Möglichkeit für eine Entwicklung zu bezahlen? Ich wäre durchaus bereit, 500-1'000 € für einen phoscon-Adapter für ioBroker zu spenden. Irgendwie muss ich meine Probleme mit Zigbee endlich lösen, ich bin da schon seit über einem Jahr dran und komme nicht weiter.