Intégrer un TSL à influxDB : Aide

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
Vinz187
Messages : 2
Inscription : 28 oct. 2022, 10:20

Intégrer un TSL à influxDB : Aide

Message par Vinz187 »

Bonjour,
Je m'excuse d'avance pour la localisation de ce post, je ne sais pas trop où le poster.

Je débute depuis peu dans la programmation.
J’ai un projet de « climat », voici le matériel utilisé :
- ESP32
- DHT22 (température, humidité)
- TSL2561 (luminosité en « lux »)
J’utilise influx pour visualiser mes données sauvegardées.
Je ne suis pas habitué à utiliser influx, et je n’arrive pas à intégrer le TSL2561 pour afficher ces valeurs (et courbes).
Je programme avec PlatformIO et VS Code (version Mac)

Pourriez-vous m’aider ?

Voici mon code utilisé :

Code : Tout sélectionner

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include "DHT.h"
#include <WiFi.h>
#include <InfluxDbClient.h>
#include <InfluxDbCloud.h>

#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#define DEVICE "ESP32"

// Heure Paris : https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
#define TZ_INFO "CET-1CEST,M3.5.0,M10.5.0/3"

// WiFi AP SSID
#define WIFI_SSID "*******************"
#define WIFI_PASSWORD "*******************"
#define INFLUXDB_URL "*******************"
#define INFLUXDB_TOKEN "*******************"
#define INFLUXDB_ORG "*******************"
#define INFLUXDB_BUCKET "Climat Bonsai Hiver"
InfluxDBClient client(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN, InfluxDbCloud2CACert);

// Data point
Point sensorReadings("measurements");
Point sensor("wifi_status");

// connexion de la pin digital du capteur sur la broche n°2 
#define DHTPIN 4
#define DHTTYPE DHT22

// Déclaration DHT22 
DHT dht(DHTPIN, DHTTYPE);

float temperature;
float humidity;

void setup() {
  Serial.begin(115200);

  // Setup wifi
  WiFi.mode(WIFI_STA);
  wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD);

  Serial.print("Connecting to wifi");
  while (wifiMulti.run() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();

  //Init DHT22
  dht.begin();

  // Add tags
  sensorReadings.addTag("device", DEVICE);
  sensorReadings.addTag("location", "Salon");
  sensorReadings.addTag("sensor", "DHT");
  sensor.addTag("SSID", WiFi.SSID());

  timeSync(TZ_INFO, "pool.ntp.org", "time.nis.gov");

  // Check server connection
  if (client.validateConnection()) {
    Serial.print("Connected to InfluxDB: ");
    Serial.println(client.getServerUrl());
  } else {
    Serial.print("InfluxDB connection failed: ");
    Serial.println(client.getLastErrorMessage());
  }
}

void loop() {
  // Get latest sensor readings
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();

  // Add readings as fields to point
  sensorReadings.addField("temperature", temperature);
  sensorReadings.addField("humidity", humidity);
  sensor.addField("rssi", WiFi.RSSI());


  // Print what are we exactly writing
  Serial.print("Writing: ");
  Serial.print(client.pointToLineProtocol(sensorReadings));
  Serial.println(client.pointToLineProtocol(sensor));

  
  // Write point into buffer
  client.writePoint(sensorReadings);
  client.writePoint(sensor);


  // Clear fields for next usage. Tags remain the same.
  sensorReadings.clearFields();
  sensor.clearFields();

  // If no Wifi signal, try to reconnect it
  if (wifiMulti.run() != WL_CONNECTED) {
    Serial.println("Wifi connection lost");
  }

  // Wait 10s
  Serial.println("Wait 10s");
  delay(10000);
Voici le code pour l’utilisation du TSL2561 :

Code : Tout sélectionner

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>
   
Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);

/**************************************************************************/
/*
    Displays some basic information on this sensor from the unified
    sensor API sensor_t type (see Adafruit_Sensor for more information)
*/
/**************************************************************************/
void displaySensorDetails(void)
{
  sensor_t sensor;
  tsl.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" lux");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" lux");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" lux");  
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

/**************************************************************************/
/*
    Configure le gain et le temps d'intégration pour le TSL2561
*/
/**************************************************************************/
void configureSensor(void)
{
  /* Vous pouvez également définir manuellement le gain ou activer la prise en charge du gain automatique */
  // tsl.setGain(TSL2561_GAIN_1X);      /* Pas de gain... à utiliser en pleine lumière pour éviter la saturation du capteur */
  // tsl.setGain(TSL2561_GAIN_16X);     /* 16x gain ... utiliser en basse lumière pour augmenter la sensibilité */
  tsl.enableAutoRange(true);            /* Auto-gain ... bascule automatiquement entre 1x et 16x */
  
  /* La modification du temps d'intégration vous donne une meilleure résolution du capteur (402ms = 16-bit data) */
  tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);      /* rapide mais faible résolution */
  // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS);  /* résolution et vitesse moyennes */
  // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS);  /* 16-bit data mais les conversions sont plus lentes */

  /* Mettez à jour ces valeurs en fonction de ce que vous avez défini ci-dessus! */  
  Serial.println("------------------------------------");
  Serial.print  ("Gain:         "); Serial.println("Auto");
  Serial.print  ("Timing:       "); Serial.println("13 ms");
  Serial.println("------------------------------------");
}

/**************************************************************************/
/*
    Arduino setup function (automatically called at startup)
*/
/**************************************************************************/
void setup(void) 
{
  Serial.begin(115200);
  Serial.println("Light Sensor Test"); Serial.println("");
  
  /* Initialiser le capteur */
  //use tsl.begin() to default to Wire, 
  //tsl.begin(&Wire2) directs api to use Wire2, etc.
  if(!tsl.begin())
  {
    /* There was a problem detecting the TSL2561 ... check your connections */
    Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }
  
  /* Afficher quelques informations de base sur ce capteur */
  displaySensorDetails();
  
  /* Configurer le gain du capteur et le temps d'intégration */
  configureSensor();
  
  /* We're ready to go! */
  Serial.println("");
}

/**************************************************************************/
/*
    Arduino loop function, called once 'setup' is complete (your own code
    should go here)
*/
/**************************************************************************/
void loop(void) 
{  
  /* Obtenir un nouvel événement de capteur */ 
  sensors_event_t event;
  tsl.getEvent(&event);
 
  /* Afficher les résultats (la lumière est mesurée en lux) */
  if (event.light)
  {
    Serial.print(event.light); Serial.println(" lux");
  }
  else
  {
    /* If event.light = 0 lux le capteur est probablement saturé
       et aucune donnée fiable n'a pu être générée ! */
    Serial.println("Sensor overload");
  }
  delay(250);
}
Merci à vous pour le coup de main, vraiment compliqué d'integrer de nouveau capteur à influx quand on débute ...
Soyez indulgent avec moi :D :roll:
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Intégrer un TSL à influxDB : Aide

Message par Keros »

Bonjour Vinz187 et bienvenu sur ce forum :)

J'ai déplacé ton sujet dans notre section dédiée aux objets DIY.

Ce forum est dédié à la solution domotique DomoticZ. Dans le principe, tous les membres parcourant le forum centralisent leurs données dans DomoticZ. Je ne pense pas que tu trouveras ici beaucoup de réponses au sujet d'InnfluxDB et de la programmation sous PlatformIO et VS Code.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Vinz187
Messages : 2
Inscription : 28 oct. 2022, 10:20

Re: Intégrer un TSL à influxDB : Aide

Message par Vinz187 »

Merci a toi pour ton retour,
Je vais continuer a me creuser la tête pour trouver une solution, en espérant qu’un adepte d’influx passe dans le coin.

Sinon si toi ou quelqu’un a une alternative a mon besoin …
C’est a dire récupérer mes données pour les afficher sous forme de courbe, avec un historique sur quelques jours.
Malheureusement je n’ai n’y de serveur a mon domicile, ni de raspberry (vu le prix qui continue de monter c’est pas demain que je vais en acheter un)
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Intégrer un TSL à influxDB : Aide

Message par Keros »

DomoticZ peut fonctionner sur un PC Windows. Tu peux y remonter des données depuis un ESP via Tasmota ou ESPEasy.
Tu pourras voir les courbes "détaillées" (un point toutes les 5 minutes) sur les 7 derniers jours puis une courbe de la moyenne, le min et le max pour jour sur les 30 derniers jours et sur l'année passée. Les anciennes données sont accessibles sous forme de tableau moyenne - min - max.
Tu peux regarder le wiki Domoticz, tu devrais avoir des exemples.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre