I am trying to control my Huanyang GT Series with my HomeAssistant but I just keep getting errors…
I have a ESP32 and using ESPHome in HA. I can read the sensors but not activate (write) anything. First I just keep getting:
[01:12:49.245][D][number:033]: 'VFD Kommandofrekvens': Sending state 0.500000
[01:12:49.274][D][modbus:157]: Modbus error function code: 0x86 exception: 18
[01:12:49.276][E][modbus_controller:094]: Modbus error function code: 0x6 exception: 18
[01:12:49.277][E][modbus_controller:098]: Modbus error - last command: function code=0x6 register address = 0x2001 registers count=1 payload size=2
But now I changed my Yaml and now I am getting:
[02:52:44.591][D][number:033]: 'VFD Kommandofrekvens': Sending state 0.000000
[02:52:46.088][D][number:065]: 'VFD Kommandofrekvens': Setting value
[02:52:46.091][D][number:124]: New value: 18.299999
[02:52:46.096][D][modbus.number:059]: Updating register: connected Sensor=VFD Kommandofrekvens start address=0x2000 register count=1 new value=18.30 (val=1829.00)
[02:52:46.098][D][number:033]: 'VFD Kommandofrekvens': Sending state 18.299999
[02:52:47.168][W][modbus_controller:027]: Modbus device=1 set offline
[02:52:47.170][D][modbus_controller:039]: Modbus command to device=1 register=0x2001 no response received - removed from send queue
[02:52:47.210][W][modbus_controller:065]: Modbus device=1 back online
[02:52:47.215][D][modbus_controller.sensor:025]: Sensor new state: 50.00
I understand that ESPHome is trying to send commands over register 2000 but my device wants it on 2001, is that correct?
I have tried to get this to work during sooo many hours now so someone please help me.
This is my Yaml:
esphome:
name: esphome-web-db0d38
friendly_name: ESPHome Web db0d38
esp32:
variant: esp32
framework:
type: esp-idf
logger:
level: DEBUG
api:
ota:
platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: none
uart:
id: rs485_uart
tx_pin: 1
rx_pin: 3
baud_rate: 9600
parity: NONE
stop_bits: 1
modbus:
uart_id: rs485_uart
flow_control_pin: 17
send_wait_time: 200ms
modbus_controller:
id: vfd
address: 1 # Modbus-adress (PC.00)
update_interval: 2s
# ---------------- STYRNING ----------------
# Start/Stop på 0x2000
switch:
- platform: modbus_controller
id: vfd_start_switch
modbus_controller_id: vfd
name: "VFD Start"
register_type: holding
address: 0x2000
bitmask: 0xFFFF
use_write_multiple: true
write_lambda: |-
return x ? 1 : 0; // 1 = start, 0 = stop
# Kommandofrekvens på 0x2001
number:
- platform: modbus_controller
id: vfd_freq_number
modbus_controller_id: vfd
name: "VFD Kommandofrekvens"
register_type: holding
address: 0x2001
unit_of_measurement: Hz
min_value: 0
max_value: 50
step: 0.1
use_write_multiple: true
write_lambda: |-
return (uint16_t)(x * 100); // skickas som hundradels Hz
# ---------------- SENSORER ----------------
sensor:
- platform: modbus_controller
modbus_controller_id: vfd
name: "VFD Aktuell Frekvens"
unit_of_measurement: Hz
address: 3
register_type: holding
value_type: U_WORD
lambda: |-
return x / 100.0;
- platform: modbus_controller
modbus_controller_id: vfd
name: "VFD DC Bus Voltage"
unit_of_measurement: V
address: 4
register_type: holding
value_type: U_WORD
I just want it to be able to run my fan