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 !
J’espère que c’est assez clair, peut être que ca en aidera certains