Sonde de température dht22

Mon problème

Bonjour,
Je voudrais installer sur mon raspberry pi 3 B+ ou j’ai installé home assistant, une sonde de température dht22 vat-elle etre reconnu tout de suite ?

Merci d’avance à tous
Denisv

Ma configuration


[center]## System Information

version core-2022.10.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.5
os_name Linux
os_version 5.15.61-v8
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4957
Installed Version 1.28.3
Stage running
Available Repositories 1135
Downloaded Repositories 7
Home Assistant Cloud
logged_in true
subscription_expiration 10 octobre 2023 à 02:00
relayer_connected true
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled false
remote_server eu-central-1-3.ui.nabu.casa
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.3
update_channel stable
supervisor_version supervisor-2022.10.0
agent_version 1.4.1
docker_version 20.10.18
disk_total 57.8 GB
disk_used 6.7 GB
healthy true
supported true
board rpi3-64
supervisor_api ok
version_api ok
installed_addons Mosquitto broker (6.1.3), Samba share (10.0.0), Terminal & SSH (9.6.1), Node-RED (13.5.0), Samba Backup (5.2.0), File editor (5.4.1)
Dashboards
dashboards 2
resources 4
views 6
mode storage
Recorder
oldest_recorder_run 23 octobre 2022 à 22:33
current_recorder_run 31 octobre 2022 à 18:28
estimated_db_size 103.70 MiB
database_engine sqlite
database_version 3.38.5
[/center] Comment récupérer ma configuration : Dans votre HA, Menu latéral `Paramètres` > `Système` > `Corrections` puis les trois petits points en haut a droite > `Informations Système` puis une fois en bas `Copier` ___

Bonjour

Il me semble que depuis peu les GPIO ne sont plus nativement gérés par Home assistant

par contre ce que tu peux faire c’est utiliser un microcontroleur tel que esp8266 ou esp32 avec ESPHOME

ok c’est ce que je voulais faire pour les autres pièces, et je me disai que pour celle ou il y a le rapb je pouvais le mettre directement dessus !!

je vais prendre un esp32 pour tester, j’avais dans l’idée de faire des boitiers en impression 3D reste le problème de l’alimentation pour qu’ils soient autonome. Je sais sur Aliexpress on peu trouver des capteur de température pas cher, mais pour moi c’est plus intéressant de les créer moi même.

Merci pour ta réponse rapide

A choisir,
prends des trucs tout fait en bluetooth ou zigbee
ça coute bien moins cher qu’un ESP avec le DHT ou le BME, c’est autonome
pas trop compliqué a mettre en œuvre
cela ne reste que mon avis, mais franchement c’est nettement plus facile a mettre en oeuvre

Bonjour, je voulais mettre des sondes de températures pour l’eau de ma piscine et celle de mes circuits primaires et secondaires de ma Géothermie. Donc impossible de passer par HA, il faut faire un bricolage?

Dans mon cas,
Le GPIO est accessible sans problème en direct


Des Sonde DS18B20 en direct GPIO4
Led piloté qui clignote quand des mails qui sont dans une certaine Inbox (en PWM)
Et pilotage Fan en PWM pour le rafraîchissement du CPU

Module utilisé
1-Wire SysBus : GitHub - thecode/ha-onewire-sysbus: Home Assistant 1-Wire via sysbus
Raspberry Pi GPIO : [GitHub - thecode/ha-rpi_gpio: Home Assistant Raspberry Pi GPIO Integration](GitHub - thecode/ha-rpi_gpio: Home Assistant Raspberry Pi GPIO Integration
Raspberry Pi GPIO PWM : https://github.com/RedMeKool/HA-Raspberry-pi-GPIO-PWM

Donc théoriquement les DHT devraient être lu directement sur le GPIO

Mais c’est vrai que j’avais vu passé un truc sur la disparition de la gestion des GPIO, ce qui me parait pas une bonne idée, mais ce n’est que mon avis :smile:

regarde là au cas ou
https://github.com/jdeneef/ha_gpiod

J’ai déterré mes vieux codes mais je ne peux pas donner tors a jrvrcd pour la simplicité.
Sans quoi si tu veux utiliser un ESP
Moi j’avais fait avec un ESP01 c’est vraiment pas cher avec ce code.

#include <ESP8266WiFi.h>
#include <Ticker.h>
#include <AsyncMqttClient.h>
#include "DHT.h"
 
//replace with your network credentials
#define WIFI_SSID "TON SSID"
#define WIFI_PASSWORD "TON PASSWORD"

 // Raspberry Pi Mosquitto MQTT Broker
#define MQTT_HOST IPAddress(192, 168, x, x)
#define MQTT_PORT 1883

//MQTT Topics
#define MQTT_PUB_TEMP "esp8266/dht/temperature"
#define MQTT_PUB_HUM  "esp8266/dht/humidity"

#define DHTPIN 0 
#define DHTTYPE DHT22 
DHT dht(DHTPIN, DHTTYPE);

float temp;
float hum;

AsyncMqttClient mqttClient;
Ticker mqttReconnectTimer;

WiFiEventHandler wifiConnectHandler;
WiFiEventHandler wifiDisconnectHandler;
Ticker wifiReconnectTimer;

unsigned long previousMillis = 0;   
const long interval = 5000;        

void connectToWifi() {
  Serial.println("Connecting to Wi-Fi...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
}

void onWifiConnect(const WiFiEventStationModeGotIP& event) {
  Serial.println("Connected to Wi-Fi.");
  connectToMqtt();
}

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) {
  Serial.println("Disconnected from Wi-Fi.");
  mqttReconnectTimer.detach(); 
  wifiReconnectTimer.once(2, connectToWifi);
}

void connectToMqtt() {
  Serial.println("Connecting to MQTT...");
  mqttClient.connect();
}

void onMqttConnect(bool sessionPresent) {
  Serial.println("Connected to MQTT.");
  Serial.print("Session present: ");
  Serial.println(sessionPresent);
}

void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) {
  Serial.println("Disconnected from MQTT.");

  if (WiFi.isConnected()) {
    mqttReconnectTimer.once(2, connectToMqtt);
  }
}

void onMqttPublish(uint16_t packetId) {
  Serial.print("Publish acknowledged.");
  Serial.print("  packetId: ");
  Serial.println(packetId);
}

void setup() {
  Serial.begin(115200);
  Serial.println();
  
  dht.begin();
  
  wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
  wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
  

  mqttClient.onConnect(onMqttConnect);
  mqttClient.onDisconnect(onMqttDisconnect);
  mqttClient.onPublish(onMqttPublish);
  mqttClient.setServer(MQTT_HOST, MQTT_PORT);
  
  connectToWifi();
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    hum = dht.readHumidity();
    temp = dht.readTemperature();
    
    if (isnan(temp) || isnan(hum)) {
      Serial.println(F("Failed to read from DHT sensor!"));
      return;
    }  
    
    // Publish an MQTT message on topic esp8266/dht/temperature
    uint16_t packetIdPub1 = mqttClient.publish(MQTT_PUB_TEMP, 1, true, String(temp).c_str());                            
    Serial.printf("Publishing on topic %s at QoS 1, packetId: %i", MQTT_PUB_TEMP, packetIdPub1);
    Serial.printf("Message: %.2f \n", temp);

    // Publish an MQTT message on topic esp8266/dht/humidity
    uint16_t packetIdPub2 = mqttClient.publish(MQTT_PUB_HUM, 1, true, String(hum).c_str());                            
    Serial.printf("Publishing on topic %s at QoS 1, packetId %i: ", MQTT_PUB_HUM, packetIdPub2);
    Serial.printf("Message: %.2f \n", hum);
  }
}

Mais n’oublie pas plusieurs choses
Ça demande une alimentation externe et oublie en autonome
et ça demande d’aller récupérer dans le broker MQTT les valeur pour les exploiter dans HA
Donc la solution d’un capteur zigbee direct reconnu ça sera bien plus simple.
Tout dépend de ta démarche.
Je veux un truc qui marche de suite
Je veux explorer de la technique.

Avec la solution d’un ESP32 et d’une sonde de température, tu peux flasher ton ESP avec ESPHome et la sonde sera automatiquement reconnue par HA et les valeurs accessibles dans des sensors.

Encore plus simple que le code présenté.

L’ajout de la sonde de température en YAML dans ESPHome :

sensor:
  - platform: dht
    model: dht22
    pin: GPIO15
    temperature:
      name: Température
    humidity:
      name: Humidité
    update_interval: 60s

Extrait de l’article sur la domotisation d’une porte de poulailler

LeorFinacre CQFD, avec tout ca, denisv a de quoi creuser pour trouver la bonne solution qui lui convient.

1 « J'aime »