Coder Social home page Coder Social logo

nmauersberg / katzomat Goto Github PK

View Code? Open in Web Editor NEW

This project forked from adeptuscat/katzomat

0.0 0.0 0.0 7.68 MB

License: GNU General Public License v3.0

Shell 0.13% JavaScript 7.27% Ruby 0.43% C++ 15.68% Python 48.14% C 15.38% Objective-C 0.64% Java 4.17% TypeScript 1.23% Objective-C++ 1.19% CMake 0.07% Starlark 0.16% kvlang 5.52%

katzomat's Introduction

Katzomat - IoT pet feeding device

Control your pets feeding schedule while you are away/sleeping/working... just take your mind off of it.
There are three components to this System:

  1. A MQTT broker is the central communication hub, so it should run on a dedicated server.
  2. The feeding device 'Katzomat', that is controlled by a microcontroller, in this case a ESP-32-CAM, which is a MQTT client.
  3. The mobile software 'Katzo-app', that is used to setup the feeding schedule and check in on your cat's eating habbit by taking images. Its also a MQTT client

How does the App work?

The App connects to a MQTT broker that holds all the relevant information about the Katzomat. e.g. feeding schedule, status (online/offline), latest image of the feeding bowl, history of feeding.

What User Data is saved, and where?

Locally stored data on the app: feeding schedule, last image, Katzomat settings, user credentials.
Locally stored data on the microcontroller: feeding schedule, last image, Katzomat settings, user credentials.
Online stored data on the MQTT broker: feeding schedule, last image, Katzomat settings.

Is my data save?

The network transmission is ssl encrypted. Local data on the mobile device is encrypted using the pyAesCrypt library.
Its certainly possible to setup your own MQTT broker, if you don't trust others with your data. A tutorial on that is in planning.

Is this software cross-platform?

Yes. It is written in python and kivy/kivyMD. Its possible to compile with buildozer for Android, iOS and also possible to compile for desktop usage.

How to use App?

The App tries to connect to the MQTT broker on startup. Access the main screens "Feeder", 'Timetable' and 'Log' from the Tab bar. Settings can be accessed via the the menu ribbon top left.
Request a still image from the Katzomat or feed the pet directly.

Account Settings: If you use the app the first time or want to change user data you can change the MQTT domain, username and password here.

Timetable: Overview of the feeding schedule. To setup a feeding timetable, you can select either a recurring or once occuring feeding schedule.

Device Settings: Here you can adjust things like turning time of the feeding motor.

Log: See the feeding history and current time on the device.

How do I know it actually works?

The microcontroller has a camera so you can see if the feeding worked and if your pet did in fact eat anything. Request a still image at any time.

Do I need a permanent internet connection for this to work?

No. The microcontroller saves the schedule on an SD-Card. The App sends its data to a MQTT broker and when the microcontroller comes online again, it receives all the latest information and vice versa.

Can this be used for something else, like watering plants?

Yes. You would have to make some changes to how the actual mechanics work, but other than that it should be quit easy to adapt this to do something else.

What kind of technologies are used?

This is an IoT (Internet of Things) project. So it uses the MQTT protocol to communicate between the clients (e.g. the feeding device and the App) to remote control a device via the Internet.
The App is written in Python and Kivy/KivyMD. The microcontroller is an ESP32 that is programmed c/c++.

How are the components wired/build together?

Look over this fine schematic:

What do I need to build a Katzomat

You will need a series of components, that are mostely readily available. The only thing that is kind of special is the shaft connecting the motor with the food dispenser. I will upload a 3D file soon. Cost should be around 40โ‚ฌ.

  1. Some kind of Cereal Dispenser of this type.


  1. ESP32-CAM and a compatible programmer.


  1. 5V or 3V Relais Modul.


  1. DC-DC Step Up Converter: 5V to 24V


  1. Worm Gear Motor 24V 2rpm or something similar.


  1. Flexible Coupling for the Motor and Shaft from 6mm to 8mm since the motor shaft diameter and the dispenser shaft diameter are different.


katzomat's People

Contributors

adeptuscat avatar nmauersberg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.