A barebones wrapper to enable control of a Roomba via ESPHome. Tested with ESPHome 1.13.x, and a Roomba 650 w/a Wemos D1 Mini installed.
The inspiration for this project is https://github.com/johnboiles/esp-roomba-mqtt. You'll find a detailed wiring guide there. In fact, I originally started off using that project for my Roomba 650. However, as I migrated my custom components to ESPHome, I wanted my Roomba to be on the same platform as the other devices.
I should note that like others, I initially had trouble reading the sensor data from the Roomba. I posted the solution I found in johnboiles/esp-roomba-mqtt#2 (comment)
For what it's worth, my Wemos D1 Mini couldn't read the Roomba sensors either. I found this snippet in an iRobot Create 2 Doc
In some cases, the drive strength of a Roomba TX line is not enough to drive the RX line of another board (for example, in some revisions of Arduino). In this case, a simple PNP transistor (2N2907A, 2N3906, or 2N4403, among others) can be used to provide enough “drive” for the Arduino.
I used a 2N3906 and following the circuit as described in the PDF; I can now read sensor values from the Roomba!
Take a look at the example directory for a fully working example.
- <example/esphome.yaml> - Contains the bits needed for ESPHome.
- <example/homeassistant-vacuum.yaml> - Contains the bits needed to integrate as a "MQTT Vacuum" in Home Assistant