1
0
Fork 0
This commit is contained in:
mrtuxa 2023-04-21 19:10:17 +02:00
commit cd428559aa
7 changed files with 257 additions and 0 deletions

2
.config/config Normal file
View File

@ -0,0 +1,2 @@
[build]
target = "armv7-unknown-linux-gnueabihf"

1
.env Normal file
View File

@ -0,0 +1 @@
GPIO_PIN=23

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

206
Cargo.lock generated Normal file
View File

@ -0,0 +1,206 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "dotenv"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
[[package]]
name = "dotenv_codegen"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56966279c10e4f8ee8c22123a15ed74e7c8150b658b26c619c53f4a56eb4a8aa"
dependencies = [
"dotenv_codegen_implementation",
"proc-macro-hack",
]
[[package]]
name = "dotenv_codegen_implementation"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53e737a3522cd45f6adc19b644ce43ef53e1e9045f2d2de425c1f468abd4cf33"
dependencies = [
"dotenv",
"proc-macro-hack",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "gpio"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fe6783270536547ac473c9d2ae5a7e0e715ea43f29004ced47fbd1c1372d2c7"
[[package]]
name = "itoa"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
[[package]]
name = "libc"
version = "0.2.142"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
[[package]]
name = "log"
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
[[package]]
name = "pi"
version = "0.1.0"
dependencies = [
"dotenv",
"dotenv_codegen",
"gpio",
"rppal",
"spaceapi-dezentrale",
]
[[package]]
name = "proc-macro-hack"
version = "0.5.20+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
version = "1.0.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rppal"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "612e1a22e21f08a246657c6433fe52b773ae43d07c9ef88ccfc433cc8683caba"
dependencies = [
"libc",
]
[[package]]
name = "ryu"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
[[package]]
name = "serde"
version = "1.0.160"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.160"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.15",
]
[[package]]
name = "serde_json"
version = "1.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "spaceapi-dezentrale"
version = "0.8.999"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac1300aa3418cb7e81dd51df2b814a3f1e438a250eea28aaf29573fd83cab0f7"
dependencies = [
"log",
"serde",
"serde_json",
"thiserror",
]
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "syn"
version = "2.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "thiserror"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.15",
]
[[package]]
name = "unicode-ident"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"

13
Cargo.toml Normal file
View File

@ -0,0 +1,13 @@
[package]
name = "pi"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
dotenv = "0.15.0"
dotenv_codegen = "0.15.0"
gpio = "0.4.1"
rppal = "0.14.1"
spaceapi-dezentrale = "0.8.999"

3
build.sh Normal file
View File

@ -0,0 +1,3 @@
mkdir app
cd app
nix-shell -p pkg-config openssl pkg-config git gcc rustc cargo --command "git clone https://github.com/dezentrale/spaceapi-rs && cargo build --release && mkdir ~/dezentrale -p & cp target/release/spaceapi-dezentrale* ~/dezentrale && cd ~/pkgs/spaceapi && cargo build --release && cp target/release/pi ~/dezentrale"

31
src/main.rs Normal file
View File

@ -0,0 +1,31 @@
use rppal::gpio::Trigger;
use rppal::gpio::{Gpio, Level};
use std::process::Command;
fn main() {
let gpio = Gpio::new().unwrap();
let mut pin = gpio.get(13).unwrap().into_input();
// Set the trigger for the interrupt
pin.set_interrupt(Trigger::Both).unwrap();
loop {
// Wait for an interrupt to occur
if let Some(Level::High) = pin.poll_interrupt(true, None).unwrap() {
println!("GPIO pin 13 was triggered");
Command::new("sh")
.arg("-c")
.arg("SPACEAPI_URL=http://10.131.185.175:8000 API_KEY=not-very-secure ./spaceapi-dezentrale-client open")
.output()
.expect("failed to execute process");
// Do something when the interrupt is triggered
} else if let Some(Level::Low) = pin.poll_interrupt(true, None).unwrap() {
println!("GPIO pin 13 was triggered");
Command::new("sh")
.arg("-c")
.arg("SPACEAPI_URL=10.131.185.175:8000 API_KEY=not-very-secure ./spaceapi-dezentrale-client close")
.output()
.expect("failed to execute process");
}
}
}