Fibaro Roller Shutter 3 (FGR-223) - cannot get it to work properly

With the 5.0 firmware, the shutters didn’t report any position other than fully open or fully closed. Regardless of what I did. So it didn’t even report the correct position when I refreshed the entity or polled the device. With the 5.1 firmware this now works just fine. But an active request for the position is still required.

1 Like

So, the final solution is going to be to use the 5.1 firmware from Fibaro and wait for a HA Zwave update that pull the position automatically? Is any work in progress in this line?

Yes, I think this is the only thing one can hope for.

Reading all this , and having fibaro 5.0 shutter 3. I’m guessing i’m sending them back to amazon. are the qubino’s working good out of the box?

The Qubinos have their own share of problems - they’re extremely unreliable (had 4 out of 6 die on me), and if you use them in venetian blinds mode, they don’t send reports in most cases.

Ah, ok, i’ll just do the polling fix and hope for a more gracious bugfix in the future.

Anyone any idea how to do the firmware upgrade via openzwave?

Thanks for the reply!

It is not possible via openzwave. You need a Fibaro Home Center.

Hello,
Now, somebody recently bought fibaro roller shutter 3 and succeeded to use it out of the box ? Or must we buy roller shutter 2 ?

I got a solution to update the cover position in realtime until the final position is reached when using set_cover_position in home assistant. I’m using Fibaro Roller Shutter 3 with Firmware 5.0.

The automation listens for a set_cover_positon service call from anywhere in home assistant:

  • sunset automation
  • button automation
  • script via ui button
  • specific position via ui control bar

Because the roller shutter position is only updated when the command is send (moving covers started), I repeat the command every second until the final position is reached.

- alias: Roller Shutter Status Update
  id: "68a5d03014cc"
  trigger:
    - platform: event
      event_type: call_service
      event_data:
        domain: cover
        service: set_cover_position
  condition:
    - condition: template
      value_template: "{{ state_attr(trigger.event.data.service_data.entity_id, 'current_position') | int != trigger.event.data.service_data.position | int }}"
  action:
    - delay: "00:00:01"
    - service: cover.set_cover_position
      data_template:
        entity_id: "{{ trigger.event.data.service_data.entity_id }}"
        position: "{{ trigger.event.data.service_data.position }}"

2 Likes

This worarround looks vert smart and amazing @naofireblade
Im a bit newbie so sorry to ask something so trivial. Can I use the code as it is or should I change for example “entity_id” by xxxx? Where xxx I don’t know what could be.
Thank you.

You can use the code exactly like it is. It‘s independent from entity names.
Maybe experiment with delay a bit. Depending on the distance of your devices you might set this to a few seconds more.

I got to this post through the search function as I have a similar issue with the roller shutter 223 that I recently bought.

The HA UI does not update when pressing a button (up or down) and the full movement completed. Also I had to reverse the movement settings in the firmware through parameter 20. I have to randomly press the position slider to be able to fully close the shutter.

My roller shutter 222 does not have the same issues.

I will try the workaround scripts posted above.

I added the following automation, but it seems not to work correctly:

- id: "Refresh 223 Status"
  alias: Refresh 223 Status
  trigger:
    - platform: numeric_state
      entity_id: sensor.fibaro_system_fgrm223_roller_shutter_controller_3_power
      below: 2
  action:
    - delay: "00:00:14"
    - service: zwave.refresh_entity
      data:
        entity_id: cover.fibaro_system_fgrm223_roller_shutter_controller_3_level

Anyone any ideas? If I do the command via the ZWAVE Lovelace UI, it seems to work, but the automation only refreshes other values, not the level one.

Side note: the 14" delay is because I know the cover needs 13.5 seconds for a full open or close movement (from the calibration paramter)

@naofireblade - I’m in the same boat as the others here. My Fibaro 3 is not behaving. I want to use your code, but I’m not clear on what the “id” key is. Can you explain what role it plays, and what the value represents?

The cool thing is, u just need to copy my automation. It is generic vor all roller shutters. You don’t need to specify a specific entity_id.

The automation listens vor any service call “set_cover_position” and checks if the cover entity in the call has reached the final position yet or not. As long as the final position is not reached, the “set_cover_position” command will be repeated every seconds.

See my explanation above. Just copy my automation. You can leave the delay at 1 or 2 seconds, it will be repeated until the final position is reached. You will even see the cover control moving in 1 second steps.

I try your automation but for me nothing work.

I just copy past your code in automation yaml it’s correct ?

Ok I find a solution

zwave.refresh_node automation after any action with this device.

It’s the same for my FGT Fibaro now have a big problem with all device :frowning:

Hi,
I happen to have the same problem with my new FGR-223.

I also have an old FGR-222 and changing the position was ok via Hassio.
When I installed my FGR-223 on another blind, the position is indeed not updated correctly when I change it via Hassio.

Here is how I set it right:
First I move the cursor to the position I want. Then the roller goes to the right position and when it is physically stopped, I just press the “Stop” button between the two arrows. After a few seconds, the position is set correctly.

So the thing is, when the roller reaches the desired position, just press the “Stop” button.

Hope this helps

1 Like

Didn’t work well for me, because Fibaro somehow queued the set_position requests and ended in looping from closed to opened states.

But I’ve found the solution for getting the update after action over HA is done if you stuck at firmware v5.0:

  • first, collect an value_id of your cover entity, i.e. by using the following automation (you need to fire the position change once and check system logs for value_id)
- id: '68a5d03014cc'
  alias: Roller Shutter ValueID Tester
  trigger:
  - platform: event
    event_type: call_service
    event_data:
      domain: cover
      service: set_cover_position
  action:
  - service: system_log.write
    data_template:
      message: '"node_id: {{ state_attr(trigger.event.data.service_data.entity_id,
        ''node_id'') }}" "value_id: {{ state_attr(trigger.event.data.service_data.entity_id,
        ''value_id'') }}"'
  • second add the status update automation for each device with the value_id from step 1
- id: '1583872422398'
  alias: Bedroom Curtains Status Update
  trigger:
  - entity_id:<YOUR_ROLLER_SHUTTER_SENSOR_SYSTEM_ENTITY> i.e sensor.bedroom_curtains_system
    platform: state
  condition:
  - condition: template
    value_template: '{{ is_state_attr(trigger.entity_id, ''power_consumption'', 0)}}'
  action:
  - data_template:
      node_id: '{{ state_attr(trigger.entity_id, ''node_id'') | int }}'
      value_id: '<YOUR_VALUE_ID>'
    service: zwave.refresh_node_value

With the steps above you should see the correct status after the curtains changes its own position (with delay of 1-2 seconds).

EDIT:
I’ve updated the controllers to v5.1 and changed the script to the following:

- id: '4873203472347998423'
  alias: Update Roller Shutter Status
  trigger:
  - platform: state
    entity_id:
    - cover.kitchen_curtains_level
    - cover.bedroom_curtains_level
    - cover.living_room_curtains_level
  condition:
      condition: template
      value_template: >
        {{ trigger.from_state and
           trigger.to_state.attributes.power_consumption !=
           trigger.from_state.attributes.power_consumption and trigger.to_state.attributes.power_consumption == 0.0 }}
  action:
  - service: cover.stop_cover
    data_template:
      entity_id: '{{ trigger.entity_id }}'

This solution allows to avoid refresh_node call, but to makie it work you need to play around with 2 node’s parameters: (155) Motor operation detection and (61) Power reports - on change, so the fibaro properly reports power consumption. The only flaw is that the power report has a significant delay (around 10s), but I am fine with that.

1 Like