Générer une action suite au changement d'un sensor

Bonjour,

J’essaie d’adapter un exemple trouvé sur le forum, à savoir récupérer une valeur après exécution d’une requête sur internet, puis déclencher une publication mqtt si la valeur retournée par la requête génère un changement de valeur du sensor.

Dans mon configuration.yaml :

rest: !include rests.yaml

Dans le rests.yaml:

- authentication: basic
  resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
  scan_interval: 3600
  sensor:
  - trigger: #informer l'esp du changement d'état éventuel de "Tempo_demain"
    - platform: event
      event_type: state_changed
      action:
      - service: mqtt.publish
        data:
          qos: "2"
          retain: false
          topic: elec/recept/could
          payload: 1
  - name: "Tempo_demain"
    value_template: "{{ value_json.couleurJourJ1 }}"

J’obtiens un message d’erreur « Invalid config for ‹ rest › at rests.yaml, line 5: ‹ trigger › is an invalid option for ‹ rest ›, check: rest->0->sensor->0->trigger »

J’ai testé la publication seule, elle fonctionne :
image

On ne peut pas faire de trigger dans ce cas ?

Merci d’avance

Disons qu’à la base un trigger c’est dans une automatisation.
Pour utiliser une automatisation dans ce cas:

  • Construit ton sensor source simplement.
  • Puis tu crées une automatisation qui lors du changement d’état de ton sensor déclenchera une action. (dans ce cas ta publication)

Mais en l’état j’ai l’impression que tout est dans le désordre dans ton YAML…
Tu déclares un trigger, à l’intérieur d’un sensor, pour lancer une action en cas de changement d’état d’un sensor…

  • Soit tu cherches « juste » à mettre à jour une valeur dans le sensor, il te suffit sans doute de passer par un template dans ce cas. On trouve plein d’exemple sur le forum:
    Rest_command - #7 par Giga77
    API pour récupérer TEMPO EDF - #10 par lucien

  • Soit tu as deux actions bien différentes: la création du sensor « tempo demain » et ton action MQTT_publish et là il faut séparer les deux. Création du sensor dans le yaml (cf exemple ci dessus). Automatisation pour le reste sur le modèle:
    Quand: changement d’état de sensor.tempo_demain
    Alors faire Service: mqtt_publish…

Perso je n’utilise pas cette manière pour récupérer les jours tempo… donc mon aide risque de s’arrêter là…

Je me réponds, il suffit de mettre dans le rests.yaml :

- authentication: basic
  resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
  scan_interval: 3600 #toutes les heures
  sensor:
  - name: "Tempo_demain"
    value_template: "{{ value_json.couleurJourJ1 }}"

et dans automations.yaml :

- id: '1711392994391'
  alias: maj esp_elec apres nouveau could
  description: Met à jour la donnée COULD de l'esp32 pour qu'elle s'affiche sur le
    lcd
  trigger:
  - platform: state
    entity_id:
    - sensor.tempo_demain
  condition: []
  action:
  - service: mqtt.publish
    data:
      qos: '2'
      topic: elec/recept/could
      payload: ' {% if is_state(''sensor.tempo_demain'', ''TEMPO_BLEU'') %} 1 {% else
        %} {% if is_state(''sensor.tempo_demain'', ''TEMPO_BLANC'') %} 2 {% else %}
        {% if is_state(''sensor.tempo_demain'', ''TEMPO_ROUGE'') %} 3 {% else %} 0
        {% endif %} {% endif %} {% endif %} '
  mode: single

Ainsi toutes les heures une requête est faite pour mettre à jour sensor.tempo_demain et chaque changement de valeur entraîne l’automatisme qui réalise l’envoi d’un message MQTT

Bonne journée