FIBARO FGRGBWM441 RGBW Controller

Begonnen von RalfK, 08 April 2015, 15:28:29

Vorheriges Thema - Nächstes Thema

RalfK

Hallo beisammen,

ich versuche den Fibaro RGBW-Controller anzusteuern. Aktueller Stand ist, dass der Controller erkannt wird, ich ihn ein- und ausschalten kann sowie alle Ausgänge (an denen ein RGB-LED-Streifen hängt) dimmen kann. Alle regeln gemeinsam, also weisses Licht. Nun würde ich gerne die einzelnen Kanäle (Farben) ansteuern können und stecke fest.

Ich finde/sehe keine Möglichkeit, einen Kanal einzeln anzusteuern. Ausserdem verwirren mich Teile der Doku, des Wikis und des Forums, wo z.B. von Kanälen (Class MULTI_CHANNEL) gesprochen wird, die ich mit get <device> mcCapability <chid> anlegen kann (testweise gemacht), aber wie ich dann einen Kanal lesen oder schreiben kann, sehe ich nicht (meine Hoffnung ist, dass darüber die Farbsteuerung funktioniert).

Hier die fhem list-Ausgabe für den Controller:

fhem> list zw_rgb_1
Internals:
   DEF        d30c41f9 3
   IODev      zw_stick
   NAME       zw_rgb_1
   NR         51
   STATE      off
   TYPE       ZWave
   homeId     d30c41f9
   id         03
   lastMsgTimestamp 1428495162
   Readings:
     2015-04-03 10:14:32   configAssociationsCommandClassChoice NormalRGBWCOLORCONTROLSET
     2015-04-02 22:33:05   configMaximumDimmerLevel 255
     2015-04-03 09:32:18   configReportingChangesInEnergyConsumed45 10
     2015-04-02 22:37:32   energy          0 kWh
     2015-04-08 13:01:18   mcCapability_02 UNKNOWN_11 UNKNOWN_01 SWITCH_MULTILEVEL
     2015-04-08 13:01:55   mcCapability_03 UNKNOWN_11 UNKNOWN_01 SWITCH_MULTILEVEL
     2015-04-08 13:04:25   mcCapability_04 UNKNOWN_11 UNKNOWN_01 SWITCH_MULTILEVEL
     2015-04-08 13:03:07   mcEndpoints     total 5, identical
     2015-04-02 22:30:56   model           FIBARO System FGRGBWM441 RGBW Controller
     2015-04-02 22:30:56   modelConfig     fibaro/fgrgbwm441.xml
     2015-04-02 22:30:56   modelId         010f-0900-1000
     2015-04-02 22:37:09   power           0.1 W
     2015-04-02 22:38:00   reportedState   dim 1
     2015-04-08 10:01:20   state           off
     2015-04-02 22:38:26   swa             on off
     2015-04-08 14:13:15   transmit        OK
     2015-04-08 14:12:42   version         Lib 3 Prot 3.52 App 25.25
Attributes:
   IODev      zw_stick
   classes    SWITCH_ALL MANUFACTURER_SPECIFIC VERSION SWITCH_MULTILEVEL MULTI_CHANNEL CONFIGURATION METER SENSOR_MULTILEVEL ASSOCIATION ZIP_ADV_SERVER
   room       Galerie


Im Anhang commands.txt sind die set-Befehle, welche fhem für den Contoller kennt, aufgelistet.

Hat jemand einen Tipp/Hinweis/Pointer für mich?

rudolfkoenig

Vorneweg: ich kenne den Controller nicht.

MULTI_CHANNEL ist "normalerweise" fuer Geraete wie Mehrfachsteckdosen gedacht, jeder Kanal schaltet einen der Steckdosen. FHEM legt nach der Assoziation ein Hauptgeraet an (Kanal 1 / Steckdose 1), und nach einem get mcCapability eine FHEM-Instanz fuer die weiteren Kanaele (vulgo Steckdosen). Damit hat man in FHEM ein Geraet fuer jeden der Steckdosen, und man kann diese einzeln schalten und konfigurieren.

FALLS in deinem Fall die Farben ueber die Kanaele 2/3/4 zu steuern sind, dann sollte man Kanal 2 als zw_rgb1_red anlegen, und man kann ueber dieses FHEM-Geraet den Rot-Anteil steuern mit
set zw_rgb1_red dim 20
Weiterhin gehe ich davon aus, dass je nach configAssociationsCommandClassChoice Einstellung das Geraet sich anders verhaelt. Das ist eine Theorie, und muss nicht so sein.

Etwas beunruhigend sind die UNKNOWN Klassen, d.h. FHEM kennt nicht mal die Namen dafuer, geschweige denn sind sie implementiert.

micha80

Hallo zusammen,

ich habe seit vorgestern eine Zipato RGBW LED Bulb.
Die Command Class "ZIP_ADV_SERVER" wird woanders als COLOR CONTROL gehandelt.

Damit konnte ich meiner Lampe dann auch die verschiedenen Farben beibringen.
Leider bin ich kein Programmierer, aber ich denke, mit den Hinweisen, kann es jemand ordentlich implementieren :)

und zwar habe ich quick&dirty in der 10_ZWave.pm folgende Änderungen gemacht:

100,138c100
>   ZIP_ADV_SERVER           => { id => '33', },
---
<   COLOR_CONTROL           => { id => '33',
<     get   => { ccCapabilityGet   => '01', # no more args
<                ccStatus          => '03', # no more args
<              },
<     set   => {
<                resettoWhiteWarm   => '050a00ff0101020003000400', # 100% warm, minimal cold, otherwise blub is dimmed
<                resettoWhiteCold   => '050a000001ff020003000400',
<                resettoRed         => '050a0000010002ff03000400', # 100% red
<                resettoGreen       => '050a00000100020003ff0400', # 100% green
<                resettoBlue        => '050a000001000200030004ff', # 100% blue
<                resettoYellow      => '050A00000100027f037f0400', # 50% red, 50% green
<                 },
<     parse => { "043302(.*)"  => 'ccCapabilityGetResponse:$1', #answer to ccCapabilityGet
<                "043304(.*)"  => 'ccStatusResponse:$1', },
<     },


wie die codes zusammen gesetzt werden, habe ich hier gefunden.

mfg
micha

p.s. das gilt für Version 1 der Klasse, Version 2 hat noch mehr Parameter

rudolfkoenig

Habs unveraendert eingecheckt.  Alle Achtung, dass du (Programmierer oder nicht) aus dem verlinkten Doku diese Strings zusammenstellen konntest.

micha80

Vielen Dank, aber es sind nur paar Nullen und FF's :)
02 - red, 03 - green, usw. Size of Data:10(0A)

Die get-Abfragen stünden noch auf der Todo Liste,
Und: das Ganze als RGB...

@RalfK: klappt das mit deinem Gerät auch?

Mfg
Micha

RalfK

Zitat von: micha80 am 09 April 2015, 11:50:39
Vielen Dank, aber es sind nur paar Nullen und FF's :)
02 - red, 03 - green, usw. Size of Data:10(0A)

Die get-Abfragen stünden noch auf der Todo Liste,
Und: das Ganze als RGB...

@RalfK: klappt das mit deinem Gerät auch?


Die Befehle für die Weisseinstellungen haben erwartungsgemäss bei dem RGB-Streifen nichts bewirkt, die für die Farben aber schon, und auch in der richtigen Zuordnung. Am Wochenende bastel ich mal ein set-Kommando, dem man einen RGB-Hexstring übergibt. Und im Idealfall kann man irgendwann eine Verbindung zum Colorpicker herstellen  :)

micha80

Zitat von: RalfK am 09 April 2015, 12:17:21
Und im Idealfall kann man irgendwann eine Verbindung zum Colorpicker herstellen  :)

Ich habe mir jetzt mit 2 dummies geholfen: einer für die Helligkeit und einer für die 4 Farben.
Colorpicker wär natürlich schon hue ;)

Mfg

RalfK

Zitat von: micha80 am 09 April 2015, 12:37:00
Ich habe mir jetzt mit 2 dummies geholfen: einer für die Helligkeit und einer für die 4 Farben.
Colorpicker wär natürlich schon hue ;)

@micha80: Kannst Du bitte mal den folgenden Code testen? Da ich ja "nur" die drei
RGB-Channel benutze, kann das bei Deiner LED-Bulb ja schiefgehen. Notwendige
Anpassungen der Config-Datei stehen im Doku-Schnipsel. Referenz ist
$Id: 10_ZWave.pm 8417 2015-04-11 11:13:53Z rudolfkoenig


10d9
< use Color;
106,107c105,111
<                rgb                => '050a0000010002%02x03%02x04%02x',
<                wcrgb              => '050a00%02x01%02x02%02x03%02x04%02x',
---
>                resettoWhiteWarm   => '050a00ff0101020003000400',
>                                               # 100% warm, minimal cold, otherwise bulb is dimmed
>                resettoWhiteCold   => '050a000001ff020003000400',
>                resettoRed         => '050a0000010002ff03000400', # 100% red
>                resettoGreen       => '050a00000100020003ff0400', # 100% green
>                resettoBlue        => '050a000001000200030004ff', # 100% blue
>                resettoYellow      => '050A00000100027f037f0400', # 50% red, 50% green
336d339
<     rgb          => "colorpicker,RGB",
380,381d382
<
<   FHEM_colorpickerInit();
457,460d457
<   if(($type eq "set") && ($cmd eq "rgb")) {
<      @a = hex2rgb(@a);
<   }
<
601,610d597
< # Splitting RGB-Hexvalue into three decimal values
< sub
< hex2rgb($) {
<     my ($hex) = @_;
<     if ( uc($hex) =~ /^(..)(..)(..)$/ ) {
<         my ( $r, $g, $b ) = ( hex($1), hex($2), hex($3) );
<         return ( $r, $g, $b );
<     }
< }
<
1680,1701d1666
<
<   <br><br><b>Class COLOR_CONTROL</b>
<   <li>rgb<br>
<     Setting color of device either by colorpicker through FHEMWEB or
<     hexvalue via console.<br>Using color needs globaly defined. ZWave-device
<     needs attribute to display colorpicker. <br>
<     <ul>
<       <code>define colorInit notify global:INITIALIZED {use Color}</code><br>
<       <code>attr &lt;name&gt; webCmd rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:on:off</code><br>
<     </ul>
<     Setting color through console:
<     <ul>
<       set &lt;name&gt; rgb ff0000 (setting full red)<br>
<     </ul>
<     </li>
<   <li>wcrgb<br>
<     Used for sending warm white, cold white, red, green and blue values
<     to device. Values must be decimal (0 - 255) and separated by blanks.
<     <ul>
<       set &lt;name&gt; wcrgb 0 255 0 0 0 (setting full cold white)<br>
<     </ul>
<     </li>

micha80

#8
Hallo RalfK,
sry, für die später antwort.
also der colorpicker funktioniert.
sehr schick. (Muß noch etwas üben, ist meine erste Lampe :) )

@rudolf: ich habe den Patch mal als patch angehängt, sind ja dann doch 2-3 Änderungen.
Außerdem habe ich den Fix aus CRC_16_ENCAP class rein geschmuggelt, das hat ja dann auch prima funktioniert
und ist immer noch notwendig. :)

mfg
micha

rudolfkoenig

Habs startk ueberarbeitet eingecheckt:
- ich meine, use Color & FHEM_colorpickerInit ist nicht notwendig, das passiert inzwischen komplett in javascript.
- es wird jetzt bei fehlerhaften rgb Parametern ein Fehler ausgegeben
- CRC16: laut Doku ist nur 5601 gueltig. Kann jemand sagen, wo 5600 benoetigt wird?
- habe die FHEMWEB Attribute aus der Doku entfernt, ZWave soll auch in anderen Frontends verwendet werden.

Bitte pruefen, ob es noch tut, das konnte ich nicht.

micha80

also beim setzen von
set ZWave_SWITCH_MULTILEVEL_7 rgb 00ff00
bekomme ich leider immer die Fehlermeldung:
set rgb: a 6-digit hex number is required

die 5600 finde ich jetzt auf die schnelle leider nicht mehr, aber ich war der Meinung, dass der Fibaro FGMS001 das irgendwann mal gesendet hat...
(was sollte hinter der command class 56 sonst stecken?)

mfg
micha

rudolfkoenig

Zitatbekomme ich leider immer die Fehlermeldung:
set rgb: a 6-digit hex number is required
Und ich praedige jedem, vor dem Einchecken die Aenderungen testen...
Habs geaendert, den Aufruf diesmal getestet und eingecheckt.

Zitat(was sollte hinter der command class 56 sonst stecken?)
Laut Doku: CRC-16 Encapsulation Command = 0x01

micha80

okay :) sieht wieder gut aus.
was halt fehlt, ist den Status auszulesen...
aber ich denke, COLOR_CONTROL funktioniert in dem Fall :)

p.s. gibts eigentlich irgendwo eine FHEM Z-Wave Hardware-Kompatibilitäts-Liste. ich überlege mir gerade, was ich jetzt für weitere Geräte kaufe... :)

mfg
micha

krikan

Zitat von: micha80 am 15 April 2015, 13:57:39
gibts eigentlich irgendwo eine FHEM Z-Wave Hardware-Kompatibilitäts-Liste. ich überlege mir gerade, was ich jetzt für weitere Geräte kaufe... :)
Nein. Wenn Z-wave-Logo vorhanden, dann sollte man das Gerät -nach evtl. notwendiger Ergänzung an Command Classes in 10_ZWave.pm- auch mit Fhem ansteuern können.
An Deiner Stelle würde ich schauen, was hier schon als funktionierend berichtet wurde oder ein explizites Gerät im Forum anfragen. Im Fhemwiki versuchen wir auch Besonderheiten von bestimmten Geräten zu dokumentieren.
Gruß, Christian

rip

Hi, wenn ich mich da anhängen darf:
Für mich funktioniert jetzt damit (endlich!) die Zipato RGBW Bulb, danke! Doch genau wie RalfK hatte ich nach einer Lösung für den Fibaro RGBW Controller gesucht. Diese zusätzlichen Kanäle hab ich abgefragt, doch wie kann ich die ansteuern? Ein set command gibt es ja noch nicht?