{"id":21894120,"url":"https://github.com/hackgt/hackgt-timelapse","last_synced_at":"2025-09-21T21:29:07.878Z","repository":{"id":79765813,"uuid":"153807668","full_name":"HackGT/hackgt-timelapse","owner":"HackGT","description":"Uploads timelapse photos from a Raspberry Pi Zero to Amazon S3","archived":false,"fork":false,"pushed_at":"2019-02-16T23:30:22.000Z","size":1989,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-02-03T04:29:14.434Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HackGT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-19T15:54:37.000Z","updated_at":"2019-02-16T23:29:47.000Z","dependencies_parsed_at":"2023-06-02T08:30:43.194Z","dependency_job_id":null,"html_url":"https://github.com/HackGT/hackgt-timelapse","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fhackgt-timelapse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fhackgt-timelapse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fhackgt-timelapse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fhackgt-timelapse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HackGT","download_url":"https://codeload.github.com/HackGT/hackgt-timelapse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244902928,"owners_count":20529115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T13:19:00.321Z","updated_at":"2025-09-21T21:29:02.825Z","avatar_url":"https://github.com/HackGT.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hackgt-timelapse\n### A [fire-and-forget](https://en.wikipedia.org/wiki/Fire-and-forget) system for timelapses on Raspberry Pis\n\n## Configuration\nTo set the wait time (in seconds) between photo captures, configure the `WAIT_TIME` env var in `crossbuild.sh`\n\n    export WAIT_TIME=10 # seconds\n\nTo configure the AWS S3 upload configure the following environment variables in the (`.gitignore`d) `credentials.sh` file:\n\n| Variable      | Description                                  |\n| ------------- | -------------------------------------------- |\n| `BUCKET_NAME` | S3 bucket name (default: `hackgt-timelapse`) |\n| `REGION`      | S3 region (default: `us-east-1`)             |\n| `ACCESS_KEY`  | Access key (*no default*)                    |\n| `SECRET_KEY`  | Secret key (*no default*)                    |\n\n## Building\n\n**`hackgt-timelapse` is only compatible with Raspberry Pis (any model) with a first-party camera attached.**\n\nWhile this project can be compiled directly on the Raspberry Pi, it will be *slowww*. Since Rust makes it very easy to cross-compile for other platforms, we'll do that instead.\n\n### Install tools\n\nFirst off, make sure that [Rust is installed](https://www.rust-lang.org/tools/install). Then follow either of these instructions depending on the device that you're targeting:\n\n#### ARMv7 (e.g. models 2 or 3) as a Rust target (**easier**):\n1. Install standard crates: `rustup target add armv7-unknown-linux-gnueabihf`\n2. Install compiler toolchain: `sudo apt install gcc-arm-linux-gnueabihf`\n\n#### Add ARMv6 (e.g. Pi Zero or original Pi v1) as a Rust target (**harder**):\n1. Install standard crates: `rustup target add arm-unknown-linux-gnueabihf`\n2. **NB**: the toolchain installed by `sudo apt install gcc-arm-linux-gnueabihf` (despite the name) is *not* compatible with ARMv6. If you have it installed, you must uninstall it before proceeding.\n3. Clone the [Raspberry Pi Tools repository](https://github.com/raspberrypi/tools)\n4. Add the toolchain to your path (in your `.bashrc`)\n\n\t\t# Add linker with support for ARMv6\n\t\texport PATH=/path/to/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/bin:$PATH\n\t\texport PATH=/path/to/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/libexec/gcc/arm-linux-gnueabihf/4.9.3:$PATH\n\n### Actually compiling\n\n1. Make sure to set your configuration.\n2. Change `BUILD_DIR` in `crossbuild.sh` to point to the root of this project's directory. This is used for finding the `mmal` headers during cross-compilation.\n2. Run `./crossbuild.sh --release` to build a self-contained binary that you can ship directly on your Raspberry Pi\n3. Builds will appear in `target/arm-unknown-linux-gnueabihf/release` as `hackgt-timelapse`\n\n## Running\n\nBefore you start, make sure that you've set up your Pi correctly by running `raspi-config`:\n* Enable the camera\n* Configure network access (e.g. Wi-Fi)\n* Ensure that wait for network at boot is enabled\n\nSince configuration is baked into the build, `./hackgt-timelapse` will start capturing timelapse images and uploading to S3. Each timelapse instance will upload images to a folder named after its `wlan0` MAC address to make multi-camera setups a breeze.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackgt%2Fhackgt-timelapse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackgt%2Fhackgt-timelapse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackgt%2Fhackgt-timelapse/lists"}