Skip to main content

FeedMyFurBabies

Overview

FeedMyFurBabies is a smart cat feeder project that combines IoT hardware with AWS cloud services to create an automated feeding system. The project evolved over multiple iterations, incorporating event sourcing, real-time monitoring, and remote control capabilities.

Problem Statement

Like many pet owners, I often forgot to feed my cats when away from home or at work. This project solves that problem by creating a smart, remotely-controllable cat feeder that can be triggered from anywhere via a mobile app or even a simple IoT button.

Technologies Used

  • Hardware: ESP32 microcontrollers, Seeed IoT Button, motors, sensors
  • Firmware: MicroPython, Arduino C++
  • Cloud: AWS IoT Core, AWS Lambda, Amazon EventBridge, Amazon Timestream
  • Infrastructure: AWS CDK, Terraform
  • Frontend: AWS Amplify, Route53

Key Features

IoT-Enabled Feeding

  • Remote feeding via AWS IoT 1-Click button
  • Mobile app control through AWS Amplify
  • MQTT communication between device and cloud

Event Sourcing Architecture

  • All feeding events stored in EventBridge
  • Complete audit trail of feeding history
  • Event replay capabilities for debugging

Real-Time Monitoring

  • Historical data stored in Amazon Timestream
  • Real-time state tracking via MQTT
  • CloudWatch integration for alerts

Custom Resources

  • Automated AWS IoT Core certificate and key generation
  • AWS CDK custom resources for device provisioning
  • Secure device onboarding

Architecture Highlights

The system uses a modern event-driven architecture:

  1. ESP32 microcontroller publishes MQTT messages to AWS IoT Core
  2. IoT Rules trigger Lambda functions
  3. Events are published to EventBridge for event sourcing
  4. Historical data flows to Timestream for analytics
  5. Frontend hosted on Amplify consumes real-time updates

Evolution of the Project

Part 1: AWS IoT 1-Click

Started with a simple Seeed IoT button triggering a Lambda function to dispense food.

Part 2: Custom IoT Device

Built custom ESP32-based hardware with motors and sensors, communicating via MQTT.

Part 3: Event Sourcing

Introduced EventBridge for event sourcing pattern, enabling complete feeding history tracking.

Part 4: Real-Time Analytics

Added Amazon Timestream for storing historical MQTT state data and time-series analytics.

Part 5: MicroPython Migration

Migrated from Arduino C++ to MicroPython for easier development and debugging.

Part 6: Infrastructure as Code

Consolidated infrastructure using AWS CDK with custom resources for IoT certificates.

Live Demo

Visit the live application: feedmyfurbabies.com