[RELEASE] Fibaro Smart Implant FGBS-222

Moving the conversation for this driver to a new thread in the developers forum. The previous discussions are here: Previous discussion thread


  • Support all the implant configurable parameters and endpoints:

    -2 inputs, configurable in digital/alarm or analog
    -2 switch outputs
    -1 internal temperature sensor
    -Up to 6 external DS18B20 temperature sensors or 1 DHT22 temperature+humidity sensor

  • Temperature in deg C, deg F or defaults to hub units.

  • Temperature sensors and analog inputs: Periodic reports or minimal change reports

  • Configurable calibration offset for the internal and external temperature sensors and humidity sensor

  • Analog inputs can be configured to convert the measured voltage to other measurement type, e.g. temperature, level, contact sensor, etc.

  • Z-WAVE secure or non secure mode

  • Configurable Local and RF Protection mode

  • Installation/updates via the Hubitat Package Manager if desired


  • Install the 5 files as 5 drivers. Use the main driver file " Fibaro FBGS-222 Smart Implant" for the device "type" of the device. This main driver will create the child devices using the other drivers as required once you press "save preferences"

  • "save preferences" just does that, it saves the preferences in the hub, nothing is sent to the implant.

  • "configure" will send all the configuration information to the implant, it can take about a minute or so. There is a 0.5 second delay between commands to avoid saturating the z-wave network.

  • By default, the outputs are linked to the digital inputs, i.e. if you change the input, the implant will automatically change the corresponding output. To decouple the inputs from the outputs, set "local device protection" to "2".

  • The state of the inputs in alarm mode will not be updated in the child device until the input state is changed. I didn't find a way to query the current input state from the device. It only sends a notification when the state changes. Reading the corresponding analog voltage could be done but doesn't really tell you the real state of the digital input. If someone finds a way, please tell me.

  • Peculiarity: The normally closed/open alarm input is reversed, open shows as closed and vice versa. The closed/open status is configurable in the preferences so just take the other value if the current one is reversed in your setup. I never fixed it to avoid breaking existing user's setup...

  • After updating the code to a new version, do a "save preferences" in the device page in order to update the displayed driver version.

TBD if requested

  • Configurable Z-wave associations

Can I ask you a slightly off topic question.
I see in the notes for the driver this,

1.6 - Update after HUB update broke compatibility

Can I ask what needed to be changed.
The reason I'm asking is people, me included, are now having issues with Fibaro FGS222 and 223 devices reporting status. They work but don't report status correctly.
Errors are being reported in the logs.
I'm not a coder but if you could give me some pointers I would be more than grateful and I can start 'poking and hoping'.
I'm happy to delete this post if you feel you cannot help and want me to delete it to stop unnecessary 'noise' on this thread.

Quoting myself from the other thread:

The signature for the zwave "Multi Channel" class changed from V3 to V4. The implant documentation says that you should be using V4, I don't know why it was coded as V3 in the first place (seed design by "boblehest"). Maybe hubitat didn't support it then and was mapping V4 to V3 and in the last update they implemented V4?

I just copied the function

private zwaveEvent(hubitat.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {


private zwaveEvent(hubitat.zwave.commands.multichannelv4.MultiChannelCmdEncap cmd) {

I also saw that the update changed the basicSet class handling, it might require some more changes in my driver.

No need to delete your post, I was happy to see such a fast first post :smile:

You superstar. :grinning:
Changed from V3 to V4 and it is now working.
Thanks again.

Glad it was that simple

Glad for the quick easy fix as I just got it all setup two days ago with each input and poof no more. Again can't say enough thanks for taking it to the next level.

1 Like

Weird, mine is stuck at 1.4 and not working even though I updated the driver. Tried to toggle to another driver and back, that didn’t fix the issue or even update to 1.6 in the device. Afraid I will have to exclude/include again. Bummer. Thanks for staying in top of this driver though! Still hoping for HPM at some point. thanks Chris!

Update: Exclude/Include did indeed allow the driver to update to 1.6. Simply selecting "Configure" didn't do the trick before. All is well at this time.

The displayed driver version is updated once you "save preferences". "configure" only sends the configuration parameters to the implant.

So when you change the driver code, the first thing to do would be to go in the device page and "save preferences"

In your case, even without saving preferences, the new driver 1.6 should still have worked, only the displayed version was incorrect. Doing an exclude/include will force you to "save preferences". It is just a lot more painful :exploding_head:

1 Like

Thanks!!!!!! It works!!!

1 Like

Thanks for continuing to work on this driver! Any chance you have plans to add this to the Hubitat Package Manager?

I took a peek at the Hubitat Package Manager last week following @daweeze request. I should have something out this week.

1 Like

The changes for the Hubitat Package Manager (HPM) are out in version 1.7.0 of the implant driver (no change of consequence...). I submitted a pull request so that my repository eventually appears in HPM as "christi999". You can add it manually by pasting this URL in the HPM:


Not sure what happens with that once the pull request goes through...

I also added an "importUrl" to the driver files so you just have to press "import" in the driver editing page to manually refresh the code if you prefer.


Awesome. Thanks! I added it manually and then matched it and it updated as expected.


1 Like

Just to confirm success with HPM:

I decided to wait a couple of days for your pull request to go through, and today I went into HPM and first did a "Match up." I already had v1.6 of your driver installed, and HPM recognized and matched it for me. After the match up, I did an Update, and it successfully updated to v1.7


1 Like

I'm curious about the multiple temperature probe capability. Are all the temperature values reported separately or is reported temperature some kind of average.

Values are all separate, each probe appears as an individual child device.

Cool. Thanks. Looks like I may have a new project.

Version 1.7.1 is available. I added the command "reinstall" which allows to clean-up a messed-up driver installation. Someone tried the Hubitat built-in driver for the implant and then wanted to switch back to this driver. He couldn't erase the child devices created by the built-in driver and Z-Wave excluding/including didn't work either because the built-in driver is always forced upon joining.

The new command will erase all child devices, clear the state variables and call installed(), which will re-create the proper child devices.... You have to select "yes" before pressing "reinstall", I couldn't find a better way yet to add a user prompt confirmation to the process...

I tried installing mine today and I'm having trouble with the analog input readings.
Ive put it on my gate controller to read if the gate is open or not.
Using alarm mode I get readings of different voltage when it's open or closed: 2V when open and 20V when closed.
However, it doesn't update automatically (only when I refresh) and it doesn't tell me open or closed, only the voltage.
I tried changing the type for input 1 on the driver, and with the last two options I don't even get the voltage readings.

To get automatic updates when the gate opens or closes, you need to configure the input in alarm mode (normally open or closed) and wire a simple on/off contact sensor between the input wire and ground. Also, the only child device giving an open/closed status is the digital input child device.

See this post

Configuring the input as analog is not really meant to do what you want although you might be able to do it if you configure the " minimal change to report" parameter to get a report when the analog voltage changes and create a OPEN/CLOSE variable based on those reports...