Acquérir Signal PT100 dans jeedom

Salut a tous

J’ai un probleme, je cherche a aquerir un signal d’une sonde PT100 dans jeedom mais je bloque. Je dispose d’un arduino uno et d’une carte max31865 PT100. J’arrive a récolter la valeur de la température dans la consol via le logiciel arduino, mais je ne sais pas comment récupérer cette valeur dans jeedom. J’ai installé jeeduino mais je ne comprends pas comment faire le lien avec l’arduino et la carte max31865, est ce que quelqu’un peu m’aider ?

Pour remonter les valeurs dans le logiciel Arduino, tu utilises ton propre sketch ?

Si oui, tu peux le modifier pour faire remonter les valeurs directement à Jeedom. Tu peux t’inspirer des échanges qu’on a eu dans ce fil de discussion ou de ce tutoriel : Comment envoyer des données à Jeedom via l’API JSON depuis un IoT ESP8266.

Jeeduino crée des sketchs qui font le lien directement, mais il faut que l’équipement soit supporté. Je ne sais pas si c’est le cas pour le max31865.

Non malheureusement il n’est pas compatible. Le lien que tu m’as envoyé fonctionne en wifi, est ce faisable en USB, en modbus RS485par exemple ?

Je me suis basé sur la library officiel du max31865

/*************************************************** 
  This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  thermo.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
}


void loop() {
  uint16_t rtd = thermo.readRTD();

 //Serial.print("RTD value: "); Serial.println(rtd);
  float ratio = rtd;
  ratio /= 32768;
  //Serial.print("Ratio = "); Serial.println(ratio,8);
  //Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
  //Serial.print("Temperature = "); 
Serial.println(thermo.temperature(RNOMINAL, RREF));

  // Check and print any faults
  uint8_t fault = thermo.readFault();
  if (fault) {
    Serial.print("Fault 0x"); Serial.println(fault, HEX);
    if (fault & MAX31865_FAULT_HIGHTHRESH) {
      Serial.println("RTD High Threshold"); 
    }
    if (fault & MAX31865_FAULT_LOWTHRESH) {
      Serial.println("RTD Low Threshold"); 
    }
    if (fault & MAX31865_FAULT_REFINLOW) {
      Serial.println("REFIN- > 0.85 x Bias"); 
    }
    if (fault & MAX31865_FAULT_REFINHIGH) {
      Serial.println("REFIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_RTDINLOW) {
      Serial.println("RTDIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_OVUV) {
      Serial.println("Under/Over voltage"); 
    }
    thermo.clearFault();
  }
  Serial.println();
  delay(5000);
}

Rien de très complexe.

Ah oui j’ai pas fait gaffe. Du coup l’Arduino serait relié à Jeedom par le port USB c’est ça ? Dans ce cas, on doit pouvoir s’en sortir avec un script (python, php, bash…) et le plugin Script côté Jeedom. Mais sûrement un peu plus compliqué.

Edit : j’ai trouvé cet exemple mais il y en a sûrement plein d’autres Communication série facile avec python

Au prix d’un esp mini ça vaut peut’être le coup d’éliminer la connexion usb et la filerie qui va avec…

1 « J'aime »

Je voulais justement éviter un esp* pour eviter de passer par une connection wifi, mais si c’est la seule solution, je passerai par la. Je vais tester la solution de @seb821 avec le plugin script en esperant que ça fonctionne, sinon je passerai par un esp8266

Non non c’est pas la seule solution c’est juste beaucoup plus léger que la gestion d’un port usb/serie sur ta machinne.

1 « J'aime »

Bonjour a tous, je reviens vers vous avec une nouvelle idée, est ce possible de brancher directement le module sur le Raspberry pi et de lire les données avec un script python comme c’est expliqué dans ce lien ? Python & CircuitPython | Adafruit MAX31865 RTD PT100 or PT1000 Amplifier | Adafruit Learning System.

Autant je maitrise jeedom et tout ces plugins autant la programmation c’est nouveau pour moi. Le raspberry, l’arduino et le module max31865 sont dans le même coffret électrique, a final je pourrais le passer de l’arduino en me branchant directement sur les GPIO du raspberry non ?

Bon j’ai finalement réussi, en me branchant sur les GPIO du Raspberry, en activant i2c et le port série sur le gpio et en téléversant le code python. Je me passe du coup de l’Arduino et c’est très bien comme ça !