NEWS
Zigbee Lichter steuern
-
Irgendwie stehe ich auf dem Schlauch. Wie steuert man Zigbee-Lichter, wenn man kein Phoscon einsetzt?
Ich möchte vom Conbee II (unbrauchbar mit vielen Tradfrii-Lichtern) zum TI-Dev-Board wechseln. Das heisst aber, dass ich Phoscon verliere. In Phoscon lege ich Gruppen von Lichtern fest, weise den Gruppen Schalter/Fernsteuerungen zu und belege jeden Button mit einer Funktion. Wie mache ich das ohne Phoscon? Für jeden einzelnen Button jeder einzelnen Fernsteuerung extra Trigger mit Skripten anlegen wäre viel zu aufwendig. Und Funktionalitäten wie "Einschalten und heller machen in 10% Schritten bis 100%" wären ja ziemlich kompliziert in Blockly. Und ich müsste die Skripte für jeden Button duplizieren.
So sieht z.B. die Belegung einer Fernsteuerung für eine Lichtergruppe aus. Ein/Aus, Helligkeit, Farbtemperatur oder Szenen durchschalten sind da konfiguriert:
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.
Gibt es da einen Trick? Oder einen Adapter der sowas macht wie Phoscon?
Merci!
Chris -
@ChrisPrefect hallo, ich habe das mit dem Adapter smartcontrol gelöst, geht prima!
Und wenn du noch das TI Board suchst schreib mal ne PM habe eine neues original Verpacktes noch rumliegen.
Gruß -
@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.