Coder Social home page Coder Social logo

birdiary / station Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 4.0 6.98 MB

Code to run a smart open source bird feeder.

Home Page: https://wiediversistmeingarten.org

License: GNU General Public License v3.0

Python 91.82% Shell 8.18%
birdwatching environmental-monitoring image-classification pi-camera raspberry-pi

station's Introduction

Birdiary - station

Environmental changes can have different causes on local level (e.g. soil sealing) as well as on global level (e.g. climate change). To detect these changes and to find patterns in the reasons for them it is necessary to collect broad environmental data, temporally and spatially. Thereto citizens can play an essential role to collect the data. In particular, we developed a system which enables citizens to monitor the occurrence and distribution of birds and provides the collected data to the public in order that both researchers and citizens can derive conclusions from them. With our automated approach we want to support other citizen science solutions like eBird where contributors manually report their sightings.

Therefore, we built a prototypical bird feeder equipped with several sensors and the infrastructure to process the data collected by the feeder. The feeder is easy to reproduce at a reasonable price by following an open available manual. This allows anyone to build the feeder on their own, enabling a large distribution at many locations. The feeder automatically detects when a bird is visiting it, takes an image of the bird, determines the species and connects the observation with environmental data like the temperature or light intensity. All the collected data are published on a developed open access platform. Incorporating other surrounding factors like the proximity of the feeder station to the next forest or a large street allows it to pursue various questions regarding the occurrence of birds. One of them might ask, how does the immediate environment affect bird abundance? Or do sealed surfaces have a negative effect compared to a flowering garden?

This repository contains the code to run the bird feeder which is equipped among other things with a motion sensor, camera, balance, microphone and further environmental sensors. All the collected data is send to a server which is based on this webserver. The repositories are currently still under development, the code for the operation of the feeder as well as for the web server are continuously updated. A corresponding manual for the operation of the system including open source instructions for building the feeder will follow soon.

CountYourBirds is a project by a group of students at the Institute for Geoinformatics at the University of Münster. If you got any questions contact us via: [email protected].

How to Contribute

Thank you for considering contributing to Birdiary. Birdiary is an open source project, and we love to receive contributions from our community — you!

There are many ways to contribute, from writing tutorials or blog posts, improving the design of the station, submitting bug reports and feature requests or writing code which can be incorporated into Birdiary itself.

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

This Repository comprises the code and issues for the station. Which means, if you want to contribute to the code running on the station, please contribute here. Contributions in this repository do not have to stick to the code. They can also be about the hardware or design of the station. Whereas when you want to contribute to the webserver(website), please use this repository https://github.com/Birdiary/webserver

Run your own station

In the GitHub wiki you can find information on how to build and run your own Birdiary. If you have any ideas for improvement of the manual or the station itself, feel free to inform us.

Reporting bugs

If you find a security vulnerability, do NOT open an issue. Email [email protected] instead.

If you encounter a bug, check if the bug has already been reported here https://github.com/Birdiary/station/issues. If the bug has not been reported, you can open an issue to report the bug here https://github.com/Birdiary/station/issues/new. For a bug, please add the label "bug".

When filing an issue, make sure to answer these four questions:

  1. What operating system and processor architecture are you using?
  2. What did you do?
  3. What did you expect to see?
  4. What did you see instead?

Suggest Feature

If you wish a special feature, feel free to add it as an issue, like a bug https://github.com/Birdiary/station/issues/new. Here, please add the label "enhancement". Add the moment, we appreciate any suggestions.

Code contributions

Next to reporting bugs or suggesting features, we really appreciate code contributions. We suggest contributing through forking and pull-requests. A guideline how to fork a project and create a pull request can be found here: https://docs.github.com/en/get-started/quickstart/contributing-to-projects

We look at pull requests on a regular basis and give feedback or merge them directly into our main repository.

Validating an issue or pull request

You can also contribute by merging a pull request into your local copy of the project and testing the changes. Add the outcome of your testing in a comment on the pull request.

Further, you can validate an issue or add additional context to an existing issue.

station's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

station's Issues

Logging terminal

There should be a file in which all terminal content is stored for a certain while, for debugging purposes.

Power supply (cable) unprotected

Just the usual Raspberry Pi power supply is plugged into the USB-C port, so it is exposed to the elements and difficult to fasten.

weatherproof and stand-alone station

The weather protection of the station should be reconsidered. If it is not treated with linseed oil or varnish, mould can easily form.
Perhaps there are other treatment options for the wood, or other materials such as 3D printing, which would make the station more robust. Otherwise, there will be many negative experiences, which will increasingly reduce the motivation of the citizen scientists involved.

  • Strengthening the weather resistance of the station

In addition, the station should be designed to operate autonomously. This includes various aspects, such as the power connection (cable, PowerBank, solar) but also the network connection (Wifi, mobile radio, LoRa)

  • stand-alone station

This issue serves as a starting point for the discussion and should result in many individual aspects and issues.

Electronics are unprotected when refilling fodder

Refilling fodder is difficult without some of it falling onto the electronics at the back (Raspberry Pi and cables)

  • Build cover (wood of foil)
  • Build station so that the interior wall touches the back wall (not necessary to reach the electronics from the top)

config microphone

There should be an option, e.g. in the config file, to disable the use of the microphone for stations that run without a microphone.

Restart program on bug

With the new version i had the problem that the program was not restarting after an bug. It still tried to send the data every minute but not measuring the weight again.

digital photo frame

There should be a digital photo frame per station and once for all stations, which automatically updates and displays the latest bird that has visited the station. Ideally with the other data supplied with the movement. This is aimed primarily at the large display of bird videos.

Station Software is not running on Raspberry Pi OS Rel. 5.1 (Bookworm)

When you use Raspberry Pi OS Rel. 5.1 (Debian Bookworm) and run the script ./get_pi_requirements you get several errors like this:

error: externally-managed-environment

This environment is externally managed

To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.

For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Once you have run the Script and make a reboot, the doesn't come up with the desktop environment anymore.

So at least the ./get_pi_requirements Script need some rework, but I think also the Python Scripts need rework. At least the picamera library is replace by the picamera2 library in this OS Release.

https://wiediversistmeingarten.org/view/createstation

Hi,
is it possible to create a new station but not accept to publish the data on the website?
During the setup of the Station I would not like to publish. To setup an own webserver for testing was not successful until now.
Dieter

send data in realtime

Currently, the data is only sent according to a certain interval. However, the data transmission should take place in real time, as long as there is an internet connection. Only if there is no internet connection, the data should be sent collectively to the server as soon as an internet connection was established again.

birds do not land on perch

Birds often land directly on the fodder or the border of the fodder.

Proposed solutions:

  • make fodder release shorter
  • make fodder release smaller

high power consumption

Raspberry Pi needs a lot of power, difficult to run it just with solar panel and power bank..

Ideas:

  • Support by solar roof and power bank
  • Turn off wifi (or even the whole Pi) at night

"out of resources" while starting the camera

With the new program I had the problem that there always was the problem "out of resources" when it tried to start the camera, since it also was sending all movements at the same time. After removing all movements to send, it worked properly again. So my solution would be not start the camera and send the data at the same time

no wifi handling

  • store data also if there is no wifi connection temporary available. All stored data is sent to server when wifi is working again
  • reduce data if no wifi connection is available. E.g. only store images or even no images but only temperature and humidity values

balance reset

To achieve less failure measurements of the balance, it would be useful if there would be a balance reset in a certain interval. Otherwise e.g. by a soaked perch there is always a certain weight without a bird actually sitting on the perch

  • The balance resets in a certain interval

Assistant who guides you through the initial installation

There should be a wizard that guides you through the initial installation process as soon as the SD card is inserted in the Raspberry Pi. This can include the following steps:

  • Setting up config.yaml (boxId, environmentTimeDeltaInMinutes, weightThreshold, calibration_weight, terminal_weight, cameraRotation, weightResetInMinutes)
  • All required files downloaded
  • Performed all required adjustments to the operating system.

Similar to MrBeam, it should be possible to establish a connection to the Raspberry Pi via a local network hosted by the Raspberry Pi using a website that guides you through the installation process.

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.