Setzen von Farbe anhand eines Readings

Begonnen von ConRod, 21 März 2020, 15:15:59

Vorheriges Thema - Nächstes Thema

ConRod

Hallo
Ich möchte anhand eines Wertes des Farbrads meiner zigbee fernbedienung die lampenfarbe setzen.

Anbei das log des eventmonitors.
Ich weiß einfach nicht wie ich bei einem notify die Werte der Fernbedienung=RemoteControl auslese und sie der Lampe als set color übergebe.

Kann mir jemand helfen?
Herzlichen Dank für jedem Hinweis.

2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl transmission-state: incoming publish received
2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl action_color-y: 0.3
2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl action_color-x: 0.7
2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl action: color_wheel
2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl linkquality: 34
2020-03-21 15:12:44 XiaomiMQTTDevice RemoteControl transition_time: 0
2020-03-21 15:12:44 XiaomiMQTTDevice xBridge transmission-state: incoming publish received

Prof. Dr. Peter Henning

1. Anfängerdoku lesen
2. notify mit angehängter Perl-Routine definieren.

LG

pah

ConRod

Danke. Aber das hilft mir leider wenig.
Ich habe schon alles mögliche gelesen, aber irgendwie komme ich nicht weiter?
Ein notify ist klar, aber wie lese ich die werte aus um sie dann zu setzen?
Ich bräuchte etwas konkretere Hilfe oder ein Beispiel...

MadMax-FHEM

#3
Steht das was du setzen willst im Event drin!?

Dann einfach da rausnehmen: $EVENT oder $EVTPART1 oder $EVTPART2 usw. (das musst du halt rausfinden Wo/welche Stelle es "steht")...

Steht es in einem Device als Reading: ReadingsVal("DeviceName", "ReadingName","Ersatzwert")

EDIT: Wiki zu Notify schon gelesen!? Dort gibt es (soweit ich weiß) auch Beispiele... https://wiki.fhem.de/wiki/Notify

EDIT2: um herauszufinden WAS in $EVENT oder $EVTPART1 etc. kannst du im Notify auch erst mal eine Logausgabe einbauen: Log3(undef, 1, "Hier die Ausgabe und darin halt mal die Variablen $EVENT $EVTPART1 usw.")

EDIT3: und zum einfachen anlegen (lassen) von Notify https://wiki.fhem.de/wiki/Event_monitor

EDIT4: und vor allem bzw. generell https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KernSani

Falls das Problem darin besteht, aus den XY-Werten einen RGB-Wert o.ä. zu machen: https://wiki.fhem.de/wiki/Color


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ConRod

Hey.
Super und vielen Dank.
Mit dem Hinweis über setreading konnte ich das Auslesen und damit das setzen hinbekommen.
Jetzt hab ich nur mich ein letztes Problem:
Ich habe nur ein x und y Wert für die Farbe. Scheinbar gehen die ubterstützten Farbräume in fhem alle von 3 Werten aus wie x y und Y oder RGB.
Das setzen der Farbe kann ich nur in RGB machen. Wie kann man einen 2 Variablen Farbwert mit x und y nach rgb wandeln? Ist das bereits ein Unterstützer Farbraum?

Vielen herzlichen Dank für eure Hilfe bisher :-)

KernSani

Zitat von: KernSani am 21 März 2020, 20:57:36
Falls das Problem darin besteht, aus den XY-Werten einen RGB-Wert o.ä. zu machen: https://wiki.fhem.de/wiki/Color


Gesendet von iPhone mit Tapatalk


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ConRod

Vielen Dank für die Antwort. Das ist mir schon bewusst und ich verwende die Lib auch. Bisher mit einem statischen 3. Wert.

Das konvertieren selbst ist ja nicht das Problem.
Ich habe nur 2 Werte statt 3. Die Frage ist, ob das ein besonderes Farbschema ist.

KernSani

Ups, sorry das hatte ich überlesen...
Laut Wikipedia:

Durch die Grundbedingung x + y + z = 1 lässt sich der z-Anteil jeweils rechnerisch (z = 1 − x − y) ermitteln.

Hier ist das ebenfalls so beschrieben: https://gist.github.com/popcorn245/30afa0f98eea1c2fd34d

Probier das doch mal....


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Prof. Dr. Peter Henning

Sorry, aber das ist Unsinn. Die beiden Koordinaten x und y sind KEINE Farbspezifikation, beispielsweise haben braun und orange dieselben x- und y-Werte. Die Gesamthelligkeit wurde nämlich herausdividiert, also der (IMMER !) dreidimensionale Farbraum auf das zweidimensionale CIE-Diagramm abgebildet. Nachzulesen z.B. hier: https://www.amazon.de/Taschenbuch-Multimedia-Peter-Henning/dp/3446409718

Die dritte Koordinate muss also irgendwo herkommen und kann NICHT aus x und y abgeleitet werden.

LG

pah


KernSani

Zitat von: Prof. Dr. Peter Henning am 22 März 2020, 11:02:33
Sorry, aber das ist Unsinn. Die beiden Koordinaten x und y sind KEINE Farbspezifikation, beispielsweise haben braun und orange dieselben x- und y-Werte. Die Gesamthelligkeit wurde nämlich herausdividiert, also der (IMMER !) dreidimensionale Farbraum auf das zweidimensionale CIE-Diagramm abgebildet. Nachzulesen z.B. hier: https://www.amazon.de/Taschenbuch-Multimedia-Peter-Henning/dp/3446409718

Die dritte Koordinate muss also irgendwo herkommen und kann NICHT aus x und y abgeleitet werden.

LG

pah
Ich hatte gehofft, das du dich meldest, mir sind diese ganzen Farbraum-Dinger nämlich ein vollkommenes Rätsel :-) Nur zu meinem Verständnis (nachdem ich nochmal nachgelesen habe): x+y+z=1 ist schon richtig, allerdings sind die xy-Werte aus den obigen Readings nicht die tatsächlichen xy-Werte, sondern durch die Gesamthelligkeit dividierte Werte, d.h. wenn ich die Gesamthelligkeit kennen würde könnte ich echte xy-Werte berechnen und damit auch z? (Und wenn ich das richtig sehe, wäre die Helligkeit auch der 3. Parameter in color.pm)


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Prof. Dr. Peter Henning

#11
Neinnein.

Die Basiswerte der CIE-Farbspezifikation -  berechnet aus dem Strahlungsspektrum durch Integration mit Gewichtsfunktionen - sind X,Y,Z (Großuchstaben). Die Gesamthelligkeit - nennen wir sie mal L - ist

L = X + Y + Z

Daraus ergeben sich die Werte

x = X/L, y = Y/L, z = Z/L

und daraus folgt x+y+z=1.

Wenn man nun L kennt, kann man berechnen

X = x*L, Y = y*L, Z = L-X-Y

Diese sind aber NICHT direkt umrechenbar in das RGB-Farbmodel (was man etwa zur Ansteuerung von LED benötigt). Dazu muss man genauer definieren, welche Wellenlänge Rot, Grün und Blau haben. Dazu gibt es dann das Lab-Farbmodell, in dem die Koordinaten dann aber auch anders genannt werden.

LG

pah

ConRod

Vielen, vielen Dank euch :-)
Ich habe noch einen Wert, genannt color_temp der bei Werten wie 3175 liegt. Ist das mein dritter Wert? Wenn ja wie bekomme ich den zwischen 0 und 1 für die anderen beiden?

Prof. Dr. Peter Henning

Schwerlich. Aus der Farbtemperatur in Kelvin lässt sich mit Hilfe der Planckschen Strahlungsfomel zwar eine spektrale Energiedichte ableiten - 3175  K entsprechen ungefähr der Aussendung einer klassischen Glühlampe. Aber eben nicht solche Dinge wie Sättigung oder Intensität.

Darum ist die Kurve des schwarzen Strahlers im CIE-Diagramm auch nur eine Kurve - hat also noch eine Dimension weniger.

LG

pah

ConRod

Vielen, vielen Dank nochmals.

Echt interessant, ich verwende eine Müller Licht Tint Fernbedienung und Lampen.
Ich denke ich lasse das jetzt so und verwende einen up-down Switch zum ändern des z-werts.

Für mich ist das Thema jetzt geklärt.
Herzlichen Dank allen Hinweisgebern, es hat mir als blutigem Anfänger erheblich geholfen [insb. das ReadingVal als Stichwort und die Erläuterungen zum Farb-Schema] :)