-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathread_temperature_humidity.py
More file actions
47 lines (38 loc) · 1.25 KB
/
read_temperature_humidity.py
File metadata and controls
47 lines (38 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os
from time import sleep
from dotenv import load_dotenv
from Adafruit_IO import Client, Data
from smbus2 import SMBus, i2c_msg
def get_measurement():
write_msg = i2c_msg.write(0x38, [0xac, 0x33, 0x00])
read_msg = i2c_msg.read(0x38, 7)
with SMBus(1) as bus:
bus.i2c_rdwr(write_msg, read_msg)
data = bytes(read_msg)
raw_humidity = (
(data[1] << 12) |
(data[2] << 4) |
((data[3] & 0xF0) >> 4)
)
humidity = (raw_humidity / (1 << 20)) * 100
raw_temp = (
((data[3] & 0x0F) << 16) | # lower 4 bits of byte 3
(data[4] << 8) |
data[5]
)
temperature = (raw_temp / (1 << 20)) * 200 - 50
return humidity, temperature
if __name__ == "__main__":
load_dotenv()
humidity_sum, temperature_sum = 0, 0
for _ in range(10):
humidity, temperature = get_measurement()
humidity_sum += humidity
temperature_sum += temperature
sleep(0.1)
humidity, temperature = humidity_sum / 10, temperature_sum / 10
username = os.getenv("ADAFRUIT_IO_USERNAME")
key = os.getenv("ADAFRUIT_IO_KEY")
aio = Client(username, key)
aio.create_data('humidity', Data(value=humidity))
aio.create_data('temperature', Data(value=temperature))