Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

Piscine PH ORP / Problème inclusion

Retrouvez ici des sujets concernant le protocole mySensors et les modules domotiques de type mySensors utilisés avec JEEDOM
/!\ Plugin mySensors non officiel
glouch
Timide
Messages : 2
Inscription : 19 avr. 2016, 10:22

Piscine PH ORP / Problème inclusion

Message par glouch » 16 août 2017, 18:49

Bonjour,

J'aurai besoin d'un petit coup de main, je suis vraiment bloqué depuis 2 jours sur l'inclusion, tout reste vide (aucun noeud). Je tourne en rond!
En fait j'aimerai remonter le PH et le Chlore dans jeedom par le réseau (interface w5100).

Le plugin et les dépendances sont bien installés et le demon est bien démarré.

Jusque la facile!

voici mon sketch :

Code : Tout sélectionner


// Enable debug prints to serial monitor
#define MY_DEBUG

// Enable and select radio type attached
//#define MY_RADIO_NRF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

// Enable gateway ethernet module type
#define MY_GATEWAY_W5100

// W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
//#define MY_W5100_SPI_EN 4

// Enable Soft SPI for NRF radio (note different radio wiring is required)
// The W5100 ethernet module seems to have a hard time co-operate with
// radio on the same spi bus.
#if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
#define MY_SOFTSPI
#define MY_SOFT_SPI_SCK_PIN 14
#define MY_SOFT_SPI_MISO_PIN 16
#define MY_SOFT_SPI_MOSI_PIN 15
#endif

// When W5100 is connected we have to move CE/CSN pins for NRF radio
#ifndef MY_RF24_CE_PIN
#define MY_RF24_CE_PIN 5
#endif
#ifndef MY_RF24_CS_PIN
#define MY_RF24_CS_PIN 6
#endif

// Enable UDP communication
//#define MY_USE_UDP  // If using UDP you need to set MY_CONTROLLER_IP_ADDRESS below

// Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
#define MY_IP_ADDRESS 192,168,1,228

// If using static ip you can define Gateway and Subnet address as well
#define MY_IP_GATEWAY_ADDRESS 192,168,1,1
#define MY_IP_SUBNET_ADDRESS 255,255,255,0

// Renewal period if using DHCP
//#define MY_IP_RENEWAL_INTERVAL 60000

// The port to keep open on node server mode / or port to contact in client mode
#define MY_PORT 5003

// Controller ip address. Enables client mode (default is "server" mode).
// Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
//#define MY_CONTROLLER_IP_ADDRESS 192,168,1,120

// The MAC address can be anything you want but should be unique on your network.
// Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
// Note that most of the Ardunio examples use  "DEAD BEEF FEED" for the MAC address.
#define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE

// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN  3

// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300

// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 7  // Error led pin
//#define MY_DEFAULT_RX_LED_PIN  8  // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN  9  // Transmit led pin

#if defined(MY_USE_UDP)
#include <EthernetUdp.h>
#endif
#include <Ethernet.h>
#include <MySensors.h>
#include <SPI.h>


// External IO Pins 
#define PH_PIN  A1  
#define ORP_PIN  A0  


// Runtime constants
#define day 86400000L 
#define hour 3600000L 
#define minute 60000L 
#define second  1000L 



MyMessage ph_msg( 0, 51 ),
          orp_msg( 0, 52 ),
          var1_msg( 0 , V_VAR1 ), 
          var2_msg( 0 , V_VAR2 ),
          var3_msg( 0 , V_VAR3 );

// Misc 
#define pHOffset         0.00  // pH deviation compensate
#define samplingInterval 20    // in miliseconds 
#define arrayLenth       40    // times of collection

// PH / ORP / Temp  Reading
static unsigned long samplingTime = millis();
static float temp, ph, orp, voltage;
static float aux, dif, old_ph=999, old_orp=999, old_temp=999;
int   battery, counter = -1, 
      old_bat=999, old_volt=9999; 


int readings[arrayLenth];   //Store the average value of the sensor feedback
int arrayIndex = 0;

// Misc  
float vout = 0.0;
float vin = 0.0;
int value = 0;



void setup()
{
  Serial.begin(115200);
  Serial.println(F("Init..."));

  // IO PINS
  pinMode( PH_PIN  , INPUT );
  pinMode( ORP_PIN , INPUT ); 

}


void presentation()
{
   sendSketchInfo("Piscine_PH_ORP", "1.0", true);
   present( 0, 39); 
}



void loop()      
{  // Automation controller
  //process();

  // Force a refresh on each hour...
  if ( ++counter == 5 ) {
    ph = orp = temp = -999;
    battery = voltage = -999;
    counter = 0;
    
  }
//////// PH Reading
  arrayIndex = 0;
  while ( arrayIndex < arrayLenth )
    if (millis() - samplingTime > samplingInterval)
    {
      readings[arrayIndex++] = analogRead(PH_PIN);
      samplingTime = millis();
    }
  
  voltage = avergearray( readings, arrayLenth ) * 3.30 / 1024.0;
  ph = 3.5 * ( voltage + pHOffset );

  Serial.print("PH Probe voltage:");
  Serial.print(voltage, 4);
  Serial.print("    pH value: ");
  Serial.println( ph , 2);
  dif = old_ph - ph;
  if ( abs( dif ) > 0.005 ) {
     old_ph = ph;
     send( ph_msg.set( ph , 2 ) ) ;
     send( var1_msg.set( voltage, 4) ); 
  }


  /////////// ORP 
  arrayIndex = 0;
  while ( arrayIndex < arrayLenth )
    if (millis() - samplingTime > samplingInterval)
    {
      readings[arrayIndex++] = analogRead(ORP_PIN);
      samplingTime = millis();
    }

  voltage = avergearray( readings, arrayLenth ) * 3.31 / 1024.0;
  orp = ( 2.5 - voltage ) / 1.037 ;

  Serial.print("ORP Probe voltage:");
  Serial.print( voltage, 4);
  Serial.print("    ORP value: ");
  Serial.println( orp, 2 );  
  dif = old_orp - orp;
  if ( abs( dif ) > 0.005 ) {
     old_orp = orp; 
    send( orp_msg.set( orp , 2 ) ) ;
     send( var2_msg.set( voltage, 4) ); 
  }

 
  
  //delay(715000);
 wait(500);
 // sleep( 715000U );   // Sleeps for 12m


}


double avergearray(int* arr, int number) {
  int i;
  int max, min;
  double avg;
  long amount = 0;
  if (number <= 0) {
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if (number < 5) { //less than 5, calculated directly statistics
    for (i = 0; i < number; i++) {
      amount += arr[i];
    }
    avg = amount / number;
    return avg;
  } else {
    if (arr[0] < arr[1]) {
      min = arr[0]; max = arr[1];
    }
    else {
      min = arr[1]; max = arr[0];
    }
    for (i = 2; i < number; i++) {
      if (arr[i] < min) {
        amount += min;      //arr<min
        min = arr[i];
      } else {
        if (arr[i] > max) {
          amount += max;  //arr>max
          max = arr[i];
        } else {
          amount += arr[i]; //min<=arr<=max
        }
      }//if
    }//for
    avg = (double)amount / (number - 2);
  }//if
  return avg;
}








void time() {

  long timeNow = millis();

  int days = timeNow / day ;                                //number of days
  int hours = (timeNow % day) / hour;                       //the remainder from days division (in milliseconds) divided by hours, this gives the full hours
  int minutes = ((timeNow % day) % hour) / minute ;         //and so on...
  int seconds = (((timeNow % day) % hour) % minute) / second;

  // digital clock display of current time
  Serial.print(days, DEC);
  printDigits(hours);
  printDigits(minutes);
  printDigits(seconds);
  Serial.println();

}

void printDigits(byte digits) {
  // utility function for digital clock display: prints colon and leading 0
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits, DEC);
}


/* Read internal Vcc reference 
 *  
 */
float readVcc()
{
  signed long resultVcc;
  float resultVccFloat;
  // Read 1.1V reference against AVcc
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(10);                           // Wait for Vref to settle
  ADCSRA |= _BV(ADSC);                 // Convert
  while (bit_is_set(ADCSRA, ADSC));
  resultVcc = ADCL;
  resultVcc |= ADCH << 8;
  resultVcc = 1126400L / resultVcc;    // Back-calculate AVcc in mV
  resultVccFloat = (float) resultVcc / 1000.0; // Convert to Float

  return resultVccFloat;
}

Voici le debug:

Code : Tout sélectionner

Wed Aug 16 2017 16:39:25 GMT+0000 (UTC) - Jeedom url : http://127.0.0.1:80/plugins/mySensors/core/api/jeeSensors.php?apikey=h83ypOs7xwPwOgYDlUrgHLB0hLAMUJPi&gateway=192.168.1.228, gwAddress : 192.168.1.228:5003
Wed Aug 16 2017 16:39:25 GMT+0000 (UTC) - server bound on 8019
Wed Aug 16 2017 16:39:25 GMT+0000 (UTC) - connected to network gateway at 192.168.1.228:5003:network
Wed Aug 16 2017 16:39:25 GMT+0000 (UTC) : http://127.0.0.1:80/plugins/mySensors/core/api/jeeSensors.php?apikey=h83ypOs7xwPwOgYDlUrgHLB0hLAMUJPi&gateway=192.168.1.228&messagetype=saveGateway&sender=0&sensor=0&type=0&payload=1
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : 0;0;1;0;51;6.09
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : http://127.0.0.1:80/plugins/mySensors/core/api/jeeSensors.php?apikey=h83ypOs7xwPwOgYDlUrgHLB0hLAMUJPi&gateway=192.168.1.228&messagetype=saveValue&sender=0&sensor=0&type=51&payload=6.09
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : 0;0;1;0;51;6.09
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : 0;0;1;0;24;1.7414
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : http://127.0.0.1:80/plugins/mySensors/core/api/jeeSensors.php?apikey=h83ypOs7xwPwOgYDlUrgHLB0hLAMUJPi&gateway=192.168.1.228&messagetype=saveValue&sender=0&sensor=0&type=24&payload=1.7414
Wed Aug 16 2017 16:39:26 GMT+0000 (UTC) : 0;0;1;0;24;1.7414

J'ai le même résultat avec la version stable et beta du plugin mysensors.


Merci d'avance pour votre aide

glouch

Avatar de l’utilisateur
MmX
Actif
Messages : 502
Inscription : 03 mars 2015, 23:09
Localisation : Rodez

Re: Piscine PH ORP / Problème inclusion

Message par MmX » 17 août 2017, 01:42

Salut,

S_WATER_QUALITY n'est pas prit en charge par le plugin. (Vu sur la doc)

Faut les transformés en S_CUSTOM.

mrcrabs
Timide
Messages : 31
Inscription : 23 janv. 2016, 11:57

Re: Piscine PH ORP / Problème inclusion

Message par mrcrabs » 13 sept. 2017, 14:50

Salut!

Euh je viens de le mettre en place chez moi, je suis bien en S_WATER_QUALITY, enfin "de mémoire".

Je te confirme ça ce soir.

A ce propos en regardant ton code, je constate l'utilisation de la carte d'interface Phidgets 1130 ? Peux-tu me confirmer ?

Très beau projet, si tu veux un coup de main dis le moi ! Surtout sur la calibration et la compensation en température automatique, je me suis bien pris la tête avec les équations etc... c'était bien sympa et ça marche du tonnerre :)

Je peux te filer avec grand plaisir les algos que j'ai pondu !

++

mrcrabs
Timide
Messages : 31
Inscription : 23 janv. 2016, 11:57

Re: Piscine PH ORP / Problème inclusion

Message par mrcrabs » 13 sept. 2017, 14:50

PS: et bienvenue glouch sur Jeedom! ;-)

Avatar de l’utilisateur
yogui
Actif
Messages : 846
Inscription : 11 févr. 2015, 21:52
Localisation : Alsace

Re: Piscine PH ORP / Problème inclusion

Message par yogui » 13 sept. 2017, 20:01

salut,
de mémoire Jeedom ne gère pas les capteur branché sur la gateway ! ce qui pourrait etre ton problème
Raspberry PI 2 , Razberry Zwave +
Fibaro FGRM-222
Qubino ZMNHCA2
Fibaro FGS-222
Qubino ZMNHBA2
Everspring AN180-6
Everspring Z-WAVE SP-103
Raspberry Pi 2 + touch 3.5" en Squeezebox
Modules Mysensors

Dev. Librairie Arduino pour Somfy RTS

mrcrabs
Timide
Messages : 31
Inscription : 23 janv. 2016, 11:57

Re: Piscine PH ORP / Problème inclusion

Message par mrcrabs » 14 sept. 2017, 13:56

Hello

je confirme je suis bien en type "39 - Qualité eau" avec d'un coté un "51 - Eau Ph" et de l'autre un "52 - Eau ORP"... Ton plugin est à jour ?

@yogui : tu as l'oeil je n'avais pas vu que le code etait en config gateway ! ca marche pas...

Avatar de l’utilisateur
MmX
Actif
Messages : 502
Inscription : 03 mars 2015, 23:09
Localisation : Rodez

Re: Piscine PH ORP / Problème inclusion

Message par MmX » 15 sept. 2017, 23:38

Arf !

Je me fiais juste à la doc ! :?

glouch
Timide
Messages : 2
Inscription : 19 avr. 2016, 10:22

Re: Piscine PH ORP / Problème inclusion

Message par glouch » 01 oct. 2017, 13:26

Salut et merci à tous pour vos réponses.
En fait j'ai abandonné l'option gateway réseau, que je n'ai jamais réussi à faire fonctionné.

yogui tu as probablement raison, jeedom ne doit pas gérer les capteurs sur le gateway réseau / En tous cas moi j'ai jamais réussi à le faire fonctionner

Bref, Je suis parti sur un gateway serie, j'ai ajouté un raspberryPI3 comme jeedom déporté et je lui ai mis au "cul" la gateway serie.

Ça à le mérite de fonctionner, par contre j'utilise un raspeberry juste pour ça, c'est un élément supplémentaire, donc un risque de panne en plus.

Pour répondre à mrcrabs, oui j'utilise bien 2 'Phidgets 1130' un pour le PH et l'autre ORP et oui je veux bien un petit coup de main, si tu peux m'envoyer ton code ça serait cool, car chez moi la partie PH fonctionne bien par contre l'ORP me donne toujours la même valeur, il faut que je trouve pourquoi. J'ai encore un petite question, comment as tu branché les alimentations des phidgets ?

Encore merci.

k68
Timide
Messages : 1
Inscription : 15 oct. 2017, 14:58

Re: Piscine PH ORP / Problème inclusion

Message par k68 » 15 oct. 2017, 15:19

Bonjour a tous

je démarre juste mon node piscine, j ai comme idée de mesurer le paramètres suivants:
température
PH
ORP
+ commande de la pompe

le but est d'éviter les mesures manuelles et aussi pour l hiver d activer la pompe en cas de gel

mrcrabs je serai intéressé par les équations de compensation en température

Et quelqu'un a essayer de convertir le potentiel ORP en concentration de chlore

merci et bon courage a tous dans vos développements

Répondre

Revenir vers « [Plugin Tiers] MySensors »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité