Fibaro Smart Implant FGBS222

@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.

Somehow parameter 154 and parameter 155 had reverted back to “normally closed” instead of “normally open”. Now it’s showing up properly again in Home Assistant.

Like you I never got it updating values, so I just refresh it every 30 seconds in node red.

Edit:

I changed parameter 63 to “30”, and now it’s reporting automatically even without polling/refreshing the Smart implant.

This is using it with an automatic gate opener that goes from 0 V when it is shut, to 4.97 V when it is open.

So, had the same problem not updating my 6x DS18b20 sensors…took a while to figure out. The FGBS is a multichannel device and by default Home Assistant settings it is configured as a single device, not multichannel. Af searching for hours I found this site which solves it completely:

In short, in dev mode you can remove the normal (single mode) association for lifeline to the zwave stick and add the multichannel association again for lifeline to the zwave stick in multichannel mode.

Good luck,
-Bas

1 Like

That command seems deprecated. I think it’s for the old Z-Wave integration which is due to be killed any moment now. Perhaps there is a way to do it in the GUI, but I’m not sure what I’m doing.

Or perhaps through: Z-Wave JS: Set a value on a Z-Wave device (Advanced)

I tried manually adding different things to the Group, but nothing seemed to change. How can I tell whether this is a Multichannel lifeline or not?

Thanks