Giter VIP home page Giter VIP logo

friedjof / automaticchickenfeeder Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 17.45 MB

An automatic chicken feeding system. Features include scheduled feeding, web-based configuration and power saving functions.

Makefile 3.49% HTML 4.32% JavaScript 21.50% CSS 8.66% C++ 61.85% Nix 0.18%
alertmanager arduino arduinojson chicken configmanager ds3231 esp32 espasyncwebserver feeder platformio

automaticchickenfeeder's Introduction

Hi ๐Ÿ‘‹ My name is Friedjof Noweck

Computer Science Stundent TU Munich

  • ๐ŸŒ I'm based in Munich, Germany
  • ๐Ÿ–ฅ๏ธ See my portfolio at LinkedIn
  • โœ‰๏ธ You can contact me at [email protected]

Skills

PythonGitCTypeScriptJavaReactPostgreSQLMySQLFast APIDjangoLinuxRaspberry PiDockerArduinoGoogle Cloud

Support Me

automaticchickenfeeder's People

Contributors

bschlagheck avatar friedjof avatar

Watchers

 avatar

Forkers

bschlagheck

automaticchickenfeeder's Issues

Add Github CI/CD

In order to check whether the project can be built before a pull request, a github cicd should be created.

Feed factor configuration interface

Create an interface so that the feed factor can also be set on the configuration interface.
This involves creating an endpoint and incorporating it into the interface on the configuration interface.

Dynamic deletion of log messages

The approaches to this can already be found in the LoggingManager under delete_first_n_lines.
The procedure is as follows:

  1. a temporary file is created in "w" mode.
  2. the system.log is scanned up to the new first line.
  3. transfer to the new file is started.
  4. the system.log is deleted and the temporary file is renamed.

An error occurs here during the last step. It seems that system.log is still open. However, I am very sure that this is not the case.
I have already tried to do the whole thing without a temporary file using a string buffer. However, that did not work either. I don't know exactly but I can't seem to write anything to the file. It would be good to start at that point.

For debugging, you can proceed as follows:

  1. make start upload fs and flash code
  2. connect to the wifi
  3. via https://192.168.4.1/logging you can read the content of the system.log.
  4. you can find more information about the length of the file and a bit more at https://192.168.4.1/log_lines.

This last endpoint can be removed after the fix.

Logging of feeding via a separate .log file

A file is to be added so that it can be logged exactly when feeding took place. A separate lib is to be written that takes over the logging with classic log levels.
The format should look as follows: "[Time] - [Level] - [Message]".
The log file is to be output completely via a page "/logging".

Build test on the esp8266

Unfortunately I don't have an esp8266 here, so it would be great if you could load the builds from the latest release onto your esp8266 soon. You can also find how to do this (a command) in the README.md. I would be very happy if you could do this.

add FEED_FACTOR to json config

Explanation

So that only a new configuration has to be entered, it should also be possible to set the FEED_FACTOR from the main.cpp in the config.json. The FEED_FACTOR is responsible for the calibration of the feed quantity in grams.

TODO

To do this, the ConfigManager (ConfigManager::save_config() and ConfigManager::load_config()) and the associated feed_config_t type must be adapted.

add hostname (dns) and subnetmask to config.json

Explanation

So that the configuration interface can also be accessed via a local domain, another configuration hostname and subnetmask could be added to config.json under wifi. This also creates further transparency as to how exactly the configuration interface can be called up.

Todo

For this, the config.json(-template), the ConfigManager (save, load and the wifi type), the main.cpp (wifi config and such), as well as the documentation (README.md) must be adapted.

Automatically create config.json if not available.

If the config.json does not exist, the template should be renamed to config.json. If the config.json already exists, the template can also be deleted.
To do this, look at ConfigManager.cpp under ./lib/ConfigManager. This functionality can be implemented in the constructor. You can also write your own private function if you need this routine more often.

Switch off feeding when auto sleep is activated

When the automatic sleep mode is activated, it should still be ensured that the feeding is turned off.
To do this, look at the place where the sleep mode is automatically activated in the main.cpp.

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.