# Envois des infos via ESPHome vers MQTT

**URL:** <https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220>\
**Category:** Entraide Home Assistant\
**Tags:** esphome\
**Created:** [Décembre 24, 2023, 5:44 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220 "2023-12-24T17:44:38Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 24, 2023, 5:44 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/1 "2023-12-24T17:44:38Z")

</div>

## Mon problème

Bonjour à tous,

Je cherche comment faire pour que mes infos ne sois plus envoyé en temps mais seulement si la distance de mon sensor varie de plus ou moins 1 cm,car cela permettrait d’envoyer seulemnt si besoin et non toutes les Xsec, surtout pour MQTT.  
Merci d’avance de votre aide.

## Ma configuration

* * *

## System Information

| version | core-2023.12.3 |
| --- | --- |
| installation\_type | Home Assistant OS |
| dev | false |
| hassio | true |
| docker | true |
| user | root |
| virtualenv | false |
| python\_version | 3.11.6 |
| os\_name | Linux |
| os\_version | 6.1.63-haos |
| 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.31.0 |
> | Stage | running |
> | Available Repositories | 1354 |
> | Downloaded Repositories | 13 |

> **Home Assistant Cloud**
>
> | logged\_in | false |
> | --- | --- |
> | can\_reach\_cert\_server | ok |
> | can\_reach\_cloud\_auth | ok |
> | can\_reach\_cloud | ok |

> **Home Assistant Supervisor**
>
> | host\_os | Home Assistant OS 11.2 |
> | --- | --- |
> | update\_channel | stable |
> | supervisor\_version | supervisor-2023.12.0 |
> | agent\_version | 1.6.0 |
> | docker\_version | 24.0.7 |
> | disk\_total | 30.8 GB |
> | disk\_used | 7.6 GB |
> | healthy | true |
> | supported | true |
> | board | ova |
> | supervisor\_api | ok |
> | version\_api | ok |
> | installed\_addons | Samba share (12.2.0), Terminal & SSH (9.8.1), Studio Code Server (5.14.2), Duck DNS (1.15.0), ESPHome (2023.12.3) |

> **Dashboards**
>
> | dashboards | 2 |
> | --- | --- |
> | resources | 10 |
> | views | 4 |
> | mode | storage |

> **Recorder**
>
> | oldest\_recorder\_run | 23 décembre 2023 à 18:59 |
> | --- | --- |
> | current\_recorder\_run | 24 décembre 2023 à 15:02 |
> | estimated\_db\_size | 78.62 MiB |
> | database\_engine | sqlite |
> | database\_version | 3.41.2 |

\_\_\_

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 25, 2023, 11:42 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/2 "2023-12-25T11:42:36Z")

</div>

Salut,

Par défaut tu n’as pas besoin du MQTT pour faire fonctionner esphome+ha …  
Et donc ça t’évite d’avoir un message … Et tu peux traiter les automatisations seulement si changement du coup.

Mais bon, ça reste assez générique, parce que ton coté : c’est léger comme infos, le code esphome aurait quand même permis de voir comment ton bidule est codé.  
D’autant plus que tu as changé de méthode [Retour d'état Tasmota](https://forum.hacf.fr/t/retour-detat-tasmota/33098)

Idem sur le traitement que tu fais sur la mesure, ça donnerai des idées.

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 25, 2023, 6:36 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/3 "2023-12-25T18:36:24Z")

</div>

Salut,  
Comme tu as pu le voir sur l’autre tropic je n’ai eu aucune réponse donc j’ai voulu tester ESPHome.  
Ce detecteur de mouvement me sert pour voir quand la voiture est dans le garage et quand elle part, donc je n’ai pas besoin que l’état soit envoyé tout les Xsec mais seulement quand la distance change et vu que je suis entre deux systeme domotique j’ai besoin que ce soit envoyé en MQTT.  
Pour l’instant le code est des plus basic :

```auto
esphome:
  name: detection-voiture
  friendly_name: Detection Voiture

esp8266:
  board: d1_mini_lite

# Enable logging
#logger:

# Enable Home Assistant API
api:
  encryption:
    key: "g/cn1sVRK8zPdU70ZAsI8U="

ota:
  password: "17f7c53051dedd981"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Detection-Voiture"
    password: "pI6n7X2"

captive_portal:

# Server Web
web_server:
  port: 80
# Sensor Ultrasonic
sensor:
  - platform: ultrasonic
    trigger_pin: D7
    echo_pin: D6
    name: "Distance"
    update_interval: 1s
  - platform: uptime
    name: Uptime Sensor

```

Merci.

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 25, 2023, 8:03 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/4 "2023-12-25T20:03:16Z")

</div>

> [@team18fr](#):
>
> Comme tu as pu le voir sur l’autre tropic je n’ai eu aucune réponse

Logique, tahoma c’est pas vraiment la méthode principale pour HA

> [@team18fr](#):
>
> donc je n’ai pas besoin que l’état soit envoyé tout les Xsec mais seulement quand la distance change et vu que je suis entre deux systeme domotique j’ai besoin que ce soit envoyé en MQTT.

Mais tu peux

- Utiliser les entités HA pour connaitre l’état de ton capteur dans HA et conserver le MQTT pour ton autre système

Par contre comment/pour quoi tu utilises l’info ? Dans une automatisation par exemple, tu peux ajouter des conditions (vérif de la variation) avant de déclencher les actions

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 10:28 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/5 "2023-12-26T10:28:03Z")

</div>

Salut,  
J’espère que tu as bien été gaté pour les fêtes ☃  
Effectivement j’utilise une automatisation qui dit que si la distance est superieur à Xcm pas de voiture et inversement. Mais est-il possible de limiter le nombre de trame envoyé que ce soit à HA ou MQTT car pour l’instant même si ma valeur ne change pas mon module envois des trames toutes les seconde.

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 10:43 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/6 "2023-12-26T10:43:00Z")

</div>

L’envoie des trames, c’est pas tellement la bonne piste. Il est plus simple de traiter la répétition dans les traitements.  
Pour l’instant tu fais ça via une automatisation pour juste dire si la voiture est là/pas là ?

Si c’est ça tu fais directement un template sensor :

```auto
template:
  - binary_sensor: 
    - name: "Présence voiture"
      state: >-
        {% if state('sensor.ultrasonic')|int(default=0) <= 70 %}
          true
        {% else %}
          false
        {% endif %}

```

Et éventuellement dans une automatisation, tu corriges le trigger pour faire

```auto
platform: state
entity_id:
  - sensor.presence_voiture
from: "off"
to: "on"

```

ou l’inverse

```auto
platform: state
entity_id:
  - sensor.presence_voiture
from: "on"
to: "off"

```

Ainsi ça ne déclenche qu’au changement d’état, peu importe les répétitions

---

<div class="post-metadata">

**Author:** ![Tochy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/tochy/32/41667_2.png) [@Tochy](https://forum.hacf.fr/u/Tochy)\
**Post date:** [Décembre 26, 2023, 10:50 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/7 "2023-12-26T10:50:14Z")

</div>

Bonjour

> [@team18fr](#):
>
> pour l’instant même si ma valeur ne change pas mon module envois des trames toutes les seconde

Tu peux déjà commencer par augmenter le update\_interval de ton sensor dans esphome à 10s ou autres.

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 11:05 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/8 "2023-12-26T11:05:26Z")

</div>

On est d’accord tu mets les codes dans le firmware du sensor, car cela me met une erreur.

```auto
# Sensor Ultrasonic
sensor:
  - platform: ultrasonic
    trigger_pin: D7
    echo_pin: D6
    name: "Distance"
    update_interval: 300s
  - platform: uptime
    name: Uptime Sensor
template:
  - binary_sensor: 
  - name: "Présence voiture"
      state: >-
        {% if state('sensor.ultrasonic')|int(default=0) <= 70 %}
          true
        {% else %}
          false
        {% endif %}

```

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 11:06 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/9 "2023-12-26T11:06:12Z")

</div>

Logique, c’est du code pour HA, pas pour esphome

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 11:07 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/10 "2023-12-26T11:07:17Z")

</div>

Oui j’ai essayé d’augmenter l’interval, mais aprés tu n’as plus l’infos en temps réelle.

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 11:45 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/11 "2023-12-26T11:45:35Z")

</div>

En lisant ce que tu m’as dis cela m’as rappelé un tuto que j’avais vu et qui perméttait davoir un bouton en fonction d’une distance, mais je n’arrive pas à le faire changer d’état.

```auto
# Sensor Ultrasonic
sensor:
  - platform: ultrasonic
    trigger_pin: D7
    echo_pin: D6
    name: "Distance"
    update_interval: 1s
  - platform: uptime
    name: Uptime Sensor
    internal: True
    on_value_range:
      - below: 0.1
        then:
          - switch.turn_on: detect_something
      - above: 0.1
        then:
          - switch.turn_off: detect_something
#Bouton pour dire si la voiture est présente ou pas
switch:
  - platform: template
    name: "Présence voiture"
    id: detect_something
    optimistic: True

```

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 11:47 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/12 "2023-12-26T11:47:34Z")

</div>

Un bouton, ça sert à avoir une action manuelle…  
Il est préférebale d’utiliser un binary\_sensor (et retrouver la syntaxe esphome)

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 11:53 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/13 "2023-12-26T11:53:25Z")

</div>

Non le bouton change d’état seul en fonction en fonction de la distance et envois l’info seulement au changement d’état. J’ai trouvé mon erreur fallait que je mette «&nbsp;on\_value\_range:&nbsp;» avant «&nbsp;uptime&nbsp;».  
C’est quoi un binary\_sensor ?

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 1:09 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/14 "2023-12-26T13:09:29Z")

</div>

Je dis pas que visuellement ça fait pas la même chose.  
Juste que le bouton, dispose d'un service dans HA pour le basculer à `on` ou a `off` à la main.  
Dans ton cas d'usage, c'est pas toi qui décide de la bascule, c'est la valeur mesurée par le capteur.  
Donc c'est tout l'intérêt d'un binary\_sensor

> **[Template Binary Sensor](https://esphome.io/components/binary_sensor/template/)**
>
> Instructions for setting up template binary sensors.

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 1:44 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/15 "2023-12-26T13:44:56Z")

</div>

Je suis en train d’essayer le binary\_sensor mais j’ai une erreur quand j’envois le firmware sur mon module :

```auto
Compiling .pioenvs/detection-voiture/src/main.cpp.o
<unicode string>: In lambda function:
<unicode string>:78:4: error: expected primary-expression before ')' token
<unicode string>: In function 'void setup()':
<unicode string>:112:2: error: expected ')' before 'void'
src/main.cpp:408:47: note: to match this '('
  408 | template__templatebinarysensor->set_template([=]() -> optional<bool> {
      | ^
<unicode string>:116:1: error: expected '}' at end of input
src/main.cpp:50:14: note: to match this '{'
   50 | void setup() {
      | ^
*** [.pioenvs/detection-voiture/src/main.cpp.o] Error 1
========================== [FAILED] Took 3.15 seconds ==========================

```

Et voici mon code et si je comprends bien c’est le lambda qui pose problème :

```auto
# Example configuration entry
binary_sensor:
  - platform: template
    name: "Présence voiture2"
    lambda: |-
      if (id(presence).state < 80) {
        // Voiture présente.
        return true;
      } else {
        // Voiture absente.
        return false;

```

Merci encore pour on aide.

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 1:47 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/16 "2023-12-26T13:47:03Z")

</div>

Déjà il manque la dernière ligne pour fermer les accolades (c’est écrit dans le message d’erreur)  
Ensuite, je ne pense pas que `présence` existe, ton capteur s’appelle `Distance`

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 1:58 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/17 "2023-12-26T13:58:25Z")

</div>

Merci j’avais pas vu qu’il me manquait «&nbsp;}&nbsp;» et pour «&nbsp;presence&nbsp;» je suis bien obligé de déclarer un id ?  
Sinon cela fonctionne.

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Décembre 26, 2023, 2:28 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/18 "2023-12-26T14:28:32Z")

</div>

oui il faut un id, mais présence c’est pas très logique, vu que tu fais référence à une mesure.  
Présence, ça serait plus adapté l’id du binary\_sensor à ce moment là (et c’est pas utile )

---

<div class="post-metadata">

**Author:** ![team18fr](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/t/e47c2d/32.png) [@team18fr](https://forum.hacf.fr/u/team18fr)\
**Post date:** [Décembre 26, 2023, 2:39 UTC](https://forum.hacf.fr/t/envois-des-infos-via-esphome-vers-mqtt/33220/19 "2023-12-26T14:39:04Z")

</div>

Ok je vais changer pour mieux m’y retrouver.  
Encore merci pour ton aide.
