Please note that most of this info has been me fiddling around with the device and asking ClaudeAI questions about what I'm seeing. It could be totally incorrect, please don't risk devices based on my "research".
To answer your question it should work. From what I understand once you "activate" the bottle validity trough the app the device gets a variable set indicating that the bottle is valid and the amount of dispenses it has left. (There's some with 3 and others with 6). Once the dispense counter reaches 0 the bottle becomes invalid until a new one is scanned. Once the system has a valid bottle set you could switch it to dispense anything you want but just for the number of dispenses valid for that bottle.
Getting bottles from Amazon just to get the code, although unethical, should allow you to keep activating the device for whatever amount of dispenses and I guess it's something that happens cause I've read about people getting "new" bottles that won't validate.
Another thread was collecting used codes to try and find an algorithm to generate codes but I don't think that has gone anywhere, nor is something I'm too interested in doing.
Here's a couple pics of the board. Not the best pics but should give an idea.
Hardware:
GPIO Map (take this with a grain of salt, I tried mapping this to the best of my limited ability):
| GPIO |
Function |
Notes |
| IO18 |
LED 3 |
Output |
| IO19 |
LED 2 |
Output |
| IO21 |
LED 1 |
Output |
| IO25 |
Daughterboard KEY button |
Input, not sure what the button does, maybe reset |
| IO27 |
Battery ADC |
2S2P pack, ~3V nominal |
| IO32 |
Valve OPEN INB |
assuming open but could be close |
| IO33 |
Valve OPEN INA |
assuming open but could be closed |
| IO34 |
Front button |
Wake / dispense |
| IO35 |
Float switch |
Daughterboard PIP, Input |
| GPIO6 (SD0) |
Bottle switch |
can wake device when opened or closed |
| GPIO9 (SD2) |
Valve CLOSE INA |
assuming close but could be wrong |
| GPIO10 (SD3) |
Valve CLOSE INB |
assuming close but could be wrong |
I'm still missing one LED. I was pretty sure I found it but turns out is an NC pad on the esp32
And I believe the actuator uses one set of pins to open and another set to close. I'm pretty sure the valve will remain in position if not fully open or closed and power removed.
I don't know exactly how the actuator works but there's a separate area with a circuit were the actuator leads go to. I'm assuming kind of a relay to drive the actuator.
A summary on how I think it works:
- Device runs on a schedule synced from https://backend.iflo.com (seen the dns requests in my router)
- documentation says it auto adjust dispense days based on weather but in my experience it dispenses every 14 days.
- Last dose: valve opens, device enters deep sleep, valve stays open (latching solenoid holds). I'm assuming this because when I removed the depleted bottle I could hear the valve actuating, so at least the bottle detection switch wakes the device.
- Bottle validation requires a server call — the device sends the bottle ID and gets back max-doses and dispense timings.
There's a Local Web UI (device must be on your network)
Hit http:///settings.html while connected.
Available endpoints that I could find)
GET /dev_info — JSON status (battery, signal, doses, bottle status, mode)
POST /dev_actions — reboot, factory reset, manual dispense, toggle NAM mode, toggle demo mode, set device type, enable float
GET /ota.html — local OTA firmware upload (max 1572KB, minimum accepted version 2.20.5)
GET /offline_settings / GET /offline_data — offline mode data handlers
GET /scan_wifi — WiFi scan
GET /fwver — firmware version