NEWS
Zigbee Lichter steuern
-
-
@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.
-
Ich könnte da jetzt lange argumentieren. Das lohnt aber nicht. Wir haben unterschiedliche Ansichten. Ich sehe nicht das ein User-Interface für eine dann doch einmalige Konfiguration so essentiell sein soll, für Dich scheint ein Arbeiten ohne GUI undenkbar.
Letztendlich bleibt Dein Problem aber (anscheinend ?) ein Nischenproblem - ansonsten würde daran bereits gearbeitet.
Das Angebot Geld zu spenden ehrt Dich - ich kenne viele die das "mal eben so" erwarten. Allerdings fürchte ich das dieses Angebot nicht dazu führt das sich jemand dieses Problems annimmt.
Letztendlich sehe ich für Dich 4 Lösungen:
- In das Skripten einarbeiten (JS, nicht Blockly), und dann mit einer intelligenten Struktur etwas bauen welches Du sinnvoll warten kannst. Dabei wirst du aus dem Forum sicherlich viel Hilfe erfahren.
- Mit den vorhandenen Software-Tools im ioBroker und geeigneten Methoden zur Strukturierung Deiner Daten arbeiten. Dabei auch bedenken: Adapter können mit mehreren Instanzen betrieben werden.
- Bei deconz / Phoscon bleiben und ein 2. Gateway parallel aufsetzen. Die (bei intelligentem Aufbau) wenigen Events die beide Gateways betreffen lassen sich dann über den ioBroker weiter leiten.
- Mit den Entwicklern des Smartcontrol Adapters in Kontakt treten um zu schauen ob man durch geschickte Strukturierung / Filtermöglichkeiten die Bedienbarkeit so weit optimieren kann das Dein Problem gelöst ist.
A.
Nachtrag: Es gibt noch die Lösung 5: Nur die Lampen und Schalter bei deconz lassen - sofern das alleine nicht schon zu viele sind - und alle anderen Zigbee Geräte (falls sie existieren) über das TI Board anbinden.
-
@Asgothian Es geht mir nicht ums Argumentieren. Ich suche eine gangbare Lösung. Und ich verstehe momentan noch nicht, wie andere ein grosses Zigbee-Netz mit vielen Lampen und Schaltern sinnvoll einrichten und pflegen können.
Per Blockly ist das nicht möglich, ohne hunderte Skripte zu haben die nicht mehr wartbar sind.
Per Smartcontrol Adapter scheint ausschliesslich ein/ausschalten zu gehen.
Per Skript, so wie du es machst, scheint das aktuell die einzig gangbare Lösung zu sein. Die ist aber natürlich nicht komfortabel, auch schlecht zu warten und eigentlich "cheaten", denn eigentlich sollte man das direkt in ioBroker machen können.
Letztendlich bleibt Dein Problem aber (anscheinend ?) ein Nischenproblem - ansonsten würde daran bereits gearbeitet.
Genau das verstehe ich nicht. Anscheinend hat niemand 25 Remotes und 20 Räume? Oder will die Lichter nur ein und ausschalten aber sonst nichts? Schon der Szenen-Adapter ist vom User-Interface her überfordert mit mehr als 10 Geräten.
Merci für die Lösungsvorschläge! Leider alle bis jetzt noch schlechter im Vergleich zu Phoscon. Ich hoffe noch immer, dass die Probleme mit Deconz endlich gelöst werden
Ich bin glaube ich einfach erstaunt, dass sowas wie "Lichter mit Schaltern schalten" nicht irgendwie nativ oder zumindest mit einem sinnvollen Adapter in ioBroker gelöst ist. Es kann ja nicht sein, dass sich alle ihre eigenen Skripte ausdenken müssen, das ist ja nicht der Sinn von ioBroker
-
Also ich habe nicht ansatzweise so viele Lampen wie du, ich löse einfach vieles über die Vis selbst.
Habe ungefähr 15 Lampen und 10 Räume bei mir.
Lampen, die zusammen ein/aus geschaltet werden sollen habe ich über den Szenenadapter zusammen gefasst.
Ich nutze aktuell nur eine Fernbedienung, daher hab ich für diese ein eigenes kleines Script was den einzelnen Buttons auf der Fernbedienung die Datenpunkte der Lampen zuweist, damit geht auch dimmen.Hier mein Script für meine Fernbedienung:
// Channel-IDs var idTaster = 'zigbee.0.00178801080e1244'/*OG Schlafzimmer FB*/; var idHueLampeDomi = 'zigbee.0.f0d1b8000014767e'/*OG Schlafzimmer Nachttischleuchte Domi*/; var idHueLampeNadja = 'zigbee.0.f0d1b800001473f0'/*OG Schlafzimmer Nachttischleuchte Nadja*/; // On on({id: idTaster + ".state", change: "any"}, function (obj) { if (obj.newState.val === true || obj.newState.val === "true") { setState(idHueLampeDomi +".state", true); setState(idHueLampeNadja +".state", true); } }); // Off on({id: idTaster + ".state", change: "any"}, function (obj) { if (obj.newState.val === false || obj.newState.val === "false") { setState(idHueLampeDomi +".state", false); setState(idHueLampeNadja +".state", false); } }); // DimDown Down button pressed on({id: idTaster + ".down_button", change: "any"} , function(obj) { if (obj.newState.val === true || obj.newState.val === "true") { setState(idHueLampeDomi +".brightness", getState(idHueLampeDomi +".brightness").val - 10); setState(idHueLampeNadja +".brightness", getState(idHueLampeNadja +".brightness").val - 10); } }); // DimDown Down button hold on({id: idTaster + ".down_hold", change: "any"} , function(obj) { if (obj.newState.val === true || obj.newState.val === "true") { setState(idHueLampeDomi +".brightness", getState(idHueLampeDomi +".brightness").val - 10); setState(idHueLampeNadja +".brightness", getState(idHueLampeNadja +".brightness").val - 10); } }); // DimUp Up button pressed on({id: idTaster + ".up_button", change: "any"} , function(obj) { if (obj.newState.val === true || obj.newState.val === "true") { setState(idHueLampeDomi +".brightness", getState(idHueLampeDomi +".brightness").val + 10); setState(idHueLampeNadja +".brightness", getState(idHueLampeNadja +".brightness").val + 10); } }); // DimUp Up button hold on({id: idTaster + ".up_hold", change: "any"} , function(obj) { if (obj.newState.val === true || obj.newState.val === "true") { setState(idHueLampeDomi +".brightness", getState(idHueLampeDomi +".brightness").val + 10); setState(idHueLampeNadja +".brightness", getState(idHueLampeNadja +".brightness").val + 10); } });
Hier wie ich meine Lampen steuere:
-
Merci! Das Skript ist auch sauber aufgebaut. Aber eben: Das sind ja jetzt erst drei Buttons und zwei Lampen. Es ist absolut utopisch, das für alle Lampen, Fernbedienungen und Buttons machen zu wollen. Das ist un-wartbar Da muss es irgend eine andere, saubere, einfache Lösung geben.
Eine Vis brauche ich gar nicht, ich benutze nur die Remotes und Alexa.
-
@Dominik-F
deine Vis für die Lampensteuerung sieht ja toll aus.Könntest du mir mal das komplette Widgets für deine Stehlampe zu kommen lassen. Danke -
@ChrisPrefect sagte in Zigbee Lichter steuern:
Eine Vis brauche ich gar nicht, ich benutze nur die Remotes und Alexa.
Und ich glaube da liegt der Hund begraben bei dir. Ich würde mal sagen 99% der Leute nutzen irgendeine Art von Visualisierung um ihre Lampen zu schalten und brauchen nur für die ein oder andere Fernbedienung mal n Script oder eben den Smartcontrol Adapter.
Ich weiß ja nicht wie fit du in Programmieren bist, aber vielleicht könntest du dir für deine Zwecke ja selber einen Adapter basteln? Die meisten Adapter sind ja entstanden weil jemand was machen/integrieren will und dies nicht möglich oder zu umständlich für denjenigen war. Siehe den Smartcontrol Adapter der vor n paar Monaten entstanden ist.
@ostseereiter
Nutzt du das MDCSS V2 von Uhula? Das ist für meine Vis von nöten, damit die so ausieht wie sie ausieht.
Wenn ja, dann stell ich dir die gerne rein. Nutzt du das nicht, dann wird das ziemlich kacke bei dir aussehen.