NodeMCU ESP8266 + HRLV-MaxSonar EZ MB1043 en RS232

Bonjour,

Matériel:

  • NodeMCU ESP8266
  • HRLV-MaxSonar® EZ MB1043

J’ai câblé la sortie RS232 du MB1043 sur l’enrée RXD0(D9) du NodeMCU.
J’alimente le NodeMCU via le port USB (Branché sur mon pc pour le moment…)
J’alimente le MB1043 via un 3.3V du NodeMCU.

J’ai créé un « Communication - Serial Server » sur ESP_Easy.

Je lis les infos sur Jeedom en utilisant ce code en bloc php dans un scénario.

$cfgServer ="Mon ip...";
$cfgPort    = "2000";                
$cfgTimeOut = "5";

$f=fsockopen("$cfgServer",$cfgPort,$cfgTimeOut);

if (!$f)
{
  $scenario->setLog('pas connecté');
}
else
{
  $scenario->setLog('connecté');
  if (($data =  fgets($f, 256)) !== false){
    $scenario->setLog($data);
  }
 $scenario->setLog('coupe la session');
 fclose($f);
}

D’après la documentation du capteur je devrais recevoir ça

The output is an ASCII capital “R”, followed by four ASCII character digits representing the range in millimeters, followed by a carriage return (ASCII 13)

Et voilà se que je reçois:

[2024-01-26 23:15:02][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2024-01-26 23:15:02][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-01-26 23:15:02][SCENARIO] Exécution d’un bloc code
[2024-01-26 23:15:02][SCENARIO] connecté
[2024-01-26 23:15:04][SCENARIO] ccy+†2ccy+†2ccy+††öV+††öV+††öV+††öV+††öV+†2ccy+†2ccy+†2c¬+†2cdy+†2cdy+†2c²+†2c²+†2cey+†2cey+†2cey+†2cey+†2cey+†2cey+†2cey+†2cey+†2cey+†2cey+†2c²+†2c²+†2c²+†2c²+†2cdy+†2cdy+†2cdy+†2cdy+†2c¬+†2c¬+†2c¬+†2c¬+†2c¬+†2c¬+†2c¬+†2cdy+†2cdy+†2cdy
[2024-01-26 23:15:04][SCENARIO] coupe la session
[2024-01-26 23:15:04][SCENARIO] Fin correcte du scénario

Et en faisant ce message je me rend compte que mon fichier text n’affiche pas la même chose que mon log sur Chrome…

La fonction « mb_detect_encoding » me dit que c’est du UTF-8

Cela fait deux jours que je me casse la tête là-dessus…

J’ai essayé :

  • Changer d’entrée sur le NodeMCU
  • Divers réglages de Baudrate (malgré que la doc spécifie bien 9600…)
  • Utiliser un script en python au lieu du code en php
  • mb_convert_encoding($data,« ASCII »,« UTF-8 »)
  • iconv(« UTF-8 »,« ASCII »,$data)
  • Utiliser les « Rules » du NodeMCU pour ecrire l’info lue en Serial dans un « Dummy », mais ça n’a jamais fonctionné, le dummy restait vide malgré mes différents tests
  • Je n’ai rien essayé d’autre que « ESP_Easy » pour le moment
  • Plus d’autres petites choses, mais je pense que le principal est dit…

Quelqu’un aurait une idée pour me débloquer svp ?

Merci d’avance !

Salut, est-ce que tu as regardé ce qui sortait en json de ton esp? Pour voir si le problème vient de la ou du script jeedom

Salut !
Non et je ne sais pas comment on fait…
Tu peux m’expliquer stp ?

Regarde si tu vois les trames qui t’intéresse

Je ne vois rien d’intéressant

{« System »:{
« Load »:7.14,
« Load LC »:7809,
« Build »:20231225,
« Git Build »:« mega-20231225 »,
« System Libraries »:« ESP82xx Core 2843a5ac, NONOS SDK 2.2.2-dev(38a443e), LWIP: 2.1.2 PUYA support »,
« Plugin Count »:47,
« Plugin Description »:« [Normal][No Debug Log] »,
« Build Time »:« Dec 25 2023 22:10:54 »,
« Binary Filename »:« ESP_Easy_mega_20231225_normal_ESP8266_4M1M »,
« Local Time »:« 1970-01-01 00:49:35 »,
« UTC time stored in RTC chip »:« - »,
« Time Source »:« No time set »,
« Time Wander »:0.0,
« Use NTP »:« false »,
« Unit Number »:0,
« Unit Name »:« ESP_CuveMazout »,
« Uptime »:49,
« Uptime (ms) »:2976329,
« Last Boot Cause »:« Soft Reboot »,
« Reset Reason »:« Software/System restart »,
« CPU Eco Mode »:« false »,
« Heap Max Free Block »:11896,
« Heap Fragmentation »:23,
« Free RAM »:15688,
« Free Stack »:3552,
« ESP Chip Model »:« ESP8266EX »,
« Sunrise »:« 0:00 »,
« Sunset »:« 0:00 »,
« Timezone Offset »:0,
« Latitude »:0.000000,
« Longitude »:0.000000,
« Syslog Log Level »:« None »,
« Serial Log Level »:« None »,
« Web Log Level »:« None »
},
« WiFi »:{
« Hostname »:« ESP-Easy »,
« IP Config »:« DHCP »,
« IP Address »:« MonIP »,
« IP Subnet »:« 255.255.255.0 »,
« Gateway »:« 192.168.1.1 »,
« STA MAC »:« MonAdresseMAC »,
« DNS 1 »:« 192.168.1.1 »,
« DNS 2 »:« (IP unset) »,
« SSID »:« MonSSID »,
« BSSID »:« MonBSSID »,
« Channel »:11,
« Encryption Type »:« WPA2/PSK »,
« Connected msec »:2791000,
« Last Disconnect Reason »:1,
« Last Disconnect Reason str »:« (1) Unspecified »,
« Number Reconnects »:0,
« Configured SSID1 »:« MonSSID »,
« Configured SSID2 »:«  »,
« Force WiFi B/G »:« false »,
« Restart WiFi Lost Conn »:« false »,
« Force WiFi No Sleep »:« false »,
« Periodical send Gratuitous ARP »:« false »,
« Connection Failure Threshold »:0,
« Max WiFi TX Power »:17.50,
« Current WiFi TX Power »:14.00,
« WiFi Sensitivity Margin »:3,
« Send With Max TX Power »:« false »,
« Extra WiFi scan loops »:0,
« Use Last Connected AP from RTC »:« false »,
« RSSI »:-70
},
« nodes »:[
{« nr »:0,
« name »:« ESP_CuveMazout »,
« build »:20231225,
« platform »:« ESP Easy Mega »,
« ip »:« IP_ESP »,
« age »:19723
}],
« Sensors »:[
{
« TaskValues »: [
{« ValueNumber »:1,
« Name »:« temperature »,
« NrDecimals »:2,
« Value »:22.75
}],
« DataAcquisition »: [
{« Controller »:1,
« IDX »:0,
« Enabled »:« true »
},
{« Controller »:2,
« IDX »:0,
« Enabled »:« false »
},
{« Controller »:3,
« IDX »:0,
« Enabled »:« false »
}],
« TaskInterval »:1,
« Type »:« Environment - 1-Wire Temperature »,
« TaskName »:« Temperature »,
« TaskDeviceNumber »:4,
« TaskDeviceGPIO1 »:12,
« TaskEnabled »:« false »,
« TaskNumber »:1
},
{
« TaskValues »: [
{« ValueNumber »:1,
« Name »:« Distance »,
« NrDecimals »:0,
« Value »:190
}],
« DataAcquisition »: [
{« Controller »:1,
« IDX »:0,
« Enabled »:« true »
},
{« Controller »:2,
« IDX »:0,
« Enabled »:« false »
},
{« Controller »:3,
« IDX »:0,
« Enabled »:« false »
}],
« TaskInterval »:1,
« Type »:« Analog input - internal »,
« TaskName »:« Distance_ADC »,
« TaskDeviceNumber »:2,
« TaskEnabled »:« false »,
« TaskNumber »:2
},
{
« DataAcquisition »: [
{« Controller »:1,
« IDX »:0,
« Enabled »:« false »
},
{« Controller »:2,
« IDX »:0,
« Enabled »:« false »
},
{« Controller »:3,
« IDX »:0,
« Enabled »:« false »
}],
« TaskInterval »:60,
« Type »:« Communication - Serial Server »,
« TaskName »:« Niveau_RS232 »,
« TaskDeviceNumber »:20,
« TaskDeviceGPIO1 »:3,
« TaskDeviceGPIO2 »:1,
« TaskEnabled »:« true »,
« TaskNumber »:3
}
],
« TTL »:60000
}

Et voila le log côté ESP quand je me connecte

3352667: Ser2Net : Client connected!
3356918: Ser2net : Client disconnected!

C’est normal que « sens to contrôler » ne soit pas coché ?

Oui inutile pour ce device

Tu as un capteur de température sur l esp? Quand tu dis les logs de l’esp c’est ceux que tu récupères avec arduino sur le serial output?
Autre chose, as-tu bien configurer le gpio en analogique?
Voila ce qui pourrait nous intéresser :
Screenshot_20240128_073150_Samsung Internet

Valeur : 190 ça ne ressemble pas a ce que tu decris par contre… avec ce type de capteur, tu ne devrais pas avoir une mesure en volt que tu convertis en distance après? Est-ce que espeasy prend en charge ton capteur?

Perso, j’ai un capteur HC-SR04 sur ma cuve fioul depuis…les débuts de Jeedom avec Mysensors et ça fonctionne toujours, j’ai juste utilisé un film alimentaire pour protéger le capteur.

Il me semble que pour les ESP c’est du TTL, et donc il faut un convertisseur RS232 <> TTL type MAX232.

Salut,
Effectivement j’avais pas fait gaffe.
Le capteur que j’utilise permet de switcher en TTL avec un peu de soudure.
Je test et je vous tiens au courant.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.