ESPHome
2026.11.0-dev
Loading...
Searching...
No Matches
esphome
components
qwiic_pir
qwiic_pir.h
Go to the documentation of this file.
1
/*
2
* Adds support for Qwiic PIR motion sensors that communicate over an I2C bus.
3
* These sensors use Sharp PIR motion sensors to detect motion. A firmware running on an ATTiny84 translates the digital
4
* output to I2C communications.
5
* ATTiny84 firmware: https://github.com/sparkfun/Qwiic_PIR (acccessed July 2023)
6
* SparkFun's Arduino library: https://github.com/sparkfun/SparkFun_Qwiic_PIR_Arduino_Library (accessed July 2023)
7
*/
8
9
#pragma once
10
11
#include "
esphome/core/component.h
"
12
#include "
esphome/components/binary_sensor/binary_sensor.h
"
13
#include "
esphome/components/i2c/i2c.h
"
14
15
namespace
esphome::qwiic_pir
{
16
17
// Qwiic PIR I2C Register Addresses
18
enum
{
19
QWIIC_PIR_CHIP_ID
= 0x00,
20
QWIIC_PIR_EVENT_STATUS
= 0x03,
21
QWIIC_PIR_DEBOUNCE_TIME
= 0x05,
// uint16_t debounce time in milliseconds
22
};
23
24
enum
DebounceMode
{
25
RAW_DEBOUNCE_MODE
,
26
NATIVE_DEBOUNCE_MODE
,
27
HYBRID_DEBOUNCE_MODE
,
28
};
29
30
static
const
uint8_t QWIIC_PIR_DEVICE_ID = 0x72;
31
32
class
QwiicPIRComponent
final :
public
Component
,
public
i2c::I2CDevice
,
public
binary_sensor::BinarySensor
{
33
public
:
34
void
setup
()
override
;
35
void
loop
()
override
;
36
37
void
dump_config
()
override
;
38
39
void
set_debounce_time
(uint16_t debounce_time) { this->
debounce_time_
= debounce_time; }
40
void
set_debounce_mode
(
DebounceMode
mode
) { this->
debounce_mode_
=
mode
; }
41
42
protected
:
43
uint16_t
debounce_time_
{};
44
45
DebounceMode
debounce_mode_
{};
46
47
union
{
48
struct
{
49
bool
raw_reading
: 1;
// raw state of PIR sensor
50
bool
event_available
: 1;
// a debounced object has been detected or removed
51
bool
object_removed
: 1;
// a debounced object is no longer detected
52
bool
object_detected
: 1;
// a debounced object has been detected
53
bool : 4;
54
};
55
uint8_t
reg
;
56
}
event_register_
= {.reg = 0};
57
58
void
clear_events_
();
59
};
60
61
}
// namespace esphome::qwiic_pir
mode
BedjetMode mode
BedJet operating mode.
Definition
bedjet_codec.h:19
binary_sensor.h
esphome::Component
Definition
component.h:147
esphome::binary_sensor::BinarySensor
Base class for all binary_sensor-type classes.
Definition
binary_sensor.h:33
esphome::i2c::I2CDevice
This Class provides the methods to read/write bytes from/to an i2c device.
Definition
i2c.h:144
esphome::qwiic_pir::QwiicPIRComponent
Definition
qwiic_pir.h:32
esphome::qwiic_pir::QwiicPIRComponent::debounce_mode_
DebounceMode debounce_mode_
Definition
qwiic_pir.h:45
esphome::qwiic_pir::QwiicPIRComponent::raw_reading
bool raw_reading
Definition
qwiic_pir.h:49
esphome::qwiic_pir::QwiicPIRComponent::event_register_
union esphome::qwiic_pir::QwiicPIRComponent::@155 event_register_
esphome::qwiic_pir::QwiicPIRComponent::debounce_time_
uint16_t debounce_time_
Definition
qwiic_pir.h:43
esphome::qwiic_pir::QwiicPIRComponent::setup
void setup() override
Definition
qwiic_pir.cpp:8
esphome::qwiic_pir::QwiicPIRComponent::set_debounce_time
void set_debounce_time(uint16_t debounce_time)
Definition
qwiic_pir.h:39
esphome::qwiic_pir::QwiicPIRComponent::set_debounce_mode
void set_debounce_mode(DebounceMode mode)
Definition
qwiic_pir.h:40
esphome::qwiic_pir::QwiicPIRComponent::loop
void loop() override
Definition
qwiic_pir.cpp:29
esphome::qwiic_pir::QwiicPIRComponent::event_available
bool event_available
Definition
qwiic_pir.h:50
esphome::qwiic_pir::QwiicPIRComponent::reg
uint8_t reg
Definition
qwiic_pir.h:55
esphome::qwiic_pir::QwiicPIRComponent::clear_events_
void clear_events_()
Definition
qwiic_pir.cpp:94
esphome::qwiic_pir::QwiicPIRComponent::object_removed
bool object_removed
Definition
qwiic_pir.h:51
esphome::qwiic_pir::QwiicPIRComponent::object_detected
bool object_detected
Definition
qwiic_pir.h:52
esphome::qwiic_pir::QwiicPIRComponent::dump_config
void dump_config() override
Definition
qwiic_pir.cpp:70
component.h
i2c.h
esphome::qwiic_pir
Definition
qwiic_pir.cpp:4
esphome::qwiic_pir::DebounceMode
DebounceMode
Definition
qwiic_pir.h:24
esphome::qwiic_pir::HYBRID_DEBOUNCE_MODE
@ HYBRID_DEBOUNCE_MODE
Definition
qwiic_pir.h:27
esphome::qwiic_pir::NATIVE_DEBOUNCE_MODE
@ NATIVE_DEBOUNCE_MODE
Definition
qwiic_pir.h:26
esphome::qwiic_pir::RAW_DEBOUNCE_MODE
@ RAW_DEBOUNCE_MODE
Definition
qwiic_pir.h:25
esphome::qwiic_pir::QWIIC_PIR_CHIP_ID
@ QWIIC_PIR_CHIP_ID
Definition
qwiic_pir.h:19
esphome::qwiic_pir::QWIIC_PIR_DEBOUNCE_TIME
@ QWIIC_PIR_DEBOUNCE_TIME
Definition
qwiic_pir.h:21
esphome::qwiic_pir::QWIIC_PIR_EVENT_STATUS
@ QWIIC_PIR_EVENT_STATUS
Definition
qwiic_pir.h:20
Generated by
1.12.0