summaryrefslogtreecommitdiff
path: root/content/git/birdscan.md
blob: bc25d5880cb8c26da5407a3993625654e1c1e56c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
	"name":"birdscan",
	"friendly_name":"birdscan",
	"description":"Software to take beautiful pictures of birds with a Raspberry Pi camera",
	"state":"active"
}

## Future development

The current setup uses a mixed codebase with Go, Python and shell code to
provide a webinterface with the following functionality:

- take single picture
- show current state in real-time (capturing, ready, not connected)
- reboot / shutdown the Raspberry Pi

As the project is still very useful for me it would be good to improve this.
The idea for this improvement is to split up the architecture into three
components:

1. birdscan component on the Raspberry Pi
2. [webiot](../webiot/) on the same or another host
3. mosquitto MQTT server also on the same or another host

The MQTT broker comes basicly for free because it is just one Linux package and
the default configuration is just fine.

webiot should contain the user interface. This reduces the effort to develop
birdscan because the web-related part can be skipped.

The relevant part is the birdscan component itself. My idea is to use the pure
v4l2 interface of the Linux kernel to access the camera directly. Because the
Linux kernel is programmed in C the easiest way is probably to also implement
birdscan in C. MQTT libraries are available for C too.

To get started I will have a closer look at
[megapixels](https://gitlab.com/postmarketOS/megapixels) which is a camera app
written in C and with similar ideas about how to connect to the camera.

Hopefully I find some time for this project in the next weeks / months. If you
have some ideas about the project you can just write me a mail to
me@xengineering.eu.