ESPHOME et port RS232

Bonjour,
J’essaie de connecter un appareil via sa prise RS232 et un esp D1 mini.
J’ai lu pas mal de chose (en comprenant qu’une petite partie :sweat_smile:), fais mes connections esp-RS232 et tapé un bout de code sur ESPhome. Comme je m’y attendait vu mes connaissances ça ne fonctionne pas.
J’ai créé 2 switch pour allumer/éteindre l’appareil.
J’aimerais également récupérer certaines infos de l’appareil mais je n’ai pas su faire.
Le baud rate de l’appareil est bon.

Merci d’avance pour les pistes !

Le YAML esphome:

esphome:
  name: projecteur-benq-w1800
  friendly_name: Projecteur Benq W1800

esp8266:
  board: esp01_1m

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: "XXX"

ota:
  password: "XXX"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Projecteur-Benq-W1800"
    password: "XXX"

captive_portal:

uart:
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 115200

switch:
  - platform: uart
    name: "Projecteur on"
    data: '<CR>*pow=on#<CR>'
    icon: "mdi:power"
  - platform: uart
    name: "Projecteur off"
    data: '<CR>*pow=off#<CR>'

Salut

Cela ne peut pas marcher et tu risques de bousiller les GPIO de ton D1 car les niveaux RS-232 sont des niveaux souvent d’au moins 5/12V ! Il faut intercaler un circuit type MAX232 pour obtenir un port série RS-232 classique !
Pour avoir eu la problématique, la seule board que j’ai trouvé toute faite qui fasse cela c’est la board Tuya Adapter de Kincony que j’ai détourné (https://www.kincony.com/esp32-tuya-iot-adapter.html) et cela marche parfaitement (utilisé pour contrôler des TV Loewe entre autre, un ampli Méridian…
Sketch utilisé et us as même un cas avec une string dynamique pour transmettre un niveau de volume (il faut utiliser les lambda !).
Ne pas oublier aussi de configurer la parité si différente du défaut (aucune) et le bit d’arrêt (si différent de 1) :wink:

substitutions:
  device_name: PH

esphome:
  name: esp-tr-12
  platform: ESP32
  board: esp32dev
  friendly_name: TV Poolhouse

logger:

web_server:

ota:

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_passwd
  manual_ip:
    static_ip: 172.16.2.98
    gateway: 172.16.1.1
    subnet: 255.255.252.0
  #use_address: 172.16.2.97
  ap:
    ssid: esp-tr-12

captive_portal:

api:
  reboot_timeout: 10min

sensor:
  - platform: uptime
    name: esp-tr-12 Uptime
    filters:
      - lambda: return x / 60.0 /60.0;
    unit_of_measurement: hours
  - platform: wifi_signal
    name: esp-tr-12 WiFi Signal
    update_interval: 60s


button:
  - platform: template
    name: $device_name TV HDMI1
    on_press:
      - uart.write: "prog -6\r\n"
  - platform: template
    name: $device_name TV HDMI2
    on_press:
      - uart.write: "prog -7\r\n"

switch:
  - platform: template
    name: "$device_name TV mute"
    #assumed_state: True
    optimistic: True
    turn_on_action: 
      - uart.write: "data mute 1\r\n"
    turn_off_action: 
      - uart.write: "data mute 0\r\n"
  - platform: template
    name: "$device_name Power tv"
    assumed_state: True
    optimistic: True
    turn_on_action: 
      - uart.write: "power tv\r\n"
    turn_off_action: 
      - uart.write: "power off\r\n"

number:
  - platform: template
    name: "$device_name TV Volume"
    id: volume
    optimistic: true
    min_value: 0
    max_value: 95
    step: 1
    #set_action:
    on_value:
       - uart.write: !lambda  
                      char buf[128];
                      sprintf(buf, "data volume %.1f\r\n", id(volume).state);
                      std::string s = buf;
                      return std::vector<unsigned char>( s.begin(), s.end() );

uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600

Merci @vincen pour ta réponse. Effectivement, j’oublié de le préciser, j’ai évidemment ce module être mon esp et l’appareil. https://a.aliexpress.com/_EjvC6FV

ah oki parfait alors :wink: tu as essayé aussi l’éternelle question de la rs-232: Croisé or not Croisé :smiley: Tu intervertis RX/TX à un des bouts et tu retestes !

J’ai testé, c’est pas mieux. Je me demande si mon code est bon :thinking:

Bonjour

Quand tu dis que tu as fait l’essai en croissant TX et RX, c’est bien côté connecteur 9 points, pas entre le convertisseuret l’esp…??? :hugs:

Ensuite , sur le projo il y a un RTS et un CTS … J’ai un doute pour les strapper…

Enfin, ton code ne fonctionne pas, car tu envoies des commandes encadrées par des <CR>, alors qu’il s’agit de Carrier Return ou Retour Chariot… La, tu envoie les caracteres <CR> , il faut envoyer le code ASCII correpondant…

Slts

tu as testé ma version de code en adaptant les strings ? on a pas utilisé la même façon d’envoyer les strings :wink:
As-tu essayé au lieu de mettre les <CR> de mettre la version « échappée » comme j’ai fait ?

Comme le dit vinula, il faut encadrer les commandes avec \r au lieu de<CR>
Slts

Hello,
Désolé du retour tardif. Beaucoup de problèmes personnels me sont tombés dessus, du coup plus de temps à consacrer à la domotique.
J’ai essayé avec des \r et ça fonctionne bien.
Merci beaucoup pour l’aide apporté !!!

Bonjour à tous je continu mes recherches et je suis toujours en quête de trouver une solution pour récupérer les données de mon onduleur, alors je profite de certain post qui pourrait m’aider afin d’éviter d’en créer inutilement d’autres. J’ai vue sur ce lien https://github.com/astraliens/home-assistant-inverter-xpert-king
que je pouvais récupérer mes données mais je voudrais savoir comment faire pour créer une passerelle RS232->TCP avec un esp32 et un adaptateur TTL vers RS232, voici le code que j’ai trouvé

esphome:
  name: rs232_tcp_gateway
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "Votre_SSID"
  password: "Votre_Mot_de_passe"

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

uart:
  id: uart_bus
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600

# Example TCP server
tcp:
  port: 6638
  uart_id: uart_bus

# For debugging, you can use the web server
web_server:
  port: 80

Merci d’avance pour vos réponse

bonjour à tous !!!
je relance mon post car je n’y arrive toujours pas, j’ai regardé cette page

https://github.com/oxan/esphome-stream-server

mais cela ne fonctionne pas quand j’essai de valide le code j’ai toujours une erreur voici mon code

esphome:
  name: solar-esp
  platform: ESP32
  board: esp32dev
  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:

api:


ota:
  

uart:
  - id: uart_bus
    tx_pin: GPIO1
    rx_pin: GPIO3
    baud_rate: 2400

stream_server:
  - uart_id: uart_bus
    port: 1234

et voici l’erreur qu’il me met

INFO ESPHome 2024.4.0-dev
INFO Reading configuration /config/esphome/solar-esp.yaml...
Failed config

stream_server: [source /config/esphome/solar-esp.yaml:26]
  
  Component not found: stream_server.
  - uart_id: uart_bus
    port: 1234

Merci pour votre aide

bonjour.

dans ton code, tu ne lui dis pas où aller stream_server.

c’est écrit à la 6eme ligne du readme de GitHub - oxan/esphome-stream-server: Stream server (serial-to-wifi bridge) for ESPHome

external_components:
  - source: github://oxan/esphome-stream-server

stream_server:
.......

Bonjour bentou, merci de ton aide, j’ai ajouté sur le code l’external_components, il m’a validé le code plus qu’a le transférer sur mon esp32 et essayé tout ça, merci beaucoup j’avance doucement mais surement :sweat_smile: je vous tiens au courant !!

Bonjour à tous !!! après l’oubli que bentou m’a dit tout fonctionne et j’arrive à avoir les remontés de mon onduleur .Après plus de 3 mois de recherche j’ai enfin quelques choses à perfectionner mais bon chaque chose en son temps.

1 « J'aime »

Bonjour à tous !!! maintenant que j’ai certaines remontées de mon onduleur, je voudrais savoir comment on fait où qui contacter pour faire modifier une intégration github dont voici le lien

https://github.com/astraliens/home-assistant-inverter-xpert-king

j’ai le dossier technique de mon onduleur mais j’ai regardé dans le github et il me faudrait des cours pour modifier tout ça car je n’y comprends rien merci d’avance pour votre aide

Bonjour,

le seul moyen officiel est de créer une « issue » ou un « souci » en Français en allant sur Issues · astraliens/home-assistant-inverter-xpert-king · GitHub

maintenant, vu que c’est un mec qui a développé ca sur un coin de bureau, il ne faut pas s’attendre à une réactivité de fou, c’est pas comme remonter une faille de sécurité chez Microsoft.
en plus, espHome évoluant tellement vite, il est possible qu’il faille une version plus ancienne d’esphome pour le faire fonctionner.

mais qui n’essaye pas n’obtient rien.

ok merci bentou je vais essayé et comme tu dis si je n’essai pas je pourrai pas le savoir, mais en touchant à ce github y a t’il des risques que je fasse des conneries ?

Non, ce n’est pas ouvert à la modification ce genre de truc.

ah ok et tant mieux je pense :sweat_smile:, merci du coup j’attends sa réponse ou autre solution. merci encore de ton aide bentou :+1: