Add wifi to an older roomba

Hey, it works with SoftwareSerial on Roomba 650.

Adapted as follows

Since it is a 650 it wouldn’t wake up simply pulsing BRC, so at the end I opted for a relay to mimic the push of Clean button


credit for both the image and idea goes to Synthiam

1 Like

I’m migrating from the MQTT version at https://github.com/mannkind/ESPHomeRoombaComponent to your native API version https://github.com/davidecavestro/ESPHomeRoombaComponent and am struggling with what to add to my configuration.yaml in order to create a “vacuum” device. Might you be able to add an example for this to your repository and/or this thread please?

Also when attempting to compile your version I get error: no matching function for call to 'Roomba::Roomba(SoftwareSerial*&, Roomba::Baud&)'; any tips?

EDIT: This was user error on my part; I hadn’t updated the Roomba library declaration to point to davidecavestro/Roomba.git. With that done and build files cleaned, it compiles without issue. Some tips regarding how to create a vacuum with this in Home Assistant would still be very much appreciated though.

Thanks.

Sorry for late reply, I missed notifications.
The device is automatically created in HomeAssistant by the ESPHome integration. Did you install it? If not, please check ESPHome - Home Assistant or Getting Started with ESPHome and Home Assistant — ESPHome.
When the ESPHome integration is enabled in HomeAssistant, ESPHomeRoombaComponent/roomba.yaml at 5dbcdea532e9742d6f94b3dd83b6c567d74912bc · davidecavestro/ESPHomeRoombaComponent · GitHub should make a device with relevant sensors.

1 Like

Hello everyone,

In newbie and i buy Roomba 581 week ago and now i want to try this “hack” to get Roomba to smartlife app or anything else…

But im stuck with schematic and programing and maybe with all.

Is there noob friendly and fully working manual?

I list this topic and find some threads, but im stuck with how to connect it to Roomba (schematic). And how to program wemos and what to do next.

I got WEMOS D1 mini and some esp8266 module, step down converter…Will i need rezistors? With what impedance? Some PnP tranzistor too?

Sorry about my english im from Czech Republic and im not very good in writing :frowning:

Sincerely John…

have you tried youtube?
look for roomba esp8266

Yes but there Are diference on YouTube and here. I want to use home asistent, and here are diferent schematic too.

On YouTube there is some schematics, but if the Roomba Is at docking station the data line will be powered with too high voltage.

I got some cheap USB to TTL dongle and i dont know what i need to flash to wemos or ESP.

Im really newbie in here :frowning:

Hello,
i have tried to compile your code but i have this error:

Could you help me? or someone know what SoftwareSerial.h library i need to download?

Best Regards
Stefano

Try including the EspSoftwareSerial library and the esp8266 block as described in the image below! (Just remember to edit your board type)

image

esp8266:
  board: EDIT_YOUR_BOARD
  framework:
    version: latest

esphome:
  name: YOUR_DEVICE_NAME
  includes:
    - PATH_TO_ESPHomeRoombaComponent.h
    
  libraries:
    - "plerup/EspSoftwareSerial @ ^6.15.2"
    - Roomba=https://github.com/davidecavestro/Roomba.git

Thanks a lot for your fast reply Vinicius :smiley:

Could i ask you also how can you see the Roomba in HA? some screen of lovelace dashboard related to roomba for example.
I just want to know if is like MQTT so we could see like here or in different way:

image

I will try later, now i’m at work.
Best regards
Stefano

I have installade with your command also the ESPSoftwareSerial, see the screen here:

image

But i have the same error:

Probably is a different library?
Best Regards
Stefano

Maybe I’m wrong, but I’d say it just worked using the library from core libs.
In the meantime I’ve updated the esphome container and cleared the cache: I can reproduce your issue.
Also consider SoftwareSerial not compiling - #3 by PDXfoster - Development Platforms - PlatformIO Community

Sorry I definitely have to take a deeper look.

1 Like

In other words, I’m looking for a way to use the SoftwareSerial library included into the framework ( platformio/framework-arduinoespressif8266)

UPDATE
Hey, it works this way

  libraries:
    - EspSoftwareSerial
    - Roomba=https://github.com/davidecavestro/Roomba.git

Hey @Jan_Kacko, I’ve someway sketched what I ended up with.

To be honest I still have to review it and check it is accurate enough… but I hope in the meantime it can just give you a raw idea.

I used:

  • ESP8266 D1 mini (clone) ESP-12F
  • 5V 3.3V Logic Level Converter bi-directional
  • buck step-down converter - range from 4.5V~28V to 0.8V~20V 3A
  • relay shield 5V

Ok i’m using this after lot of fail compile from serial issue i got some value :slight_smile:
image

But roomba530 activity is always empty.

Also i might have been silly but how do we send command whit this vesrion? (spot/clean/dock)
Ok find in HA with service call. But it still do not update activity.

EDIT: To get activity update, i add to remove the if test here:

Also to get correct charging stat i had to re-order this:
image
If not it will return docked always instead of charging.

I also modified the lib to get batterytemperature, going to PR.

1 Like

Hi,
Is it possible to get log from serial ?

Seems to have issue with my RX pin, but can’t debug it without all reopening :frowning:

Maybe after all topic reading try the PNP version instead of resistance divider. I tel you when done.

HI,

what is the meaning of the Roomba virtual button switch? it to “wake” up roomba with the relay vs use the BRC?

switch:
  - platform: gpio
    id: "roomba_button"
    name: "Roomba virtual button"
    pin: D3
    on_turn_on:
    - logger.log: "Roomba virtual button pressed!"
#    - delay: 1s
    - delay: !lambda "return 400;"
    - switch.turn_off: roomba_button

yes, my Roomba 650 goes into sleep mode and pulsing the BRC pin is not enough to awaken it.
The most reliable way I’ve found to make it react again to commands is simulating the push of CLEAN button with a relay.

To my understanding data is read form softwareserial into a buffer in a loop

Maybe you could inject there a stream and use it as a logging utility.

That said, I’m not really happy so far with SoftwareSerial. OTOH I still have to test it in-depth changing rate.

If I remeber correctly @Wes93 got a good solution (possibly using other libs)