ansible/roles/pi-dhtsensor/files/dht22_sensing.py

50 lines
1.5 KiB
Python
Raw Normal View History

2020-03-30 22:49:44 +02:00
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import json
import time
2020-05-10 15:25:38 +02:00
import Adafruit_DHT
2020-03-30 22:49:44 +02:00
config = json.load(open("/etc/dht22_sensing.json"))
def send_to_home_assistant(temperature, humidity):
2020-05-10 15:25:38 +02:00
# print(f"Sending temperature {temperature}, humidity {humidity}")
2020-03-30 22:49:44 +02:00
headers = {
'x-ha-access': config['token'],
'Authorization': "Bearer {}".format(config['token'])
}
2020-05-10 15:25:38 +02:00
temperature_url = "{}/api/states/sensor.{}".format(
config['ha_url'], config['ha_temp_sensor_name'])
2020-03-30 22:49:44 +02:00
temperatur_data = {
"state": str(temperature),
"attributes": {
"device_class": "temperature",
"friendly_name": config['ha_temp_friendly_name'],
"unit_of_measurement": "°C"
}
}
requests.post(temperature_url, json=temperatur_data, headers=headers)
2020-05-10 15:25:38 +02:00
humidity_url = "{}/api/states/sensor.{}".format(
config['ha_url'], config['ha_humidity_sensor_name'])
2020-03-30 22:49:44 +02:00
humidity_data = {
"state": str(humidity),
"attributes": {
"device_class": "humidity",
"friendly_name": config['ha_humidity_friendly_name'],
"unit_of_measurement": "%"
}
}
requests.post(humidity_url, json=humidity_data, headers=headers)
2020-05-10 15:25:38 +02:00
if __name__ == "__main__":
while True:
sensor = Adafruit_DHT.DHT22
humidity, temperature = Adafruit_DHT.read_retry(sensor, config['dht_pin'])
send_to_home_assistant(temperature, humidity)
time.sleep(float(config['polling_sleep_time_seconds']))