Files
jdillenburg-esphome/components/adxl345/README.md
2025-03-14 15:36:55 -05:00

119 lines
2.7 KiB
Markdown

# ADXL345 Component for ESPHome
This is a custom component for ESPHome that interfaces with the ADXL345 3-axis accelerometer.
## Features
- Supports all standard I2C configuration options including multiple I2C buses
- Configurable measurement range (2G, 4G, 8G, 16G)
- Provides raw acceleration values for X, Y, and Z axes
- Calculates off-vertical angle (useful for bed/chair position tracking)
- Calculates jitter (total movement across all axes)
- Full Home Assistant integration with proper device classes and units
## Installation
1. Create a `components` directory in your ESPHome configuration directory if it doesn't exist
2. Create an `adxl345` directory inside the `components` directory
3. Copy the following files into the `adxl345` directory:
- `__init__.py`
- `adxl345.h`
- `adxl345.cpp`
- `sensor.py`
## Dependencies
This component requires the following libraries:
- Wire
- SPI
- Adafruit BusIO
- Adafruit Unified Sensor
- Adafruit ADXL345
Add these to your ESPHome configuration:
```yaml
libraries:
- "Wire"
- "SPI"
- "Adafruit BusIO"
- "Adafruit Unified Sensor"
- "Adafruit ADXL345"
```
## Usage
### Basic Configuration
```yaml
# Define component and sensors for accel_x, accel_y and accel_z
adxl345:
- id: my_adxl345
address: 0x53
update_interval: 100ms
accel_x:
name: "Acceleration X"
accel_y:
name: "Acceleration Y"
accel_z:
name: "Acceleration Z"
```
### Advanced Configuration
```yaml
# Define I2C bus
i2c:
sda: GPIO21
scl: GPIO22
frequency: 400kHz
# Define component with all options
adxl345:
- id: my_adxl345
address: 0x53
update_interval: 100ms
range: 4G # Options: 2G, 4G, 8G, 16G
accel_x:
name: "Acceleration X"
filters:
- median:
window_size: 5
send_every: 5
send_first_at: 1
accel_y:
name: "Acceleration Y"
accel_z:
name: "Acceleration Z"
off_vertical:
name: "Tilt Angle"
filters:
- sliding_window_moving_average:
window_size: 10
send_every: 5
jitter:
name: "Movement Detection"
filters:
- threshold:
above: 10.0
then: ON
below: 2.0
then: OFF
```
## Available Sensors
| Sensor | Description | Unit |
|--------|-------------|------|
| `accel_x` | Raw X-axis acceleration | m/s² |
| `accel_y` | Raw Y-axis acceleration | m/s² |
| `accel_z` | Raw Z-axis acceleration | m/s² |
| `off_vertical` | Maximum angle from vertical (derived from pitch and roll) | degrees |
| `jitter` | Sum of absolute accelerations across all axes (movement detection) | m/s² |
## Example Use Cases
- Bed/chair incline monitoring
- Movement detection
- Vibration monitoring
- Orientation sensing