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}]
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
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
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… »
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
Non tu as tout compris !
Du coup, j’améliore un peu ma régle d’or
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