feat: update readme to reflect current state of the project
This commit is contained in:
parent
3f519376b2
commit
2a7e30708a
1 changed files with 30 additions and 55 deletions
83
README.md
83
README.md
|
|
@ -7,10 +7,12 @@ This is build by Jet Pham to be used at Noisebridge to replace their old discord
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- GPIO circuit monitoring with configurable pin
|
- GPIO circuit monitoring with configurable pin
|
||||||
- Webhook notifications with retry mechanism
|
>TODO: - Webhook notifications with retry mechanism
|
||||||
- REST API for managing webhook endpoints
|
>TODO: - REST API for managing webhook endpoints
|
||||||
- Daily rotating log files
|
- Daily rotating log files
|
||||||
- Cross-compilation support for Raspberry Pi deployment
|
- Cross-compilation support for Raspberry Pi deployment
|
||||||
|
> Temporarialy calls the discord bot directly
|
||||||
|
- Debouncing using a finite state machine
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
|
@ -31,58 +33,6 @@ cd noisebell
|
||||||
cargo build --release
|
cargo build --release
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
### GPIO Pin
|
|
||||||
The default GPIO pin is set to 17. You can modify this in `src/main.rs`.
|
|
||||||
|
|
||||||
### Webhook Endpoints
|
|
||||||
Webhook endpoints are stored in `endpoints.json`. The file should follow this format:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"endpoints": [
|
|
||||||
{
|
|
||||||
"url": "https://your-webhook-url.com",
|
|
||||||
"description": "Description of this endpoint"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Start the server:
|
|
||||||
```bash
|
|
||||||
./target/release/noisebell
|
|
||||||
```
|
|
||||||
|
|
||||||
The server will:
|
|
||||||
- Start listening on `127.0.0.1:8080`
|
|
||||||
- Begin monitoring the configured GPIO pin
|
|
||||||
- Send webhook notifications when circuit state changes
|
|
||||||
|
|
||||||
### API Endpoints
|
|
||||||
|
|
||||||
#### Add Webhook Endpoint
|
|
||||||
```bash
|
|
||||||
curl -X POST http://localhost:8080/endpoints \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"url": "https://your-webhook-url.com",
|
|
||||||
"description": "My webhook"
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Webhook Payload Format
|
|
||||||
When a circuit state change is detected, the following JSON payload is sent to all configured endpoints:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"event_type": "circuit_state_change",
|
|
||||||
"timestamp": "2024-03-21T12:34:56Z",
|
|
||||||
"new_state": "open" // or "closed"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
The project includes a deployment script for Raspberry Pi. To deploy:
|
The project includes a deployment script for Raspberry Pi. To deploy:
|
||||||
|
|
@ -105,3 +55,28 @@ This will:
|
||||||
## Logging
|
## Logging
|
||||||
|
|
||||||
Logs are stored in the `logs` directory with daily rotation for the past 7 days
|
Logs are stored in the `logs` directory with daily rotation for the past 7 days
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The following parameters can be configured in `src/main.rs`:
|
||||||
|
|
||||||
|
### GPIO Settings
|
||||||
|
- `DEFAULT_GPIO_PIN`: The GPIO pin number to monitor (default: 17)
|
||||||
|
- `DEFAULT_POLL_INTERVAL_MS`: How frequently to check the GPIO pin state in milliseconds (default: 100ms)
|
||||||
|
- `DEFAULT_DEBOUNCE_DELAY_SECS`: How long the switch must remain in a stable state before triggering a change, in seconds (default: 5s)
|
||||||
|
|
||||||
|
### Discord Settings
|
||||||
|
The following environment variables must be set:
|
||||||
|
- `DISCORD_TOKEN`: Your Discord bot token
|
||||||
|
- `DISCORD_CHANNEL_ID`: The ID of the channel where status updates will be posted
|
||||||
|
|
||||||
|
### Logging Settings
|
||||||
|
- `LOG_DIR`: Directory where log files are stored (default: "logs")
|
||||||
|
- `LOG_PREFIX`: Prefix for log filenames (default: "noisebell")
|
||||||
|
- `LOG_SUFFIX`: Suffix for log filenames (default: "log")
|
||||||
|
- `MAX_LOG_FILES`: Maximum number of log files to keep (default: 7)
|
||||||
|
|
||||||
|
To modify these settings:
|
||||||
|
1. Edit the constants in `src/main.rs`
|
||||||
|
2. Rebuild the project
|
||||||
|
3. For Discord keys and channel id, ensure the environment variables are set before running the bot (Done for you in deploy.sh)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue