Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rohja/esphome-xiaomi-smart-pet-fountain
ESPHome component for Xiaomi's Smart Pet Fountain (ESP8266 / ESP-WROOM-02D)
https://github.com/rohja/esphome-xiaomi-smart-pet-fountain
esp8266 esphome esphome-component smart-pet-fountain xiaomi xiaomi-smart-pet-fountain
Last synced: 4 months ago
JSON representation
ESPHome component for Xiaomi's Smart Pet Fountain (ESP8266 / ESP-WROOM-02D)
- Host: GitHub
- URL: https://github.com/rohja/esphome-xiaomi-smart-pet-fountain
- Owner: Rohja
- License: mit
- Created: 2024-07-05T11:34:27.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2024-07-18T15:42:14.000Z (6 months ago)
- Last Synced: 2024-10-10T15:02:50.832Z (4 months ago)
- Topics: esp8266, esphome, esphome-component, smart-pet-fountain, xiaomi, xiaomi-smart-pet-fountain
- Homepage: https://www.rohja.com/
- Size: 1.42 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# esphome-xiaomi-smart-pet-fountain
ESPHome component for Xiaomi's Smart Pet Fountain (ESP8266 / ESP-WROOM-02D) aiming a full replacement of the original firmware, working offline and with Home-Assistant.
![Xiaomi's Smart Pet Fountain product picture](./resources/repo_banner.png)
[Official Xiaomi Product Page](https://www.mi.com/global/product/xiaomi-smart-pet-fountain) - [ESPHome Official site](https://esphome.io/)
## Warning
**This repository is an ***in progress toy project***.** This is provided without any warranty. Use at your own risk.
You should be aware that this project is not affiliated with Xiaomi and that using this firmware might void your warranty. I'm not a lawyer so I can't provide any legal advice but I can tell you that I'm not responsible for any damage that might occur to your device (like the pump burning after running without any water !!).
It's also a good idea to get a dump of the original firmware before flashing this one so you can revert to the original firmware if needed. Since the firmware code is the property of Xiaomi, I can't provide it here but you can dump your own copy by following the [esptool.py documentation](https://docs.espressif.com/projects/esptool/en/latest/esp32/esptool/basic-commands.html#read-flash-contents-read-flash).
--------------------------------------------
:warning: **Right now, this project is in a very early stage.**
:warning: **MAKE SURE YOUR PET HAS ANOTHER SOURCE OF WATER BEFORE FLASHING THIS FIRMWARE.**
:warning: **Only the board with the reference `EP-1158-3C-D11` has been tested. If you have another revision, please open an issue and provide as much information as possible: pictures of the board (both sides), the picture of the label under the fountain, etc.**
## Motivation
I've bough this water fountain 3 years ago (as well as the [Xiaomi Smart Pet Food Feeder](https://www.mi.com/global/product/xiaomi-smart-pet-food-feeder/)) and I love them.
The only two issues are the lack of integration with some kind of open ecosystem (like Home-Assistant or MQTT) and most importantly the fact that the `Mi Home` app randomly stop to send me notification (!!!).
It didn't stop me from buying a second one when the pump of the first one got issue.
I now have a spare one to tinker with and it's based on ESP that I'm now quite familiar with (wether with ESPHome, ESP-IDF or Arduino).
## Requirements
You will need a soldering iron (to solder your UART wires) and a USB to UART adapter to flash the firmware.
Having a good understanding of ESPHome, YAML, general networking and basic electronic is also a good idea.## Fountain Hardare
The hardware revision of the motherboard I have (and opened) is based around the the `ESP-WROOM-02D` that appears to be an `ESP8266` with one or two MB of Flash memory.
### Visual Inspection
Here's what I was able to follow using a multimeter and some patience.
![Motherboard Traces](./resources/traces_EP-1158-3C-D11.png)
Some quick informations:
- The `RESET` button located under the fountain is also used to put the ESP in `DOWNLOAD MODE`: unplug the fountain, press the button and *keep it pressed* and plug back the power.
- The pads `RX`/`TX`/`GND`/`3.3V` are where you need to solder your UART wires.
- The pump is powered with 5V but is controlled using 3.3V.### Pinout
| Pin | Usage | Specificity |
| ------ | ------------------------- | ----------------------- |
| GPIO17 | Water level Photoresistor | - |
| GPIO1 | Front button (Mode) | Inverted, PullUp |
| GPIO13 | Pump control | Inverted |
| GPIO4 | Left LED common + | - |
| GPIO5 | Right LED common + | - |
| GPIO14 | Leds common Blue | - |
| GPIO15 | Leds common White | - |
| GPIO16 | Leds common Red | - |
| GPIO3 | Red Alert central Led | Inverted, used with PWM |## ESPHome Firmware
### Features
This replacement firmware based on ESPHome tries to copy as many of the features of the original firmware.
- Pump turn on on boot
- If `Smart Mode` is `ON`, pump will run for 30s, wait 30, start again for 30s, etc.
- Else, it will run all the time.
- Front button switch between `Normal` and `Smart` pump mode.
- Left LED: `Normal` mode.
- Right LED: `Smart` mode.
- Double click on front button can reset any active `Filter Change` or `Cleaning Required` alerts.
- Front LEDs Colors:
- Red: Attention Required (Eg: Cleaning or Filter Change required).
- Blue: Pump is running.
- White: Pump is idle (Eg: in `Smart` mode).
- Water Level is monitored (**THIS IS A WORK IN PROGRESS**)
- Alert is raised and red LED is turned on if water is too low.Something missing ? I've been trying HARD to find something else I missed so if you are aware of something please notify me by creating an issue ! :)
### Installation
Here's a configuration example, ready to use. You can copy/paste it in your ESPHome configuration file.
You can then change the `substitutions` to match your needs.NOTE: *You might need to define the secrets like `ota_password` or `ap_password` in your `secrets.yaml` file.*
```yaml
packages:
esphome_xiaomi_smart_pet_fountain:
url: https://github.com/Rohja/esphome-xiaomi-smart-pet-fountain
ref: 0.0.1 # optional, but it's recommended to use a specific release
files: [esphome/EP-1158-3C-D11.yaml]
refresh: 1d # optionalsubstitutions:
name: "your-water-fountain-name-here"
friendly_name: "You Water Fountain Friendly Name Here"
log_level: "INFO"# Enable Home Assistant API
api:
encryption:
key: "!secret api_encryption_key"ota:
- platform: esphome
password: !secret ota_passwordwifi:
ssid: !secret wifi_ssid
password: !secret wifi_password# Optional, you can use DHCP too by commenting the lines bellow.
# But you need to set DNS if using static IPs (for SNTP)
manual_ip:
static_ip: 192.168.0.X
gateway: 192.168.0.1
subnet: 255.255.255.0
dns1: 8.8.8.8
dns2: 1.1.1.1# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ${name}
password: !secret ap_passwordcaptive_portal:
# Optional
web_server:
port: 80
```### How to get new version notifications
You can follow [this official GitHub guide](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions) to recieve notification on new releases.
### Troubleshooting
Nothing here, yet. Once some recurring issues are discovered this part will be updated.
## Home-Assistant Integration
For now, there's no specific card for this component but I plan to develop on in the style of [Mushroom cards](https://github.com/piitaya/lovelace-mushroom) and/or [Bubble cards](https://github.com/Clooos/Bubble-Card).
## LICENSE
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.