I use it extensively and it really is awesome. It’s not perfect, but the limits I run into aren’t what 80+% of users will ever hit. Even if hacky and ugly, you can work around most of the limitations
It's a nice high-level writeup of getting a flakey piece of consumer electronics back in service, though he used an ESP8266, so I am not sure about the title.
To add more to the confusion, twice in the text of TFA he refers to an ESP8622, which AFAIK isn’t a thing. The ESP8266 is fine in this application of course since he’s using a single GPIO pin.
I think the author is not an embedded guy and assumed that ESP32 is the generic name given to these sort of devices.
Either way, I am sure this was a fun project and he achieved what he wanted to do. But if this happened to me I would probably try to reverse engineer the device to free it from PetNet cloud. It would be fun and cool and interesting and I would probably never finish it..
There are a few projects out there that were based around reverse-engineering, and running a local server with DNS hijacking to make the feeder use them as its CC server[1]. But I mostly just wanted something that could sit happily in HomeAssistant along with all the other automations, so ESPhome based device it is
And yeah, I'm not an embedded guy, but I've updated the article with an addendum
I built a smart treat dispenser for my cat using an ESP32.
The best feature is the little speaker inside that plays the Meowmix jingle when dispensing. My cat is now conditioned to come running when she hears that sound.
I connected it to my Apple Home network via Home Assistant, and it works great. I can tell Siri to give the cat a snack, and off she goes.
>The best feature is the little speaker inside that plays the Meowmix jingle when dispensing. My cat is now conditioned to come running when she hears that sound.
Are you sure you don't have that backwards? Maybe she conditioned you to spend your time building a gadget to play her favorite tune.
> This thing is covered in sensors; it's got two scales, ostensibly for measuring the weight of the hopper and the weight of food dispensed, a pair of infrared sensors to detect when the hooper is empty, sensors that monitor the motor's turning, and others that I haven't figured out the purpose of.
Bad for business if your cat feeder fails to feed the customer's cat and they return from a trip to a very hungry cat.
Yeah, that sentence shows me that this guy isn't an engineer at all, he's just a hacker.
If he made his own automatic litter box (the rotating drum kind) for his cat, he'll also not see the point of all those sensors that "aren't really needed", and one day he'll come home to find his cat chopped in half.
When the device was in service, the sensors didn't really work, and were likely never enabled in the software. The hopper feed level never accurately indicated in-app, and was mostly just based on calculating the approximate amount dispensed vs a "full" hopper, and the machine would often happily report that it dispensed food, and never actually did, so I doubt the scales actually were enabled either
This is a clever hack. However, if the intent is serious use, I'd be concerned about resiliency. It sounds like the schedule is maintained in Home Assistant, and that it sends a command to the ESP8266 to dispense food. That means a ton of moving parts have to all be working, otherwise the cat doesn't eat: Home Assistant's server and power source, Wi-Fi, and the $1 microcontroller.
If this is intended for serious usage, i.e. the cat won't eat if it fails to dispense, a different design would be more resilient: maybe still define the schedule in Home Assistant or another control plane, but then have it "push" the whole schedule to the device. The device will also need time sync and a realtime clock. Then, the device manages its scheduled dispensation autonomously, even if the network or control plane are unavailable. And, the dispenser should have a little battery so it can run for a couple days with the power out.
Hi, post author here
ESPhome timers are actually local to the ESP device. They just depend on a time signal for timekeeping. For now, the time is sent by HomeAssistant, but I could stick an RTC or GPS timesource on the ESP,and have it run 100% locally.
But since this is mostly supplemental food for dental concerns, and he still gets two bowls of wet every day, its not really an issue
I love Home Assistant but I have yet to venture into the ESP32 board route of things. Can someone point to a good guide to getting started with these boards? How much soldering and/or microcontroller experience is needed?
They're pretty great and compatible with most things. ESPHome [1] is a great resource for getting ESP32's working nicely with HA and you can find lots of projects using it to learn from.
You'll likely need to do soldering if you want to connect sensors, batteries and the like.
Personally I really like what SEEED Studio [2] does with their ESP32 boards and they have nice docs.
You can easily get ESP8266/ESP32 boards with header pins already soldered on; combine this with some DuPont cables (as I’ve just learned they’re called) and you can start messing around with things without much soldering at all. You can also connect to e.g. LED strips and simple sensors in the same way.
You could get a dev board and a breakout board on aliexpress for less than $6 - this way you can get away without any soldering for most use cases. And if you use esphome and homeassistant, pretty much all code is just configuration and setup in homeassistant.
The sonoff line is typically pretty hackable and now has etl certification on some of their products. If recommend something like this if you want to switch mains voltage. I use tasmota, which is similar to esphome. The tasmota wiki has disassembly and flashing info. I've always used wires to flash mine but I think there's a software only flash method. The s31 can be flashed with some spring hook probes and the appropriate rs232 cable (3.3v on the data lines iirc). Some of the in wall line need a few pins soldered on (typically 4).
Tasmota has a setup package of you don't mind manually setting up each device. You can also configure them with code if you learn a little c and platformio. At this point, I batch my devices and flash them with wires for initial configuration (Wi-Fi, mqtt, etc), then run updates wirelessly using an http server on my network and mqtt to coordinate.
Side note, the esp8266 is older and less powerful than the esp32. In practice, the esp8266 can't handle https but the esp32 can. This has never been an issue for me and most of my devices are 8266.
https://www.athom.tech/ are selling a lot of pre-flashed gear in nice casings which is essentially "plug and play ready to go" - out of the box you can wirelessly flash them.
So depending on what you're doing, they're an excellent place to start.
The list of supported components is extensive: https://esphome.io/components/index.html
Either way, I am sure this was a fun project and he achieved what he wanted to do. But if this happened to me I would probably try to reverse engineer the device to free it from PetNet cloud. It would be fun and cool and interesting and I would probably never finish it..
And yeah, I'm not an embedded guy, but I've updated the article with an addendum
[1]: https://github.com/feedernet/petnet-feeder-service/wiki/Gett...
Deleted Comment
The best feature is the little speaker inside that plays the Meowmix jingle when dispensing. My cat is now conditioned to come running when she hears that sound.
I connected it to my Apple Home network via Home Assistant, and it works great. I can tell Siri to give the cat a snack, and off she goes.
Are you sure you don't have that backwards? Maybe she conditioned you to spend your time building a gadget to play her favorite tune.
https://en.wikipedia.org/wiki/.su
For weird reasons, the Soviet Union still officially exists in the Internet and it seems to be growing.
Bad for business if your cat feeder fails to feed the customer's cat and they return from a trip to a very hungry cat.
If he made his own automatic litter box (the rotating drum kind) for his cat, he'll also not see the point of all those sensors that "aren't really needed", and one day he'll come home to find his cat chopped in half.
If this is intended for serious usage, i.e. the cat won't eat if it fails to dispense, a different design would be more resilient: maybe still define the schedule in Home Assistant or another control plane, but then have it "push" the whole schedule to the device. The device will also need time sync and a realtime clock. Then, the device manages its scheduled dispensation autonomously, even if the network or control plane are unavailable. And, the dispenser should have a little battery so it can run for a couple days with the power out.
But since this is mostly supplemental food for dental concerns, and he still gets two bowls of wet every day, its not really an issue
You'll likely need to do soldering if you want to connect sensors, batteries and the like.
Personally I really like what SEEED Studio [2] does with their ESP32 boards and they have nice docs.
1. https://esphome.io/ 2. https://www.seeedstudio.com/home-assistant
See this kit for example: https://a.aliexpress.com/_EyZhdw5
Tasmota has a setup package of you don't mind manually setting up each device. You can also configure them with code if you learn a little c and platformio. At this point, I batch my devices and flash them with wires for initial configuration (Wi-Fi, mqtt, etc), then run updates wirelessly using an http server on my network and mqtt to coordinate.
Side note, the esp8266 is older and less powerful than the esp32. In practice, the esp8266 can't handle https but the esp32 can. This has never been an issue for me and most of my devices are 8266.
So depending on what you're doing, they're an excellent place to start.
https://github.com/martin-ger/esp_wifi_repeater