RS485 anemometer connected to an ESP32

Ok, a bad contact. Now I receive:

[17:59:34][D][modbus_controller:043]: Modbus command to device=1 register=0x00 countdown=0 no response received - removed from send queue
[17:59:37][V][modbus_controller:181]: Updating modbus component
[17:59:37][V][modbus_controller:148]: Range : 0 Size: 1 (3) skip: 0
[17:59:37][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:37][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[17:59:37][V][modbus_controller:509]: Command sent 3 0x0 1
[17:59:37][V][modbus:042]: Modbus received Byte  248 (0Xf8)
[17:59:37][V][modbus:042]: Modbus received Byte  28 (0X1c)
[17:59:37][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:37][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:37][V][modbus:042]: Modbus received Byte  112 (0X70)
[17:59:37][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:37][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[17:59:38][V][modbus_controller:509]: Command sent 3 0x0 1
[17:59:38][V][modbus:042]: Modbus received Byte  248 (0Xf8)
[17:59:38][V][modbus:042]: Modbus received Byte  60 (0X3c)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  112 (0X70)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[17:59:38][V][modbus_controller:509]: Command sent 3 0x0 1
[17:59:38][V][modbus:042]: Modbus received Byte  240 (0Xf0)
[17:59:38][V][modbus:042]: Modbus received Byte  56 (0X38)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  112 (0X70)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus:042]: Modbus received Byte  255 (0Xff)
[17:59:38][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[17:59:38][V][modbus_controller:509]: Command sent 3 0x0 1
[17:59:38][V][modbus:042]: Modbus received Byte  240 (0Xf0)
[17:59:38][V][modbus:042]: Modbus received Byte  56 (0X38)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  192 (0Xc0)
[17:59:38][V][modbus:042]: Modbus received Byte  240 (0Xf0)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[17:59:38][V][modbus_controller:509]: Command sent 3 0x0 1
[17:59:38][V][modbus:042]: Modbus received Byte  240 (0Xf0)
[17:59:38][V][modbus:042]: Modbus received Byte  56 (0X38)
[17:59:38][V][modbus:042]: Modbus received Byte  128 (0X80)
[17:59:38][V][modbus:042]: Modbus received Byte  128 (0X80)
[17:59:38][V][modbus:042]: Modbus received Byte  112 (0X70)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)
[17:59:38][V][modbus:042]: Modbus received Byte  254 (0Xfe)

Is this what we expected?

I don't think so.
Where you can see your sensor? In HA?

sending part looks correct:
[17:59:38][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)

In HA I can see "wind speed" but it's unknown. I'm seeing the logs through https://web.esphome.io/

did you add that in yaml where your other sensors are?

This is my yaml:

substitutions:
  name: "esphome-web-aa34d0"
  friendly_name: ESP Anemómetro

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  level: VERBOSE

api:
  encryption:
    key: !secret esp_anemometro_encrypt

ota:

improv_serial:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.218
    gateway: 192.168.0.1
    subnet: 255.255.255.0


captive_portal:
uart:
  id: uart_bus
  rx_pin: GPIO22 
  tx_pin: GPIO21 
  baud_rate: 4800
 

modbus:
  id: modbus1
  uart_id: uart_bus
  

modbus_controller:
  - id: wind_modbus
    address: 0x01   ## address of the Modbus slave device on the bus
    modbus_id: modbus1
    update_interval: 5s

sensor:
  - platform: modbus_controller
    modbus_controller_id: wind_modbus
    name: "wind speed"
    register_type: holding
    address: 0x0000 ## address of the register inside the Modbus slave device
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

Maybe related to this?

image

Maybe it's not reading correctly?

I don't know what you mean.
Slave is 0x01.

This is correct: 17:59:38][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)

1 Like

Ok, just was a bad thought, just thought it was not reading the values correctly, as the sensor is "unknown" in HA

Esphome is sending correctly.
but I don't understand those 7 received bytes...

Try one thing... change, those rx tx pins from 22/21 to 17/16 both in yaml and on your board,
make sure you have solid wiring!

ditto, but it is 7 bytes..
bad connection maybe??
sorry.. ~q

Maybe, who knows.
Esphome can be tricky, lot of things going on behind curtains.
I have done several modbus setups like this, but....

1 Like

I'm wondering, can you flip the parity??
and curious, how do you select which uart??
~q

yes, default is N
You don't, esphome does... :grinning:

do those bytes ring you anything?
they don't look like some exception responses...

not too me..
was thinking parity, after reading..
https://esphome.io/components/uart
some notes in there, idk, reaching..

~q

It finally worked for a minute, then both leds started to flash at the same time every 5 seconds and logs shows:

[19:20:26][W][modbus:108]: Modbus CRC Check failed! 9D6!=1FC
[19:20:26][V][modbus:042]: Modbus received Byte  2 (0X2)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  32 (0X20)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][W][modbus:108]: Modbus CRC Check failed! D0!=20
[19:20:26][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 1
[19:20:26][V][modbus:199]: Modbus write: 01.03.00.00.00.01.84.0A (8)
[19:20:26][V][modbus_controller:509]: Command sent 3 0x0 1
[19:20:26][V][modbus:042]: Modbus received Byte  224 (0Xe0)
[19:20:26][V][modbus:042]: Modbus received Byte  16 (0X10)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  64 (0X40)
[19:20:26][V][modbus:042]: Modbus received Byte  220 (0Xdc)
[19:20:26][V][modbus:042]: Modbus received Byte  252 (0Xfc)
[19:20:26][V][modbus:042]: Modbus received Byte  1 (0X1)
[19:20:26][W][modbus:108]: Modbus CRC Check failed! E1E7!=1FC
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][V][modbus:042]: Modbus received Byte  0 (0X0)
[19:20:26][W][modbus:108]: Modbus CRC Check failed! C071!=00

What was the output when it worked?

couldn't copy it to paste here, but it was showing the sensor correctly, showing wind speed in home assistant and the value in the logs.

Didn't even have to try with 16 & 17 pins (which my board doesn't have, though).

Yes it has, if that link you sent was correct.
They might be named TX2 and RX2.

I'm not saying 21 and 22 don't work in esphome, but I know that 16 and 17 do.

Ok, should I try to change it?

try
but I'm more worried about your wiring...