Retour d'état interrupteurs volets roulants Tuya + Positionnement

Il faut récupérer l’historique de toutes les entités liées à Bureau… et activer les logs tuya … pas trop le choix

J’ai trouvé plus simple avec nodered !

Et ça fonctionne nickel !!!

Voilà mon code nodered :

[{"id":"6f217ea2bffe140f","type":"switch","z":"c0e31a39.825d08","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"opening","vt":"str"},{"t":"eq","v":"unknown","vt":"str"},{"t":"eq","v":"closing","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":460,"y":800,"wires":[["9f5bb008b1817083"],["8961bf7ac1303011"],["2c7056b48f2a9fe0"]]},{"id":"8961bf7ac1303011","type":"change","z":"c0e31a39.825d08","name":"STOP_Bureau_2","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"entity_id\":\"cover.bureau_2\"}","tot":"str"},{"t":"set","p":"query.device_type","pt":"msg","to":"cover","tot":"str"},{"t":"set","p":"query.service","pt":"msg","to":"stop_cover","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":800,"wires":[["b340ba7df523a9fd"]]},{"id":"b340ba7df523a9fd","type":"link out","z":"c0e31a39.825d08","name":"","links":["acca563f.6da948"],"x":895,"y":800,"wires":[]},{"id":"a26f67cd10a23106","type":"server-state-changed","z":"c0e31a39.825d08","name":"","server":"b4f3b4c.b085248","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"cover.bureau","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":160,"y":800,"wires":[["6f217ea2bffe140f"]]},{"id":"9f5bb008b1817083","type":"change","z":"c0e31a39.825d08","name":"OPEN_Bureau_2","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"entity_id\":\"cover.bureau_2\"}","tot":"str"},{"t":"set","p":"query.device_type","pt":"msg","to":"cover","tot":"str"},{"t":"set","p":"query.service","pt":"msg","to":"open_cover","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":760,"wires":[["b340ba7df523a9fd"]]},{"id":"2c7056b48f2a9fe0","type":"change","z":"c0e31a39.825d08","name":"STOP_Bureau_2","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"entity_id\":\"cover.bureau_2\"}","tot":"str"},{"t":"set","p":"query.device_type","pt":"msg","to":"cover","tot":"str"},{"t":"set","p":"query.service","pt":"msg","to":"close_cover","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":840,"wires":[["b340ba7df523a9fd"]]},{"id":"b4f3b4c.b085248","type":"server","name":"Home Assistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
1 « J'aime »

2 messages ont été scindés en un nouveau sujet : Volets tuya et position via scripts

Bonjour nikos (et bonne année 2022)

Peux tu m’expliquer ce que ton code nodered permet de plus par rapport au script (de pulpy) ?

Merci

Hello bonne année à toi aussi.
Je te dis ça demain matin.

Bonjour et tous mes vœux à tous. @Pulpy-Luke et @Nikos3296
J’ai le même souci que toi, j’essaie d’avoir l’état de mes volets via cover_time_based.

J’ai dû lire au moins 20 fois la pages, j’ai essayé de suivre le tuto de @Pulpy-Luke, etc…

Je m’explique: j’ai 2 interrupteurs volets tuya qui ne me donnent pas l’état.

Du coup, pour faire simple, je commence par celui de mon bureau:
Dans configuration.yaml, j’ai créé la ligne:

input_text:
retour_etat_fictif_2:
initial: «  »

Ensuite, j’ai donc crée les 3 scripts open, close et stop :

alias: Open volet du bureau
sequence:

  • service: cover.open_cover
    data:
    entity_id: cover.volet_bureau_curtain
  • service: input_text.set_value
    target:
    entity_id: input_text.retour_etat_fictif_2
    data:
    value: open
    mode: single
    icon: mdi:curtains

alias: Close volet du bureau
sequence:

  • service: cover.close_cover
    data:
    entity_id: cover.volet_bureau_curtain
  • service: input_text.set_value
    target:
    entity_id: input_text.retour_etat_fictif_2
    data:
    value: close
    mode: single
    icon: mdi:curtains-closed
    alias: Stop volet du bureau
    sequence:
  • service: cover.stop_cover
    data:
    entity_id: cover.volet_bureau_curtain
    mode: single
    icon: mdi:curtains

Je ne sais pourquoi mes entités script sont nommées comme ceci et ne sont pas identiques:

script.open
script.close_volet_du_bureau
script.stop_volet_du_bureau

Du coup, dans configuration.yaml, j’ai saisi cette commande :

cover:

  • platform: cover_time_based
    devices:
    bureau:
    name: « bureau »
    travelling_time_up: 40
    travelling_time_down: 20
    close_script_entity_id: script.close_volet_du_bureau
    stop_script_entity_id: script.stop_volet_du_bureau
    open_script_entity_id: script.open
    send_stop_at_ends: False

Dans configuration.yaml ça me dit que c’est ok mais lorsque je test dans Validation de Configuration, j’ai cette erreur :

Invalid config for [cover.cover_time_based]: [close_script_entity_id] is an invalid option for [cover.cover_time_based]. Check: cover.cover_time_based->devices->bureau->close_script_entity_id. (See ?, line ?).

Du coup, je suis bloqué, j’y ai passé la journée et impossible de trouver la solution…Donc si vous pouvez m’aider s’il vous plait.
MERCI D’AVANCE.

Salut.

Bon à priori il y a 2 soucis

  • Le nommage du script open.
  • La config du volet

Malheureusement la mise en forme de ton code rends le travail compliqué. Peux-tu utiliser les balises </> pour tout ce qui est yaml ? Ça permet de conserver l’alignement qui est primordial.
Comme tout semble dans le même fichier (configuration.yaml), copie tout d’un coup (input_text, script, cover)

À partir de là on devrait y voir plus clair

1 « J'aime »

Bonjour @Pulpy-Luke et merci pour ta réponse.
Je vais essayer de t’envoyer ça au bon format (c’est mon 1er post) et je ne maîtrise pas le forum, désolé.

Voici mes 3 scripts:

alias: close volet du bureau
sequence:
  - service: cover.close_cover
    data:
      entity_id: cover.volet_bureau_curtain
  - service: input_text.set_value
    target:
      entity_id: input_text.retour_etat_fictif_2
    data:
      value: close
mode: single
icon: mdi:curtains-closed

alias: open volet du bureau
sequence:
  - service: cover.open_cover
    data:
      entity_id: cover.volet_bureau_curtain
  - service: input_text.set_value
    target:
      entity_id: input_text.retour_etat_fictif_2
    data:
      value: open
mode: single
icon: mdi:curtains

alias: stop volet du bureau
sequence:
  - service: cover.stop_cover
    target:
      entity_id: cover.volet_bureau_curtain
mode: single
icon: mdi:curtains

@Mellowtronik

C’est pas bon il manque 1 voir 2 lignes au début
(et l’indentation)
Par ex

Ligne sur configuration.yaml:

input_text:
  retour_etat_fictif_2:
    initial: ""
cover:
  - platform: cover_time_based
    devices:
      bureau:
        name: "bureau"
        travelling_time_up: 40
        travelling_time_down: 20
        close_script_entity_id: script.close_volet_du_bureau
        stop_script_entity_id: script.stop_volet_du_bureau
        open_script_entity_id: script.open
        send_stop_at_ends: False

Ouah, réponse super rapide.
J’ai rajouté manuellement les lignes (script:) et (open_bureau) et j’ai un message d’erreur à l’enregistrement du script: Message malformed: extra keys not allowed @ data[‹ script ›]

Voici ce que j’ai saisie:

script:
  open_bureau:
alias: open volet du bureau
sequence:
  - service: cover.open_cover
    data:
      entity_id: cover.volet_bureau_curtain
  - service: input_text.set_value
    target:
      entity_id: input_text.retour_etat_fictif_2
    data:
      value: open
mode: single
icon: mdi:curtains

Je ne sais pas comment faire pour que les lignes (script et open_bureau) soient affichés sans que je le fasse manuellement.
Pour info, je crée mes script en passant par Configuration, Automatisations et scènes, Scripts.
Et je modifie si besoin en cliquant sur les 3 points et Modifier en tant que YAML…

Regarde c’est pas encore parfait.
Alias et script sont pas alignés normalement…
Il y a un exemple plus haut pour te guider

Regles d’or de pulpy qui m’a bien aidé.

Je cite:

« C’est l’indentation qui n’est pas bonne.
Si la ligne du dessus se termine par :
il faut ajouter 2 espaces aux blocs en dessous… »

1 « J'aime »

Salut, @pascal_ha c’est quoi d’identation?

@Pulpy-Luke J’ai tenté de les aligner mais j’ai le même message d’erreur…

script:
  open_bureau:
    alias: open volet du bureau
    sequence:
    - service: cover.open_cover
      data:
      entity_id: cover.volet_bureau_curtain
    - service: input_text.set_value
      target:
      entity_id: input_text.retour_etat_fictif_2
      data:
      value: open
mode: single
icon: mdi:curtains

L’indentation, c’est l’alignement du code…( enfin je suis pas un pro, mais c’est ce que j’ai compris)

Pour ton code je crois qu’il faut écrire ainsi (a confirmer avec pulpy)

script:
  open_bureau:
    alias: open volet du bureau
    sequence:
      - service: cover.open_cover
      data:
        entity_id: cover.volet_bureau_curtain
      - service: input_text.set_value
      target:
        entity_id: input_text.retour_etat_fictif_2
      data:
        value: open
    mode: single
    icon: mdi:curtains

Après suite au conseil de Pulpy, j’ai installer « Studio code Server » ( Visual studio code) , c’est un éditeur de code qui d’aide à éviter les erreurs d’indentation.

Je ne suis pas un pro, donc je laisse Pulpy me corriger si je me trompe

1 « J'aime »

Non tu as tout compris !
Du coup, j’améliore un peu ma régle d’or :wink:

Si la ligne termine par un : ou commence par un - , il faut ajouter 2 espaces aux blocs en dessous…

Parce que c’est vrai aussi pour - service: cover.open_cover par exemple
Donc ça donne ça

open_bureau:
  alias: open volet du bureau
  sequence:
    - service: cover.open_cover
      data:
        entity_id: cover.volet_bureau_curtain
    - service: input_text.set_value
      target:
        entity_id: input_text.retour_etat_fictif_2
      data:
        value: open
  mode: single
  icon: mdi:curtains

Pour - service : … c’est parce qu’il y a le - devant ?
C’est valable pour tous les codes qui ont un - devant ou uniquement service ?

Non c’est pas la cause directe…
Le - ça veut dire que c’est un élément d’une liste (de 1 à N -) . D’ailleurs on le voit puisque tu as 2 fois - service:
Et puisque c’est une liste, on précise les noms : cover.open_cover et input_text.set_value pour les différencier.
Les propriétés en dessous appartiennent à cet élément de la liste => on décale
On termine les propriétés, en mettant un nouveau - (qu’on aligne avec le précédent), ou ne revenant de 2 espaces en arrière ( le dernier item de la liste)

Mais si il y a un - devant service ou platform ou un autre, on décale systématiquement ?

C’est plus clair comme ça ?

Si la ligne commence par un - , il faut ajouter 2 espaces aux blocs en dessous…
Si la ligne termine par un : , il faut ajouter 2 espaces aux blocs en dessous…

C’est pas si simple à expliquer avec juste quelques, d’où l’intérêt d’utiliser VStudio, qui lui connait mieux que nous la syntaxe :wink:

1 « J'aime »