Fibaro Smart Implant

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!

-Travis

1 Like

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

2 Likes

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.

2 Likes

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.

2 Likes

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 (2.2.0.132)
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)]}

The log only contains the list of commands sent to the device, nothing came back. There is definitely something wrong with the communication with the implant... I am not a Z-Wave expert, but maybe post your hub Z-WAVE details page here.

It is odd, as i can join the network, and the device reports itself as being joined (using the self diagnosis menu on the implant). But I dont seem to get anything back from it.

Is your other Z-Wave device working properly?

I see you have "All secure Z-Wave enabled". I don't. Maybe try to exclude, switch the option to "Locks/Garage doors" and include again. It is not clear to me if the driver needs to take that mode into account...

Ahh that seemed to sort it. Thanks. All seems to be working now. At least the switches and internal temp sensor. Now to get the external temp sensors to work.... thanks for your help.

Great, now that makes me think to add support for secured mode...

Version 1.5 is out with support for Z-WAVE secure mode. No other changes.

2 Likes

First off great work here and thank you @christi999 for writing and keeping it t updated. I have it working up to the point where the analog (2) contact registers the contact voltage (Voltage 1.x Closed, 10.x open). However I can not get it in the dashboard to work with using Digital 2. Gets the dreaded unknown. Any ideas where to troubleshoot? Here is a snapshot of my setup.
Screen Shot 2020-06-05 at 5.53.01 AM


Hi @techfan, For the dashboard "device", did you use the "Digital input" child? I think you did... If so, enable debug logging in preferences and save preferences. Then change the contact state a few times and post the log messages you get.

You have a picture of the analog input child but when the input is configured as "alarm", the child you really want to verify is the "digital input".

How did you wire the input, see this post: Alarm input wiring

1 Like

@christi999
Here is the log, the input is wired to IN2, Ground one side, with a pull-up resistor on the positive side to the contact.

See log and digital input 2, and yes I did use contact with digital 2. I am sure it's something simple that I am missing but can't figure it out after a day of trying.

Remove the pull-up resistor, you don't need it in alarm mode. What you want is just an on/off contact between input 2 and ground.

The log should contain "notification" messages every time the contact state changes which I don't see here, meaning that the input is probably not wired correctly.

If you really want to use a voltage to indicate whether a something is open or closed instead of the alarm mode supported by the implant, then a few things would need to be changed in the code such as adding a threshold voltage and an "open/closed" state to the analog child...

1 Like