Template mqtt cover et cover

Mon problème

Bonsoir,
j’ai essayé de faire fonctionner mes volets « maison » (rpi avec jeux de relais qui s’actionnent le temps voulu pour avoir le % d’ouverture voulu en consigne).
Tout fonctionne très bien sur domoticz, sur la pi je reçois un json en mqtt { « svalue1 »: valeur_que_je_veux « idx »:mon_volet_dans_dz}.

Pour l’intégrer dans HA, j’ai essayé de suivre différentes démarches:

  • Avec des services RestFull, c’est joli, çà fonctionne! Super!
    image
    Mais,… certes c’est joli, mais je doit utiliser un slider à côté pour piloter la consigne, et en plus, ma pi 2 se fait spammer par des requêtes de HA!
    Ce qu’il y a dans le configuration.yaml:
cover:
  - platform: template
    covers:
      volet_bureau:
        unique_id: "UID_Template_VoletBureau"
        device_class: garage
        friendly_name: "Volet Bureau"
        position_template: "{{ states('input_number.consignevoletbureau')|int() }}" #"{{ states('sensor.volet_6_Bureau') }}"
        open_cover:
          - condition: state
            entity_id: sensor.volet_6_Bureau
            state: "off"
          - service: rest_command.volet_bureau_set_pos_open # switch.turn_on
            target:
              entity_id: switch.volet_6_Bureau
        close_cover:
          - condition: state
            entity_id: sensor.volet_6_Bureau
            state: "on"
          - service: rest_command.volet_bureau_set_pos_closed #switch.turn_off
            target:
              entity_id: switch.volet_6_Bureau
        stop_cover:
          service: switch.turn_on
          target:
            entity_id: switch.volet_6_Bureau
        icon_template: >-
          {% if states('sensor.volet_6_Bureau')|float > 0 %}
            mdi:garage-open
          {% else %}
            mdi:garage
          {% endif %}

#pour les commandes rest:
rest_command:
    volet_bureau_set_pos_open:
        url: "http://192.168.1.237:8080/setvalueByName/volet6_Bureau/0"
        method: GET
    volet_bureau_set_pos_closed:
        url: "http://192.168.1.237:8080/setvalueByName/volet6_Bureau/100"
        method: GET
    volet_bureau_set_position:
        url: "http://192.168.1.237:8080/setvalueByName/volet6_Bureau/{{ states('input_number.consignevoletbureau')|int() }}"
        method: GET
    volet_bureau_get_position:
        url: "http://192.168.1.237:8080/getValue/volet6_Bureau"
        method: GET
  • Avec mqtt cover: j’ai essayé de simplifier au max, en mettant le plus d’infos: HA voit tout et peut passer par /command pour envoyer sa consigne:
    image
    dans mon fichier mqtt.yaml:
cover:
      - name: "Volet du Bureau"
        unique_id: unik_id_volet_bureau
        device_class: shutter

        state_topic: "volets/6/state"
        state_open: open
        state_closed: closed
        
        set_position_topic: "volets/6/command"
        position_open: 0
        position_closed: 99
        payload_open: 0
        payload_close: 100

        position_topic: "volets/6/status" #"home-assistant/cover/position"
        set_position_template: "{{100 - int(position) }}" # "{{ states('input_number.consignevoletbureau')|int() }}"
        
        value_template: "{{   value }}" #value_template: "{{ value_json.svalue1 }}"
        position_template: "{{  value }}" # "{{ states('input_number.consignevoletbureau')|int() }}"
        optimistic: false

Ca fonctionne, j’ai l’état, le slider pour piloter précisément le volet, mais… pas les boutons open/close:
image
le slider:

j’ai essayé de faire un mix entre le template cover et le mqtt cover en ajoutant les open_cover et en bidouillant service: mqtt.publish:

        open_cover:
          - service: mqtt.publish
            topic: volets/6/command
            payload_template: '{{ 0 }}'

Mais je me fais jeter comme un malpropre:
Invalid config for [mqtt]: [open_cover] is an invalid option for [mqtt]. Check: mqtt->mqtt->0->cover->0->open_cover. (See /config/configuration.yaml, line 11).
à savoir: ligne 11 du configuration.yaml: mqtt: !include_dir_merge_named mqtts/

Bein oui: j’essaie de redéfinir du mqtt en étant dans du mqtt. Et je ne suis meme pas sûr que ce soit le « open_cover » ou « close_cover » qui fasse que les boutons soient présents.

Alors visiblement, le chemin n’est pas bon.
Une idée pour récupérer ces satanés bouton open/close ?

Merci!

Ma configuration


System Information

version core-2023.9.2
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.5
os_name Linux
os_version 6.1.0-11-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.32.1
Stage running
Available Repositories 1283
Downloaded Repositories 2
Home Assistant Cloud
logged_in true
subscription_expiration 9 octobre 2023 à 02:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled true
remote_server eu-central-1-15.ui.nabu.casa
certificate_status ready
can_reach_cert_server pending
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 12 (bookworm)
update_channel stable
supervisor_version supervisor-2023.09.2
agent_version 1.5.1
docker_version 24.0.5
disk_total 57.8 GB
disk_used 13.6 GB
healthy failed to load: Unhealthy
supported true
supervisor_api ok
version_api ok
installed_addons rtl_433 MQTT Auto Discovery (0.6.0), File editor (5.6.0), Terminal & SSH (9.7.1), AppDaemon (0.13.4), Studio Code Server (5.10.1), SSH Tunnel & Forwarding (1.2.0), InfluxDB (4.7.0), Grafana (9.0.3)
Dashboards
dashboards 8
resources 0
views 8
mode storage
Recorder
oldest_recorder_run 9 septembre 2023 à 02:12
current_recorder_run 13 septembre 2023 à 18:33
estimated_db_size 161.70 MiB
database_engine sqlite
database_version 3.41.2
___

Salut,

Il est possible que ça vienne du fait que tu n’as pas de command_topic
Tu as le slider car tu as un position_topic, mais les boutons sont liés au command.

1 « J'aime »

Merci @AlexHass !
C’est bien ça!

image

Et le slider a une nouvelle fonction: boutons OU postion:

Encore merci!

Pour les autres débutants qui seraient un peu dans le même cas de volets, le code un peu nettoyé et regroupé pour dupliquer sur tous les volets :

cover:
      - name: "Volet du Bureau"
        unique_id: unik_id_volet_bureau
        device_class: shutter

        state_topic: "volets/6/state"
        command_topic: "volets/6/command"
        set_position_topic: "volets/6/command"
        position_topic: "volets/6/status" #"home-assistant/cover/position"
        
        state_open: open
        state_closed: closed
        
        position_open: 0
        position_closed: 99
        payload_open: 0
        payload_close: 100
        
        set_position_template: "{{100 - int(position) }}" 
        value_template: "{{   value }}" 
        position_template: "{{  value }}" 
        optimistic: false
2 « J'aime »