# Spaceapi Tuerpi Feeding our SpaceAPI with data from our entrance door. ## Usage To run the client, please change `DOOR_PIN` accordingly to your setup. `DOOR_PIN` defaults to a closed door, when `HIGH`. You need to provide the environment variables `SPACEAPI_URL` and `API_KEY` to send the status to the SpaceAPI server. Details of the server can be found on the [project page](https://github.com/dezentrale/spaceapi-rs). ## Build [Install stable version of rust](https://rustup.rs/) and run a regular cargo build: ```sh cargo build ``` ### Cross compile Install arm toolchain and *libmusl* for static linked binaries: ```sh apt-get install gcc-arm-linux-gnueabihf musl-dev musl-tools ``` Build the application for raspberry pi: ```sh cargo build --target=armv7-unknown-linux-musleabihf ``` ## Install Build the project as release and place `pi` binary under `/usr/local/bin/spaceapi-tuerpi` ```sh sudo install -m 755 -o root -g root \ target/release/pi \ /usr/local/bin/spaceapi-tuerpi ``` Configure the spaceapi systemd service by placing the service description under `/etc/systemd/system/spaceapi.service`: ``` [Unit] Description=SpaceAPI tuerpi client After=network.target [Service] Type=simple Restart=always EnvironmentFile=/etc/spaceapi-tuerpi.env ExecStart=/usr/local/bin/spaceapi-tuerpi [Install] WantedBy=multi-user.target ``` Place the environment configuration with URL and API-Key under `/etc/spaceapi-tuerpi.env`: ``` SPACEAPI_URL= API_KEY= #DOOR_PIN=27 # Set the door pin #RUST_LOG=ERROR # Set debug level ``` Ensure the `/etc/spaceapi-tuerpi.env` can be read only by root by executing: ```sh sudo chmod 600 /etc/spaceapi-tuerpi.env sudo chown root:root /etc/spaceapi-tuerpi.env ``` Apply changes to systemd to enable and start the service ```sh sudo systemctl daemon-reload sudo systemctl enable --now spaceapi ```