Comment créer un lambda pour utiliser un capteur non référencé dans ESPHOME

Mon problème

Je veux mesurer le niveau de ma cuve fioul (et oui toujours mon monitoring chaudière :slight_smile: )

Je n’ai pas trop confiance au capteur HC-SR04 dont la conception très ouverte ne va pas vivre très vieux au dessus des vapeurs de gas-oil.

J’ai trouvé un capteur plus étanche basé je pense sur les capteurs d’aide au stationnement, il s’agit du AJ-SR04M.

La capteur est déporté et me parait bien plus résistant pour mon application, cela permettra également d’ éloigner l’électronique des dites vapeurs.

Mais voila, même si ce capteur dans son mode basique est censé fonctionner comme le SR04 standard le code proposé par ESPHOME ne fonctionne pas, alors que la même config marche bien avec le SR04 comme prévu.

Par contre le code exemple arduino sur le même ESP marche à merveille (enfin presque il faut rajouter un petit delay dans la boucle pour éviter d’avoir une valeur à « 0 » entre chaque mesure.)

Donc après deux ou trois heures de recherche, toujours pareil, je ne trouve rien qui pourrait m’aider avec YAML. Donc voici ma question aux experts que vous êtes :

Il y a t il un moyen d’intégrer un code arduino (ou C) facilement dans une boucle déclenchée par un intervalle par exemple ?
Si quelqu’un peut me diriger vers une solution je suis preneur.

Voici le code arduino qui fonctionne pour vous donner une idée de ce que je veux essayer de reproduire.

Vous remarquerez qu’il n’appelle aucune library, donc hyper simple.

#define echoPin 11 // attach pin D2 Arduino to pin Echo of JSN-SR04T
#define trigPin 12 //attach pin D3 Arduino to pin Trig of JSN-SR04T

// defines variables
long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
  pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
  Serial.begin(9600); // // Serial Communication is starting with 9600 of baud rate speed
  Serial.println("Ultrasonic Sensor HC-SR04 Test"); // print some text in Serial Monitor
  Serial.println("with Arduino UNO R3");
}
void loop() {
  // Clears the trigPin condition
  digitalWrite(trigPin, LOW);  //
  delayMicroseconds(2);
  // Sets the trigPin HIGH (ACTIVE) for 10 microseconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
  // Displays the distance on the Serial Monitor
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");// working  code for aj-sr04m
  delay: 1000; // que j'ajoute pour éviter un rebond du programme je pense.
}

Ma configuration

ESP8266

En fait je suis sur les GPIO 14 et 12 car sur les pin RX et TX le ESP ne boot même pas…

Merci de m’avoir lu.

A+

Philippe

Salut,

Curieux que ça ne marche pas, le code ne semble pas trop différent de ce qu’il faut avec le HC-SR04
Pour un sensor custo, je n’ai jamais fait ça, mais c’est cette doc du site Esphome qu’il faut voir:

Bonjour,

Bon finalement ça marche, mais je ne sais pas pourquoi.

Heureusement parce que je n’ai rien compris au lien que tu m’as partagé.

Par contre dans la cuve c’est très moyen, la mesure est loin d’être fiable avec ce capteur ultrason.

Bon j’ai reçu un autre capteur, un de pression je vais essayer de hacker le niveau à pression d’origine.

A+