Fibaro Smart Implant

I couldn't replicate this on my system. Upon power on (after a power cycle or power glitch), all I get from the implant are 2 switch binary reports indicating the current state of the 2 outputs. I never got any notification message that would indicate an alarm was triggered, I tried both NO and NC.

As far as your other post in Implant Support, I get the same result, output 2 is linked to input 2 even with local protection enabled, so that seem to be a bug in the implant firmware. I use input 2 as analog so I never noticed it before.

I'll try it out again tonight to double check it. Basically this is what happened to me Smart Implant is switching OUT1 when restarting HC2 - Smart Implant - Smart Home Forum by FIBARO. I had it connected to my garage door at the time and restarted the implant and Hubitat and when I came out the garage door was opened.

Glad you were able to replicate the output issue. But also pissed as it's something I won't be able to get fixed because Fibaro doesn't release firmware updates for OTA. You need their Home Center hubs for updates. I guess I'll set it up as analog inputs instead to work around it.

I jumped on a couple of Smart Implants as soon as I was able to, but I must agree, I was a bit disappointed. To this day, my two implants haven't left my breadboard. Have you already read about the MonaLisa board (aka Thingshield)? It could be a good alternative for your needs. And even though it can be used as an Arduino shield, it can also do a fair bit as a standalone device. Here's a snippet from the docs:

"The board has 2 digital inputs, 4 digital outputs (with corresponding LEDs), and 4 analog inputs. It thus can be used standalone as a simple smart device"

That is very interesting. But my fallback plan would be to run another wire from the garage doors to the alarm panel which already has Hubitat integration. I won't set those contacts to alert on the alarm itself. But I can monitor them with Hubitat. Then I'll use the implant to trigger the doors to open and close. So it wouldn't be a total waste.

Hi Bobbles, Yes just bought one... alas needs a driver again!


I'm pretty sure @mike.maxwell has one of these and is planning on sorting a driver for it, once he gets time to do it!

1 Like

Hey @christi999,

Thanks for the driver. It's working for the most part for me. Are you interested in enhancing the driver functionality? I need temperature offsets for the external sensors so I can calibrate them before deployment. For instance, my two probes are in the same glass of water and one is + .6° as compared to the other unit. I would think a +/- 0.1° to 5.0° Offset range would suffice. Is it possible to build this into the driver?


Hi Travis, I don't mind adding small things like this if it can help. I posted version 1.0 on Github and tested only with the internal sensor. The range is +/- 7 degrees (float), same as my goControl thermostat...

1 Like

Fantastic! That worked really well. I tested with a negative offset and it worked immediately. I did notice that the driver information on the parent still shows .8 as the version. I think that's because you seem to be missing the refresh for the parent itself. Just using configuration button alone didn't cut it. Thanks so much Chris for the amazing response and work on this.


Thanks for letting me know. The version should be updated when you "save preferences". It did for mine in the state variables section???

1 Like

Yeah, I have all the new settings and they are working...however the State Variables still shows "driverVersion 0.8" for me. BTW, is "Child Refresh" on the Parent supposed to be the same as hitting the "Refresh" in the Child Devices? I'm not clear on that. If it is, it doesn't refresh them but when you go to the actual Child Device and hit Refresh it works there.

Refresh only works for the child devices where the implant supports it. I included it in the parent because without it I couldn't get the child ones to work, I never went back to try and fix it. I will look into the driver version thing.

1 Like

@daweeze, version 1.3 is posted. It should take care of the version not showing up correctly and I also removed the parent commands that were really child device's. You MIGHT have to remove/re-add the device because of the way I changed the state variables handling.

1 Like

Thanks Chris. I did remove/re-add the device but didn't test to see if I HAD to since I have no rules associated with it yet. Version updated correctly. Only configuration is on screen for the parent device and everything working that I have tested so far! Not sure if you have participated yet but any chance you can put this in HPM so users can receive automatic updates?

Thanks again!


1 Like

Personally I don't like automatic updates. I will still take a look at HPM and see how it works, no promises...


Thanks for the consideration! It can provide automatic updates but I suspect most don't use it. Instead, it at least lets you know that there's an update available and automates the install if you choose to update it.


I found the solution to this problem:

It is not a bug in the firmware. When I initially implemented the protection class in the driver, I just sent the protection command to the base node of the implant. However, I noticed tonight that endpoints 5 and 6 (the switches) also support the protection command class. Sending individual commands to each endpoint control individually in/out1 and in/out2. I guess sending it to the base node only affect in/out1.

Version 1.4 is out with the changes.


Some help needed here please. I am probably doing something wrong as am pretty new to all this, but bought the smart implant, to make an automatically demisting mirror. Aim is to use two external temp sensors, to control the on off state of the mirror heater mat, so that when the shower is on, the mirror demists.

That said I have fallen at the first hurdle, as I cant get this to talk to the hub.

Steps I have done so far:

  • Installed the 5 drivers from @christi999
  • Included the smart implant. It was discovered and shows up as a device with 7 children.

This is where the problems start.
I dont see the firmware version of the device
I dont see any current states (i have connected a switch and toggled it with no luck)
I dont see the current temp (internal)
and I cant read any status from the device or control them.

The device itself is working, i can exclude and include, and toggle the outputs with the digital inputs.

I have also restarted the hub and updated to the newest build (
Please can someone point me in the right direction. I am at a loss for where else to look.

Did you press "configure" in the device page? Try this:

  • Enable debug logging in the device page
  • Save preferences
  • Press "configure"
  • Post the resulting "logs" output here

Yep, I did the configure and wait a minute or so for it to update the config.

Here is the log:

2020-06-04 15:36:01.556 debug{cmds: [VersionGet(), MultiChannelCmdEncap(bitAddress:false, command:1, commandClass:117, destinationEndPoint:5, parameter:[0, 0], res01:false, sourceEndPoint:0), MultiChannelCmdEncap(bitAddress:false, command:1, commandClass:117, destinationEndPoint:6, parameter:[0, 0], res01:false, sourceEndPoint:0), AssociationRemove(groupingIdentifier:1, nodeId:1), AssociationRemove(groupingIdentifier:2, nodeId:1), AssociationRemove(groupingIdentifier:3, nodeId:1), MultiChannelAssociationRemove(groupingIdentifier:1, nodeId:[1]), MultiChannelAssociationRemove(groupingIdentifier:2, nodeId:[1]), MultiChannelAssociationRemove(groupingIdentifier:3, nodeId:[1]), MultiChannelAssociationSet(groupingIdentifier:1, nodeId:[0, 1, 1], multiChannelNodeIds:[]), MultiChannelAssociationSet(groupingIdentifier:2, nodeId:[0, 1, 1], multiChannelNodeIds:[]), MultiChannelAssociationSet(groupingIdentifier:3, nodeId:[0, 1, 2], multiChannelNodeIds:[]), AssociationGet(groupingIdentifier: 1), AssociationGet(groupingIdentifier: 2), AssociationGet(groupingIdentifier: 3), MultiChannelAssociationGet(groupingIdentifier:1), MultiChannelAssociationGet(groupingIdentifier:2), MultiChannelAssociationGet(groupingIdentifier:3), ConfigurationSet(configurationValue:[2], defaultValue:false, parameterNumber:20, reserved11:0, size:1), ConfigurationGet(parameterNumber:20), ConfigurationSet(configurationValue:[2], defaultValue:false, parameterNumber:21, reserved11:0, size:1), ConfigurationGet(parameterNumber:21), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:24, reserved11:0, size:1), ConfigurationGet(parameterNumber:24), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:25, reserved11:0, size:1), ConfigurationGet(parameterNumber:25), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:40, reserved11:0, size:1), ConfigurationGet(parameterNumber:40), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:41, reserved11:0, size:1), ConfigurationGet(parameterNumber:41), ConfigurationSet(configurationValue:[0, 255], defaultValue:false, parameterNumber:47, reserved11:0, size:2), ConfigurationGet(parameterNumber:47), ConfigurationSet(configurationValue:[0, 255], defaultValue:false, parameterNumber:49, reserved11:0, size:2), ConfigurationGet(parameterNumber:49), ConfigurationSet(configurationValue:[0, 255], defaultValue:false, parameterNumber:52, reserved11:0, size:2), ConfigurationGet(parameterNumber:52), ConfigurationSet(configurationValue:[0, 255], defaultValue:false, parameterNumber:54, reserved11:0, size:2), ConfigurationGet(parameterNumber:54), ConfigurationSet(configurationValue:[10], defaultValue:false, parameterNumber:150, reserved11:0, size:1), ConfigurationGet(parameterNumber:150), ConfigurationSet(configurationValue:[10], defaultValue:false, parameterNumber:151, reserved11:0, size:1), ConfigurationGet(parameterNumber:151), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:152, reserved11:0, size:2), ConfigurationGet(parameterNumber:152), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:153, reserved11:0, size:2), ConfigurationGet(parameterNumber:153), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:154, reserved11:0, size:1), ConfigurationGet(parameterNumber:154), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:155, reserved11:0, size:1), ConfigurationGet(parameterNumber:155), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:156, reserved11:0, size:2), ConfigurationGet(parameterNumber:156), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:157, reserved11:0, size:2), ConfigurationGet(parameterNumber:157), ConfigurationSet(configurationValue:[5], defaultValue:false, parameterNumber:63, reserved11:0, size:1), ConfigurationGet(parameterNumber:63), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:64, reserved11:0, size:2), ConfigurationGet(parameterNumber:64), ConfigurationSet(configurationValue:[0, 5], defaultValue:false, parameterNumber:65, reserved11:0, size:2), ConfigurationGet(parameterNumber:65), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:66, reserved11:0, size:2), ConfigurationGet(parameterNumber:66), ConfigurationSet(configurationValue:[0, 5], defaultValue:false, parameterNumber:67, reserved11:0, size:2), ConfigurationGet(parameterNumber:67), ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:68, reserved11:0, size:2), ConfigurationGet(parameterNumber:68)]}

Download the Hubitat app