Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:iot:senzor-htu21d [2023/09/28 21:11] Petr Nosekit:iot:senzor-htu21d [2024/10/26 21:33] (aktuální) – [Parametry senzoru] Petr Nosek
Řádek 5: Řádek 5:
   * komunikuje skrze I2C   * komunikuje skrze I2C
   * senzor teploty a vlhkosti   * senzor teploty a vlhkosti
-  * má integrované 4,7k pull up rezistory, takže není třeba přidávat rezistory k pinům na Raspberry PI+  * destička má integrované 4,7k pull up rezistory, takže není třeba přidávat rezistory k pinům na Raspberry PI
   * Tento I2C digitální vlhkoměr má perfektní přesnost ± 2 % při rozsahu 5 % až 95 % RH   * Tento I2C digitální vlhkoměr má perfektní přesnost ± 2 % při rozsahu 5 % až 95 % RH
   * Teplotu tento modul měří s přesností ± 1 ° C v širokém rozsahu od -30 ~ 90 °C.   * Teplotu tento modul měří s přesností ± 1 ° C v širokém rozsahu od -30 ~ 90 °C.
Řádek 165: Řádek 165:
  
 A tady je ještě repozitář od Adafruit - knihovna, kterou jsem instaloval pomocí pip3 - https://github.com/adafruit/Adafruit_CircuitPython_HTU21D/tree/main. A tady je ještě repozitář od Adafruit - knihovna, kterou jsem instaloval pomocí pip3 - https://github.com/adafruit/Adafruit_CircuitPython_HTU21D/tree/main.
 +
 +
 +=== Posílání dat přes MQTT ===
 +
 +<code bash>
 +pip3 install paho-mqtt
 +</code>
 +
 +Musím počítat s tím, že mám self signed certifikát a tak musím přidat k TLS tuto část kódu: **cert_reqs=ssl.CERT_NONE**
 +<code python>
 +import time
 +import board
 +import ssl
 +from adafruit_htu21d import HTU21D
 +
 +# Create sensor object, communicating over the board's default I2C bus
 +i2c = board.I2C()  # uses board.SCL and board.SDA
 +# i2c = board.STEMMA_I2C()  # For using the built-in STEMMA QT connector on a microcontroller
 +sensor = HTU21D(i2c)
 +
 +import json
 +import paho.mqtt.client as mqtt
 +
 +CLIENT_NAME = "rpi_htu21d"
 +BROKER_ADDR = '192.168.1.120'
 +USER        = 'uzivatel'
 +PASSWORD    = 'supertajneheslo'
 +MQTT_TOPIC  = 'hajany/sensor/htu21d'
 +
 +
 +CA_CERT = "ca.crt"
 +CLIENT_CERT = "client.crt"
 +CLIENT_KEY = "client.key"
 +
 +def on_connect(client, userdata, flags, rc):
 +    if rc == 0:
 +        print("Connected to MQTT broker!")
 +    else:
 +        print(f"Failed to connect, return code {rc}")
 +
 +
 +
 +def connect_and_subscribe():
 + client = mqtt.Client(CLIENT_NAME)
 + client.on_connect = on_connect
 + client.username_pw_set(USER, PASSWORD)
 +    
 +    # Setting TLS with the provided certificates and key
 +    
 + client.tls_set(ca_certs=CA_CERT, certfile=CLIENT_CERT, keyfile=CLIENT_KEY, cert_reqs=ssl.CERT_NONE, tls_version=mqtt.ssl.PROTOCOL_TLSv1_2)
 + client.connect(BROKER_ADDR, 8883, 60)  # Note: Using port 8883 for MQTT over SSL
 + return client
 +
 +
 +def is_connected(client):
 +    try:
 +        client.publish("connection_test", "test", qos=1)
 +        return True
 +    except:
 +        return False
 +
 +client = connect_and_subscribe()
 +
 +while True:
 + temperature = round(sensor.temperature,2)
 + humidity = round(sensor.relative_humidity,2)
 + data = {
 + 'temperature': temperature,
 + 'humidity': humidity
 + }
 +    
 + print(f"\nTemperature: {temperature:.1f} C")
 + print(f"Humidity: {humidity:.1f} %")
 +
 + if not is_connected(client):
 + client = connect_and_subscribe()
 +
 + try:
 + client.publish(MQTT_TOPIC, json.dumps(data))
 + except:
 + print("Failed to send data. Reconnecting...")
 + client = connect_and_subscribe()
 +
 + time.sleep(5)
 +</code>
 +
  • it/iot/senzor-htu21d.1695935475.txt.gz
  • Poslední úprava: 2023/09/28 21:11
  • autor: Petr Nosek