Hue Farbtemperatur schalten

Guten Abend,

ich versuche mich seit Tagen an der Funktion, meine eingeschalteten Hues auf eine bestimmte Farbtemperatur zu stellen… Hintergrund ist, dass ich das Adaptive Licht nachstellen möchte… scheitert aber schon am Anfang… Eine Fehlermeldung bekomme ich bei diesem Script nicht angezeigt:

const devices = await Homey.devices.getDevices();

// Loop over all devices
for (const device of Object.values(devices)) {

  // If this device is a light (class)
  // Or this is a 'What's plugged in?'-light (virtualClass)

  if ((device.class === 'light' || device.virtualClass === 'light')  && device.capabilitiesObj['onoff'],true){

await (device.setCapabilityValue['light_temperature'],['0.9']);
  }
}

Komischerweise werden auch alle Geräte in der Ausgabe ausgegeben. Hat jemand eine Idee und kann mir weiter helfen?

Hallo Erik und herzlich willkommen,

Um nur Hue-Lampen zu steuern, kannst du in der ‘IF’-Zeile filtern auf die betreffende App durch
&& device.driverUri = 'homey:app:App-URI'
hinzufügen.

Die App-URI ist in der URL des App-Stores zu finden,
z.B. für Philips Hue app:


Außerdem habe ich einen Capability-Filter
&& device.capabilitiesObj.light_temperature
hinzugefügt, aber das ist vielleicht nicht nötig, wenn man nur die Hue-Lampen steuert.


Dieses Skript funktioniert mit Pro 2019:

// Script to change the light temperature of the lights of a certain app.

// User input 
var myLightTemperature = 0.9; // enter the desired value, like: 0.9 
var myApp = 'homey:app:nl.philips.hue'; //app URI, find it in the homey.app app page URL
// User input end

const devices = await Homey.devices.getDevices();

  for (const device of Object.values(devices)) {
    // If device is a light (class)
    // Or device is a 'What's plugged in?'-light (virtualClass)
    // and is this a device of a certain app (driverUri)
    // and does device have capability 'light_temperature' (capabilitiesObj)
    if ((device.class === 'light' || device.virtualClass === 'light') && device.driverUri === myApp && device.capabilitiesObj.light_temperature) {
   
    log(`\nChanging LightTemperature ${device.name} to ${myLightTemperature}`);  // optional, show the results

    await device.setCapabilityValue('light_temperature', myLightTemperature)
      .then(() => log(''))
      .catch(error => log('Error: ', error));
    }
}
return(true);

1 Like

Vielen Dank Peter für die nette Begrüßung und vielen Dank für deine Hilfe.

Dein Skript funktioniert auch bei mir, allerdings muss ich noch prüfen, ob die Leuchte eingeschaltet ist, denn nur dann soll die Lichtfarbe geändert werden…

1 Like

Guten Morgen,
ich bin leider seit gestern Abend nicht mehr weiter gekommen und sehe den Wald wohl vor lauter Bäumen nicht…
Meine einfache Abfrage, ob das Gerät eingeschaltet ist, wird einfach nicht bearbeitet:

device.capabilitiesObj.onoff===true

Kann mir hier jemand nochmal auf die Sprünge helfen? Vielen Dank!

Vielleicht
device.capabilitiesObj['onoff'],true
oder
device.capabilitiesObj[onoff],true
oder
device.capabilitiesObj.onoff.true

Das Problem ist, dass die Bedingung vorher nicht mehr abgefragt wird. Also jedes Thermostat, Schalter usw. wird dann auf die angegebene Farbtemperatur gestellt. Da das natürlich nicht funktioniert, wird eine Fehlermeldung ausgegeben.

oder

device.capabilitiesObj.onoff.true

Der geht nicht.
Ich hatte vorher einen selbst aufgespielten Raspberry mit FHEM, also bitte nicht denken, das ich gar kein Verständnis dafür habe, aber irgendwie hab ich alle Kombinationen durch…

Nein nein, das glaube ich überhaupt nicht, ich kann deinen Wissensstand von hier aus nicht kennen.
Es war alles nur als Hilfe gedacht, aber ich bin kein Skript-Guru :wink:

1 Like