Piloter un Sonos avec un bouton SNZB-01

Bonjour à tous,

Je progresse doucement dans la compréhension de HA et malgré beaucoup de temps passé sur le forum, certaines choses restes mystérieuses pour moi …

J’ai réussi à utiliser mon boutons Sonoff grâce à un BluePrints parce ce bouton n’affiche QUE son niveau de batterie dans ses fonctions de base : pas pratique …

Aujourd’hui j’aimerai comprendre comment on crée une automatisation quand les appareils détectés / enregistrés ne le permettent pas par défaut.

Par exemple faire un play ou un stop sur mon enceinte Sonos avec mon bouton SNZB.

Mon bouton m’affiche ça comme event :

"event_type": "zha_event",
"data": {
    "device_ieee": "00:12:4b:00:1f:9b:00:f2",
    "unique_id": "00:12:4b:00:1f:9b:00:f2:1:0x0006",
    "device_id": "a9642ebbedd3dc562e1c0e546a4787d6",
    "endpoint_id": 1,
    "cluster_id": 6,
    "command": "toggle",
    "args": []
},
"origin": "LOCAL",
"time_fired": "2021-03-13T23:22:44.054454+00:00",
"context": {
    "id": "664ea437847bbe16391dfe3eebdea937",
    "parent_id": null,
    "user_id": null
}

Et mon Sonos :

{
    "event_type": "state_changed",
    "data": {
        "entity_id": "media_player.salon",
        "old_state": {
            "entity_id": "media_player.salon",
            "state": "paused",
            "attributes": {
                "source_list": [
                    "FIP 105.1 (Musique Française)",
                    "France Inter 87.8 (Émissions-débats France)",
                    "RadioMeuh.com",
                    "Trouble in Mind",
                    "Line-in"
                ],
                "volume_level": 0.17,
                "is_volume_muted": false,
                "media_content_id": "x-rincon-mp3radio://http://icecast.radiofrance.fr/fip-midfi.mp3?ID=76zqey582k",
                "media_content_type": "music",
                "media_title": "FIP",
                "media_channel": "FIP",
                "source": "FIP 105.1 (Musique Française)",
                "shuffle": false,
                "repeat": "off",
                "sonos_group": [
                    "media_player.salon"
                ],
                "friendly_name": "Salon",
                "entity_picture": "/api/media_player_proxy/media_player.salon?token=bf2ecdddb4c4ae6a3539d15c52ef753d6a5bc3ddf9c1f2e6527c5b23949836ae&cache=6f0e128bd7d93494",
                "supported_features": 457279
            },
            "last_changed": "2021-03-15T18:50:25.291339+00:00",
            "last_updated": "2021-03-15T18:50:25.291339+00:00",
            "context": {
                "id": "b23b81b3bda0638b532d8930048d125b",
                "parent_id": null,
                "user_id": null
            }
        },
        "new_state": {
            "entity_id": "media_player.salon",
            "state": "playing",
            "attributes": {
                "source_list": [
                    "FIP 105.1 (Musique Française)",
                    "France Inter 87.8 (Émissions-débats France)",
                    "RadioMeuh.com",
                    "Trouble in Mind",
                    "Line-in"
                ],
                "volume_level": 0.17,
                "is_volume_muted": false,
                "media_content_id": "x-rincon-mp3radio://http://icecast.radiofrance.fr/fip-midfi.mp3?ID=76zqey582k",
                "media_content_type": "music",
                "media_title": "FIP",
                "media_channel": "FIP",
                "source": "FIP 105.1 (Musique Française)",
                "shuffle": false,
                "repeat": "off",
                "sonos_group": [
                    "media_player.salon"
                ],
                "friendly_name": "Salon",
                "entity_picture": "/api/media_player_proxy/media_player.salon?token=bf2ecdddb4c4ae6a3539d15c52ef753d6a5bc3ddf9c1f2e6527c5b23949836ae&cache=6f0e128bd7d93494",
                "supported_features": 457279
            },
            "last_changed": "2021-03-15T19:13:43.726488+00:00",
            "last_updated": "2021-03-15T19:13:43.726488+00:00",
            "context": {
                "id": "a1fba3827ab6f19a2fbfb4fdefdb36aa",
                "parent_id": null,
                "user_id": null
            }
        }
    },
    "origin": "LOCAL",
    "time_fired": "2021-03-15T19:13:43.726488+00:00",
    "context": {
        "id": "a1fba3827ab6f19a2fbfb4fdefdb36aa",
        "parent_id": null,
        "user_id": null
    }
}

J’imagine que la vérité se trouve quelque part ici :

"event_type": "zha_event",
    "device_ieee": "00:12:4b:00:1f:9b:00:f2",
    "command": "toggle"

et

            "entity_id": "media_player.salon",
            "state": "playing",

Mais je n’arrive pas à comprendre comment créer le squelette de cette fonction …

Si vous avez la solution, c’est cool, mais si vous avez un lien vers un tuto qui me permettra de comprendre, c’est encore mieux !!!

Et après, il faudra que je comprenne la même chose sous Node-Red : la route est longue …

Merci de votre aide,

Pierre

C’est le fonctionnement de base de presque tous les boutons :wink:
Il y a certain bouton qui effectivement crée une entité sensor contenant le type d’appui, mais si un évènement est perceptible par HA, je te conseille d’utiliser l’évènement comme déclencheur…

C’est exactement ce qui faut faire pour la première étape :+1:

Maintenant tu as toutes les informations pour construire ton déclencheur.

Il te suffit d’appliquer le même principe qu’ici : Déclenchement service via entitées de scènes NodOn Soft Remote - #8 par Clemalex

Si tu ne comprends pas, n’hésites pas à le dire :+1:

Merci de ton aide,

J’ai commencé un truc comme ça,mais en fait je ne comprends même pas le concept de base, et ce que j’ai écrit me renvoi une erreur.

alias: test1
description: ''
mode: single
trigger:
  - platform: event
    event_type: zha_event
    unique_id: 00:12:4b:00:1f:9b:00:f2:1:0x0006
    command: toggle
action:
  - type: toggle
    device_id: 1ee4ce0948f8896d0403fbbaff1649e9
    entity_id: light.osram_classic_a60_w_clear_lightify_ed78040a_level_on_off
    domain: light

Ce qui me perturbe c’est que je n’ai pas l’impression que les champs remontés dans mon event puisent être utilisés dans mon yaml …
Bref, je nage complet !

Regarde du côté de :

J’ai lu l’intégralité de ce post hier, ça ne m’a rien apporté.
Je viens de trouver comment intégrer mon bouton (https://smarthomepursuits.com/add-smartthings-button-home-assistant/) et ça fonctionne, même si la gestion des champs me reste assez mystérieuse.

Je vais essayer d’attaquer la partie Sonos

Je pense que la phrase correct est :

Je n’ai pas réussi à extraire les informations relatives à mon cas

:innocent:

Car les liens que j’ai donné contiennent toutes les informations pour répondre à ta question.

Ton lien utilise le même principe…

Qu’est-ce qui t’as bloqué ?

Peux tu partager ta configuration pour au moins la partager pour les futures personnes dans ton cas ?

Ce qui me bloque c’est que je n’ai pas la moindre idée de comment exploiter les données event de mon Sonos.
Comment transformer l’état « playing » en action « Start » ?
Et l’état « paused » en action « stop » ?
Comment identifier l’entité sur laquelle je dois agir ?
Comment faire un choix dans la « source_list »: pour écouter « FIP 105.1 (Musique Française) » ?

J’ai vraiment un problème avec les bases sur cet outils

Pour commencer et avoir les bases :

Pour le reste, je laisse la main au possesseur de Sonos

Il y a un truc que je ne comprends vraiment pas :
Dans mon Dashboard il y a la possibilité de gérer mon Sonos via un GUI :

image

Donc si je clique sur la flèche, la musique joue.
Comment est-ce que je peux enregistrer cet événement pour le rejouer sous forme de script ?
Est-ce qu’il existe un moyen d’enregistrer les events de cette action (genre => logger: default: info) pour les comprendre et les analyser ?

Et comment on fait les « possesseur de Sonos » pour trouver comment coder ces interactions ?

Pour le moment j’arrive à ça :

alias: Bouton play Sonos
description: ''
trigger:
  - platform: event
    event_type: zha_event
condition: []
action:
  - service: sonos.play_queue
    data:
      entity_id: media_player.salon
mode: single

Mais cette action joue la « queue », au lieu de faire un « play » et mon code semble dire « quelque soit l’action « zha_event », alors [action] » : je prévois des problème dés que j’aurai 2 boutons !

On voit ça ce soir :+1: (après le boulot et la vie de famille :heart: )

Super, merci beaucoup du temps que tu prends à me répondre !

Mes derniers essais donnent ça :

  • 1 click et je joue la « Queue » du Sonos (mais ce n’est pas un play, et au deuxième click je reprends au début de cette « Queue » )
  • Double-click et je « Toggle » mon ampoule
alias: Play Sonos BluePrints
description: ''
use_blueprint:
  path: garykrige/zha-sonoff-zigbee-switch.yaml
  input:
    sonoff_button: e417543f975e800552a60125afe8e149
    toggle_action:
      - service: sonos.play_queue
        data:
          entity_id: media_player.salon
    on_action:
      - type: toggle
        device_id: 1ee4ce0948f8896d0403fbbaff1649e9
        entity_id: light.osram_classic_a60_w_clear_lightify_ed78040a_level_on_off
        domain: light

Bon apparement tu a utilisé le blueprint dispo ici :

Donc pour la partie, prendre les commandes boutons je pense pas qu’il y ai de soucis.

Il ne reste plus qu’à voir si un service est dispo sur le Sonos dans outils de développement > services.
Tu recherche en tapant Sonos et tu auras la liste des services dispo, dont surement un truc genre « Sonos.play ». (Désolé je n’ai pas de sonos)
Sinon tu peux tester aussi le service « Lecteur multimédia: Play » en mettant l’id de ton Sonos.

service: media_player.media_play
target:
  device_id: ofqbuqfgqsufTonIdSonos

Avec le service " service: media_player.media_play" j’arrive à faire un « Play » au lieu d’un « play queue », Merci !
Et avec « service: media_player.media_play_pause » je peux même faire un pause par l’appui suivant …
1000 merci

alias: Play Sonos BluePrints
description: ''
use_blueprint:
  path: garykrige/zha-sonoff-zigbee-switch.yaml
  input:
    sonoff_button: e417543f975e800552a60125afe8e149
    toggle_action:
      - service: media_player.media_play_pause
        target:
          entity_id: media_player.salon
    on_action: []

@Pierrem31

Tu as lu la documentation que j’ai mis dans ce post : Piloter un Sonos avec un bouton SNZB-01 - #8 par Clemalex ?

J’en ai pas l’impression… :face_with_monocle:

Voici peut être une piste pour ta demande de sélection de source (toujours avec une action détaillée dans le lien de la documentation que je t’ai donné) :

J’ai lu ce doc aussi, ainsi que plein d’autres, et je n’y ai rien compris, car je n’ai pas les bases et le contexte.

Ces doc/tuto s’adressent à des personnes qui ont déjà compris les concepts de la programmation yaml sous HA, et c’est loin d’être mon cas.

Je suis obligé de procéder par tâtonnements et de reprendre des programmations déjà fonctionnelles pour les décortiquer et les adapter

Dans quelques temps je reprendrais ces docs et je me dirai « Mais oui, évidemment ! »