summaryrefslogtreecommitdiff
path: root/include/pio/libs/temphum/homekit/temphum.h
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-09-27 00:54:57 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-09-27 00:54:57 +0300
commitd3a295872c49defb55fc8e4e43e55550991e0927 (patch)
treeb9dca15454f9027d5a9dad0d4443a20de04dbc5d /include/pio/libs/temphum/homekit/temphum.h
parentb7cbc2571c1870b4582ead45277d0aa7f961bec8 (diff)
parentbdbb296697f55f4c3a07af43c9aaf7a9ea86f3d0 (diff)
Merge branch 'master' of ch1p.io:homekit
Diffstat (limited to 'include/pio/libs/temphum/homekit/temphum.h')
-rw-r--r--include/pio/libs/temphum/homekit/temphum.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/pio/libs/temphum/homekit/temphum.h b/include/pio/libs/temphum/homekit/temphum.h
new file mode 100644
index 0000000..1952ce0
--- /dev/null
+++ b/include/pio/libs/temphum/homekit/temphum.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <Wire.h>
+
+namespace homekit::temphum {
+
+struct SensorData {
+ uint8_t error = 0;
+ double temp = 0; // celsius
+ double rh = 0; // relative humidity percentage
+};
+
+
+class Sensor {
+protected:
+ int dev_addr;
+public:
+ explicit Sensor(int dev) : dev_addr(dev) {}
+ void setup() const;
+ void writeCommand(int reg) const;
+ virtual SensorData read() = 0;
+};
+
+
+class Si7021 : public Sensor {
+public:
+ SensorData read() override;
+ Si7021() : Sensor(0x40) {}
+};
+
+
+class DHT12 : public Sensor {
+public:
+ SensorData read() override;
+ DHT12() : Sensor(0x5c) {}
+};
+
+} \ No newline at end of file