Farbwerte umrechnen bzw. nutzen

Begonnen von 87insane, 14 Mai 2020, 10:09:09

Vorheriges Thema - Nächstes Thema

87insane

Hallo zusammen...

ich stehe gerade vor dem Problem, ein Gerät steuern zu wollen welches RGB nutzt. Als Input habe ich aber hue Farbwerte.

Details:
SIDOH HUB empfängt von einer RGB-CCT Fernbedienung hue Farbwerte wenn man den Farbkreis nutzt.
Gesteuert werden soll ein Shelly RGBW2. Dieser möchte gerne set GERÄT rgb und dementsprechend auch RGB Werte.

Beispiel, Eventmonitor INPUT Fernbedienung:
2020-05-14 10:23:00 MQTT2_DEVICE MQTT2_milight_0x143F_2 hue: 318
2020-05-14 10:23:00 MQTT2_DEVICE MQTT2_milight_0x143F_2 hue: 294
2020-05-14 10:23:00 MQTT2_DEVICE MQTT2_milight_0x143F_2 hue: 267
2020-05-14 10:23:01 MQTT2_DEVICE MQTT2_milight_0x143F_2 color_temp: 361
2020-05-14 10:23:01 MQTT2_DEVICE MQTT2_milight_0x143F_2 color_temp: 346
2020-05-14 10:23:02 MQTT2_DEVICE MQTT2_milight_0x143F_2 color_temp: 301
2020-05-14 10:23:03 MQTT2_DEVICE MQTT2_milight_0x143F_2 brightness: 31
2020-05-14 10:23:03 MQTT2_DEVICE MQTT2_milight_0x143F_2 brightness: 77


Nun würde ich mir was notify ähnliches bauen wollen um den Befehl direkt an die entsprechende Lampe zu senden.
Das ganze an sich ist kein Problem aber wie bekomme ich es sinnvoll und einfach hin, den hue Wert in RGB an den Shelly weiter zu reichen?
Kann man das mit einem colorpicker automatisch umwandeln oder nutzen?

Danke für jede Info und Gruß,
87Insane

KölnSolar

Den Wiki-Eintrag Color kennst Du ? Die Umwandlungsfunktion weiter unten auf der Seite ?

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Beta-User

#2
Wie KölnSolar schreibt: In Color.pm gibt es ein paar Funktionen, mit denen man konvertieren kann, siehe z.B. auch den auskommentierten Code hier: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template#L2492.

Hier brauchst du das aber vermutlich nicht, der Hub kann auch andere Formate liefern, insbesondere ein "kalkuliertes RGB" (bitte selbst mal testen, ob bzw. welche Felder da auswählbar sind.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Hatte im Hub geschaut und finde da keine Einstellungen zu. In welchem Menü sind die?


Den Wiki Eintrag habe ich mir vorhin mehrfach angesehen aber bin da noch nicht wirklich durchgestiegen. Hatte mir auch im SVN die mqtt Templates angesehen, in der Hoffnung da was zu finden. Allerdings brachten mir die Funde nichts da ich die Syntax nicht ganz nachvollziehen kann.

Beta-User

Settings -> MQTT -> group state fields.

Auswahl (gem. API-Doku):
Zitatgroup_state_fieldsArray of strings (GroupStateField) Items Enum: "state" "status" "brightness" "level" "hue" "saturation" "color" "mode" "kelvin" "color_temp" "bulb_mode" "computed_color" "effect" "device_id" "group_id" "device_type" "oh_color" "hex_color"
Würde auf hex_color tippen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

So wie ich das verstehe ist damit nur gemeint, was gesendet wird in den periodischen Updates. Egal was ich da anklicke oder auch nicht, ändert sich der Output nicht.
Wärest du so lieb und würdest mir deine SIDOH HUB MQTT Konfig mal komplett senden? Denke das würde einige interessieren....


Beta-User

Hast du mir die Info, wie man die komplett abruft? (Ist wenn, dann aber auch "unter Vorbehalt"; das ist alles irgendwann entstanden und funktioniert. U.a. deswegen hatte ich in dem "war..."-Thread mal geschrieben, dass es sinnvoll wäre, jemand (=jemand anderes!) würde sich die Mühe machen, das mal genau auszugucken, was man eigentlich wirklich braucht (und was ggf. auch nicht)...).

Und macht das Ding periodische updates? Afaik nur, wenn man schaltet. Dabei wird nach meinen Erfahrungen auch in den Differenzmeldungen (so die aktiviert sind? = "state"-Topic-branch) alles _geänderte_ mitgeschickt (bzw. eben nur das), und der "states"-Zweig enthält eben alles (oder anders rum).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Screenshots, abschreiben oder vermutlich eher deine Vorgehensweise: http://ip/settings

Hier versuche ich ja gerade zu verstehen aber das ist bisher nicht ganz klar in meinen Augen.

Anbei meine Settings. Hab alles vor MQTT weg genommen (bei mir sollte alles default laut Doku sein):
"mqtt_server":"192.168.20.3",
"mqtt_username":"benutzername",
"mqtt_password":"tollesPW123",
"mqtt_topic_pattern":"milight/:hex_device_id/:device_type/:group_id",
"mqtt_update_topic_pattern":"milight/updates/:hex_device_id/:device_type/:group_id",
"mqtt_state_topic_pattern":"milight/states/:hex_device_id/:device_type/:group_id",
"mqtt_client_status_topic":"milight/LWT",
"simple_mqtt_client_status":false,
"discovery_port":48899,
"listen_repeats":3,
"state_flush_interval":10000,
"mqtt_state_rate_limit":500,
"mqtt_debounce_delay":500,
"packet_repeat_throttle_sensitivity":0,
"packet_repeat_throttle_threshold":200,
"packet_repeat_minimum":3,
"enable_automatic_mode_switching":false,
"led_mode_wifi_config":"Fast toggle",
"led_mode_wifi_failed":"Fast toggle",
"led_mode_operating":"Off",
"led_mode_packet":"Flicker",
led_mode_packet_count":3,
"hostname":"gw_milight",
"rf24_power_level":"MAX",
"rf24_listen_channel":"LOW",
"wifi_static_ip":"",
"wifi_static_ip_gateway":"",
"wifi_static_ip_netmask":"",
"packet_repeats_per_loop":10,
"home_assistant_discovery_prefix":"",
"wifi_mode":"n",
"default_transition_period":500,
"rf24_channels":["LOW",
"MID",
"HIGH"],
"device_ids":[],
"gateway_configs":[],
"group_state_fields":["state",
"status",
"device_id",
"group_id",
"device_type",
"oh_color"],
"group_id_aliases":{}}


Beta-User

Ok, ich schau mal, aber das dürfte ziemlich identisch sein.

Hier fehlt aber das "hex_color"?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Egal ob ich es an habe oder nicht. Es ändert nichts. Hatte vor der Settings Seite nur eben anstelle von HEX mit OH getestet ob da denn was passiert.

TomLee

hue,rgb,color etc. verliere immer die Lust wenn ich mich damit beschäftigen wollte  ;D.

Hier mal eine Definition an der ich vor rd. 2-3 Monaten wegen rgb rumgespielt habe, keine Ahnung ob das korrekt ist, es gibt aber auf 2 wegen einen rgb-Wert, mein ich, kann auch daneben liegen.

i. A. die Einstellungen in der Bridge (1.10.5.).

defmod MQTT2_Mi_Wecklicht MQTT2_DEVICE milight_0x8D56_1
attr MQTT2_Mi_Wecklicht IODev MQTT2_Server
attr MQTT2_Mi_Wecklicht alexaName jupiter
attr MQTT2_Mi_Wecklicht comment To switch device also on when changing brightness, change payload pattern to {"status":"ON","$EVTPART0":"$EVTPART1"} or add a new element to setList, similar to brightness, e.g.brightness_on and change payload pattern as described.\
\
color_b:0 color_g:0 color_r:0
attr MQTT2_Mi_Wecklicht devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
attr MQTT2_Mi_Wecklicht eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/
attr MQTT2_Mi_Wecklicht genericDeviceType light
attr MQTT2_Mi_Wecklicht group Wohnzimmer
attr MQTT2_Mi_Wecklicht homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_Mi_Wecklicht icon light_control
attr MQTT2_Mi_Wecklicht jsonMap level:brightness
attr MQTT2_Mi_Wecklicht model esp_milight_hub_rgbw_bulb
attr MQTT2_Mi_Wecklicht readingList milight/states/0x8D56/rgbw/1:.* { json2nameValue($EVENT,'',$JSONMAP) }\
milight/updates/0x8D56/rgbw/1:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_Mi_Wecklicht room MQTT2_DEVICE
attr MQTT2_Mi_Wecklicht setExtensionsEvent 1
attr MQTT2_Mi_Wecklicht setList on:noArg milight/0x8D56/rgbw/1 {"status":"ON","level":"40"}\
  on_transition:slider,3,10,3600 milight/0x8D56/rgbw/1 {"status":"ON","transition":$EVTPART1}\
  off:noArg milight/0x8D56/rgbw/1 {"status":"OFF"}\
  off_transition:slider,3,10,3600 milight/0x8D56/rgbw/1 {"status":"OFF","transition":$EVTPART1}\
  brightness:colorpicker,BRI,0,1,100 milight/0x8D56/rgbw/1 {"level":"$EVTPART1"}\
  hue:colorpicker,HUE,0,1,359 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\
  command:uzsuSelectRadio,Weiss,Nacht milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\
sun:noArg milight/0x8D56/rgbw/1 {"status":"ON","transition":600}
attr MQTT2_Mi_Wecklicht userReadings Test2:color_r.* {Color::rgb2hex(ReadingsVal($name,"color_r",255),ReadingsVal($name,"color_g",255),ReadingsVal($name,"color_b",255))}, hue:bulb_mode.*white {"0"},\
test {my $hue=ReadingsVal($name,"hue","0");;;;($hue eq "100")?"FFFFFF":Color::hsv2hex(($hue/100),1,1)},\
rgb {my $path = (split("#",ReadingsVal($name,"color","")))[1];; }
attr MQTT2_Mi_Wecklicht webCmd brightness:hue:command
attr MQTT2_Mi_Wecklicht webCmdLabel Helligkeit\
:Farbe\
:Modus\
:

setstate MQTT2_Mi_Wecklicht OFF
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 Test2 FF6600
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 brightness 56
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 bulb_mode color
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:40:13 color #FF6600
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 color_b 0
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 color_g 102
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 color_r 255
setstate MQTT2_Mi_Wecklicht 2020-04-23 19:39:05 command set_white
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 device_id 36182
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 device_type rgbw
setstate MQTT2_Mi_Wecklicht 2020-05-12 22:50:45 effect white_mode
setstate MQTT2_Mi_Wecklicht 2020-03-16 14:18:09 group_id 1
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 hue 24
setstate MQTT2_Mi_Wecklicht 2020-03-21 18:41:51 on_transition set 93
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 rgb FF6600
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 state OFF
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 status OFF
setstate MQTT2_Mi_Wecklicht 2020-03-24 18:44:47 sun set
setstate MQTT2_Mi_Wecklicht 2020-05-14 15:48:03 test 8EFF00


Gruß

Thomas

Beta-User

Ah, ok. Hatte mich damit (OH-Color etc.) nie intensiver beschäftigt, aber lt. dem hier https://github.com/sidoh/esp8266_milight_hub/issues/375#issuecomment-453783262 müßte man den Rest "deselektieren":
You'll find a new oh_color option under state fields.  De-select the other color fields, enable this one, and see if it works for you.Das ganze scheint auch im Sinne einer Prioritätenliste abgearbeitet zu werden, siehe ab hier: https://github.com/sidoh/esp8266_milight_hub/blob/master/lib/MiLightState/GroupState.cpp#L837

Von daher ist der Weg über userReadings wohl der zielführendste, aber bitte mit trigger... (Wenn man den Wert wirklich braucht, was ich beim FB-Modus für andere Devices mal anzweifeln würde; notfalls kann man den dann auf dieselbe Weise im Perlcode dann ableiten, wenn man ihn tatsächlich für einzelne Zieldevices braucht!).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

#12
AhhhH!

Jetzt verstehe ich das und das geht auch... Super! Sogar noch besser als ich dachte. Der Wert beim scrollen über das Farbrad verändert sich bei hue die ganze Zeit. Bei computed color kommt r g b im jeweils eigenem reading. Bei hex kommt rgb soweit ich das erkennen kann. Aber immer erst dann, wenn man die letzte Farbe gewählt hat/das Rad los lässt. Das ist gut das man so nicht sinnlos durch die Gegend triggert.

Ergebniss hex color:
color #00FF77

Ergebniss computed color:
color_b 29
color_g 0
color_r 255

Ergebnis oh color:
Keine Ahnung was das macht. Bei mir nichts.

Man darf wohl am besten eh immer nur eins wählen. Interessant den SIDOH Hub auch noch ein wenig besser zu verstehen. Ich muss mich da noch ein wenig mehr rein denken. Aber ich glaube es macht Sinn mal mehr über diesen HUB zu sprechen und diesen ggf. etwas aus zu weiten in FHEM. Sicher gibt es da einiges an Ideen :)

PS: Und ich meine sogar zu glauben, dass der color Picker in FHEM die # sogar mit nehmen würde. Ich brauch die also nicht mal rauß filtern. Sowas habe ich zumindest im Hinterkopf...

Beta-User

Zitat von: 87insane am 14 Mai 2020, 17:14:08
Super! Sogar noch besser als ich dachte. Der Wert beim scrollen über das Farbrad verändert sich bei hue die ganze Zeit. Bei computed color kommt r g b im jeweils eigenem reading. Bei hex kommt rgb soweit ich das erkennen kann. Aber immer erst dann, wenn man die letzte Farbe gewählt hat/das Rad los lässt. Das ist gut das man so nicht sinnlos durch die Gegend triggert.
???
Das liest sich so, als hättest du erst gedacht, es wäre ein völlig blöder Vorschlag, sich die Bridge mal näher anzusehen... Ich mache ja durchaus hin und wieder "Weiß noch nicht so recht, ob und wie das geht"-Vorschläge, aber der gehörte eigentlich ausdrücklich nicht in diese Kategorie, und auch die Hardware zusammenzustöpseln ist keine große Kunst.

Bin etwas enttäuscht... (aber vor allem froh, dass du bestätigst, dass das wirklich "nett" und "easy" ist :P ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Ne ne neeee....

Ich weiß nicht warum aber es ging vorhin echt nicht. Hab den ganzen Kram aber auch erstmal ein paar Stunden bei Seite gelegt und dann nochmal. Dabei bin ich zu den Ergebnissen gekommen. Was ich meine mit genauer ansehen usw ist die Gestaltung von genau dem worüber wir hier reden. Von den Prios wusste ich nichts.... Ist aber wichtig und interessant zu wissen.