mqtt2.speech.template:TINT GU-10 white

Begonnen von TomLee, 03 Februar 2020, 18:34:44

Vorheriges Thema - Nächstes Thema

TomLee

#60
Hab mich ausnahmsweise mal gern mit dem Thema Licht beschäftigt, aber nur weil ich mehrere Dinge die ich im Laufe der Zeit im MQTT2 Kontext mitgenommen habe hier mal in der Praxis umsetzen konnte.

Spricht was dagegen diese "Operationen" am MQTT2-Device vorzunehmen (im Template zu übernehmen), um sich das lästige homebridgeMapping zu sparen:

Zitatdefmod MQTT2_zigbee_gu10_3 MQTT2_DEVICE 0x00158d000340eac3
attr MQTT2_zigbee_gu10_3 userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 structexclude wzdl wzdl_map
attr MQTT2_zigbee_gu10_3 IODev MQTT2_Server
attr MQTT2_zigbee_gu10_3 alexaName decke3
attr MQTT2_zigbee_gu10_3 devStateIcon {zigbee2mqtt_devStateIcon255($name)}
attr MQTT2_zigbee_gu10_3 devicetopic zigbee2mqtt/0x00158d000340eac3
attr MQTT2_zigbee_gu10_3 event-on-change-reading state,pct,ct
attr MQTT2_zigbee_gu10_3 genericDeviceType light
attr MQTT2_zigbee_gu10_3 getList state:noArg state $DEVICETOPIC/get {"state":""}
attr MQTT2_zigbee_gu10_3 group Wohnzimmer
attr MQTT2_zigbee_gu10_3 icon light_control
attr MQTT2_zigbee_gu10_3 imageLink /fhem/deviceimages/mqtt2/404006-404008-404004.jpg
attr MQTT2_zigbee_gu10_3 jsonMap color_temp:ct\
color_temp_startup:ct_startup\
brightness:pct

attr MQTT2_zigbee_gu10_3 model zigbee2mqtt_light_cct
attr MQTT2_zigbee_gu10_3 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }\
$DEVICETOPIC:.* { $EVENT =~ m,brightness..(\d+), ? {"pct"=>sprintf('%.0f',$1/2.55)} : undef }
attr MQTT2_zigbee_gu10_3 room MQTT2_DEVICE,Wohnzimmer
attr MQTT2_zigbee_gu10_3 setList on:noArg $DEVICETOPIC/set {"state":"ON"}\
off:noArg $DEVICETOPIC/set {"state":"OFF"}\
pct:colorpicker,BRI,0,5,100 {$EVTPART1=sprintf('%.0f',$EVTPART1*2.55);;qq($DEVICETOPIC/set {"state":"on","brightness":$EVTPART1})}\
ct_startup:coolest,cool,neutral,warmest,previous $DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}\
ct:colorpicker,CT,153,2,370 $DEVICETOPIC/set {"color_temp":"$EVTPART1"}\
effect:blink,breathe,okay,channel_change,finish_effect,stop_effect $DEVICETOPIC/set {"$EVTPART0":"$EVTPART1"}
attr MQTT2_zigbee_gu10_3 setStateList on off effect
attr MQTT2_zigbee_gu10_3 webCmd toggle:on:off:pct:ct
attr MQTT2_zigbee_gu10_3 webCmdLabel Helligkeit\
:

setstate MQTT2_zigbee_gu10_3 ON
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 color_mode color_temp
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 ct 250
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 ct_startup 65535
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 linkquality 191
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 pct 100
setstate MQTT2_zigbee_gu10_3 2021-10-18 17:43:11 state ON

Damit wird jetzt ohne homebridgeMapping der Slider und Status in der APP korrekt angezeigt und auch die Auswahl der Farbtemperatur ist möglich.
Das ON/OFF groß geschrieben wird ist Alexa egal, wie das mit Homebridge aussieht kann ich nicht testen, hab ich deinstalliert zur Zeit.
Für pct hab ich mich entschieden nachdem ich mir hier die Zeilen ab 1944 ff. angeschaut (nicht verstanden/begriffen) habe.

Beta-User

Also:
- das mit ct macht in jedem Fall Sinn und ist schon im svn :) .
- das nach pct zu ziehen, hatte ich "damals" aus irgendeinen Grund verworfen, vermutlich auch um Rundungsprobleme beim Hin- und Herrechnen nach Möglichkeit zu vermeiden. Da wir das mapping ja dann auch irgendwann hinbekommen hatten mit dem factor, sehe ich das jetzt nicht als den großen Nachteil an, und man muss nicht jedesmal rechnen, sondern nur, wenn man wirklich per Sprache steuert.

Bin im Moment noch nicht so recht überzeugt, ob sich das lohnt (weil wenn, dann relativ kurzfristig: alles...). Vielleicht äußert sich dazu ja mal noch jemand?

Ad #1944: Das sieht mir nach einer pauschalen Umrechnungslogik anhand des setter-Namens (und teilweise des TYPE) aus. RHASSPY macht das ähnlich, und vermutlich wäre es nicht die große Aktion, MQTT2_DEVICE und brightness als Bereich von 0-255 einzupflegen. Müßte man justme1968 mal anpingen, wie er das sieht. attrTemplate @m2 zieht das jedenfalls afaik stringent durch, dass brightness immer bis 255 geht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

#62
Zum Verständnis, wenn mans genau nimmt sind die Quotes um $EVTPART1, in der payload des setter ct, doch bei numerischen Angaben nicht korrekt, auch wenns so in der Doku steht ?

Beta-User

 ;D vermutlich könnte/müßte man jetzt irgendwo mal nach den Spezifikationen für JSON-Blobs suchen, um rauszufinden, wie die reine Lehre aussieht. An sich würde ich annehmen, dass du zumindest insoweit recht hast, dass die Quotes entfallen dürfen.

Aber da es zum einen so in der Doku zu stehen scheint und zum zweiten auch in der Praxis funktioniert, würde ich das jetzt nicht um der reinen Lehre willen anpassen, selbst wenn es ohne auch funktioniert (was anzunehmen ist, da es mit brightness ja auch geht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

ct_startup:coolest,cool,neutral,warmest,previous $DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}
=>
ct_startup:coolest,cool,neutral,warmest,previous $\DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}

TomLee

[OT]
Zitat... irgendwo mal nach den Spezifikationen für JSON-Blobs suchen

Wo stehen denn für dich /euch die Spezifikationen, JSON.ORG ?, wenn mir dort jemand zeigt wo genau steht das ein in Quotes angegebener numerischer Wert ein String ist, bekommt er ein DANKE und einen Lolly dafür.
[/OT] :(

rudolfkoenig

Zitatwenn mir dort jemand zeigt wo genau steht das ein in Quotes angegebener numerischer Wert ein String ist, bekommt er ein DANKE und einen Lolly dafür.
Ich habe in der Suchmaschine "JSON specification numeric" eingegeben, und raus kam https://json-schema.org/understanding-json-schema/reference/numeric.html
Wenn man JavaScript etwas kennt, dann ist das auch natuerlich: "1"+1 => "11", 1+1=2, kann man leicht in der JS-Console des Browsers ausprobieren.

TomLee

ZitatWenn man JavaScript etwas kennt

Noch nicht mal etwas, ich hab bisher erfolgreich einen großen Bogen drum gemacht, gefällt mir auch nicht wenn ich darüber nachdenke, aufgrund das (gerade) du das erwähnst , werd ich mich jetzt erst recht ab und an auch mal darin einlesen/damit befassen, bleibt offensichtlich nicht aus (auch ohne FHEM (-Forum)).

Danke