Solution pour bien intégrer l'interrupteur volet roulant connecté Zigbee 3.0 Wiser Odace blanc S520567W

Salut à tous,

J’ai acheter un interrupteur volet roulant connecté Zigbee 3.0 Wiser Odace blanc S520567W pour le tester avant d’acheter les 5 autres.
Il n’est pas encore supporté par zigbee2mqtt il a donc fallu créer un convertisseur externe :

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;

const definition = { zigbeeModel: ['NHPB/SHUTTER/1'], // The model ID from: Device with modelID 'lumi.sens' is not supported.
model: 'S520567W', // Vendor model number, look on the device for a model number
vendor: 'Schneider Electric', // Vendor of the device (only used for documentation and startup logging)
description: 'Wiser Odace Volet roulant', // Description of the device, copy from vendor site. (only used for documentation and startup logging)
fromZigbee: [fz.cover_position_tilt, fz.command_cover_close, fz.command_cover_open, fz.command_cover_stop], // We will add this later
toZigbee: [tz.cover_position_tilt, tz.cover_state], // Should be empty, unless device can be controlled (e.g. lights, switches).
exposes: [e.cover_position()], // Defines what this device exposes, used for e.g. Home Assistant discovery and in the frontend
meta: {coverInverted: true},
configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1) || device.getEndpoint(5); await reporting.bind(endpoint, coordinatorEndpoint, ['closuresWindowCovering']); await reporting.currentPositionLiftPercentage(endpoint); },
 };

module.exports = definition;

Une fois le convertisseur externe en place l’interupteur est bien reconnu :

A ce moment là on se dit c’est tout bon et en fait non… la remonté du pourcentage d’ouverture n’est pas bonne car le timer par default des interrupteurs est de 2 minutes. Il est impossible de le regler ce temps sans la passerelle wiser car la commande n’est pas connue.

J’ai donc pensé à renvoyer la prise puis je me suis dis on doit pouvoire contourner ce problème avec des automatisation dans home asssistant.
Voici mon bricolage pour pouvoir bien utiliser cet interrupteur :

On ferme le volet roulant la position doit être égale à 0 dans zigbee2mqtt
On ouvre le volet roulant et on note le chiffre de zigbee2mqtt quand il est ouvert à 100%
On crée une automatisation d’arret avec ce chiffre -1 :

- id: '1635764483678'
  alias: volet_roulant_stop_timer
  description: arret du timer à 26
  trigger:
  - platform: numeric_state
    entity_id: cover.0x804b50fffea67e71
    attribute: current_position
    above: '25'
  condition: []
  action:
  - service: mqtt.publish
    data:
      topic: zigbee2mqtt/0x804b50fffea67e71/set
      payload: '{"state": "STOP"}'
  mode: single

Et voilà le temps d’ouverture du volet roulant est maintenant le bon. Il ne reste plus qu’a créer un sensor pour avoir un pourcentage correct :

##Sensor pourcentage store salon
  - platform: template
    sensors:
      salon_percent:
        unit_of_measurement: "%"
        entity_id: cover.0x804b50fffea67e71
        value_template: "{{ (state_attr('cover.0x804b50fffea67e71', 'current_position') | multiply(100)/26) | round(0)}}"

Et hop ca fonctionne !

image

J’espère que c’est assez clair, peut être que ca en aidera certains :slight_smile:

4 « J'aime »

super boulot ca ! merci pour le partage !

Salut,
Tu n’a pas put utiliser les options time_close et time_open ?
Dispo depuis la version 1.18 de zigbee2mqtt si je dit pas de bêtise, tu chronomètre le temps de monté et le temps de descente puis, tu rajoute ça dans la conf.

Chez moi, par exemple (c’est pas un Schneider mais ça devrait fonctionner pareil), mon fichier configuration.yaml

devices:
  '0x086bd7fffefb55de':
    friendly_name: Store
    time_close: 45
    time_open: 50

Hello je ne connaissais pas ces commandes, je viens de les tester ça ne fonctionne pas chez moi…
Je pense que tant que la commande pour changer le timer de 120 secondes dans la prise ne sera pas connue il sera compliqué de récupérer le bon pourcentage… :’(

Top! Encore merci.

Tu pourrais me donner la conf de ta card?

Je peux te la donner, mais c’est une custom-card du thème minimalist

J’ai à date des Fibaro en Zwave pour mes volets roulants et je comptais prendre ce modèle pour mon futur logement.
Je vais garder ce topic en tête du coup, merci :slight_smile:
J’imagine, qu’on doit pouvoir ajouter aussi les S520522W (variateurs).