[ZWave] Fibaro FGRGBW-442 RGBW CONTROLLER 2 fails on initialization

I bought two RGBW controllers a few weeks ago and got my hands on the new FGRGBW-442 by Fibaro. After researching on this forum I stumbled upon this thread:

Luckily, the release 2.5 was only a few days ahead, so I waited patiently. This week I could upgrade and was eager to include my new devices, but sadly, the initialization fails. The resulting status of my thing is:

Status: UNINITIALIZED - HANDLER_INITIALIZING_ERROR For input string: "1colorMode=DIFF_WHITE"

I can create items based on its channels and they’re all created correctly (AFAIK), but due to the failed initialization, I can’t communicate with the RGBW controller:

Switch  Vorrat_LED_Schalter	"LED-Band"	     <switch> (Kueche_Gruppe) {channel="zwave:device:####:node45:switch_dimmer" }
Color 	Vorrat_LED_Farbe	"LED-Band (Farbe)"   <slider> (Kueche_Gruppe) {channel="zwave:device:####:node45:color_color"}
Dimmer 	Vorrat_LED_Dimmer 	"Helligkeit [%d %%]" <switch> (Kueche_Gruppe) {channel="zwave:device:####:node45:switch_dimmer"}

Relevant content of the events.log:

2019-12-18 15:52:24.800 [hingStatusInfoChangedEvent] - 'zwave:device:3682c53c:node45' changed from ONLINE to UNINITIALIZED (HANDLER_INITIALIZING_ERROR): For input string: "1colorMode=DIFF_WHITE"

Exception in openhab.log:

2019-12-18 15:52:12.858 [WARN ] [core.thing.internal.ThingManagerImpl] - Initializing handler for thing 'zwave:device:####:node45' takes more than 5000ms.
2019-12-18 15:52:24.274 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.initialize()' on 'org.openhab.binding.zwave.handler.ZWaveThingHandler@166c988': For input string: "1colorMode=DIFF_WHITE"
java.lang.NumberFormatException: For input string: "1colorMode=DIFF_WHITE"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_152]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialiseNode(ZWaveThingHandler.java:263) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.bridgeStatusChanged(ZWaveThingHandler.java:537) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialize(ZWaveThingHandler.java:163) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]
        at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
2019-12-18 15:52:24.415 [ERROR] [core.thing.internal.ThingManagerImpl] - Exception occurred while initializing handler of thing 'zwave:device:####:node45': For input string: "1colorMode=DIFF_WHITE"
java.lang.NumberFormatException: For input string: "1colorMode=DIFF_WHITE"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_152]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialiseNode(ZWaveThingHandler.java:263) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.bridgeStatusChanged(ZWaveThingHandler.java:537) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialize(ZWaveThingHandler.java:163) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]
        at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
2019-12-18 15:52:25.237 [ERROR] [alization.ZWaveNodeInitStageAdvancer] - NODE 45: Error in initialization thread
java.lang.NumberFormatException: For input string: "1colorMode=DIFF_WHITE"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_152]
        at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_152]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialiseNode(ZWaveThingHandler.java:263) ~[bundleFile:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.ZWaveIncomingEvent(ZWaveThingHandler.java:1457) ~[bundleFile:?]
        at org.openhab.binding.zwave.internal.protocol.ZWaveController.notifyEventListeners(ZWaveController.java:566) ~[bundleFile:?]
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer.setCurrentStage(ZWaveNodeInitStageAdvancer.java:1139) ~[bundleFile:?]
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer.access$5(ZWaveNodeInitStageAdvancer.java:1130) ~[bundleFile:?]
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer$1.run(ZWaveNodeInitStageAdvancer.java:207) [bundleFile:?]

So far it seems to be the same error as in this post, but this is just a hunch:

I bought this controller as well and stumbled upon the error and took a look at it. Amending the JAR-File of the ZWave AddOn manually I could fix this:
There are two occurences of the text “colorMode=DIFF_WHITE” within the file “fgrgbw442_0_0.xml” that are NOT preceeded with a “;” to separate the entry from the command class:

COMMAND_CLASS_SWITCH_COLORcolorMode=DIFF_WHITE

It needs to look like this:

COMMAND_CLASS_SWITCH_COLOR;colorMode=DIFF_WHITE

I did look at the database entry but I have no idea how this could be fixed by simply editing the entry. Maybe this is something @chris needs to look at?

The device initializes correctly after an upgrade to OH 2.5.1, but I can’t set a color. Does it work for you, @stefan.oh ? If so, may I have a look at your item definition?

Setting colors works for me. From a colorpicker and the color-channel sliders in the GUI as well as from rules.
Here are my relevant items. I added a few comments about functionality of the various channels:

// Dann gibts noch eine RGB(W)-LED-Leiste mit einem Fibaro-Controller. An "W" ist aber nichts angeschlossen, Schalter sind auch (noch) nicht angeschlossen
Dimmer RGBW_Helligkeit         "RGBW Helligkeit"                  { channel="zwave:device:12345678:node49:switch_dimmer"}
Number RGBW_Spannung           "RGBW Spannung"                    { channel="zwave:device:12345678:node49:sensor_voltage"}
Number RGBW_AktVerbrauch       "RGBW AktVerbrauch [%.1f W]"       { channel="zwave:device:12345678:node49:meter_watts"}
Number RGBW_SummeVerbrauch     "RGBW SummeVerbrauch [%.2f KWh]"   { channel="zwave:device:12345678:node49:meter_kwh"}
Color  RGBW_Farbe              "RGBW Farbe"                       { channel="zwave:device:12345678:node49:color_color"}
Dimmer RGBW_Farbtemperatur     "RGBW Farbtemperatur"              { channel="zwave:device:12345678:node49:color_temperature"}
// scene_number lässt sich zur Steuerung wohl nicht nutzen
Number RGBW_Szene              "RGBW Szene"                       { channel="zwave:device:12345678:node49:scene_number"}
// config_decimal_param157 ist die funktionsfähige Steuerung zur Szenenauswahl/Steuerung (die Anmerkung "deprecated" in der XML-Datei ist noch zu klären)
Number RGBW_Szenennummer       "RGBW Szene2"                      { channel="zwave:device:12345678:node49:config_decimal_param157"}
Switch RGBW_AlarmPower         "RGBW AlarmPower"                  { channel="zwave:device:12345678:node49:alarm_power"}
Switch RGBW_AlarmSystem        "RGBW AlarmSystem"                 { channel="zwave:device:12345678:node49:alarm_system"}
//switch_dimmer1 folgt immer switch_dimmer und umgekehrt, man braucht also nur einen der beiden
Dimmer RGBW_Dimmer1            "RGBW Dimmer1"                     { channel="zwave:device:12345678:node49:switch_dimmer1"}
// meter_watts1 zeigt die selben Werte an wie meter_watts, man braucht also nur einen von beiden
Number RGBW_AktVerbrauch1      "RGBW AktVerbrauch1 [%.1f W]"      { channel="zwave:device:12345678:node49:meter_watts1"}
// meter_kwh1 zeigt die selben Werte an wie meter_kwh, man braucht also nur einen von beiden
Number RGBW_SummeVerbrauch1    "RGBW SummeVerbrauch1 [%.2f KWh]"  { channel="zwave:device:12345678:node49:meter_kwh1"}
// über color_color1 kann über die Farbauswahl gesteuert werden, color_color dagegen scheint nur Anzeige zu sein
Color  RGBW_Farbe1             "RGBW Farbe1"                      { channel="zwave:device:12345678:node49:color_color1"}
Dimmer RGBW_Farbtemperatur1    "RGBW Farbtemperatur1"             { channel="zwave:device:12345678:node49:color_temperature1"}
Switch RGBW_AlarmPower1        "RGBW AlarmPower1"                 { channel="zwave:device:12345678:node49:alarm_power1"}
Switch RGBW_AlarmSystem1       "RGBW AlarmSystem1"                { channel="zwave:device:12345678:node49:alarm_system1"}
// Die folgenden 4 Dimmer beziehen sich auf je einen der Kanäle, damit lassen sich die Kanäle im RGBW-Modus einzeln unabhängig voneinander steuern
// Die Helligkeit wird aber zusätzlich von switch_dimmer beeinflusst
Dimmer RGBW_Dimmer2            "RGBW Rot"                         { channel="zwave:device:12345678:node49:switch_dimmer2"}
Dimmer RGBW_Dimmer3            "RGBW Grün"                        { channel="zwave:device:12345678:node49:switch_dimmer3"}
Dimmer RGBW_Dimmer4            "RGBW Blau"                        { channel="zwave:device:12345678:node49:switch_dimmer4"}
Dimmer RGBW_Dimmer5            "RGBW Weiss"                       { channel="zwave:device:12345678:node49:switch_dimmer5"}
// Die Spannungsanzeigen der 4 Kanäle sind noch unbenutzt, vermutlich rein lesend nutzbar
Number RGBW_Voltage6           "RGBW Spannung6"                   { channel="zwave:device:12345678:node49:sensor_voltage6"}
Number RGBW_Voltage7           "RGBW Spannung7"                   { channel="zwave:device:12345678:node49:sensor_voltage7"}
Number RGBW_Voltage8           "RGBW Spannung8"                   { channel="zwave:device:12345678:node49:sensor_voltage8"}
Number RGBW_Voltage9           "RGBW Spannung9"                   { channel="zwave:device:12345678:node49:sensor_voltage9"}

Remark: the config_decimal_param157 channel might not be available yet. I’ve added that manually into my zwave bundle using the XML export from the database after adding that channel.

Parameter 150 (LED colour control mode) is set to RGBW mode in my case. That might affect how some channels work, but I did not experiment with HSB/White mode.

Here is an example for how I control the Fibaro controller from rules. I defined a logical switch that triggers a rule, executing the following commands when switched on:

sendCommand(RGBW_Szenennummer, 0)
sendCommand(RGBW_Dimmer2, 100)
sendCommand(RGBW_Dimmer3, 100)
sendCommand(RGBW_Dimmer4, 50)
sendCommand(RGBW_Dimmer1, 68)

That sets the RGB channels to a colormix resulting in warm white and a reduced luminance.

Thanks a lot! I used color_color instead of color_color1. Now I can set colors. The only thing left is how to control the W channel manually. Using switch_dimmer5 didn’t work for me.
Anyway, you’ve been a big help, @stefan.oh! Thanks again!

What I normally do when creating an Item is copy fro the Paper UI. There is a double box right beside the information needed to link the channel. That copies the information to your clipboard for pasting into your Item.

image

You are welcome :slightly_smiling_face:
With “manually” you mean by a hardware switch?