Hi, I’m trying to use this code copied from the net and adapted to my case to change the state of a Modbus register but I can’t get the desired result. Some idea?
external_components:
- source:
type: git
url: https://github.com/martgras/esphome
#ref: modbus-fix
#ref: modbus-duplicate
#ref: modbus_controller
ref: modbus_number_write
components: [modbus_controller]
number:
- platform: modbus_controller
modbus_controller_id: zcs
id: modbus_eps_state
name: "Modbus EPS State"
address: 0x1029
value_type: U_WORD
lambda: "return x * 1.0; "
write_lambda: |-
ESP_LOGD("main", "Modbus Number incoming value = %f", x);
uint16_t eps_state = x;
payload.push_back(eps_state);
return x * 1.0;
options:
"Option 0";
"Option 1";
switch:
- platform: template
name: "EPS State Switch"
id: eps_state_switch
turn_on_action:
- number.set:
id: modbus_eps_state
value: !lambda |-
return id(eps_state).state + 1;
turn_off_action:
- number.set:
id: modbus_eps_state
value: !lambda |-
return id(eps_state).state - 1;
Log
[10:31:24][D][modbus.number:055]: Updating register: connected Sensor=Modbus EPS State start address=0x1029 register count=1 new value=2.00 (val=2.00)
[10:31:25][D][modbus_controller:032]: Modbus command to device=1 register=0x1029 countdown=0 no response received - removed from send queue