Alexa/HomebridgeMapping Dimmer mit Bereich 0-255

Begonnen von trfr3ak, 05 Januar 2019, 17:19:14

Vorheriges Thema - Nächstes Thema

trfr3ak

Hallo Leute,
ich komme mit meinen Aqara Bulbs, die per zigbee2mqtt eingebunden sind nicht weiter.
Diese haben im Gegensatz zu den meisten Lampen (meine Milights z.B.) einen Dimmbereich von 0-255
Leider versteht das Alexafhem nicht und kann das nicht ansteuern. Ich habe es mit folgendem homebridgemapping versucht:On=state Brightness=brightness,minValue=0, maxValue=255, minStep=3Nun meldet Alexa zumindest nicht mehr, "Das Gerät unterstüzt das nicht", sondern man hört den erfolgreichen Ton, jedoch tut sich beim dimmen nichts.
Folgendes steht in Alexa-Fhem Log:
[2019-04-01 15:59:50] [FHEM]     caching: Brightness: 255 (as string; from '255')
[2019-04-01 15:59:50] [FHEM] Flurlicht: executing set cmd for Brightness with value 10



Weiter komme ich leider nicht.. Hat jemand eine Idee, was ich falsch gemacht habe?
Vielen Lieben Dank =)

davidwohnthier

Ich weiß nicht ob dein Problem noch aktuell ist, aber ich hab für meines eine Lösung gefunden. Ich hab nicht die Aqara Bulbs sondern IKEA Tradfri 980lm Leuchten mit der Farbtemperatur, allerdings ist der Dimmbereich dort auch 0-254. Ich hab die ganze Zeit nicht hinbekommen, dass der Status richtig übermittelt wird... Jetzt klappt es allerdings. Mein Mapping sieht jedenfalls so aus und sowohl das Dimmen funktioniert, als auch die Statusübertragung:

homebridgeMapping:
On=state,values=off;on;brightness,cmdOff=off,cmdOn=on,nocache=true
Brightness=Wandlampe:brightness,minValue=0,maxValue=254,cmd=brightness


setList:
on:noArg zigbee2mqtt/0xXXXXXXXXXX/set {"state":"on"}
  off:noArg zigbee2mqtt/0xXXXXXX/set {"state":"off"}
  brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0xXXXXXX/set {"state":"on","$EVTPART0":"$EVTPART1"}
  color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0xXXXXXXXX/set {"$EVTPART0":"$EVTPART1"}

justme1968

da gehören keine leerzeichen vor maxValue und minStep
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TomLee

Hallo,

mir hängt das homebridgemapping nach wie vor zu hoch, in der App kann ich mit dem u. a. Device jetzt ein und ausschalten und die Prozentwerte tatsächlich von 0-100 einstellen auch die Statuswerte (on/off und brightness) stimmen in der App und Fhem, kein Slider springt zurück oder die Meldung -Das Gerät reagiert nicht-.

Aber warum greift maxValue von 255 noch nicht ?

defmod MQTT2_zigbee_gu10_1 MQTT2_DEVICE 0x00158d0003274a6c
attr MQTT2_zigbee_gu10_1 IODev MQTT2_Server
attr MQTT2_zigbee_gu10_1 alexaName decke1
attr MQTT2_zigbee_gu10_1 devStateIcon {zigbee2mqtt_devStateIcon255($name)}
attr MQTT2_zigbee_gu10_1 genericDeviceType light
attr MQTT2_zigbee_gu10_1 homebridgeMapping On=state Brightness=brightness,minValue=0,maxValue=255,minStep=5,cmd=brightness
attr MQTT2_zigbee_gu10_1 icon light_control
attr MQTT2_zigbee_gu10_1 model L_02a_zigbee2mqtt_light_dimmer
attr MQTT2_zigbee_gu10_1 readingList zigbee2mqtt/0x00158d0003274a6c:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_gu10_1 room MQTT2_DEVICE
attr MQTT2_zigbee_gu10_1 setList on:noArg zigbee2mqtt/0x00158d0003274a6c/set {"state":"ON"}\
off:noArg zigbee2mqtt/0x00158d0003274a6c/set {"state":"OFF"}\
brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/0x00158d0003274a6c/set {"state":"on","$EVTPART0":"$EVTPART1"}
attr MQTT2_zigbee_gu10_1 setStateList on off
attr MQTT2_zigbee_gu10_1 webCmd toggle:on:off:brightness

setstate MQTT2_zigbee_gu10_1 OFF
setstate MQTT2_zigbee_gu10_1 2019-04-07 19:12:05 brightness 100
setstate MQTT2_zigbee_gu10_1 2019-04-07 19:12:05 linkquality 0
setstate MQTT2_zigbee_gu10_1 2019-04-07 19:12:05 state OFF


Gruß

Thomas

cabal2k

#4
Ich hab wohl das gleiche Problem.
Geht das denn überhaupt ohne Verrenkungen über dummy o.ä.?

Also bei dem Befehl "Dimme auf 100%" sowas wie "set Lampe brightness 255"?

Ich probier das jetzt seit Stunden und fürchte ich lande bei meinem hundertsten dummy dessen Notify den Eingabewert mit 2.55 multipliziert und dann an das Device schickt. Genau wie bei meiner Fernseherlautstärke Regelung. Aus der homebridgeMapping Doku und den Beispielen werd ICH nicht schlau. Scheine ja nicht alleine zu sein damit.

In der Doku steht "Über homebridgeMapping: Wenn helligkeit das Reading für die aktuelle Helligkeit enthält und die Helligkeit mit set <device> prozent xxx gesetzt wird, sieht das homebridgeMapping wie folgt aus: homebridgeMapping Brightness=helligkeit::prozent,minValue=0,maxValue=<maximalwert>"

Hä???? Was soll das denn heißen? Bei mir ist reading immer gleich setting und das heißt hier "brightness". Also "homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=255"?
Geht nicht...

Das hier hab ich versucht:

defmod MQTT2_zigbee_0x00158d0001986590 MQTT2_DEVICE zigbee_0x00158d0001986590
attr MQTT2_zigbee_0x00158d0001986590 IODev MQTT2_FHEM_Server
attr MQTT2_zigbee_0x00158d0001986590 alexaName Stehlampe
attr MQTT2_zigbee_0x00158d0001986590 alias Stehlampe
attr MQTT2_zigbee_0x00158d0001986590 devStateIcon {zigbee2mqtt_devStateIcon255($name)}
attr MQTT2_zigbee_0x00158d0001986590 homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=255
attr MQTT2_zigbee_0x00158d0001986590 icon light_control
attr MQTT2_zigbee_0x00158d0001986590 model L_02a_zigbee2mqtt_light_dimmer
attr MQTT2_zigbee_0x00158d0001986590 readingList zigbee2mqtt/0x00158d0001986590:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_0x00158d0001986590 room Alexa,MQTT2_DEVICE
attr MQTT2_zigbee_0x00158d0001986590 setList on:noArg zigbee2mqtt/0x00158d0001986590/set {"state":"ON"}\
  off:noArg zigbee2mqtt/0x00158d0001986590/set {"state":"OFF"}\
  brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/0x00158d0001986590/set {"state":"on","$EVTPART0":"$EVTPART1"}
attr MQTT2_zigbee_0x00158d0001986590 setStateList on off
attr MQTT2_zigbee_0x00158d0001986590 webCmd toggle:on:off:brightness


Bei "stelle auf 100%" geht der Wert von brightness auf 100 statt auf 255.

Mit dem HUE Gateway gehts ja richtig. Also 100%=255. Hilfe  :-[

cabal2k

#5
Sooo ... falls noch jemand ahnungsloses hier landet:

Hier stand dann doch noch der Schlüssel zum Erfolg: https://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024

ZitatminValue, maxValue, minStep: für alle int und float characteristics -> der erlaubte wertebereich in homekit
max: der maximal wert in fhem wenn dieser von maxValue abweicht

Also fehlt ein max=255 und der maxValue für Alexa ist 100. Zumindest glaube ich das. Ob von dem Mapping was überflüssig ist oder das ganze Zufall ist kann jemand anderes beantworten.
Jetzt gehts jedenfalls so wie ich mir das vorstelle über das gesamte Helligkeitsspektrum:

Die Tradfri Lampe über zigbee2mqtt benötigt den genericDeviceType "light" (sonst wurde sie bei mir nicht erkannt in der Alexa App):

attr MQTT2_zigbee_0xd0cf5efffe708156 genericDeviceType light
attr MQTT2_zigbee_0xd0cf5efffe708156 homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=100,max=255


Puh... "Alexa dimme die scheiss Lampen auf null prozent!! Und mach den verdammten Fernseher leiser"  ;D :P

EDIT:
Bei zigbee2MQTT wird der Status mit ON und OFF gesetzt. In der Alexa App wurde bei mir dadurch der Status nicht richtig berücksichtigt. Die App meldet "keine Verbindung zum Server". Während das ganze über die Sprachsteuerung durch das Lampentemplate und die SetList korrekt läuft.

In diesem Fall mappt man wie unter https://wiki.fhem.de/wiki/Alexa_und_Mappings beschrieben die Parameter (valueOn, valueOff) der Charakteristik "ON" auf die richtigen Werte:
   
attr MQTT2_zigbee_0xd0cf5efffe708156 homebridgeMapping On=state,valueOn=ON,valueOff=OFF Brightness=brightness::brightness,minValue=0,maxValue=100,max=255

Dann müsste alles perfekt funktionieren.

TomLee

Sehr sehr cool.  Mit deinem homebridgeMapping stimmt der Zustand meiner tint GU10 Deckenlampen nun auch in der App und in FHEM überein und lassen sich korrekt über Slider und Sprache steuern. Danke bin so froh das das nun klappt . Das sollte mMn in irgendeinem der entsprechenden Templates auch als Beispiel Erwähnung finden.

TomLee

Hab mich jetzt wieder mit beschäftigt, schau zu selten in die App.
Es passt ja alles per Sprache einzustellen, ein/aus und Prozentwerte und auch per App mit dem Slider und dem Schalter, stelle ich bspw. auf 50% geht das Device auf 128.

Aber stelle ich, egal auf welchem Weg, einen Wert > brightness 100 ein verschwindet der Slider und der Schalter in der App und es erscheint Warten auf <Devicename> sobald von FHEM die Rückmeldung vom eingestellten Wert bei Amazon ankommt.
Stelle ich wieder zurück auf einen Wert < 100 erscheint der Slider/Schalter wieder.

Mit homebridgemapping hab ich mich etwas beschäftigt, trotzdem ist mir nicht klar wie und ob überhaupt es möglich ist über homebridgemapping Amazon jetzt vorzumachen den zurückgemeldeten Wert praktisch durch zwei zu teilen das der Slider immer korrekt dargestellt wird.

Jemdand einen Tipp?

Gruß

Thomas

justme1968

maxValue setzen sollte helfen.

für den bereich ist factor zuständig.

genaue doku im readme zu homebridge-fhem bei github.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TomLee

maxValue war ja schon die ganze Zeit angegeben, also so:

Brightness=brightness::brightness,minValue=0,maxValue=100,max=255

Es lag gestern (den ganzen Tag 8)  ;D) nur daran das ich zu doof zum richtig rechnen war.
Und auch war mir das mit dem Hin und Rückweg noch nicht ganz klar. Aus deiner, wie immer kurzen Doku,
hatte ich mir gestern noch sowas zusammengereimt wie das der factor zweimal angegeben werden muss, einmal
für Hin und einmal für Rückweg, auch weil die Reihenfolge so betont wird, aber die scheint hier irgendwie egal. In der Doku steht bspw. er soll vor max/maxValue, bei mir steht er jetzt am Ende und es funzt trotzdem.

Klar wurde es mir heute morgen nachdem ich das hier gelesen hatte:

Zitat von: justme1968 am 22 Juni 2016, 20:41:22
... den factor angegeben hat wird auf dem hinweg mit dem factor multipliziert und auf dem rückweg durch den faktor geteilt.

So klappts jetzt

Brightness=brightness::brightness,minValue=0,maxValue=100,max=255,factor=2.55



Übrigens genau für so Fälle hab ich den Sprachbefehl für den restart von alexa-fhem benötigt. (und der war hier nötig  ;D)
Die Änderungen im Attribut homebridgemapping werden nämlich nicht automatisch übernommen es ist ein restart nötig.



TomLee

factor ist auch nicht zielführend gewesen. 8)

Das der Slider in der App korrekt dargestellt wird, hab ich mir jetzt mit einem userreadings beholfen:

Internals:
   CID        0x00158d0003274a6c
   DEF        0x00158d0003274a6c
   DEVICETOPIC MQTT2_zigbee_gu10_1
   FUUID      5ca9abb4-f33f-78f5-2521-04b9aefb5c58686c
   IODev      MQTT2_Server
   LASTInputDev MQTT2_Server
   MQTT2_Server_MSGCNT 262
   MQTT2_Server_TIME 2019-08-11 17:22:26
   MSGCNT     262
   NAME       MQTT2_zigbee_gu10_1
   NR         109
   STATE      OFF
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-08-11 17:22:26   abrightness     70.4724409448819
     2019-08-11 17:22:26   brightness      179
     2019-08-11 17:22:26   linkquality     0
     2019-08-11 17:22:26   state           OFF
Attributes:
   IODev      MQTT2_Server
   alexaName  decke
   devStateIcon {zigbee2mqtt_devStateIcon255($name)}
   genericDeviceType light
   group      Wohnzimmer
   homebridgeMapping Brightness=abrightness,cmd=brightness,max=255,minValue=0,maxValue=100
   icon       light_control
   model      L_02a_zigbee2mqtt_light_dimmer
   readingList zigbee2mqtt/0x00158d0003274a6c:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    on:noArg zigbee2mqtt/0x00158d0003274a6c/set {"state":"ON"}
off:noArg zigbee2mqtt/0x00158d0003274a6c/set {"state":"OFF"}
brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/0x00158d0003274a6c/set {"state":"on","$EVTPART0":"$EVTPART1"}
   setStateList on off
   userReadings abrightness {ReadingsVal("MQTT2_zigbee_gu10_1","brightness",0)/254*100}
   webCmd     toggle:on:off:brightness


Wie ist den die richtige Syntax mit Readingsval zu rechnen ? Es geht beides.

{ReadingsVal("MQTT2_zigbee_gu10_1","brightness",0)/254*100}
vs
{(ReadingsVal("MQTT2_zigbee_gu10_1","brightness",0)/254)*100}

davidwohnthier

#11
Falls es jemandem hilft.. Ich hab jetzt wieder irgendwie an der IKEA Trafri Lampe rumschrauben müssen. Es ist die Color_Temp 980lm Lampe.
Dieses Mapping funktioniert jetzt wirklich inklusive der Tatsache, dass der state richtig wiedergegeben wird in Homekit egal wo man was herumstellt.

Ich hab es jetzt noch nicht ohne ausprobiert, aber man muss den Device name eben individuell anpassen...



On=state,valueOn=ON,valueOff=OFF,valueBrightness=brightness,valueColorTemperature=color_temp,values=OFF;ON;Brightness;ColorTemperature,cmdOff=off,cmdOn=on,cmdBrightness=brightness,cmdColorTemperature=color_temp,nocache=true
Brightness=Wandlampe:brightness,minValue=0,maxValue=254,cmd=brightness
ColorTemperature=Wandlampe:color_temp,minValue=250,maxValue=455,cmd=color_temp


Bei den Temperatur-Einstellungen bekomme ich es noch nicht so richtig hin. Die von Apple integrierten Farbgebungen sind zum Teil außerhalb des Spektrums bzw. eigentlich gibt es nur drei Einstellungen obwohl 6 Feler da sind: 250, 303, 400

@just.me: Ich komme nicht weiter den Color-Picker richtig einzustellen. Wenn ich die minValue ändere erscheinen zwar die richtigen Temperaturen, aber diese werden nicht von der Lampe unterstützt (also unter 250 vor allem). factor=1.5 bringt auch nichts :(


Edit:

Bekomme jetzt mit dem folgendne zumindest einen halbwegs sinnvollen Colorpicker hin... Also auch wenn es nach wie vor nur drei funktionierende Einstellungen gibt dadurch..

On=state,valueOn=ON,valueOff=OFF,valueBrightness=brightness,valueColorTemperature=color_temp,values=OFF;ON;Brightness;ColorTemperature,cmdOff=off,cmdOn=on,cmdBrightness=brightness,cmdColorTemperature=color_temp,nocache=true
Brightness=Wandlampe:brightness,minValue=0,maxValue=254,cmd=brightness
ColorTemperature=Wandlampe:color_temp,factor=0.42,minValue=0,maxValue=159,cmd=color_temp

Pati_Alpha

Hey,

ich nutze die kalt/warm-dimmbaren Tradfri-Birnen an einem Tradfri-Gateway.

Mein HomebridgeMapping dazu ist aktuell:
On=onoff,valueOn=1,valueOff=0,cmdOn=on,cmdOff=off,valueBrightness=pct
ColorTemperature=ct,cmd=ct


Damit habe ich den Dimmer-Slider, der auch nicht springt wenn man Werte außer 0 oder 100 anwählt und 6 Color-Templates in HomeKit die ich dann vorkonfiguriere indem ich eins antippe und dann in Fhem eine der 3 Farb-Schaltflächen für kalt/mittel/warm drücke. Das hinterlegt HomeKit sich dann dort auch und wenn man das Device in HomeKit nicht grade offen hat, wählt er durch Farbtemp-Änderung in FHEM auch die richtige Schaltfläche aus. ;)

FunkOdyssey

In einem anderen Thread hattest du deine Lösung ja auch präsentiert und fand deinen Hinweis auf das ColorTemperature-Characteristic super.
Aber den Rest finde ich ein wenig komisch. Du setzt viele Werte, die bereits standardgemäß schon gesetzt sind.
Und ich kenne "valueBrightness" nicht. Bist du dir sicher, dass das richtig ist? Ich denke, das macht keinen Sinn.

fhem@supergut

Danke, das war die Lösung für's Dimmen von Osram Lampen: max=255 anhängen am homebridgeMapping.

attr MQTT2_zigbee_0xd0cf5efffe708156 homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=100,max=255