# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries # # SPDX-License-Identifier: MIT """ SHTC3 Temperature/Humidity Sensor Example for using CircuitPython with Home Assistant Author: Melissa LeBlanc-Williams for Adafruit Industries """ import os import time import ssl import json import alarm import board import socketpool import wifi import adafruit_minimqtt.adafruit_minimqtt as MQTT import adafruit_shtc3 PUBLISH_DELAY = 60 MQTT_TOPIC = "state/temp-sensor" USE_DEEP_SLEEP = True # Connect to the Sensor i2c = board.I2C() # uses board.SCL and board.SDA # i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller sht = adafruit_shtc3.SHTC3(i2c) wifi.radio.connect(os.getenv("CIRCUITPY_WIFI_SSID"), os.getenv("CIRCUITPY_WIFI_PASSWORD")) print("Connected to %s!" % os.getenv("CIRCUITPY_WIFI_SSID")) # Create a socket pool pool = socketpool.SocketPool(wifi.radio) # Set up a MiniMQTT Client mqtt_client = MQTT.MQTT( broker=os.getenv("MQTT_BROKER"), port=os.getenv("MQTT_PORT"), username=os.getenv("MQTT_USERNAME"), password=os.getenv("MQTT_PASSWORD"), socket_pool=pool, ssl_context=ssl.create_default_context(), ) print("Attempting to connect to %s" % mqtt_client.broker) mqtt_client.connect() while True: temperature, relative_humidity = sht.measurements output = { "temperature": temperature, "humidity": relative_humidity, } print("Publishing to %s" % MQTT_TOPIC) mqtt_client.publish(MQTT_TOPIC, json.dumps(output)) if USE_DEEP_SLEEP: mqtt_client.disconnect() pause = alarm.time.TimeAlarm(monotonic_time=time.monotonic() + PUBLISH_DELAY) alarm.exit_and_deep_sleep_until_alarms(pause) else: last_update = time.monotonic() while time.monotonic() < last_update + PUBLISH_DELAY: mqtt_client.loop()