Utilisation du Switch SONOFF SNZB-01P

Bonjour,

J’ai fais l’acquisition d’un SONOFF SNZB-01P.

Celui-ci est bien détecté

image

Par contre j’ai fais ce « blueprint »

blueprint:
  name: "Contrôle VMC avec SONOFF SNZB-01P"
  description: "Contrôle de la VMC avec différentes durées selon le type d'appui sur le bouton"
  domain: automation
  input:
    button_device:
      name: Bouton SONOFF
      selector:
        device:
          integration: zha
          manufacturer: SONOFF
          model: SNZB-01P
    vmc_switch:
      name: Interrupteur VMC
      selector:
        entity:
          domain: switch
      default: sensor.switch_sdb_haut_action

variables:
  button_device: !input button_device
  vmc_switch: !input vmc_switch

trigger:
  - platform: device
    device_id: !input button_device
    domain: zha
    type: remote_button_short_press
    subtype: button_1
  - platform: device
    device_id: !input button_device
    domain: zha
    type: remote_button_double_press
    subtype: button_1
  - platform: device
    device_id: !input button_device
    domain: zha
    type: remote_button_long_press
    subtype: button_1

action:
  - choose:
      - conditions:
          - condition: trigger
            id: remote_button_short_press
        sequence:
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:10:00"
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
      - conditions:
          - condition: trigger
            id: remote_button_double_press
        sequence:
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
      - conditions:
          - condition: trigger
            id: remote_button_long_press
        sequence:
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:20:00"
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch

Et dans l’automation je ne trouve pas le switch :

Le switch n’est pas dans la liste:

J’ai remarqué également que mon périphérique : Switch_SDB_Haut n’était pas visible dans la section : Aperçu , comme tous mes autres perifs ZigBee.

  • J’ai aussi acheté un autre Interrupteur de marque Aqua bien detecté etc … mais meme problème … Il y a surement un mode special pour les interrupteurs / switchs que je ne connais pas :face_with_raised_eyebrow: :face_with_raised_eyebrow:

Si vous avez de bonnes idées merci d’avance. :wink:

Et meilleurs veux 2025 à ceux qui lirons ce « sujet » :clinking_glasses:

Je suis sur une solution …
domain: update pour le SONOFF …

Bonjour,

C’est un bouton

  • Un bouton n’a pas d’état donc il n’est pas dans Apercu
  • La seule chose qu’on stocke pour un bouton est l’heure d’appui
  • le blueprint attend un switch c’est à dire quelque chose qui fasse on/off par exemple chez SONOFF un module ZBMINIR2

Bon, voici un BluePrint qui devrait fonctionner comme ceci (pour le debug):

  • 1 appui : VMC on pour 10 secondes
  • 2 appuis : VMC on pour 30 secondes
  • appui long : Stop VMC

Actuellement, cela fonctionne comme cela:

Si j’appuie 2 fois je part pour 30 secondes mais si je fais un appui long pendent la période de 30 sec ça ne s’arrête pas.

Si la VMC est déjà démarré par un autre moyen et que je fais un appui long: la VMC s’arrète bien.

Si j’appui 1 fois et que dans la periode de 10 secondes je fais un double appui, je ne relance pas le decompte pour 30 secondes. Il faut attendre la fin des 10 sec pour qu’une autre action soit entreprise.

En bref avec le code suivant, on arrive bien à faire faire des actions suivant les 3 combinaisons possibles (simple , double , long) mais il faut que l’action démarrée se termine pour pouvoir en lancer une autre.

blueprint:
  name: "Contrôle VMC avec bouton SDB via MQTT"
  description: "Contrôle de la VMC selon les différents types d'appuis sur le bouton de la salle de bain"
  domain: automation
  input:
    button_friendly_name:
      name: Nom du bouton dans Zigbee2MQTT
      description: Entrez le friendly name du bouton dans Zigbee2MQTT
      default: Bouton_SDB_Haut
    vmc_switch:
      name: Interrupteur VMC
      description: Sélectionnez l'interrupteur qui contrôle la VMC
      selector:
        entity:
          domain: switch
      default: switch.disjoncteur_vmc_maison

trigger:
  - platform: mqtt
    topic: "zigbee2mqtt/Bouton_SDB_Haut/action"

action:
  - variables:
      action: "{{ trigger.payload }}"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ action == 'single' }}"
        sequence:
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "Tentative d'allumage de la VMC pour 10 secondes (appui simple)"
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:00:10"
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "VMC éteinte après 10 secondes (appui simple)"

      - conditions:
          - condition: template
            value_template: "{{ action == 'double' }}"
        sequence:
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "Tentative d'allumage de la VMC pour 30 secondes (double appui)"
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:00:30"
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "VMC éteinte après 30 secondes (double appui)"

      - conditions:
          - condition: template
            value_template: "{{ action == 'long' }}"
        sequence:
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "Tentative d'extinction de la VMC (appui long)"
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
          - service: logbook.log
            data:
              name: "VMC SDB"
              message: "VMC éteinte après un appui long"

  - service: persistent_notification.create
    data:
      message: "Action détectée: {{ action }}"

Comment faire en sorte de (par exemple) : Lancer la VMC 30 sec (double appui) et l’arréter avant la fin (appui long) ?

Tu crois que tu veux un mode restart pour le blueprint.


Je sais faire avec les automatismes, mais je ne suis pas certain de l’écriture avec les blueprint.
Essaie :

mode: restart
blueprint:

Merci Armavi pour cette solution car elle règle mon problème. C’était bien vu :+1:

Voici le code qui fonctionne avec l’intégration pour ceux que ca pourrait interresser:

blueprint:
  name: "Contrôle VMC avec bouton SDB via MQTT (Interruptible)"
  description: "Contrôle de la VMC selon les différents types d'appuis sur le bouton de la salle de bain, avec possibilité d'interruption"
  domain: automation
  input:
    button_friendly_name:
      name: Nom du bouton dans Zigbee2MQTT
      description: Entrez le friendly name du bouton dans Zigbee2MQTT
      default: Bouton_SDB_Haut
    vmc_switch:
      name: Interrupteur VMC
      description: Sélectionnez l'interrupteur qui contrôle la VMC
      selector:
        entity:
          domain: switch
      default: switch.disjoncteur_vmc_maison

mode: restart  # Permet d'interrompre l'action en cours et de relancer une nouvelle action

trigger:
  - platform: mqtt
    topic: "zigbee2mqtt/Bouton_SDB_Haut/action"

action:
  - variables:
      action: "{{ trigger.payload }}"
  - choose:
      - conditions:
          - "{{ action == 'single' }}"
        sequence:
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:00:10"  # Délai de 10 secondes pour un appui simple
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
      - conditions:
          - "{{ action == 'double' }}"
        sequence:
          - service: switch.turn_on
            target:
              entity_id: !input vmc_switch
          - delay: "00:00:30"  # Délai de 30 secondes pour un double appui
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
      - conditions:
          - "{{ action == 'long' }}"
        sequence:
          - service: switch.turn_off
            target:
              entity_id: !input vmc_switch
          - service: persistent_notification.create
            data:
              message: "VMC arrêtée manuellement (appui long)"
  - service: persistent_notification.create
    data:
      message: "Action détectée: {{ action }}"

Photo du bouton :