I am even later to the party than Søren, but I also want to thank you this inspiring video. It made me start learning electrical engineering. At the end I managed to implement this project with a Roomba 681. I am now ready to develop it further to get notification on my watch, when the Roomba is finished with cleaning a room.
Stil can't get over the fact that this 14yo Roomba is now fully locally controllable using home assistant and the brand new ones only work when there is cloud
Rob, you're a legend! I've just HA-enabled my old Roomba 785, just the fact that I'm now able to block it from cleaning when I'm home, has saved my year... Thanks!
"The Roomba Tx pin doesn't output a strong enough signal ... so we've gotta boost it up a bit ..." The Roomba serial port operates on 0..5V. So above 2.5V is "on", below 2.5V is off (thresholds notwithstanding). The ESP operates on 3.3V so anything above 1.65V is on, and below 1.6 is off. If the Roomba outputs a 2V off signal, you can see that the ESP still sees that as "on". What I think your saturated transistor does is to drop the "off" to nearer zero Volts. It's an encouraging video and (except I'm using a level shifter and planning to flash with TASMOTA) I'm essentially following it.
This is such a thorough video, thanks for all of the information. I love that Roomba puts out such a friendly API, it makes their price tag a little more reasonable.
Sure, I'm late to the party, but just wanted to give you a virtual high five for this amazing project. Fitted it to my Roomba in a couple of hours and it was working. Great job. I really enjoy videos like this, making some everyday stuff we alle have in our houses, work with Home Assistant automation. How about a project to accurately measure the water level in our Delonghi espresso machines. It's so annoying that these machines only have a reed switch in the bottom saying empty. I believe we all, regularly push the button, get three drops and then the machine stops. Would love a great solution for this common problem.
Awesome! Great video. I love my roomba, but we are not on a regular schedule and sometimes it was starting when we were in the house (a bit a a nuissance) . I assemble my kit yesterday and thanks to home assistant automations and your great video, we now have a roomba that only kicks in when we leave the house. Mucho thanks| As Mike stated below "I salute you. New home automation king"
Thanks I was hoping this would be so easy I already do Alot of work using various esp MCU's so that part makes me happy as I have a few laying round I got an old Roomba 530 from a neighbor who moved out and didn't have space for it anymore so I gladly accepted the bot I initiated my disassembly of the whole thing and deep cleaned it back to like new and Shazam cool Roomba but no wi-fi so you're video made me Soo happy thanks for the awesome work
Great video. I just purchased a Refurbished Roomba 595 for $139 - which I thought was a pretty decent deal. Now if I can update its features that would be great!! I wrestled with paying so much money for the more advanced models. I haven't used Home Assistant or Node-RED before, so this would be my first project! It should arrive next week sometime, so wish me luck!
anyone that wants to do this just for the experience and doesn't care about the price, you can get the $200 roomba create on the iRobot site and then buy the cleaning parts separate, benefit of this is they send you the documentation for everything and the bot is loaded with optimized software for modding/hacking if the price is what you're worried about get a deebot, it's got most of the new features for about the same price as a used roomba and that's on their entry model, more in the roomba price range also gets you mopping, and a charging port with built in rechargeable handheld vacuum that the robot can automatically empty itself into
I bought several Roombas for "parts" (three 581s and one 521) a week ago, as I wanted to get a real opinion on robot vacuum cleaners without, either, investing a huge price (like the €450-500 they cost ten years ago, OMG) or going for a cheap, generic brand model without any support for spare parts or documentation. I'm truly amazed by the high repairability rate of those things. I've been able to disassemble all 4 of them without any doc, just with a pair of screwdrivers (including that Y shaped one for the brush motor). I replaced and exchanged the brush motors, the dustbin fans, the LCD and button panels, the handles, the top cases without ANY problem and knowledge of those appliances. I was wondering what was the purpose of that DIN shaped connector I discovered while removing the upper cover, and now, thanks to YOU, I know. Although I'm an all-purpose IT developer, I'm not experienced enough to play with those electronic writings and components, my most complicated experience being with my 2012 Raspberry Pi... But you earned a new subscriber thanks to your extremely informative and crystal clear video. Nice footage, nice explanations, perfect video cuts. Well done, and keep the good work up!
This is fantastic. THANK YOU. What I really want is to generate a log of RUNTIME and STOP_REASON. Since they only run when I'm gone I don't get good feedback of how successful they were. I want to keep track of battery health or keep an eye out for system/sensor failures. I've had a small fleet of Roombas with simple automation for years now. I use an IR blaster to kick off a clean cycle when the house alarm arms.
If anyone tried this and got a reboot loop on your ESP-01 it was because your RX pin was not configured properly and caused the total mAh to be returned as zero. I hadn't considered this in my original code and it caused a divide by zero error/reboot. I've updated the code on github to prevent this reboot loop. Instead of returning battery % it will return NO DATA instead.
I've spent a lot of time completely re-writing this code. I've linked to this video from the post: www.crc.id.au/hacking-the-roomba-600/ Hopefully, it'll give you some good ideas to improve your code too.
you considered problem when WIFI go DOWN? with your code it's necessary detach and attach again ESP to ROOMBA; could be a problem of mDNS announce? could you fix your code?
Great Video, i modified your arduino sketch and added the OTA update capability. Makes it easy if the wifi network needs to be changed or any other changes that you might want to do. Might also add a web sever for the wifi manager and manual control from a browser instead of MQTT.
Your videos are so awesome....you do a great job of not only explaining, but providing additional stuff like the code and electronics diagrams, and your editing is really well done. Thankyou for this, I have an old Roomba that I was trying to figure out what to do with it, but with this I'm going to try to do these upgrades (including the battery one...that's cool to know that's available!). I'm even excited about the idea of being able to have it play some songs...I may get the R2D2 skin and have it play imperial march if I get super into it :) Thanks again, and please keep up the great work!
I saved ~$300 following this video. The only difference in my hardware setup is that I used the Adafruit Feather Huzzah board which has an integrated logic converter on the RX pin and ftdi module. I used the 3.3V signal from the Huzzah board TX pin directly and so far it is working fine. On the software side I didn't implement the Node Red black magic. Instead I used a simple HA automation for daily cleaning schedule. The one thing I would like to incorporate into the Arduino code is to publish a "Docked" status. Right now I can only see when the Roomba starts cleaning and returning.
The Hook Up I do see a battery percentage status but I haven't validated the data. So far I only recall seeing 100% and 120% which is odd. I think I had to change the HA sensor definition topic from currentStatus to Status (or the other way around...) before I started seeing values.
I defined a HomeAssistant MQTT sensor like this: - platform: mqtt name: "Roomba Charging" state_topic: "roomba/charging" But I am getting non-sense values(10,46,248,241,33) instead of the 0-5 range expected. If I take only the first digit of each number (1,4,2,2,3) then it sort of makes sense(Reconditioning,Waiting,Full Charging,Trickle Charging). This is the code that publishes the charging status(unmodified): String temp_str = String(battery_Voltage); temp_str.toCharArray(battery_Current_mAh_send, temp_str.length() + 1); //packaging up the data to publish to mqtt client.publish("roomba/charging", battery_Current_mAh_send); Why do we need "temp_str.length() + 1" and not just "temp_str.length()"? Could this be related to the board that I am using?
Thank you very very much for all your video ( subscribed )! . I am totally newbie in this stuff only 2 days I have installed home assistant. But finally I did it!!!! Thank you very much you are a pure genius !
Buen video y muy bien explicado. Después de probar entre varias programaciones me he quedado con esta.... aunque le he añadido el pause para poder parar el roomba en cualquier momento. Tengo un Roomba 650 y no me hace falta conectar el cable para tenerlo despierto. Gracias por el aporte
Awesome..Need More! More! More! of these. I have been looking into making non-smart devices at home - washer/dryer; basement water leak detection/mains shutoff.I was shopping for a gas water heater, HDepot had one for $150 more for wifi /alexa/ect option. please let us know if you have integrated ESP in other devices at home. Trying to get my 3d printer calibrated so i can make your door sensor - already ordered the missing parts from ali. thanks
Thanks for sharing this nice project I using it on a Roomba 606, this type goes into sleep mode after 5 minutes, so i have to send the start command twice. After sending it the first time, the Roomba wakes up, after the second command (5 seconds after the first fire) it starts cleaning. I made a script in HA that does the job, so you can start cleaning with one push in HA Kind regards, Henk
Nice solution! I posted a different file on the github page for the 600 series that pulses the line every minute to keep it awake too if you're interested in that.
Def check/clean the brush for hair - friend/I both have long/thick hairBISSELL PowerFresh Steam Mop Canister held more dust/dirt than I expected. Makes life easier!
I just got this up and running on my roomba. A one thing I noticed along the way are that the OI documentation seems to say that it is not necessary to put the roomba into safe mode before issuing the cleaning command. The cleaning command can be issued from any mode, and automatically puts the roomba into passive mode. I did not test this, though.
Hi Frank Nice video have seen it a couple of times now and think its time to go for it. My old 560 is going to have a new life. If you were going to do this today yourself, would you do anything diffrent?
Hey Rob, great video. I am running into some strange results that I cant seem to track down. I have a Roomba 650 and I purchased the same items you used in your build. I have everything connected, the commands from HA work fine, but the 0-5 "charging state" values are coming in on the roomba/battery topic (but sometimes I see values that look like battery values, like 93), and the roomba/charging topic seems to float between reporting a value of 240 and 248. (For now I do not have the keep alive pin connected just to try and simplify the troubleshooting). I found the data sheet for the 600 series and verified that the pins on the connector are the same as the 500 series. Any suggestions would be appreciated. Thanks!
Hi. My old Roomba 772 has been working flawlessly from HA since i did this upgrade thanks to this great video. But I have one small problem. From time to time the Roomba decides to leave the dock because of lost connection to the dock and starts moving around in search for the dock it just left. Sometimes it would be useful to just stop it where it is. Especially at night. The "stop" command sets it to returning-mode, witch its already in, and I can't figure out how to make it just stop where it is. Similar to pressing the round button on top of it. Maybe its called "pause"? Any tips on how to do this?
I dont know if youre still looking for an answer but you could use the power command which is uses the serial sequence 133. This command shuts down the roomba in its spot.
@@TheHookUp I noticed when I first turn on the roomba switch it just lights up but doesn't move. If I hit the switch to on one more time, then it comes to life and starts cleaning. Have you ever seen such behaviour? Your insight would be great. Thanks again!!
Can we have your details, so you can send an already made, assembled and programmed kit from YOU? Mate, you did an AWESOME job and you deserve some money back (and my wife already granted me the needing budget 😉😁)
So far so good with this vacuum. th-cam.com/users/postUgkx8ISPQRRAfpAaX4msGjyodObTBnlj4T5g I was a little concerned to find it seems to be all plastic, but the reviews were good, so I'm hoping for the best. Very easy to assemble Recommened, and only attachments I've used so far work well, and are easy to use. Doing a good job on the new carpet in my bedrooms and stairs. Works well on the hardwood on my main floor too. Reasonable weight and cord length. I already knew from an earlier review that it wouldn't fit under furniture, but I can use my Eufy for that, so no problem - the high traffic areas that need a stronger suction was really what I bought this for. If it continues as it's started, it will be a good buy and well worth the money. I have had two Shark Rocket stick vacs in the past that are super easy to use, but the motors just don't last well, even with scrupulous cleaning of the filters. I'm hoping for better with this Bissell.
awesome video, this has been on my todo list for a while but your video may have given me the bump in motivation needed to actually do it! question, how much more (time or coverage) do you find (or guess) the roomba cleans using your "charge and resume" automation? I don't think these older roombas know where they left off (I think the brand new ones with mapping capabilities do), do you use light houses (Virtual Wall) in your house? thanks again
I don't have any virtual walls set up, but I can tell you that in a single pass the roomba will clean about 75% of my downstairs, with 2 passes there are roomba tracks over every square inch every day. This summer I'm going to be working on a virtual wall project using nodemcus.
Finally I get it working. But, if I would like to drive the roomba (left and right) in order to drive toward the right room? I have read the oi interface manual but I am stuck..
I´m wondering... there no problems with the serial TX/RX Signal levels? You connect them directly to the esp, but they have 5v and esp normaly need 3.3 v....
Thanks for the video - very helpful in getting it working. Did you have any issue with sleep? Mine (805) will only work if i set the baud pin low for a half second or so to wake up the roomba. If I do that, it will consistently take commands, but otherwise it mostly ignores them. Also, I can't receive anything at all from the tx pin. Is that what happens without the transistor?
The cable is an old apple MIDI cable in mini DIN....if anyone cares. I did my automation with the IR. I started to change it to this way, but I wanted to have it map the house. The wheels slip too much to get any accuracy, so I stopped. I guess the only thing you have is the battery sensor that I do t have because mine stays with the dock. But I'm considering your upgrade because mine is 3 years old now and the new wore off. I also did it with an rfm69 radio and gateway system. Those radios are less power hungry than WiFi but it seems the roomba battery is big enough it's a mute point.
I guess it depends on what you mean by map. If you are trying to "just" get it to a location that is not that far away, over hardwood, to start cleaning - of course it's worth it! If you are trying to get a CAD drawing of your house with it like I did - forget it. Just FYI - it's not dependent on the model - the API commands are almost the same - see the book Rob recommends "Hacking Roomba" It's just the offset that occurs due to resolution inaccuracies and wheel slippage that happens even over hardwood. The problem comes from the fact the encoders, while pretty accurate, are ran off a drive wheel instead of an idle wheel. So every single turn introduces a new offset. I definitely would encourage you to play with it - I assure you it's worth it. All I was trying to point out is don't try to make it something it is not like I did. For what Rob did, it's perfect. And getting it from one room to another it's accuracy is "good enough". You will find talk of some of the newer ones "mapping" the home. But this is in combination with the bump sensor, and the map is a map without real measurement and nto a CAD drawing I was trying to accomplish. Good luck with it!
Great video! Just uploaded the code to an ESP-01 and it ran like a charm. However, I just recently saw that you have a separate INO file for the 600-series. My Roomba is 620, and I was wondering if I have to replace the ESP-01 with a NodeMCU to prevent sleep mode, or will it function as it is?
@@TheHookUp I've been running this for a day now, and I noticed a few things that could be improved. When the Roomba is returning to the dock and started charging, the status will say "Charging" even if the battery status is 100%. In that case I think it should report "Docked" or something similar. Also, if it is docked, either charging or finished charging, and you disconnect the chargers wall plug, it responds "Cleaning" even if it's docked. I will try to make some time this weekend to update the code, to accomodate for these differences previously mentioned.
You mention D4 on nodeMCU in the 600 file. Wound this be GPIO02 on the ESP-01? Sleep Pin value is 2 in your code and Pin 2 on the ESP-01 document seems to indicate that pin 2 is TX. I have my ESP-01 hooked up from GPIO02 to BRC on Roomba 650 and it still is going into sleep mode.@@TheHookUp
Great work! Love your viedos!!! A bit more of a challenge. Can you upgrade Roomba 675 to have mapping? Is it possible by programming or it lacks the hardware as well?
@@TheHookUp There are lidar sensors to buy for tinkering like the "YDLIDAR X2". That in combination with the informations collected with this project would definitely make a interesting challenge to make a "dumb" roomba more smart with mapping.
Hi, quick question, would the ESP-01 could be interchangeable with the ESP 8266? Im asking because I also want to do the motorized smart blackout thingy and will have a spare ESP 8266 for the roomba: In case It is compatible the USB to TTL adapter would not be necessary right? Im asking because I love your videos, I dream about accomplishing one of your projects but I have never even used a soldering iron. I want to tackle these two projects in order to learn more about the things you do. Thanks1
Awesome video Rob. I have learned a lot from your videos specially node-red and home automation. thank you for creating such inspiring videos. I have Roomba 655 and I'm able to start and stop it from my HA app. But the only problem is that it does not start cleaning or listen to my commands while on the dock. I have tried reconnecting it several times still the same issue. Can you please help me with this?
In the video at 6:10 (and "Here's the wiring without the cover on: i.imgur.com/dPhCsKw.jpg") there appears to be SOMETHING ADDITIONAL connected to the positive power input on the ESP-01. It looks like perhaps a resistor, but I can't make out the color of the stripes on it. I don't see it included in the parts inventory, and I must have missed it in the video. Can you tell me what it is? Or, am I just seeing things? I was going to try wiring this up using a spare wemos D1 Mini Lite that I have laying around, so I wasn't sure if that additional component (assuming there IS one) would be needed for my board. Just before I started soldering, I noticed the component and figured I better stop and ask. Thanks
It's a resistor that is bridging the VCC and the chip enable pin. I no longer use a resistor for this purpose, it has a very high value resistor on board and can just be bridged with wire.
This is a awesome project, only thing is that the battery info doesn't seem correct always at 100% status and charging stays at 255, not getting the 1-5 status, could this be cause I'm using a esp32 instead of esp01?
How about IR? Excellent guide. I am looking to do this on our 866. It replaced our 530 that we didn’t use a lot, and I must admit there is a world of difference from the old brush system to the new rubber roll one. SO much easier to clean and untangle! Anyway I way thinking: wouldn’t it be a lot easier for you to just let the Harmony control it by IR? Of course you couldn’t see the battery status and stuff, but still...
@@TheHookUp A Broadlink RM Mini is an inexpensive way to do it through IR. But obviously no status info or controlling when out of view/range, so not as precise as using wifi.
I replaced the old Ni-HM battery with a Li-Ion battery with BMS, and now the iRobot 780 vacuum cleaner doesn't recognize it when charging. Error 1, what to do with it?
Hi, great video and is working perfect! How can I incorporate the Stasis sensor to your sketch. That would tell if moving forward or not and I think would be a good way to determine if is stuck somewhere before battery dies. Would be nice to also play a noise to find if lost but that would be less important. Thank you!
Hi Rob, Great project. I've found an old Roomba 585 to be converted into the mqtt-HomeAssistant connected unit. Only thing is that the roomba/charging topic is replying with the battery level % instead of the charging state number. So I looked into your *.ino program to discover that you programmed a complete calculation based on the sensor 21 data. Why was that? That leaves me with a discrepancy between the Node-Red blocks and the Arduino code. Though i did manage to get it to work however in HA, but I'll have to figure it out via serial debugging in a few weeks time I hope.
Hi ..thank you so much for details instructions. I am able to see all roomba communicating in HA but the Roomba Status is showing an Unknown ..can you please direct me what should be causing this. I can turn on off Roomba and can see the charging percentage
@TheHookUp Awesome project! Set it up this weekend, working well so far. Two questions, wondering if you’ve experienced this. 1. The battery sensor percentage switches between the actually charge level and then a single interference. At 100% it will switch to 2, and I’ve seen 70s then switch to 1. 2. The roomba seems to be moving a lot faster. This isn’t really an issue just curious about it.
1. Hmm, that's interesting, not something that I've experienced. I wonder if that could be an internal polling error in the roomba's MCU. What series roomba are you using? 2. Mine go the same speed as before (I have a 530 and a 580)
Thank you for the fast reply. 1. Roomba 650 2. Did a little more digging after I posted. Cleaning the sensors may help with the speed. Apparently if it doesn't sense anything close it increases speed. I haven't paid attention to it cleaning in a couple years until testing. Maybe I am just noticing it now but existed a while. I'll let you know. Thanks again! I'll post how it goes.
Also I used your sketch Roomba_600_ESP01_CONFIGURE.ino, instead of RoombaESP01_CONFIGURE.ino. What are the differences and should I have used the standard one? I didn't notice much of a difference between the two sketches.
I dont' know if you can help me. I have 2 roomba I changed in the sketch of the second one "const char *mqtt_client_name = "Roomba" to ""Roomba534" "but I can't make the battery and status work. What I have to change in node red for use another device? Is the change in mqtt_client_name the only thing that I have to change in sketch? In node-red roomba/charging roomba/status roomba/currentstatus e roomba/commands are alle green and connected . And I can receive all the messages listening to roomba/charging etc.. Can you help me?
Hi, Thanks for the super video... however I'm new to this so might seems stupid question...However, I have no MQTT server at home.. would be possible to use an online server for this? if so do ypou have any suggestions or needs to change in the code? thanks in advence
hi, can you please helpme with the updated sketch and libraries. the attached one can´t compile in IDE, and send mthis issue "Compilation error: no declaration matches 'Roomba::Roomba(HardwareSerial*, Roomba::Baud)'"
I have this running in MQTT, with a 2N3906 transistor as shown. MQTT is showing the device and its states, HA shows the entities, however in MQTT explorer, the battery is saying "No Data". Also, any commands I ppublish to it manually, or by using the HA switch, the roomba does not respond to. Itss a roomba 805, according to my research, the pinout on the interface is the same.Should I be using a different transistor? Any other idea?
Hi Rob, awesome video...Inspiring! a little question about the transistor, can I use a BD534 or a BC327? are both PNP... I've a couple of them around ;-)
Hey Rob, awesome video. I just set this up to control my 500 series and it is working great. One question though: If I manually start the Roomba via the button, the status does not update via MQTT to "Cleaning". I can see that this is only done when calling "void StartCleaning()". Is it possible to have the ESP query the status periodically via the serial interface, and report that the roomba is cleaning, if it were manually started without automation? Thanks!
Replace ESP01 by ESP12, add shock/vibration sensor in the loop ,monitoring for voltage drop over some time period (prevents false positive) then update MQTT advertising roomba is now alive. Use HA to handle the rest.
Dude, you're super smart! How old a Roomba are we talking? I have a 860 that I'd love your advise on; to add these features would these steps be the same? Is it also possible to add mapping to my 860? There are a lot of 'dead areas' Jethro (we named ours) gets stuck in, bathrooms for an example, kitchen sink rugs, etc... Anyways, hoping you could point me in a direction.
@@TheHookUp there is a serial port right under the handle of the 860, is there something else preventing it from working? 860 already has advanced scheduling, I'm just looking for a way to make my 860 a wifi enabled one so I can use an NFC tag or something to launch it when I'm not home or use google home assistant - thanks in advance!
Awesome and inspiring video! I bought the gear, connected it all up. Installed a MQTT broker and client. I receive the following after I publish "start" to roomba/commands: checkin roomba = Rebooted charging = 0 commands = start status = Cleaning However it doesn't start. Shortly after, status changes to "Dead Somewhere" What do I do wrong?
This was an awesome and fun project to do, thanks @TheHookUp ! just one question, i was able to make it work on an old installation of HA but the latests version has changed the .yaml and this error shows up "Please move the configuration to the mqtt integration key and restart Home Assistant" I have tryed to change the configuration.yaml file with this new format... but it still wont work switch.roomba: #Roomba Switch - name: "Roomba" command_topic: "roomba/commands" payload_on: "start" payload_off: "stop" sensor.roomba_status: #Roomba Sensors - name: "Roomba Status" state_topic: "roomba/currentStatus" sensor.roomba_battery: - name: "Roomba Battery" state_topic: "roomba/battery" I guess all of us have the same issue with the update on HA... Also i I'm probably doing something wrong since I'm not expert in this... any ideas in how the file should be? Thanks!
Cool! I'm gonna try this. mmmm, maybe I can use an ESP32 and put some beacons in the room to register & record the moving of it. BTW, do you have a picture of the wiring and placing of the added electronics? Is there a need for a new 3D printed cover? Oh, can I use an old PS2 keyboard wire for teh connection controller-roomba?
internet is cool! i get inspired by your ideas and ask you a question from the other side of the world (belgium) and half an hour later a get a great answer :p KUTGW
It's not a PS2. It's an old Apple MIDI cable Here is you a link to someone that did it with Particle Photon, and ESP8266. It has OTA, and all the functions so you can drive it if you want! www.hackster.io/lahorde/roomba-wifi-6f0cde Here is you a link to the cable: www.hackster.io/arturju/roomba-wifi-upgrade-d7ecf6 Those project links are pretty old - I had them when I did my research and did this with Arduino ProMini and RFM69
Once again, this is fantastic. A question though, is there any way to steer the roomba so that it can start in a different room? I'd imagine that the room with the home base charger would stay a lot cleaner than any of the rooms outside of that area, right?
Can it be done? Absolutely. Easily? Not really. The roomba has fairly accurate motor encoders, so if you figured out the exact routine for traveling through your house you could issue those commands first before sending the clean command. Sounds like a fun project.
I'm actually working to make this happened! I'm writing a remote control type Android app to control and record paths to execute later. I honestly would not have gotten into this if it wasn't for your video, so thanks! I have all of the code on my GitHub: www.github.com/krish98sai
Just so you guys don't invest a bunch of time into that and be a bit disappointed like I was: THEORETICALLY, yes it can absolutely be done. The Accuracy will be the problem. If the distance is not too far to the other rooms and you have hardwoods, you will probably make out OK. While the encoders are accurate, you will find they do not have terribly high resolution(1mm) coupled with the fact that you are relying on the encoders hooked to the drive wheel of a differential steering rather than an idler. So if it's not too far, and on good hardwood, you'll probably hit it 9 times out of 10. If it's on carpet or on the other side of a 3000 sq foot house, forget it without something to correct it or realign it. I started to do an "automatic mapping" project - pulling the results into Draftsight. From my old notes, you get off about 10 degrees per 18 turns(depending on the turn type, what it bumps, how clean is the floor)...and I had brand new hardwoods! Carpet is hopeless because the pile will move way too much under the wheels. Here is you a link to a project with OTA, and full driving capability: www.hackster.io/lahorde/roomba-wifi-6f0cde I don't believe the API has changed a bit, except to maybe add some new features. I think the connector went from a 7 to 8 pin miniDIN at some point. The older 7 pin were for sure Apple MIDI. Good luck with it. It's cool to see everyone still doing this so many years later. It speaks to the longevity of some of those older models and what a great job they did with the API that everyone still wants to tinker with it. I wish more things were made like this!
@@jimb032 Thanks for all of the info! I do anticipate accuracy as being an issue. I'm still working on the project in my free time and exploring alternatives to make sure the Roomba is on course. I'll look through that guide soon. Do you have a GitHub repo with the progress you made?
Hi Sai... No, I never put that mess on Github - I didn't want anyone to get the idea that was anything close to a finished project. My old project used an Arduino and an RFM69 Radio in a Gateway/Node configuration. I don't know if it will be much a use to you, but I'll see if I can dig that up and post it for you if I still had it. The reason it's even still so partial - I had the hair-brained idea I was going to transmit all those movement commands over Radio then to MQTT. The old system I had didn't have the capacity to handle all the data it was spitting out. So I added an SD card and put in into a CSV file. Then I had a preprocessor done in .NET to convert it into CAD commands. After realizing that not only was the radio dripping packets because I was sending too fast, I came across these movement inaccuracies and never really finished. After all that I thought of putting a idler wheel with encoder or actually trying to recover calibration off the bump sensor, or add a distance sensor. But at that time, it's really no longer the same project. I see all these new vacs out now that claim to have "advanced mapping algorithms", and can only conclude they must be doing some realignment with additional sensors or the bump sensor. Theres no way with a sensor on a wheel that does differential steering you are going to "map" anything very accurately. Nevertheless, I'll look for it for you. I had lost 2 or 3 projects when i copied them from my Dropbox to my server, I think part of this project was some of it but I should still have it. It's been about 3 years since I did all of this too. I'll comment back if I find something useful besides just the control commands...
Hey Rob, love this video, I'm currently looking at up-cycling an old Roomba (880) on eBay! Will your arduino code work with the MQTT Vacuum component in Home Assistant?
Yeah, I spent some time last night going through it. Interestingly enough there is a link at the bottom of the MQTT Vacuum components page which takes you to a Repo where John Boiles has created a full set up! Looks pretty good! github.com/johnboiles/esp-roomba-mqtt
Always enjoy your videos. So much inspiration for the automated house :o) Being more of a programmer than a hardware techie; whats the main reason for using jumpwire between VCC and EN (CH_PD)? Main reason for asking is, that my favorite ESP module is Wemos Mini D1 which seems to lack a EN pin. So if it could be avoided I could use my favorite. If not I have to use another board. Again. Thansk for so much inspiration. You and DrZzs is among the best!
Hey I was wondering , could it be linked to the iRobot Roomba app for Apple and android after adding the wifi mod to it? Instead of using home assistant
Great video! This was my first ever MQTT and Arduino and I got it working. However I have two problems: - My Roomba 772 goes to sleep while on dock both using this sketch and the 600-sketch connecting D4 to BRC. - Also my Homeassistant 0.95 won't discover the Roomba connected to my Mosquitto-broker installed via addon. I can start the roomba via another MQTT-client in Windows so I know it works. Any suggestions?
I didn't code in mqtt discovery, you'll need to add it to your configuration.yaml file manually. As for the sleeping I've seen some people set up an automaton in HA that sends the stop cleaning command every minute when the roomba is on the dock.
I can get Pro elite, 555, 564, 651, 770, 780 roombas second hand for around 100$. Which one do you Suggest to buy for upgrade? The key features has to be a data interface On the top and a charger on the bottom, right?
Fantastic video. I was looking around for MQTT enabled robot vac videos. I am sourcing around for a refurbish Roomba. Are there any other robot vacs that supports MQTT?
Well, it's technically not the robotvac that is supporting MQTT, it's the microcontroller. The more important thing is being able to control the vac with a microcontroller. I'm not aware of any other brands that have a serial port on them, but they might exist.
Excellent video, im trying this now. I dont know if its the library version or something, but this keeps happening: no matching function for call to 'SimpleTimer::setInterval(int, void (&)())'
hi, I loved this, and went on to buy myself a roomba and used a nodeMCU esp8266 to do it. However, my roomba is the 650, and this means i need to do the pulse. So I added the pulse code to my sketch, but now i'm confused... Which pin on the roomba needs to be pulsed?????????
Awesome video. I'm attempting to get this up and running on an old model just like the one in your video. I'm having a hard time getting the sketch built though. Looks like I needed the ESP8266Wifi library (missing file error), but after finding one and adding it (along with the ESP8266mDNS library), I'm getting a missing file error again (queue.h missing). Building sketches like this is fairly new to me. I've only used it on a few occasions where I needed it for some 3d printers. Do you have the recommended library files that you'd be willing to share or would you mind pointing me in the right direction as what my issue might be?
Found my own solution. I used the idea from the first part of this video: th-cam.com/video/Ao5XcORsYxA/w-d-xo.html to get the board recognized and I guess it installs all those basic libraries as well. After getting that straight, the sketch worked like a charm.
did you get the 3 libraries from the video description? If it's your first time with an ESP8266 you'll need to install the esp8266 board manager: th-cam.com/video/Nckja3_R3f0/w-d-xo.htmlm18s
The Hook Up Yep that was the issue. First time using these little boards. That's what that video I linked to does. Once that got straight, your stuff worked perfect. Gotta do the final soldering and all to hook everything up, but mqtt is working good and all. I have 4 roombas around here that will be getting this treatment. Thanks for doing this video.
I just did my 2nd one today (got a 560 on ebay for $83), now we have an upstairs and a downstairs one. Make sure you have unique MQTT client IDs for each roomba, otherwise they'll kick each other off the server.
Yep. Already mapping out what all I want for them all. This project kind of fell in my lap as I just set up a broker to get data from an octoprint server which I then pass on to Homeseer. Once I saw this video, I knew I needed to do this to all the roombas as well. I'll probably try to set it all up in homeseer to be able to do the controls from there. Might try the window sensor stuff too if I have the time.
I am even later to the party than Søren, but I also want to thank you this inspiring video. It made me start learning electrical engineering. At the end I managed to implement this project with a Roomba 681. I am now ready to develop it further to get notification on my watch, when the Roomba is finished with cleaning a room.
Awesome, this was a super fun project that I learned a lot from too. Congrats on your success!
Stil can't get over the fact that this 14yo Roomba is now fully locally controllable using home assistant and the brand new ones only work when there is cloud
Rob, you're a legend! I've just HA-enabled my old Roomba 785, just the fact that I'm now able to block it from cleaning when I'm home, has saved my year... Thanks!
"The Roomba Tx pin doesn't output a strong enough signal ... so we've gotta boost it up a bit ..." The Roomba serial port operates on 0..5V. So above 2.5V is "on", below 2.5V is off (thresholds notwithstanding). The ESP operates on 3.3V so anything above 1.65V is on, and below 1.6 is off. If the Roomba outputs a 2V off signal, you can see that the ESP still sees that as "on". What I think your saturated transistor does is to drop the "off" to nearer zero Volts. It's an encouraging video and (except I'm using a level shifter and planning to flash with TASMOTA) I'm essentially following it.
This is such a thorough video, thanks for all of the information. I love that Roomba puts out such a friendly API, it makes their price tag a little more reasonable.
Sure, I'm late to the party, but just wanted to give you a virtual high five for this amazing project. Fitted it to my Roomba in a couple of hours and it was working. Great job. I really enjoy videos like this, making some everyday stuff we alle have in our houses, work with Home Assistant automation. How about a project to accurately measure the water level in our Delonghi espresso machines. It's so annoying that these machines only have a reed switch in the bottom saying empty. I believe we all, regularly push the button, get three drops and then the machine stops. Would love a great solution for this common problem.
Awesome! Great video. I love my roomba, but we are not on a regular schedule and sometimes it was starting when we were in the house (a bit a a nuissance) . I assemble my kit yesterday and thanks to home assistant automations and your great video, we now have a roomba that only kicks in when we leave the house. Mucho thanks| As Mike stated below "I salute you. New home automation king"
Thank you for the great videos! Just put this together with an ESP-12E that I had and my old Roomba 530. Works awesome. Keep up the good work!
Thanks I was hoping this would be so easy I already do Alot of work using various esp MCU's so that part makes me happy as I have a few laying round I got an old Roomba 530 from a neighbor who moved out and didn't have space for it anymore so I gladly accepted the bot I initiated my disassembly of the whole thing and deep cleaned it back to like new and Shazam cool Roomba but no wi-fi so you're video made me Soo happy thanks for the awesome work
Check out the areovac bins made a huge difference to my older roombas. Thanks for sharing this I was about to start developing my own!
Great video. I just purchased a Refurbished Roomba 595 for $139 - which I thought was a pretty decent deal. Now if I can update its features that would be great!! I wrestled with paying so much money for the more advanced models. I haven't used Home Assistant or Node-RED before, so this would be my first project! It should arrive next week sometime, so wish me luck!
Good luck!
anyone that wants to do this just for the experience and doesn't care about the price, you can get the $200 roomba create on the iRobot site and then buy the cleaning parts separate, benefit of this is they send you the documentation for everything and the bot is loaded with optimized software for modding/hacking
if the price is what you're worried about get a deebot, it's got most of the new features for about the same price as a used roomba and that's on their entry model, more in the roomba price range also gets you mopping, and a charging port with built in rechargeable handheld vacuum that the robot can automatically empty itself into
I bought several Roombas for "parts" (three 581s and one 521) a week ago, as I wanted to get a real opinion on robot vacuum cleaners without, either, investing a huge price (like the €450-500 they cost ten years ago, OMG) or going for a cheap, generic brand model without any support for spare parts or documentation.
I'm truly amazed by the high repairability rate of those things. I've been able to disassemble all 4 of them without any doc, just with a pair of screwdrivers (including that Y shaped one for the brush motor). I replaced and exchanged the brush motors, the dustbin fans, the LCD and button panels, the handles, the top cases without ANY problem and knowledge of those appliances.
I was wondering what was the purpose of that DIN shaped connector I discovered while removing the upper cover, and now, thanks to YOU, I know. Although I'm an all-purpose IT developer, I'm not experienced enough to play with those electronic writings and components, my most complicated experience being with my 2012 Raspberry Pi...
But you earned a new subscriber thanks to your extremely informative and crystal clear video. Nice footage, nice explanations, perfect video cuts. Well done, and keep the good work up!
I salute you. New home automation king. 👑
This is fantastic. THANK YOU.
What I really want is to generate a log of RUNTIME and STOP_REASON. Since they only run when I'm gone I don't get good feedback of how successful they were. I want to keep track of battery health or keep an eye out for system/sensor failures.
I've had a small fleet of Roombas with simple automation for years now. I use an IR blaster to kick off a clean cycle when the house alarm arms.
Posting from the future. Well done video. Thanks for posting.
Can you help me , I have some problem to solve
Love it! Now I'm gonna make my Roomba Alexa compatible! Thanks for the research! :)
Awesome video, thanks for taking the time to put this together!
This is awesome! I've spend hours looking how to do this. Thank you!
What an amazing video. Great cadence, great info, cool implementation.. love it!
I dont understand any of this but I am glad there are people in the world who do :-)
This is awesome! I didn't even know this was possible
If anyone tried this and got a reboot loop on your ESP-01 it was because your RX pin was not configured properly and caused the total mAh to be returned as zero. I hadn't considered this in my original code and it caused a divide by zero error/reboot. I've updated the code on github to prevent this reboot loop. Instead of returning battery % it will return NO DATA instead.
I've spent a lot of time completely re-writing this code. I've linked to this video from the post:
www.crc.id.au/hacking-the-roomba-600/
Hopefully, it'll give you some good ideas to improve your code too.
Dude, awesome video. You’ve inspired me to move over to NodeRed
you considered problem when WIFI go DOWN? with your code it's necessary detach and attach again ESP to ROOMBA; could be a problem of mDNS announce? could you fix your code?
Great Video, i modified your arduino sketch and added the OTA update capability. Makes it easy if the wifi network needs to be changed or any other changes that you might want to do. Might also add a web sever for the wifi manager and manual control from a browser instead of MQTT.
can you share your code?
Your videos are so awesome....you do a great job of not only explaining, but providing additional stuff like the code and electronics diagrams, and your editing is really well done. Thankyou for this, I have an old Roomba that I was trying to figure out what to do with it, but with this I'm going to try to do these upgrades (including the battery one...that's cool to know that's available!). I'm even excited about the idea of being able to have it play some songs...I may get the R2D2 skin and have it play imperial march if I get super into it :) Thanks again, and please keep up the great work!
Haha, thanks. Have fun!
your videos are fantastic, thank you for uploading such clear and precise instructions, you sir are a top class educator 👍
I saved ~$300 following this video.
The only difference in my hardware setup is that I used the Adafruit Feather Huzzah board which has an integrated logic converter on the RX pin and ftdi module. I used the 3.3V signal from the Huzzah board TX pin directly and so far it is working fine.
On the software side I didn't implement the Node Red black magic. Instead I used a simple HA automation for daily cleaning schedule.
The one thing I would like to incorporate into the Arduino code is to publish a "Docked" status. Right now I can only see when the Roomba starts cleaning and returning.
Can you see the battery %? The code has status for docked and battery %, but you'll need to have the PNP transistor to make them work.
The Hook Up I do see a battery percentage status but I haven't validated the data. So far I only recall seeing 100% and 120% which is odd. I think I had to change the HA sensor definition topic from currentStatus to Status (or the other way around...) before I started seeing values.
MQTT topic roomba/charging should have your docked and charging status in it.
I defined a HomeAssistant MQTT sensor like this:
- platform: mqtt
name: "Roomba Charging"
state_topic: "roomba/charging"
But I am getting non-sense values(10,46,248,241,33) instead of the 0-5 range expected. If I take only the first digit of each number (1,4,2,2,3) then it sort of makes sense(Reconditioning,Waiting,Full Charging,Trickle Charging).
This is the code that publishes the charging status(unmodified):
String temp_str = String(battery_Voltage);
temp_str.toCharArray(battery_Current_mAh_send, temp_str.length() + 1); //packaging up the data to publish to mqtt
client.publish("roomba/charging", battery_Current_mAh_send);
Why do we need "temp_str.length() + 1" and not just "temp_str.length()"?
Could this be related to the board that I am using?
But really what I wanted to say is Thank You. Your content is great.
As Always: Just awesome. ✨
Excellent video, thanks
your presentation is awesome
Thanks! My premiere skills are slowly coming back to me.
Great video, well done. We have a fancy new Roomba but I might have to pull the ancient one out of storage and start playing. :)
Thank you very very much for all your video ( subscribed )! .
I am totally newbie in this stuff only 2 days I have installed home assistant. But finally I did it!!!! Thank you very much you are a pure genius !
You're the man, thanks!
Great vid and impressive tinkering!
Buen video y muy bien explicado. Después de probar entre varias programaciones me he quedado con esta.... aunque le he añadido el pause para poder parar el roomba en cualquier momento. Tengo un Roomba 650 y no me hace falta conectar el cable para tenerlo despierto. Gracias por el aporte
Awesome..Need More! More! More! of these. I have been looking into making non-smart devices at home - washer/dryer; basement water leak detection/mains shutoff.I was shopping for a gas water heater, HDepot had one for $150 more for wifi /alexa/ect option. please let us know if you have integrated ESP in other devices at home. Trying to get my 3d printer calibrated so i can make your door sensor - already ordered the missing parts from ali. thanks
wow that's awesome! great job!
Hey that's the one I have. Good to know I can hot it up.
Thanks for sharing this nice project
I using it on a Roomba 606, this type goes into sleep mode after 5 minutes, so i have to send the start command twice.
After sending it the first time, the Roomba wakes up, after the second command (5 seconds after the first fire) it starts cleaning.
I made a script in HA that does the job, so you can start cleaning with one push in HA
Kind regards,
Henk
Nice solution! I posted a different file on the github page for the 600 series that pulses the line every minute to keep it awake too if you're interested in that.
Nice I will look for it :-)
Very good video & idea, big thanks
Thanks for the hook up!
Def check/clean the brush for hair - friend/I both have long/thick hairBISSELL PowerFresh Steam Mop Canister held more dust/dirt than I expected. Makes life easier!
this is genius!
I just got this up and running on my roomba. A one thing I noticed along the way are that the OI documentation seems to say that it is not necessary to put the roomba into safe mode before issuing the cleaning command. The cleaning command can be issued from any mode, and automatically puts the roomba into passive mode. I did not test this, though.
I figured it couldn't hurt.
Hi Frank Nice video have seen it a couple of times now and think its time to go for it. My old 560 is going to have a new life.
If you were going to do this today yourself, would you do anything diffrent?
Hey Rob, great video. I am running into some strange results that I cant seem to track down. I have a Roomba 650 and I purchased the same items you used in your build. I have everything connected, the commands from HA work fine, but the 0-5 "charging state" values are coming in on the roomba/battery topic (but sometimes I see values that look like battery values, like 93), and the roomba/charging topic seems to float between reporting a value of 240 and 248. (For now I do not have the keep alive pin connected just to try and simplify the troubleshooting). I found the data sheet for the 600 series and verified that the pins on the connector are the same as the 500 series. Any suggestions would be appreciated. Thanks!
Hi. My old Roomba 772 has been working flawlessly from HA since i did this upgrade thanks to this great video.
But I have one small problem. From time to time the Roomba decides to leave the dock because of lost connection to the dock and starts moving around in search for the dock it just left. Sometimes it would be useful to just stop it where it is. Especially at night.
The "stop" command sets it to returning-mode, witch its already in, and I can't figure out how to make it just stop where it is. Similar to pressing the round button on top of it. Maybe its called "pause"?
Any tips on how to do this?
I dont know if youre still looking for an answer but you could use the power command which is uses the serial sequence 133. This command shuts down the roomba in its spot.
A bit late to the game but just got this working. Thank you.
Awesome to hear it still works!
@@TheHookUp I noticed when I first turn on the roomba switch it just lights up but doesn't move. If I hit the switch to on one more time, then it comes to life and starts cleaning. Have you ever seen such behaviour? Your insight would be great. Thanks again!!
@@TheHookUp Nevermind, I see the comment below concerning the issue.
can I order this upgrade kit, fully assembled and programmed?
Can we have your details, so you can send an already made, assembled and programmed kit from YOU?
Mate, you did an AWESOME job and you deserve some money back (and my wife already granted me the needing budget 😉😁)
So far so good with this vacuum. th-cam.com/users/postUgkx8ISPQRRAfpAaX4msGjyodObTBnlj4T5g I was a little concerned to find it seems to be all plastic, but the reviews were good, so I'm hoping for the best. Very easy to assemble Recommened, and only attachments I've used so far work well, and are easy to use. Doing a good job on the new carpet in my bedrooms and stairs. Works well on the hardwood on my main floor too. Reasonable weight and cord length. I already knew from an earlier review that it wouldn't fit under furniture, but I can use my Eufy for that, so no problem - the high traffic areas that need a stronger suction was really what I bought this for. If it continues as it's started, it will be a good buy and well worth the money. I have had two Shark Rocket stick vacs in the past that are super easy to use, but the motors just don't last well, even with scrupulous cleaning of the filters. I'm hoping for better with this Bissell.
awesome video, this has been on my todo list for a while but your video may have given me the bump in motivation needed to actually do it! question, how much more (time or coverage) do you find (or guess) the roomba cleans using your "charge and resume" automation? I don't think these older roombas know where they left off (I think the brand new ones with mapping capabilities do), do you use light houses (Virtual Wall) in your house? thanks again
I don't have any virtual walls set up, but I can tell you that in a single pass the roomba will clean about 75% of my downstairs, with 2 passes there are roomba tracks over every square inch every day. This summer I'm going to be working on a virtual wall project using nodemcus.
The Hook Up thanks for the info! Also excited to see where you get with making virtual walls!
@@TheHookUp Did you ever do the virtual wall project?
Finally I get it working. But, if I would like to drive the roomba (left and right) in order to drive toward the right room? I have read the oi interface manual but I am stuck..
I´m wondering... there no problems with the serial TX/RX Signal levels? You connect them directly to the esp, but they have 5v and esp normaly need 3.3 v....
Thanks for the video - very helpful in getting it working. Did you have any issue with sleep? Mine (805) will only work if i set the baud pin low for a half second or so to wake up the roomba. If I do that, it will consistently take commands, but otherwise it mostly ignores them. Also, I can't receive anything at all from the tx pin. Is that what happens without the transistor?
The cable is an old apple MIDI cable in mini DIN....if anyone cares. I did my automation with the IR. I started to change it to this way, but I wanted to have it map the house. The wheels slip too much to get any accuracy, so I stopped. I guess the only thing you have is the battery sensor that I do t have because mine stays with the dock. But I'm considering your upgrade because mine is 3 years old now and the new wore off. I also did it with an rfm69 radio and gateway system. Those radios are less power hungry than WiFi but it seems the roomba battery is big enough it's a mute point.
So I've got a 860... is it worth trying to get it to map.
I guess it depends on what you mean by map. If you are trying to "just" get it to a location that is not that far away, over hardwood, to start cleaning - of course it's worth it!
If you are trying to get a CAD drawing of your house with it like I did - forget it.
Just FYI - it's not dependent on the model - the API commands are almost the same - see the book Rob recommends "Hacking Roomba" It's just the offset that occurs due to resolution inaccuracies and wheel slippage that happens even over hardwood. The problem comes from the fact the encoders, while pretty accurate, are ran off a drive wheel instead of an idle wheel. So every single turn introduces a new offset.
I definitely would encourage you to play with it - I assure you it's worth it. All I was trying to point out is don't try to make it something it is not like I did. For what Rob did, it's perfect. And getting it from one room to another it's accuracy is "good enough". You will find talk of some of the newer ones "mapping" the home. But this is in combination with the bump sensor, and the map is a map without real measurement and nto a CAD drawing I was trying to accomplish.
Good luck with it!
Great video! Just uploaded the code to an ESP-01 and it ran like a charm. However, I just recently saw that you have a separate INO file for the 600-series. My Roomba is 620, and I was wondering if I have to replace the ESP-01 with a NodeMCU to prevent sleep mode, or will it function as it is?
You can do it with a esp-01, just need to hook up one more wire (i think I put the pin instructions in the 600 ino file)
@@TheHookUp Thanks for the quick reply! I do need to use the 600 ino file on the ESP?
Yeah, that's the one that has the "keep alive" ping.
If you aren't having sleep problems you can continue to use the 500 file.
@@TheHookUp I've been running this for a day now, and I noticed a few things that could be improved. When the Roomba is returning to the dock and started charging, the status will say "Charging" even if the battery status is 100%. In that case I think it should report "Docked" or something similar. Also, if it is docked, either charging or finished charging, and you disconnect the chargers wall plug, it responds "Cleaning" even if it's docked. I will try to make some time this weekend to update the code, to accomodate for these differences previously mentioned.
You mention D4 on nodeMCU in the 600 file. Wound this be GPIO02 on the ESP-01? Sleep Pin value is 2 in your code and Pin 2 on the ESP-01 document seems to indicate that pin 2 is TX. I have my ESP-01 hooked up from GPIO02 to BRC on Roomba 650 and it still is going into sleep mode.@@TheHookUp
Great work! Love your viedos!!!
A bit more of a challenge. Can you upgrade Roomba 675 to have mapping? Is it possible by programming or it lacks the hardware as well?
Not possible. Mapping requires either a lidar array or a VSLAM camera.
@@TheHookUp There are lidar sensors to buy for tinkering like the "YDLIDAR X2". That in combination with the informations collected with this project would definitely make a interesting challenge to make a "dumb" roomba more smart with mapping.
Hi, quick question, would the ESP-01 could be interchangeable with the ESP 8266? Im asking because I also want to do the motorized smart blackout thingy and will have a spare ESP 8266 for the roomba: In case It is compatible the USB to TTL adapter would not be necessary right? Im asking because I love your videos, I dream about accomplishing one of your projects but I have never even used a soldering iron. I want to tackle these two projects in order to learn more about the things you do.
Thanks1
Awesome video Rob. I have learned a lot from your videos specially node-red and home automation. thank you for creating such inspiring videos.
I have Roomba 655 and I'm able to start and stop it from my HA app. But the only problem is that it does not start cleaning or listen to my commands while on the dock. I have tried reconnecting it several times still the same issue. Can you please help me with this?
In the video at 6:10 (and "Here's the wiring without the cover on: i.imgur.com/dPhCsKw.jpg") there appears to be SOMETHING ADDITIONAL connected to the positive power input on the ESP-01. It looks like perhaps a resistor, but I can't make out the color of the stripes on it. I don't see it included in the parts inventory, and I must have missed it in the video. Can you tell me what it is? Or, am I just seeing things?
I was going to try wiring this up using a spare wemos D1 Mini Lite that I have laying around, so I wasn't sure if that additional component (assuming there IS one) would be needed for my board. Just before I started soldering, I noticed the component and figured I better stop and ask.
Thanks
It's a resistor that is bridging the VCC and the chip enable pin. I no longer use a resistor for this purpose, it has a very high value resistor on board and can just be bridged with wire.
This is a awesome project, only thing is that the battery info doesn't seem correct always at 100% status and charging stays at 255, not getting the 1-5 status, could this be cause I'm using a esp32 instead of esp01?
How about IR?
Excellent guide.
I am looking to do this on our 866. It replaced our 530 that we didn’t use a lot, and I must admit there is a world of difference from the old brush system to the new rubber roll one. SO much easier to clean and untangle!
Anyway I way thinking: wouldn’t it be a lot easier for you to just let the Harmony control it by IR?
Of course you couldn’t see the battery status and stuff, but still...
Ours isn't in the right room for the harmony.
@@TheHookUp A Broadlink RM Mini is an inexpensive way to do it through IR. But obviously no status info or controlling when out of view/range, so not as precise as using wifi.
I replaced the old Ni-HM battery with a Li-Ion battery with BMS, and now the iRobot 780 vacuum cleaner doesn't recognize it when charging. Error 1, what to do with it?
Hi, great video and is working perfect! How can I incorporate the Stasis sensor to your sketch. That would tell if moving forward or not and I think would be a good way to determine if is stuck somewhere before battery dies. Would be nice to also play a noise to find if lost but that would be less important. Thank you!
Can you help me to load a sketch, there's a pdf for to do that? Sorry for my bad write in this language.
Hi Rob, Great project. I've found an old Roomba 585 to be converted into the mqtt-HomeAssistant connected unit.
Only thing is that the roomba/charging topic is replying with the battery level % instead of the charging state number.
So I looked into your *.ino program to discover that you programmed a complete calculation based on the sensor 21 data.
Why was that?
That leaves me with a discrepancy between the Node-Red blocks and the Arduino code.
Though i did manage to get it to work however in HA, but I'll have to figure it out via serial debugging in a few weeks time I hope.
Hi Marcel, have you find a solution ? I'm trapped in the same error. I don't know how to know if roomba 650 is docked and recharging...
Unfortunately the Amazon link to the PNP transistor is broken. Can you give me a new one or tell me which PNP transistor I need exactly? Thanks.
Awsome idea
Hi ..thank you so much for details instructions. I am able to see all roomba communicating in HA but the Roomba Status is showing an Unknown ..can you please direct me what should be causing this. I can turn on off Roomba and can see the charging percentage
@TheHookUp Awesome project! Set it up this weekend, working well so far.
Two questions, wondering if you’ve experienced this.
1. The battery sensor percentage switches between the actually charge level and then a single interference. At 100% it will switch to 2, and I’ve seen 70s then switch to 1.
2. The roomba seems to be moving a lot faster. This isn’t really an issue just curious about it.
1. Hmm, that's interesting, not something that I've experienced. I wonder if that could be an internal polling error in the roomba's MCU. What series roomba are you using?
2. Mine go the same speed as before (I have a 530 and a 580)
Thank you for the fast reply.
1. Roomba 650
2. Did a little more digging after I posted. Cleaning the sensors may help with the speed. Apparently if it doesn't sense anything close it increases speed. I haven't paid attention to it cleaning in a couple years until testing. Maybe I am just noticing it now but existed a while. I'll let you know.
Thanks again! I'll post how it goes.
Also I used your sketch Roomba_600_ESP01_CONFIGURE.ino, instead of RoombaESP01_CONFIGURE.ino. What are the differences and should I have used the standard one? I didn't notice much of a difference between the two sketches.
Hmmm, that could be the issue. The 600 sketch has a pulse to stop the roomba from sleeping. Maybe that is causing interference
Do you have a project where you're upgrading the dc motor?
I dont' know if you can help me.
I have 2 roomba I changed in the sketch of the second one "const char *mqtt_client_name = "Roomba" to ""Roomba534" "but I can't make the battery and status work. What I have to change in node red for use another device? Is the change in mqtt_client_name the only thing that I have to change in sketch?
In node-red roomba/charging roomba/status roomba/currentstatus e roomba/commands are alle green and connected .
And I can receive all the messages listening to roomba/charging etc..
Can you help me?
Bravo!
Hi, Thanks for the super video... however I'm new to this so might seems stupid question...However, I have no MQTT server at home.. would be possible to use an online server for this? if so do ypou have any suggestions or needs to change in the code?
thanks in advence
There are a bunch of online MQTT servers. just search online MQTT on google
F0qhdux schat 3
hi, can you please helpme with the updated sketch and libraries. the attached one can´t compile in IDE, and send mthis issue "Compilation error: no declaration matches 'Roomba::Roomba(HardwareSerial*, Roomba::Baud)'"
I have this running in MQTT, with a 2N3906 transistor as shown. MQTT is showing the device and its states, HA shows the entities, however in MQTT explorer, the battery is saying "No Data". Also, any commands I ppublish to it manually, or by using the HA switch, the roomba does not respond to.
Itss a roomba 805, according to my research, the pinout on the interface is the same.Should I be using a different transistor? Any other idea?
Awesome work, thanks a lot for the video! I have a Roomba 772. Could you maybe comment whether the 700 series can be modified similarly?
Hi Rob, awesome video...Inspiring! a little question about the transistor, can I use a BD534 or a BC327? are both PNP... I've a couple of them around ;-)
Yes, that should work fine
Hey Rob, awesome video. I just set this up to control my 500 series and it is working great. One question though: If I manually start the Roomba via the button, the status does not update via MQTT to "Cleaning". I can see that this is only done when calling "void StartCleaning()". Is it possible to have the ESP query the status periodically via the serial interface, and report that the roomba is cleaning, if it were manually started without automation? Thanks!
Not possible to my knowledge.
Replace ESP01 by ESP12, add shock/vibration sensor in the loop ,monitoring for voltage drop over some time period (prevents false positive) then update MQTT advertising roomba is now alive. Use HA to handle the rest.
Dude, you're super smart! How old a Roomba are we talking? I have a 860 that I'd love your advise on; to add these features would these steps be the same? Is it also possible to add mapping to my 860? There are a lot of 'dead areas' Jethro (we named ours) gets stuck in, bathrooms for an example, kitchen sink rugs, etc... Anyways, hoping you could point me in a direction.
I don't think the 800 series can be controlled this way, I think it's only 500 and 600 series roombas. :(
@@TheHookUp there is a serial port right under the handle of the 860, is there something else preventing it from working? 860 already has advanced scheduling, I'm just looking for a way to make my 860 a wifi enabled one so I can use an NFC tag or something to launch it when I'm not home or use google home assistant - thanks in advance!
Genius.
Awesome and inspiring video! I bought the gear, connected it all up. Installed a MQTT broker and client.
I receive the following after I publish "start" to roomba/commands:
checkin
roomba = Rebooted
charging = 0
commands = start
status = Cleaning
However it doesn't start.
Shortly after, status changes to "Dead Somewhere"
What do I do wrong?
How did you hide the ESP:s and such under the panel, is there space?
This was an awesome and fun project to do, thanks @TheHookUp ! just one question, i was able to make it work on an old installation of HA but the latests version has changed the .yaml and this error shows up "Please move the configuration to the mqtt integration key and restart Home Assistant" I have tryed to change the configuration.yaml file with this new format... but it still wont work
switch.roomba:
#Roomba Switch
- name: "Roomba"
command_topic: "roomba/commands"
payload_on: "start"
payload_off: "stop"
sensor.roomba_status:
#Roomba Sensors
- name: "Roomba Status"
state_topic: "roomba/currentStatus"
sensor.roomba_battery:
- name: "Roomba Battery"
state_topic: "roomba/battery"
I guess all of us have the same issue with the update on HA... Also i I'm probably doing something wrong since I'm not expert in this... any ideas in how the file should be? Thanks!
Cool! I'm gonna try this.
mmmm, maybe I can use an ESP32 and put some beacons in the room to register & record the moving of it.
BTW, do you have a picture of the wiring and placing of the added electronics? Is there a need for a new 3D printed cover?
Oh, can I use an old PS2 keyboard wire for teh connection controller-roomba?
A PS2 cable should work, but you won't be able to put the cover back on.
Here's the wiring without the cover on: i.imgur.com/dPhCsKw.jpg
internet is cool! i get inspired by your ideas and ask you a question from the other side of the world (belgium) and half an hour later a get a great answer :p KUTGW
It's not a PS2. It's an old Apple MIDI cable
Here is you a link to someone that did it with Particle Photon, and ESP8266. It has OTA, and all the functions so you can drive it if you want!
www.hackster.io/lahorde/roomba-wifi-6f0cde
Here is you a link to the cable:
www.hackster.io/arturju/roomba-wifi-upgrade-d7ecf6
Those project links are pretty old - I had them when I did my research and did this with Arduino ProMini and RFM69
Once again, this is fantastic. A question though, is there any way to steer the roomba so that it can start in a different room? I'd imagine that the room with the home base charger would stay a lot cleaner than any of the rooms outside of that area, right?
Can it be done? Absolutely.
Easily? Not really. The roomba has fairly accurate motor encoders, so if you figured out the exact routine for traveling through your house you could issue those commands first before sending the clean command. Sounds like a fun project.
I'm actually working to make this happened! I'm writing a remote control type Android app to control and record paths to execute later. I honestly would not have gotten into this if it wasn't for your video, so thanks! I have all of the code on my GitHub: www.github.com/krish98sai
Just so you guys don't invest a bunch of time into that and be a bit disappointed like I was:
THEORETICALLY, yes it can absolutely be done. The Accuracy will be the problem.
If the distance is not too far to the other rooms and you have hardwoods, you will probably make out OK.
While the encoders are accurate, you will find they do not have terribly high resolution(1mm) coupled with the fact that you are relying on the encoders hooked to the drive wheel of a differential steering rather than an idler.
So if it's not too far, and on good hardwood, you'll probably hit it 9 times out of 10. If it's on carpet or on the other side of a 3000 sq foot house, forget it without something to correct it or realign it.
I started to do an "automatic mapping" project - pulling the results into Draftsight. From my old notes, you get off about 10 degrees per 18 turns(depending on the turn type, what it bumps, how clean is the floor)...and I had brand new hardwoods! Carpet is hopeless because the pile will move way too much under the wheels.
Here is you a link to a project with OTA, and full driving capability:
www.hackster.io/lahorde/roomba-wifi-6f0cde
I don't believe the API has changed a bit, except to maybe add some new features. I think the connector went from a 7 to 8 pin miniDIN at some point. The older 7 pin were for sure Apple MIDI.
Good luck with it. It's cool to see everyone still doing this so many years later. It speaks to the longevity of some of those older models and what a great job they did with the API that everyone still wants to tinker with it. I wish more things were made like this!
@@jimb032 Thanks for all of the info! I do anticipate accuracy as being an issue. I'm still working on the project in my free time and exploring alternatives to make sure the Roomba is on course. I'll look through that guide soon. Do you have a GitHub repo with the progress you made?
Hi Sai...
No, I never put that mess on Github - I didn't want anyone to get the idea that was anything close to a finished project. My old project used an Arduino and an RFM69 Radio in a Gateway/Node configuration. I don't know if it will be much a use to you, but I'll see if I can dig that up and post it for you if I still had it. The reason it's even still so partial - I had the hair-brained idea I was going to transmit all those movement commands over Radio then to MQTT. The old system I had didn't have the capacity to handle all the data it was spitting out. So I added an SD card and put in into a CSV file. Then I had a preprocessor done in .NET to convert it into CAD commands. After realizing that not only was the radio dripping packets because I was sending too fast, I came across these movement inaccuracies and never really finished.
After all that I thought of putting a idler wheel with encoder or actually trying to recover calibration off the bump sensor, or add a distance sensor. But at that time, it's really no longer the same project.
I see all these new vacs out now that claim to have "advanced mapping algorithms", and can only conclude they must be doing some realignment with additional sensors or the bump sensor. Theres no way with a sensor on a wheel that does differential steering you are going to "map" anything very accurately.
Nevertheless, I'll look for it for you. I had lost 2 or 3 projects when i copied them from my Dropbox to my server, I think part of this project was some of it but I should still have it. It's been about 3 years since I did all of this too. I'll comment back if I find something useful besides just the control commands...
Hey Rob, love this video, I'm currently looking at up-cycling an old Roomba (880) on eBay! Will your arduino code work with the MQTT Vacuum component in Home Assistant?
Looks like it would need a few code modifications to get the correct mqtt format.
Yeah, I spent some time last night going through it. Interestingly enough there is a link at the bottom of the MQTT Vacuum components page which takes you to a Repo where John Boiles has created a full set up! Looks pretty good!
github.com/johnboiles/esp-roomba-mqtt
@@TheHookUp I stuck with your code for now, but it am getting a value of 128 in the "roomba/charging" MQTT topic?
@@TheHookUp sounds like a terrific idea for a follow up video. :)
Always enjoy your videos. So much inspiration for the automated house :o) Being more of a programmer than a hardware techie; whats the main reason for using jumpwire between VCC and EN (CH_PD)? Main reason for asking is, that my favorite ESP module is Wemos Mini D1 which seems to lack a EN pin. So if it could be avoided I could use my favorite. If not I have to use another board. Again. Thansk for so much inspiration. You and DrZzs is among the best!
The d1 has a permanent connection between vcc and en, so you don't need to worry about it.
Hey I was wondering , could it be linked to the iRobot Roomba app for Apple and android after adding the wifi mod to it? Instead of using home assistant
Thanks for the video! Is there enough room under the top cover for these parts, or you fitted them somewhere else?
I fit them under the cover
Great video! This was my first ever MQTT and Arduino and I got it working.
However I have two problems:
- My Roomba 772 goes to sleep while on dock both using this sketch and the 600-sketch connecting D4 to BRC.
- Also my Homeassistant 0.95 won't discover the Roomba connected to my Mosquitto-broker installed via addon. I can start the roomba via another MQTT-client in Windows so I know it works.
Any suggestions?
I didn't code in mqtt discovery, you'll need to add it to your configuration.yaml file manually. As for the sleeping I've seen some people set up an automaton in HA that sends the stop cleaning command every minute when the roomba is on the dock.
I use a 220V Switch to power my charging station, this wakes him up...not really elegant solution, but time controlled charging another benefit.
Thanks, I will sure try it on my Roomba 520. Which app do you use on your mobile?
I'm using home assistant and MQTT, but I think this project would be an excellent candidate for ESPAlexa integration.
@@TheHookUp thanks...and just another question: Do I need to have a MQTT server even if I have only a single device? May I use directly WiFi?
I can get Pro elite, 555, 564, 651, 770, 780 roombas second hand for around 100$. Which one do you Suggest to buy for upgrade? The key features has to be a data interface On the top and a charger on the bottom, right?
I connected the cables as per project but the esp does not turn on .. if I connect it to the usb it works correctly .. what can I do?
Fantastic video. I was looking around for MQTT enabled robot vac videos. I am sourcing around for a refurbish Roomba. Are there any other robot vacs that supports MQTT?
Well, it's technically not the robotvac that is supporting MQTT, it's the microcontroller. The more important thing is being able to control the vac with a microcontroller. I'm not aware of any other brands that have a serial port on them, but they might exist.
What's your opinion on a new wireless Roomba with home automation?
Excellent video, im trying this now. I dont know if its the library version or something, but this keeps happening:
no matching function for call to 'SimpleTimer::setInterval(int, void (&)())'
I wonder if there's any way to pull a map from it's sensor data, then tell it which zones you want it to clean...
hi, I loved this, and went on to buy myself a roomba and used a nodeMCU esp8266 to do it. However, my roomba is the 650, and this means i need to do the pulse. So I added the pulse code to my sketch, but now i'm confused... Which pin on the roomba needs to be pulsed?????????
Pin5, the "BRC" pin: www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf
Hi, wondering if you've built a charge dock for your bot?
Awesome video. I'm attempting to get this up and running on an old model just like the one in your video. I'm having a hard time getting the sketch built though. Looks like I needed the ESP8266Wifi library (missing file error), but after finding one and adding it (along with the ESP8266mDNS library), I'm getting a missing file error again (queue.h missing). Building sketches like this is fairly new to me. I've only used it on a few occasions where I needed it for some 3d printers. Do you have the recommended library files that you'd be willing to share or would you mind pointing me in the right direction as what my issue might be?
Found my own solution. I used the idea from the first part of this video: th-cam.com/video/Ao5XcORsYxA/w-d-xo.html to get the board recognized and I guess it installs all those basic libraries as well. After getting that straight, the sketch worked like a charm.
did you get the 3 libraries from the video description? If it's your first time with an ESP8266 you'll need to install the esp8266 board manager: th-cam.com/video/Nckja3_R3f0/w-d-xo.htmlm18s
The Hook Up Yep that was the issue. First time using these little boards. That's what that video I linked to does. Once that got straight, your stuff worked perfect. Gotta do the final soldering and all to hook everything up, but mqtt is working good and all. I have 4 roombas around here that will be getting this treatment. Thanks for doing this video.
I just did my 2nd one today (got a 560 on ebay for $83), now we have an upstairs and a downstairs one. Make sure you have unique MQTT client IDs for each roomba, otherwise they'll kick each other off the server.
Yep. Already mapping out what all I want for them all. This project kind of fell in my lap as I just set up a broker to get data from an octoprint server which I then pass on to Homeseer. Once I saw this video, I knew I needed to do this to all the roombas as well. I'll probably try to set it all up in homeseer to be able to do the controls from there. Might try the window sensor stuff too if I have the time.