mirror of
https://github.com/jdillenburg/esphome.git
synced 2026-03-18 12:19:14 -06:00
Added ADXL345 external component
This commit is contained in:
129
components/adxl345/README.md
Normal file
129
components/adxl345/README.md
Normal file
@@ -0,0 +1,129 @@
|
||||
# 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
|
||||
adxl345:
|
||||
- id: my_adxl345
|
||||
address: 0x53
|
||||
update_interval: 100ms
|
||||
|
||||
# Define sensors from component
|
||||
sensor:
|
||||
- platform: adxl345
|
||||
id: my_adxl345
|
||||
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
|
||||
|
||||
# Define sensors with filtering
|
||||
sensor:
|
||||
- platform: adxl345
|
||||
id: my_adxl345
|
||||
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
|
||||
Reference in New Issue
Block a user