Background
When I was little, I saved up my money ($300-ish), and bought a iRobot Create. I found out about it when I was playing in ScratchX, and I was hooked.
It's an old type of Roomba, but iRobot refurbishes them, and they published documentation on how to control it.
Some while later, I found out about Home Assistant. It's basically a home automation platform, and it supports all sorts of things. Given that the iRobot Create was an old Roomba and didn't have WiFi capability, I decided to code an adapter for it.
I called it Fiomba. It took a while, but eventually I made it.
What came next
After a while, I stopped using the Roomba. My Home Assistant config also became convoluted multiple times, so I reset my config.
But eventually, I decided I wanted to start working on it again. I had learned a fair bit about Python since then, and I wanted to make a more optimized version of Fiomba.
(FYI 2vFiomba just means Fiomba Version 2, except that it shows up first in the file manager.)
What went on during coding
Well first, I realized I needed to set up MQTT again (protocol for real-time data) in Home Assistant. I waited for HA to update, then I set up the plugin + integration.
Then I had to fix the outside lights, which took forever, given that they're made by Tuya.
Knowing that I wanted to make it more documented, I wanted to use constants for each opcode. However, you can't add documentation to a constant easily, but I eventually found this answer .
Next, I waited for
sudo apt full-upgrade
to finish. After that, I installed oh-my-posh on the pi (that was
mounted to the Roomba) just because fancy prompts look nice.
I found out that those annotations didn't actually show in VS Code, so I made an issue . For the meantime, I'm just using a docstring after each line, which VS Code supports.
Then I started coding. I got an example that gets the sensors status, but apparently my version of Python was old. So I built Python 3.11 (for the sake of speed).
Then I messed everything up, so I took a backup of
/home/pi
(for the memories), and flashed the SD card with the latest Raspbian
Lite image.
After that, I just speedran coding, and after some bug patching it worked. Check the source and feel free to look at the commits.