Fibaro Smart Implant FGBS222

Yeah, that’s not an easy one. Let me try to guide you. Can’t really understand why Silabs have made it so complicated to get the software.

  1. Register or login at https://www.silabs.com/ (not 100% sure this is required but I think so)
  2. Download some other Z-wave software like the Z-wave PC Programmer at https://www.silabs.com/products/development-tools/software/z-wave
  3. Then return by clicking the “Return” button.
  4. Then you should land at a page with a large blue button/link with the text “PC Controller >” in the center of the page.
  5. Click that button/link and that should download the “ZWavePCController_v5_39.zip” file.

Good luck!

That was really a tricky one! :slight_smile: Thank you @poffe!

@poffe, doe sit mean that existing Smart Implants need to be removed from HA to be used with Silab software to change these settings? Then is separate controller (USB stick) required? Or can this be somehow made easier way, like reconnecting existing stick to PC running controller, changing the setting and returning to previous setup? Please advise!

@mirekmal Not sure how this works for every USB stick. I’ve got an Aeotec Z-Stick Gen 5 and it holds the complete Z-wave node network in itself so all I do is shutdown HA then move the stick to my Windows computer and run the Silabs PC Controller software. So yes, that part isn’t so hard.

Hmm, I run most Z-wave nodes without security (except my ID-locks), not sure if that complicates things or not. The Silabs PC Controller is a very capable software but not the easiest to use. :slight_smile:

@poffe, thanks for confirmation! I also have Aeotec Z-Stick 5, so I should be fine!
Now, knowing that I can decouple inputs from outputs means that I can potentially relese 2 smart implants from my exiting setup by combining functionality onto single device… this is the challenge what to do with them :slight_smile:

This is how to set protection level in that software, it looks quite complicated, took me a while until I found it :slight_smile:

I have also Aeotec Z-Stick 5 - disconnected from Raspberry, connected to Windows computer, configured protection level, connected back to Raspberry. In Zwave2MQTT refreshed node info and I see also protection status in console.

Just want to report that I’m having the same issues. I can get IN1 to switch burglar between 0 and 2, but IN2 is MIA as far HA is concerned. Also I can get an accurate reading from one DS18B20 sensor but as soon as I connect a second one I just get a reading of 32F. Maybe I got clones/chinese knockoff temp sensors? idk but I have been thoroughly disappointed with the smart implant. IN2 is changing states though. If I associate it with another switch such as a light or my doorbell I can switch them with the reed switch that I was going to use with it. The new Open Zwave can not arrive soon enough on HA. Being stuck on 1.4 is really starting to cripple the platform.

And one last thing, this thing is not reporting state changes despite what I set in the node config options. I can grip the temp probe and the temperature will never change, but as soon as I refresh the entity it’s spot on to what I would expect.

Yes, I’ve also noticed that analog inputs do not update in HA (I’m measuring voltage on output of Sharp IR distance sensor to determine car presence in garage). So I overcomed this with small automation that forces updates every 10 seconds:

  - id: 'refreshing_car_sensors'
    alias: Refreshing Car Presence Sensor
    initial_state: True
    trigger:
      - platform: time_pattern
        seconds: '/10'
    condition:
      - condition: state
        entity_id: input_boolean.zwave_active
        state: 'on'
    action:
      - service: zwave.refresh_node_value
        data_template:
          node_id: 32
          value_id: "72057594579796210"
      - service: zwave.refresh_node_value
        data_template:
          node_id: 32
          value_id: "144115188617724146"

Would setting polling in the z wave config panel not achieve the same effect? This issue with both polling and using an automation to run the node refresh service is that it mucks up the z wave network with polling requests. Once you start getting a good number of devices it can really slow it down. I’m already forced to use polling on an old light switch, and a ct101 t-stat.

Do you mind explaining how you were able to configure Option 20? I am a little lost looking at my zwconfig file. (excerpt below)

Do I need to write a new command class Line with id=20 (last line of code below)? Since it HomeAssistant didn’t generate it when the implant was added to the network?

<Node id="10" name="" location="" basic="4" generic="7" specific="1" roletype="5" devicetype="3072" nodetype="0" type="Notification Sensor" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
		<Manufacturer id="10f" name="FIBARO System">
			<Product type="502" id="2000" name="Unknown: type=0502, id=2000" />
		</Manufacturer>
		<CommandClasses>
			**<CommandClass id="32"** name="COMMAND_CLASS_BASIC" version="1" 

Thanks for any help!

All parameters, including option 20 (called Index), are configured in Command Class 112. Here is mine:

			<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1">
				<Instance index="1" />
				<Value type="list" genre="config" instance="1" index="20" label="Input 1 operating mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Help>This parameter allows to choose mode of 1st input (IN1). Change it depending on connected device.</Help>
					<Item label="Normally closed alarm input" value="0" />
					<Item label="Normally open alarm input" value="1" />
					<Item label="Monostable button" value="2" />
					<Item label="Bistable button" value="3" />
					<Item label="Analog input without internal pull-up" value="4" />
					<Item label="Analog input with internal pullup" value="5" />
				</Value>
				<Value type="list" genre="config" instance="1" index="21" label="Input 2 operating mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Help>This parameter allows to choose mode of 2nd input (IN2). Change it depending on connected device.</Help>
					<Item label="Normally closed alarm input" value="0" />
					<Item label="Normally open alarm input" value="1" />
					<Item label="Monostable button" value="2" />
					<Item label="Bistable button" value="3" />
					<Item label="Analog input without internal pull-up" value="4" />
					<Item label="Analog input with internal pullup" value="5" />
				</Value>
				<Value type="list" genre="config" instance="1" index="24" label="Inputs orientation" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Help>This parameter allows reversing operation of IN1 and IN2 inputs without changing the wiring. Use in case of incorrect wiring.</Help>
					<Item label="Default (IN1 - 1st input, IN2 - 2nd input)" value="0" />
					<Item label="Reversed (IN1 - 2nd input, IN2 - 1st input)" value="1" />
				</Value>
				<Value type="list" genre="config" instance="1" index="25" label="Outputs orientation" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Help>This parameter allows reversing operation of OUT1 and OUT2 inputs without changing the wiring. Use in case of incorrect wiring.</Help>
					<Item label="Default (OUT1 - 1st output, OUT2 - 2nd output)" value="0" />
					<Item label="Reversed (OUT1 - 2nd output, OUT2 - 1st output)" value="1" />
				</Value>
				<Value type="byte" genre="config" instance="1" index="40" label="Input 1 sent scenes" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0">
					<Help>This parameter defines which actions result in sending scene ID and attribute assigned to them. Parameter is relevant only if parameter 20 is set to 2 or 3. bitmask. 0 =&gt; No scenes sent. 1 =&gt; Key pressed 1 time. 2 =&gt; Key pressed 2 times. 4 =&gt; Key pressed 3 times. 8 =&gt; Key hold down and key released.</Help>
				</Value>
				<Value type="byte" genre="config" instance="1" index="41" label="Input 2 sent scenes" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0">
					<Help>This parameter defines which actions result in sending scene ID and attribute assigned to them. Parameter is relevant only if parameter 21 is set to 2 or 3. bitmask. 0 =&gt; No scenes sent. 1 =&gt; Key pressed 1 time. 2 =&gt; Key pressed 2 times. 4 =&gt; Key pressed 3 times. 8 =&gt; Key hold down and key released.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="47" label="Input 1 value sent to 2nd association group when activated" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255">
					<Help>This parameter defines value sent to devices in 2nd association group when IN1 input is triggered (using Basic Command Class). Available settings: 0-255. Default setting: 255.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="49" label="Input 1 value sent to 2nd association group when deactivated" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255">
					<Help>This parameter defines value sent to devices in 2nd association group when IN1 input is deactivated (using Basic Command Class). Available settings: 0-255. Default setting: 255.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="52" label="Input 2 value sent to 3rd association group when activated" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255">
					<Help>This parameter defines value sent to devices in 3rd association group when IN2 input is triggered (using Basic Command Class). Available settings: 0-255. Default setting: 255.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="54" label="Input 2 value sent to 3rd association group when deactivated" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255">
					<Help>This parameter defines value sent to devices in 3rd association group when IN2 input is deactivated (using Basic Command Class). Available settings: 0-255. Default setting: 255.</Help>
				</Value>
				<Value type="byte" genre="config" instance="1" index="63" label="Analog inputs minimal change to report" units="0.1v" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="100" value="5">
					<Help>This parameter defines minimal change (from the last reported) of analog input value that results in sending new report. Parameter is relevant only for analog inputs (parameter 20 or 21 set to 4 or 5). Available settings: 0 - (reporting on change disabled). 1-100 (0.1-10V, 0.1V step). Default setting: 5 (0.5V).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="64" label="Analog inputs periodical reports" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="32400" value="0">
					<Help>This parameter defines reporting period of analog inputs value. Periodical reports are independent from changes in value (parameter 63). Parameter is relevant only for analog inputs (parameter 20 or 21 set to 4 or 5). Available settings: 0 (periodical reports disabled). 60-32400 (60s-9h). Default setting: 0 (periodical reports disabled).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="65" label="Internal temperature sensor minimal change to report" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="5">
					<Help>This parameter defines minimal change (from the last reported) of internal temperature sensor value that results in sending new report. Available settings: 0 - (reporting on change disabled). 1-255 (0.1-25.5C). Default setting: 5 (0.5C).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="66" label="Internal temperature sensor periodical reports" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="32400" value="600">
					<Help>This parameter defines reporting period of internal temperature sensor value. Periodical reports are independent from changes in value (parameter 65). Available settings: 0 (periodical reports disabled). 60-32400 (60s-9h). Default setting: 0 (periodical reports disabled).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="67" label="External sensors minimal change to report" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="5">
					<Help>This parameter defines minimal change (from the last reported) of external sensors values (DS18B20 or DHT22) that results in sending new report. Parameter is relevant only for connected DS18B20 or DHT22 sensors. Available settings: 0 - (reporting on change disabled). 1-255 (0.1-25.5 units). Default setting: 5 (0.5 units)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="68" label="External sensors periodical reports" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="32400" value="600">
					<Help>This parameter defines reporting period of analog inputs value. Periodical reports are independent from changes in value (parameter 67). Parameter is relevant only for connected DS18B20 or DHT22 sensors. Available settings: 0 - (periodical reports disabled). 60-32400 (60s-9h). Default setting: 0 (periodical reports disabled).</Help>
				</Value>
				<Value type="byte" genre="config" instance="1" index="150" label="Input 1 sensitivity" units="10ms" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="100" value="10">
					<Help>This parameter defines the inertia time of IN1 input in alarm modes. Adjust this parameter to prevent bouncing or signal disruptions. Parameter is relevant only if parameter 20 is set to 0 or 1 (alarm mode). Available settings: 1-100 (10ms-1000ms, 10ms step). Default setting: 10 (100ms).</Help>
				</Value>
				<Value type="byte" genre="config" instance="1" index="151" label="Input 2 sensitivity" units="10ms" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="100" value="10">
					<Help>This parameter defines the inertia time of IN2 input in alarm modes. Adjust this parameter to prevent bouncing or signal disruptions. Parameter is relevant only if parameter 21 is set to 0 or 1 (alarm mode). Available settings: 1-100 (10ms-1000ms, 10ms step). Default setting: 10 (100ms).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="152" label="Input 1 delay of alarm cancellation" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="3600" value="0">
					<Help>This parameter defines additional delay of cancelling the alarm on IN1 input. Parameter is relevant only if parameter 20 is set to 0 or 1 (alarm mode). Available settings: 0 - no delay. 1-3600s. Default setting: 0 (no delay).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="153" label="Input 2 delay of alarm cancellation" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="3600" value="0">
					<Help>This parameter defines additional delay of cancelling the alarm on IN2 input. Parameter is relevant only if parameter 21 is set to 0 or 1 (alarm mode). Available settings: 0 - no delay. 1-3600s. Default setting: 0 (no delay).</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="154" label="Output 1 logic of operation" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="1" size="1">
					<Help>This parameter defines logic of OUT1 output operation.</Help>
					<Item label="contacts normally open" value="0" />
					<Item label="contacts normally closed" value="1" />
				</Value>
				<Value type="list" genre="config" instance="1" index="155" label="Output 2 logic of operation" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="1" size="1">
					<Help>This parameter defines logic of OUT2 output operation.</Help>
					<Item label="contacts normally open" value="0" />
					<Item label="contacts normally closed" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="156" label="Output 1 auto off" units="0.1s" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="27000" value="0">
					<Help>This parameter defines time after which OUT1 will be automatically deactivated. Available settings: 0 - auto off disabled. 1-27000 (0.1s-45min, 0.1s step). Default setting: 0 (auto off disabled).</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="157" label="Output 2 auto off" units="0.1s" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="27000" value="0">
					<Help>This parameter defines time after which OUT2 will be automatically deactivated. Available settings: 0 - auto off disabled. 1-27000 (0.1s-45min, 0.1s step). Default setting: 0 (auto off disabled).</Help>
				</Value>
			</CommandClass>

Interesting, My 112 Command class is basically empty.
But In case anyone else is having this issue I was able to configure parameter 20 by calling the zwave service under developer tools in HomeAssistant interface.
fibaro_Implant Set parameter value

Have you, or anyone else had any luck since then getting the anaog inputs to update, without polling them?

No, no changes on my side… I did not tested it yet, but perhaps new Zwave JS integration chnges something… I hope :slight_smile:

I’m using the new Z-Wave JS integration, the latest version:
zwavejs2mqtt: 5.5.1
zwave-js: 8.2.1

but still no luck. It doesn’t seem to update in the log either. I’m not sure why. Everything else seems to work well with it.

Well, I can only guess that it is by design… as input voltage might even slightly fluctuate, it would cause constant sensor updates being pushed through the network. In case of few Smart Implants being installed ti could kill the low bandwidth network with constant updates.

Regarding Z-Wave scenes and the Smart Implant, I described a (workaround based) solution here that might be of any interest for you.

Anyone having trouble with the voltage being displayed in home assistant? Mine was working fine, and it’s still displayed in the Z-Wave logs e.g.

CNTRLR » [Node 076] querying Voltage sensor reading… [Endpoint 4]
CNTRLR [Node 076] No scale preference for sensor type 15, using the firs [Endpoint 4]
t supported scale 0
INFO ZWAVE: Node 76: metadata updated: 49-4-Voltage
INFO ZWAVE: Node 76: value updated: 49-4-Voltage 4.97 => 0

So it is reporting the voltage change, but despite the sensor in home assistant showing that it has been recently updated, and thus the correct entity name et cetera, it never changes from 0.0 V.

I’ve never got voltage sensor automatically updating values, so I made a small automation that forces refreshes every 10 seconds (in my case voltage is returned from IR distance sensor, so I can use voltage changes to detect presence of the car in the garage). I also have input_boolean.zwave_active helper that indicates zwave network was fully initiated to avoid errors in the log.

  - id: 'refreshing_car_sensors'
    alias: Refreshing Car Presence Sensor
    initial_state: True
    trigger:
      - platform: time_pattern
        seconds: '/10'
    condition:
      - condition: state
        entity_id: input_boolean.zwave_active
        state: 'on'
    action:
      - service: zwave.refresh_node_value
        data_template:
          node_id: 32
          value_id: "72057594579796210"

That’s what I used to do, but now the value only refreshes in the z-wave logs, not in HA; despite it showing as newly refreshed in HA.