Oui absolument! J’obtiens toutes les données en mode Standard. Le journal du MCU dans ESPHome affiche également les étiquettes reconnues.
Avez-vous vraiment changé le mode de le Linky?
Ou est-il possible que votre circuit optocoupleur pose des problèmes à 9600 bauds?
Ma première étape a été de vérifier la connexion de données sans le composant Teleinfo. Je l’ai fait avec une configuration ESPHome différente. Cela lit simplement les données ligne par ligne à 9600 bauds et les affiche dans le journal:
esphome:
name: mcu_d1_mini_01
platform: ESP8266
board: d1_mini
build_path: mcu_d1_mini_01_rs232
includes:
- uart_read_line_sensor.h
wifi:
ssid: !secret fritzbox_wlan_sid
password: !secret fritzbox_wlan_pwd
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "D1 mini 01"
password: !secret esps_fallback_hotspot_pwd
captive_portal:
# Enable logging
logger:
level: VERBOSE #makes uart stream available in esphome logstream
baud_rate: 0 #disable logging over uart
# Enable Home Assistant API
api:
password: !secret esps_api_pwd
ota:
password: !secret esps_ota_pwd
uart:
id: uart_bus
tx_pin: GPIO1
rx_pin: GPIO3
#baud_rate: 115200
baud_rate: 9600
#baud_rate: 1200
parity: EVEN
data_bits: 7
text_sensor:
- platform: custom
lambda: |-
auto my_custom_sensor = new UartReadLineSensor(id(uart_bus));
App.register_component(my_custom_sensor);
return {my_custom_sensor};
text_sensors:
id: "uart_readline"
De plus, vous devez créer le fichier /config/esphome/uart_read_line_sensor.h:
#include "esphome.h"
class UartReadLineSensor : public Component, public UARTDevice, public TextSensor {
public:
UartReadLineSensor(UARTComponent *parent) : UARTDevice(parent) {}
void setup() override {
// nothing to do here
}
int readline(int readch, char *buffer, int len)
{
static int pos = 0;
int rpos;
if (readch > 0) {
switch (readch) {
case '\n': // Ignore new-lines
break;
case '\r': // Return on CR
rpos = pos;
pos = 0; // Reset position index ready for next time
return rpos;
default:
if (pos < len-1) {
buffer[pos++] = readch;
buffer[pos] = 0;
}
}
}
// No end of line has been found, so return -1.
return -1;
}
void loop() override {
const int max_line_length = 80;
static char buffer[max_line_length];
while (available()) {
if(readline(read(), buffer, max_line_length) > 0) {
publish_state(buffer);
}
}
}
};
Avec ce programme, j’obtiens les données suivantes dans le journal:
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'ADSC 0418......... A'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'VTIC 02 J'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'DATE E210520033243 7'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'NGTF BASE <'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'LTARF BASE F'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EAST 020102629 %'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF01 020102629 8'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF02 000000000 #'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF03 000000000 $'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF04 000000000 %'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF05 000000000 &'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF06 000000000 ''
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF07 000000000 ('
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF08 000000000 )'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF09 000000000 *'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASF10 000000000 "'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASD01 020102629 6'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASD02 000000000 !'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASD03 000000000 "'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'EASD04 000000000 #'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'IRMS1 000 .'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'IRMS2 001 0'
[03:32:40][D][text_sensor:015]: 'uart_readline': Sending state 'IRMS3 002 2'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'URMS1 237 F'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'URMS2 233 C'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'URMS3 239 J'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'PREF 30 B'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'PCOUP 30 \'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SINSTS 00639 X'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SINSTS1 00063 @'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SINSTS2 00156 D'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SINSTS3 00420 ?'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN E210520003340 05013 ''
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN1 E210520003338 01549 )'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN2 E210520003338 01672 ''
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN3 E210520030914 02638 +'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN-1 E210519084029 05225 _'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN1-1 E210519065313 01482 L'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN2-1 E210519071212 01734 H'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'SMAXSN3-1 E210519194707 02972 ]'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'CCASN E210520033000 01716 7'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'CCASN-1 E210520030000 00434 N'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'UMOY1 E210520033000 234 $'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'UMOY2 E210520033000 231 "'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'UMOY3 E210520033000 243 &'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'STGE 003A0001 :'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'MSG1 PAS DE MESSAGE <'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'PRM 055156........ 3'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'RELAIS 000 B'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'NTARF 01 N'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'NJOURF 00 &'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'NJOURF+1 00 B'
[03:32:41][D][text_sensor:015]: 'uart_readline': Sending state 'PJOURF+1 00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTIL'