Pas de données jsn-sr04t

Bonjour,
Je vous explique mon problème.
J’ai une cuve d’eau de pluie de 10000l. Elle fait 2,25m de haut (mais seulement 1,85m d’eau) et 2,36m de diamètre.
J’ai installé un jsn-sr04t à 2,25m du fond. Je l’ai mis dans une boîte étanche avec la carte pour connecter le capteur (j’ai raccourci et resoudé le câble car trop long pour mettre dans le boîtier). De là j’ai tiré un câble utp sur 10m jusqu’à un esp32 dans mes caves. Je précise que vu que le câble utp a 8 fils et que je n’ai que 4 bornes, j’ai doublé les fils.
Jusqu’ici, je ne pense pas avoir fait d’erreur mais rien ne va, le capteur me retourne « nan » systématiquement dans esphome. J’ai changé de bornes plusieurs fois sur l’esp32 j’ai changé les timout, pulse_time, inversé les gpio mais rien y fait.
Au début, j’avais raccordé sur Rx et tx de l’esp et la première mesure me donnait un truc de quelque mm (alors que j’avais bien 1,5m) puis plus rien du tout. J’ai changé les bornes et le timeout (a 12 et 20m) et maintenant j’ai invariablement 8,06 à 8,07m. Si je mets un timeout inférieur à 12m, je n’ai aucune valeur.

Avez-vous une idée ?

Merci

sensor:
  - platform: ultrasonic
    trigger_pin: 18
    echo_pin: 19
    name: "Ultrasonic Sensor"
    update_interval: 5s
    timeout: 12m
    pulse_time: 50us

Euh histoire d’être sûr de bien comprendre et comme tu as mis aucun schéma ni rien, ton capteur ultrason est au dessus de ta cuve ? parce que dans l’eau les ultrasons ça va pas loin surtout émis avec un dispositif non adapté comme ce transmetteur/récepteur ultrason :wink:

Bonjour,

En fait, j’ai un regard au dessus de ma cuve (en gros, une rehausse avec une trappe). J’ai fait un montage pour que le récepteur soit à ras du dessus de la cuve. Il ne sera donc jamais immergé.
C’est vrai que j’aurais pu mettre des photos mais je ne pensais pas que le problème pouvait venir de là.

Merci

Voici les photos :


Merci pour les photos qui permettent de mieux comprendre la chose :wink: Petite question as-tu essayé ton montage face à une planche de bois par exemple que tu déplaces plus ou moins loin ? histoire de voir déja si en config basique ça marche correctement :wink:
Je laisserais aussi tomber les options dans ESPHome aussi dans un premier temps ! tu commentes update_interval, timeout, pulse_time :wink:

1 « J'aime »

Alors, j’ai essayé avec ma main et je n’ai aucun relevé.
Commenté ce que tu me dit, je l’avais fait au tout départ mais rien ne marchait non plus. D’où l’ajout.
Je me demande si ce n’est pas un problème de gpio mais je ne trouve pas. L’esp32 n’est pas en cause car j’ai un autre montage dessus qui fonctionne.

tu as un schéma de ton câblage ? et le sketch esphome complet stp ?
Tu as bien alimenté le capteur en 5V ? Tu t’es assuré que tu as au moins 5V au bout de ton câble réseau ?

Alors, pour le schema de montage, non, je ne sais pas faire ce genre de chose. Ce que je peux te dire c’est que j’ai relier le GND et le VCC respectivement aux bornes GND-VCC (5V) de l’esp32.
Le trigger du jsn a la borne 18 de l’esp et l’écho à la borne 19 sans rien de plus. (j’avais essayé aux borne rx et tx mais sans succès).
Je précise quand même que vu que ce n’est pas la seule chose sur l’esp, j’ai fait les connections sur un semblant de circuit imprimé (carte perforée…).
L’autre chose sur l’esp est un capteur qui compte le nombre de tour de mon compteur d’eau.
Je n’avais pas pensé tester l’arrivée du 5v au capteur. C’est chose faite, j’ai 5.07V (a quelques minimes variation près).
Ci dessous je te mets le code complet.

Merci

esphome:
  name: compteur-eau-puit
  on_boot:
    priority: -10
    then:
      - script.execute: publish_states

esp32:
  board: esp-wrover-kit
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  services:
    - service: reset_main_counter
      then:
        - script.execute: reset_main_counter
    - service: reset_secondary_counter
      then:
        - script.execute: reset_secondary_counter

ota:
  password: "........(caché)"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_mdp

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Compteur-Eau-Puit"
    password: ".....(caché)"

captive_portal:

substitutions:
  name: compteur_eau
  friendly_name: "Compteur d'eau"

globals:
 - id: main_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: secondary_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: daily_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: weekly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: monthly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'
 - id: yearly_counter_pulses
   type: int
   restore_value: yes
   initial_value: '0'

 - id: event_quantity
   type: int
   restore_value: no
   initial_value: '0'
script:
  - id: reset_main_counter
    then:
      - lambda: |-
          id(main_counter_pulses) = 0;
          id(water_main_consumption).publish_state(id(main_counter_pulses));
  - id: reset_secondary_counter
    then:
      - lambda: |-
          id(secondary_counter_pulses) = 0;
          id(water_secondary_consumption).publish_state(id(secondary_counter_pulses));
  - id: publish_states
    then:
      - lambda: |-
          id(water_main_consumption).publish_state(id(main_counter_pulses));
          id(water_secondary_consumption).publish_state(id(secondary_counter_pulses));
          id(water_daily_consumption).publish_state(id(daily_counter_pulses));
          id(water_weekly_consumption).publish_state(id(weekly_counter_pulses));
          id(water_monthly_consumption).publish_state(id(monthly_counter_pulses));
          id(water_yearly_consumption).publish_state(id(yearly_counter_pulses));
          id(current_water_consumption).publish_state(id(event_quantity));
sensor:
  - platform: uptime
    name: "${friendly_name} uptime"
    
  - platform: pulse_counter
    id: water_pulse_counter
    name: "${friendly_name} Consommation instantanée"
    pin: 32
    update_interval: 2sec
    internal_filter: 10us
    unit_of_measurement: "L/min"
    accuracy_decimals: 0
    icon: "mdi:water"
    filters:
      # Divide by 60
      - multiply: 0.0167
      - lambda: return abs(x);

  - platform: template
    id: water_main_consumption
    name: "${friendly_name} Principal"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: water_secondary_consumption
    name: "${friendly_name} Secondaire"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: water_daily_consumption
    name: "${friendly_name} Journalière"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: water_weekly_consumption
    name: "${friendly_name} Semaine"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: water_monthly_consumption
    name: "${friendly_name} Mois"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: water_yearly_consumption
    name: "${friendly_name} Année"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: current_water_consumption
    name: "${friendly_name} Consommation totale"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"

  - platform: template
    id: last_water_consumption
    name: "${friendly_name} Dernière consommation"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
    
  - platform: ultrasonic
    trigger_pin: 18
    echo_pin: 19
    update_interval: 3s
    pulse_time: 50us
    timeout: 12m
    name: "Ultrasonic Sensor"
    
binary_sensor:
  - platform: gpio
    id: water_pulse
    pin: 32
    internal: true
    filters:
       - delayed_on_off: 50ms
       - lambda: |-
          id(main_counter_pulses) += x;
          id(secondary_counter_pulses) += x;
          id(daily_counter_pulses) += x;
          id(weekly_counter_pulses) += x;
          id(monthly_counter_pulses) += x;
          id(yearly_counter_pulses) += x;
          id(event_quantity) += x;
          return x;
    on_state:
       - script.execute: publish_states

switch:
  - platform: template
    name: "${friendly_name} reset main counter button"
    icon: "mdi:restart"
    turn_on_action:
      - script.execute: reset_main_counter

  - platform: template
    name: "${friendly_name} reset secondary counter button"
    icon: "mdi:restart"
    turn_on_action:
      - script.execute: reset_secondary_counter

  - platform: restart
    name: "${friendly_name} restart"
    
time:
  - platform: sntp
    on_time:
      - seconds: 0
        minutes: 0
        hours: 0
        then:
          - globals.set:
              id: daily_counter_pulses
              value: '0'
          - lambda: id(water_daily_consumption).publish_state(id(daily_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_week: MON
        then:
          - globals.set:
              id: weekly_counter_pulses
              value: '0'
          - lambda: id(water_weekly_consumption).publish_state(id(weekly_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_month: 1
        then:
          - globals.set:
              id: monthly_counter_pulses
              value: '0'
          - lambda: id(water_monthly_consumption).publish_state(id(monthly_counter_pulses));
      - seconds: 0
        minutes: 0
        hours: 0
        days_of_month: 1
        months: JAN
        then:
          - globals.set:
              id: yearly_counter_pulses
              value: '0'
          - lambda: id(water_yearly_consumption).publish_state(id(yearly_counter_pulses));

un schéma à main levée suffit :wink: mais oki pour le câblage ! Quel board ESP tu utilises exactement
?

As-tu essayé avec un câble court du style 15/20cm ? parce que le code a l’air bon et si tous les autres capteurs marchent sans soucis c’est pas un problème d’alimentation non plus je pense !

Je crois que je viens de trouver le problème. Matériel.
J’ai essayé avec un bête hc-sr04 et ça marche…
Quand je teste le voltage entre mes fils écho et trigger, j’ai 4v et des poussières. Par contre, quand je test le voltage qui sort de la carte vers le capteur

Pas un volt…
Matériel défectueux ???

Alors,

Je suis sûr de mon câblage et de mon esp32 car j’ai remplacé le jsn sr04t par un hc sr04 et tout fonctionne nickel et est même très précis.
Alors vous me direz: problème résolu. Ben pas vraiment.
Car comment faire mon système qui mesure ma cuve d’eau avec un hc sr04 qui n’est pas étanche ?
Y’a t’il moyen de rendre étanche le hc sr04? En mettant le capteur dans une boîte étanche et en colmatant les 2 trous faits avec tu tec7 ou autre?
Dois-je commander un nouveau jsn sr04t? Je suis un peu déçu d’autant plus que apparemment il est moins précis que le hc sr04 (recherche internet).

Merci

Salut
As-tu réellement besoin que ce soit étanche ? Résistant à l’humidité c’est suffisant.
Au pire, spray/vernis de tropicalisation ?

Salut,

Quelle différence fais-tu entre étanche et résistant à l’humidité ?
Car les trous que je ferai dans la boîte étanche seront dirigés vers le bas mais l’humidité ne risque t’elle pas de rentrer à l’intérieur de la boîte ? Quand est-il des 2 trous qui envoi et reçoivent l’écho ? Risquent t’ils de rouiller ?

Comment mettrais tu ton vernis ou spray tropicalisant?
Où en trouve-t-on ?
De la colle à chaude ne ferait elle pas la même chose ?

Merci

Etanche, c’est quand tu mets ça DANS l’eau et que ça continue à fonctionner.
Résistant à l’eau c’est justement quand il n’y a que de de l’humidité.

Vu ton montage, tu as à un boitier étanche, forcement avec les trous du capteur il ne l’est plus mais un peu de colle chaude pour reboucher devrais suffire. Quant au capteur, à mon avis ça supporte l’humidité.
Pour le spray que tu pourrais mettre sur la plaquette et sur les connecteurs, tu dois pouvoir trouver ça sur n’importe quel magasin de ligne à défaut d’un magasin d’électronique au coin de la rue.

Je te remercie pour ta réponse.

Une dernière petite question. Pensez-vous que le jsn sr04t est aussi fiable que le hc sr04?

Merci

Aucune idée.
C’est qui me perturbe dans ton montage c’est les effets de réverbération du fait de la faible largeur. Je ne sais pas si ça joue sur l’efficacité du montage

Faible largeur… le diamètre de ma cuve fait quand même 2,36m donc plus large que haute.
Tu penses que c’est pas assez?
Les mesures ont l’air bonnes pourtant

Justement je ne sais pas, c’est là où ton usage va permettre de savoir.

Salut,
Attention avec les JSN-SR04T, ils ne sont pas toujours configurés pour marcher comme le hc-sr04 voir cette doc JSN-SR04T

Salut

la précision d’un capteur à notre niveau est toute relative, et pour une installation comme la tienne, je pense qu’il n’y a pas besoin d’une mesure au millimètre.

Dans un cas plus globale, la précision est souvent obtenue par une table de correction afin de fin correspondre la valeur de mesure avec la valeur affichée.

Dans ton cas je commencerai par faire des mesures pour vérifier. Pour une cuve, la mesure précise est facile à obtenir avec une simple perche et un mètre ruban. En pigeant ta cuve a différents niveaux, puis en comparant les données mesurées sur la piges et relevées par le capteur, tu pourras vérifier si ton capteur est correcte, et pourquoi pas faire une table de correction.

A+ Fred

Salut,

Je ne comprends pas ce que tu veux dire.
J’ai regardé et apparemment, mettre une résistance en r27 rend la communication ttl.
Je ne sais pas si ça changerait quelque chose…