I am working on a project where the servo could be moved manually, but the servo component doesn’t seem to have a way to set the current position of the servo via a lambda.
Currently I have a transition length set, but if I move the servo manually, then move it via ESPHome, it rapidly moves to the last position set by ESPHome, and then slowly moves to where I told ESPHome to move it to.
Is there a way around this problem that I am missing, or does the servo component need to be modified to have a way to update the position in memory without moving the servo?
Isn’t that what the lambda you refer to would be reading position from?
Isn’t the difference between a “smart servo” and an analogue one the fact that smart servos add a rotary encoder + matching logic to know their position (amoungst many other features).
I have dabbled with the Lynxmotion LSS line and they allow you to configure hold vs limp mode. And in limp mode they update their position value. And let you make changes of direction relative to last.
I didn’t know how to built a “smart servo” with all that logic from an analogue one.
I have an analog feedback servo, but the problem is thag if transition_length is set, then the servo will rapidly jump back to the last set position and slowly move to the position that I tell it to go to.
Example:
ESPHome moves servo to -0.5
I move servo to ~0.5
I tell ESPHome to move to 1.0
ESPHome rapidly moves to -0.5, then slowly moves to 1.0
Did anybody find a solution yet? I am having exaclty the same issue. I do have a rotary encoder (actually is a rotational switch, as my servo can physically be in only 5 positions), so I know the current position of the servo, but I don’t know how to tell this to esphome.