{"id":15064160,"url":"https://github.com/itohio/fishfeeder","last_synced_at":"2025-04-10T11:51:01.014Z","repository":{"id":50674331,"uuid":"500069358","full_name":"itohio/FishFeeder","owner":"itohio","description":"Automatic fish feeder using ESP32 M5StickC written in Go and flashed using TinyGo","archived":false,"fork":false,"pushed_at":"2022-10-08T22:27:36.000Z","size":6137,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T10:38:53.362Z","etag":null,"topics":["aquarium-automation","esp32","go","golang","m5stickc","tinygo"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itohio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["itohio"]}},"created_at":"2022-06-05T10:46:50.000Z","updated_at":"2024-11-03T18:43:46.000Z","dependencies_parsed_at":"2023-01-19T16:17:59.400Z","dependency_job_id":null,"html_url":"https://github.com/itohio/FishFeeder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itohio%2FFishFeeder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itohio%2FFishFeeder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itohio%2FFishFeeder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itohio%2FFishFeeder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itohio","download_url":"https://codeload.github.com/itohio/FishFeeder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248215192,"owners_count":21066619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aquarium-automation","esp32","go","golang","m5stickc","tinygo"],"created_at":"2024-09-25T00:12:41.290Z","updated_at":"2025-04-10T11:51:00.997Z","avatar_url":"https://github.com/itohio.png","language":"Go","readme":"\n![Invent This, Invent That](parts/IT2-logo.png)\n\n# FishFeeder\n\n![Automatic fish feeder using M5StickC module](parts/dispenser-drawing.jpg)\n\nThis is a really simple TinyGo project that relieaves certain worry when I travel and leave my aquarium unattended.\nCoupled with a Raspberry Pi with a camera, Wireguard tunnel, a couple of simple (reverse) proxies I am able to remotely care for my \naquatic critters!\n\n![Overview of the fish feeder](parts/overview.jpg)\n\n## Design\nAt first I was thinking what kind of hardware to use and how to connect it to the Internet, however, I was really stoked on doing this project\nusing Go. So, ESP32 wifi capabilities were out the window until [this and related issues](https://github.com/tinygo-org/tinygo/issues/2024) are resolved.\nThen I was thinking whether to design the hardware and solder it myself... And then one day I remembered, that I've got a couple of M5StickC modules lying around\nwithout any interesting usecase.\n\n![M5StickC module](parts/closeup.jpg)\n\nAlso, A few weeks ago, I created kind of a reminder using M5Stack Atom with experimental configurable Pomodoro timer and decided to expand on that.\nI took the M5StickC, experimental Pomodoro timer code, refactored it a bit, fiddled with FreeCAD and vuola! Remote-capable fish automation unit is complete with minimal soldering effort!\n\n![3D printed dispenser](parts/dispenser.jpg)\n\nI really really really wait for TinyGo to have native WiFi capability on these chips! (Maybe Espressif will help?) This way I would be able to connect a camera module, integrate Wireguard and stream video/pictures without Raspberry Pi!\n\n## Features\n\n- Three individually resettable timers:\n  - Feeding\n  - water changes\n  - filter maintenance\n- Nudges\n- Dispense food using a cheap 9g server\n- Reset feeding timer and feed the fish (configurable feeding pattern)\n- M5Stack IR temperature sensor\n- Remote feeding and status (via USB, serial)\n\n### Operation\n\nThere are three timers:\n- A timer to feed the fish (every 24h)\n- A timer to do a water change (every week)\n- A timer to do canister filter maintenance (3 months)\n\nOnce a timer is due, the screen and built in LED start to flash. In this case you can reset the timer by pressing the A button (the large button on M5Stick right to the screen).\nYou can initiate a feeding sequence by long pressing the A button. This will reset feeding timer.\nAlso, you can initiate food dispencing(once) without resetting the timer by long pressing the B button (a small button on the side of the M5Stick).\nYou can reset any timer even if it is not due by short pressing the B button a few times until the timer is selected and then short pressing the A button to reset that timer.\n\n### Remote control\n\nThe serial connection baud rate is 152000 and it accepts single character commands, such as:\n\n- \"f\" - initiates the feeding sequence and resets the feeding timer\n- \"d\" - dispenses food once\n- \"r\" - reset current timer\n- \"1\", \"2\" or \"3\" - reset specific timer\n- \"i\" - show information about the timers (prints a list of ETA)\n- \"t\" - show information about the temperature sensor. Prints out MLX90614 ID, configured Emissivity, ambient, Object1, and Object2 temperatures\n\n## Build\n\nYou only need an Espressif IDF SDK and a proper version of `esptool.py` (on Windows it installs as esptool.py.exe which totally screws with the tooling for some reason, so I had to manually copy and rename the executable installed by pip). If your `esptool` is working and the M5StickC(or any ESP32 board for that matter!) is connected, you can run `go generate` and after brief compillation the firmware will be flashed.\n","funding_links":["https://github.com/sponsors/itohio"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitohio%2Ffishfeeder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitohio%2Ffishfeeder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitohio%2Ffishfeeder/lists"}