Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers][Sujet Principal] Jeedouino

Pour échanger sur les plugins classés en catégorie "Protocoles domotiques"
delscate
Timide
Messages : 152
Inscription : 06 oct. 2014, 11:00

Re: [Sujet officiel] : Jeedouino

Message par delscate » 02 mars 2016, 20:42

Petite question, suite à la réception de mes ESP8266, je suis en train d'essayer de mettre en place des capteurs.

Suite à la configuration des modules, j'ai récupéré les sketchs associés.

Au niveau de la compilation depuis arduino, je rencontre un problème, les fonction n'étant pas pas déclarées en début de fichier il y a un problème de compilation "'Init_EEPROM' was not declared in this scope". Je suis sous l'IDE 1.6.7

Comment arrivez vous à les compiler ? Vous passez par autre chose que l'IDE arduino ?

Je veux bien modifier le code, mais le plus simple serait quand meme que dans les templates, les fonctions soit déclarées en entête de ficher.

Merci pour la réponse.
Jeedom Dev sur Rapberry B 2
mySensors : Serial Gateway, 2 DS18B20 sur pile (Laregie), Téléinfo
arduidom : DHT11, 433Mhz Chacon : prises, interrupteurs, télécommande, modules encastrables
Flower Power (bt) : 2 Flower Power
I <3 JEEDOM

Avatar de l’utilisateur
revlys
Timide
Messages : 330
Inscription : 05 mai 2015, 17:10
Localisation : Gard

Re: [Sujet officiel] : Jeedouino

Message par revlys » 03 mars 2016, 10:44

Bonjour,

C'est un problème entre l'arduino IDE 1.6.7 et sa gestion du module 'esp8266' intégré. Avec l'arduino IDE 1.6.5, il n'y a pas ce soucis.
Sans titre 1.jpg
Sans titre 1.jpg (81.05 Kio) Consulté 2981 fois
Il y a beaucoup de sujets la-dessus.

La déclaration de fonctions en entête de sketch est effectivement un palliatif, cependant ce n’était pas recommandé par la team Arduino.

Bonne journée.

delscate
Timide
Messages : 152
Inscription : 06 oct. 2014, 11:00

Re: [Sujet officiel] : Jeedouino

Message par delscate » 03 mars 2016, 11:04

Merci pour la réponse je vais downgrader la version.

Le problème de la déclaration des fonctions n'est pas liée a la gestion de l'esp puisqu'il me donné de erreurs dans les fonctions présente dans le sketch.
Je vais essayer tout ce ce soir

Envoyé de mon Mi-4c en utilisant Tapatalk
Jeedom Dev sur Rapberry B 2
mySensors : Serial Gateway, 2 DS18B20 sur pile (Laregie), Téléinfo
arduidom : DHT11, 433Mhz Chacon : prises, interrupteurs, télécommande, modules encastrables
Flower Power (bt) : 2 Flower Power
I <3 JEEDOM

Avatar de l’utilisateur
revlys
Timide
Messages : 330
Inscription : 05 mai 2015, 17:10
Localisation : Gard

Re: [Sujet officiel] : Jeedouino

Message par revlys » 03 mars 2016, 11:12

Si si c'est bien lié à la gestion ESP...

Elle fait planter le préprocesseur de l'IDE, qui génère automatiquement les déclarations de fonctions lors de la compilation.
D’où les erreurs de déclarations....

Un lien parmi tant d'autres : https://github.com/arduino/arduino-builder/issues/68

A+

carlton
Timide
Messages : 2
Inscription : 28 mai 2015, 21:39

Re: [Sujet officiel] : Jeedouino

Message par carlton » 04 mars 2016, 18:21

Bonjour à tous,
Déjà chapeau pour le boulot accompli sur le plugin.
Après, j’aurai besoin d’un peu d’aide, je vous détaille ma config :
Une machine virtuelle jeedom maitre et un rpi2 en esclave jeeduino, rfxcom, zwave
Jeeduino est utilisé pour activer des relais sur le rpi2 qui commandent l’éclairage de la maison.
Voilà, j’aurai juste 2, 3 questions :
- Depuis la dernière mise à jour de jeedom 2.1.1 et du plugin jeeduino, le plugin n’affiche plus son état de sante dans la page dédiée, je suppose que cela viendra avec la compatibilité de la v2 ?

- Sinon je vis dans les DOM/TOM et les coupures de courant sont légions ici, les onduleurs ne suivent pas toujours, il arrive donc que la machine virtuelle ou le rpi2 soient obligés de redémarrer, je me retrouve donc avec un problème à ce moment-là. Au redémarrer de jeedom, les commandes dans jeeduino ne sont pas régénérées automatiquement :
- Est-ce que ce comportement est normal ?
- Est-ce que j’ai la possibilité que mon jeedom les régénèrent automatiquement au démarrage ?
Je n’ai pas trouvé de solution, j’ai peut-être raté un truc.
Merci d’avance

philgood
Timide
Messages : 4
Inscription : 15 févr. 2016, 22:08

Re: [Sujet officiel] : Jeedouino

Message par philgood » 04 mars 2016, 19:06

bonsoir ,

voici un log d'erreur si quelqu'un pouvez me le décoder. Le fatal error me perturbe et je ne sais plus ou chercher

2016/03/04 18:59:48 [error] 453#0: *611 FastCGI sent in stderr: "PHP message: PHP Fatal error: Call to a member function getCmd() on boolean in /usr/share/nginx/www/jeedom/plugins/jeedouino/core/php/Callback.php on line 82" while reading response header from upstream, client: 192.168.1.15, server: , request: "GET /plugins/jeedouino/core/php/Callback.php?BoardEQ=10&46=1&47=1&48=1&49=1&56=990&57=939 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.11"
2016/03/04 18:59:49 [error] 454#0: *615 FastCGI sent in stderr: "PHP message: PHP Fatal error: Call to a member function getCmd() on boolean in /usr/share/nginx/www/jeedom/plugins/jeedouino/core/php/Callback.php on line 82" while reading response header from upstream, client: 192.168.1.15, server: , request: "GET /plugins/jeedouino/core/php/Callback.php?BoardEQ=10&56=1013&57=999 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.11"
2016/03/04 18:59:49 [error] 454#0: *619 FastCGI sent in stderr: "PHP message: PHP Fatal error: Call to a member function getCmd() on boolean in /usr/share/nginx/www/jeedom/plugins/jeedouino/core/php/Callback.php on line 82" while reading response header from upstream, client: 192.168.1.15, server: , request: "GET /plugins/jeedouino/core/php/Callback.php?BoardEQ=10&55=1022 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.11"
2016/03/04 18:59:50 [error] 453#0: *623 FastCGI sent in stderr: "PHP message: PHP Fatal error: Call to a member function getCmd() on boolean in /usr/share/nginx/www/jeedom/plugins/jeedouino/core/php/Callback.php on line 82" while reading response header from upstream, client: 192.168.1.15, server: , request: "GET /plugins/jeedouino/core/php/Callback.php?BoardEQ=10&56=950&57=933 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.11"

parrain27240
Actif
Messages : 1629
Inscription : 24 juil. 2015, 20:15

Re: [Sujet officiel] : Jeedouino

Message par parrain27240 » 04 mars 2016, 19:51

bonsoir a tous étant un enormeeeee débutant dans la domotique et ayant chercher toute la journée la solution

voila j'ai 2 arduino
https://www.amazon.fr/gp/aw/d/B00QLOSFD

2 carte relais
https://www.amazon.fr/gp/aw/d/B00PQC34E

3 module 433
http://www.amazon.fr/433Mhz-metteur-cep ... module+433
et une sonde dht11
http://www.amazon.fr/Capteur-num%C3%A9r ... onde+dht11

voila mon projet et de connecter un émetteur récepteur au rpi ou se trouve jeedom jusque la sa va (suis nul mais sa j'ai trouver^^).

Ensuite je souhait brancher par usb ou gio mon arduino un au rpi .
Et sur le arduino un de mes relais et un émetteur récepteur .
et c'est cette parti qui me bloque n’étant un roi du pétrole j'aimerai pas tous cramer d'ou mon poste

Merci d'avance pour votre aide.

parrain27240
Actif
Messages : 1629
Inscription : 24 juil. 2015, 20:15

Re: [Sujet officiel] : Jeedouino

Message par parrain27240 » 04 mars 2016, 20:49

bon j'ai reussi après moulte rechercher a téléverser le sketch sur mon nano et brancher le relais sur le 5v gnd et d3.d4

Avatar de l’utilisateur
mapama
Timide
Messages : 74
Inscription : 26 janv. 2016, 18:50

Re: [Sujet officiel] : Jeedouino

Message par mapama » 05 mars 2016, 18:21

Bonjour,

J'utilise ce plugin très bien fait. Merci beaucoup.
Est-il possible de connecter plusieurs sondes ds18b20 sur le même pin (1-wire) ? Si oui, comment faut-il faire ?

Merci beaucoup

Mathieu

Ericd
Timide
Messages : 59
Inscription : 18 déc. 2014, 16:45
Localisation : Toulouse

Re: [Sujet officiel] : Jeedouino

Message par Ericd » 05 mars 2016, 21:13

m4tboy a écrit :Bonjour,

J'utilise ce plugin très bien fait. Merci beaucoup.
Est-il possible de connecter plusieurs sondes ds18b20 sur le même pin (1-wire) ? Si oui, comment faut-il faire ?

Merci beaucoup

Mathieu

Bonsoir

En lisant les révisions dans la doc
https://www.jeedom.com/doc/documentatio ... _2016_v0_9

Ce n'est pas possible => 1 sonde 1 pin
@+

Ericd

Avatar de l’utilisateur
mapama
Timide
Messages : 74
Inscription : 26 janv. 2016, 18:50

Re: [Sujet officiel] : Jeedouino

Message par mapama » 06 mars 2016, 00:03

Merci de la réponse...

Avatar de l’utilisateur
revlys
Timide
Messages : 330
Inscription : 05 mai 2015, 17:10
Localisation : Gard

Re: [Sujet officiel] : Jeedouino

Message par revlys » 06 mars 2016, 01:16

Bonsoir à tous,

Carlton, Oui tu supposes bien, j'ai désactivé la gestion des dépendances et des démons par Jeedom V2 car ça posait soucis. Pour voir si les démons sont ok, tu peux aller sur la page de configuration du plugin, en attendant que je règle tout ça.
Pour tes commandes non générées suite a un reboot, je ne saisis pas. Les commandes disparaissent de Jeedom, ou elles ne sont plus actives ? Penses que après un reboot, les démons ne redémarrent qu’après environ 4 minutes.

Philgood, le fatal error est du au fait que le plugin ne retrouve pas trace d'une commande dans jeedom. Alors soit un équipement a été supprimé/recréé et l'arduino non mis à jour, soit une commande a été supprimée sans passer par le paramétrage des pins et sauvegarde de l’équipement.
Dans tous les cas, après chaque modif sur le plugin, penses à sauver l’équipement afin que l'arduino reçoive bien les nouveaux paramètres. Si cela ne marche toujours pas, penses a me donner en plus de tes logs, le détail de la manip qui a conduit à cette erreur.

Parrain27240, Pour des relais tu y arriveras. Cependant, pour ce qui est des émetteurs/récepteurs 433, le plugin n'est pas du tout prévu pour cela. Je te conseille plutôt d'aller voir du coté du plugin arduidom qui est prévu pour.

M4tboy, je confirme la réponse faite par Ericd.

Ericd, Merci. Sinon, je n'ai pas eu le temps de te contacter. Tu as pu avancer sur tes tests ?

Bonne soirée,
Aimé.

parrain27240
Actif
Messages : 1629
Inscription : 24 juil. 2015, 20:15

Re: [Sujet officiel] : Jeedouino

Message par parrain27240 » 06 mars 2016, 11:45

Je doit les mettre en pulp up ?

Ericd
Timide
Messages : 59
Inscription : 18 déc. 2014, 16:45
Localisation : Toulouse

Re: [Sujet officiel] : Jeedouino

Message par Ericd » 06 mars 2016, 23:00

@ revlys

Je me remet aux tests....

J'ai refait une installation toute propre de jeedom et docker avec la dernière version 2.1.1 de jeedom.
Avec les conseilles de stef74,

Dans la configuration réseau : il faut penser à mettre à "OUI" "Désactiver la gestion du réseau par Jeedom"

Et mettre comme @ IP : 172.17.42.1
et le port : 80.

Du coup je n'ai plus les messages d'erreurs qu'il y avait.... :D

Mais je n'ai toujours pas de remonté de la sonde DS18B20 ni du DHT22.

J'ai remis ton patch 0.91a, (avant le retour d'état du relais fonctionnait, maintenant non)

Code : Tout sélectionner

2016-03-06 21:30:05][jeedouino][DEBUG] : -=-= Suite mise à jour du plugin, démarrage global des démons et re-génération des sketchs =-=-
[2016-03-06 21:30:05][jeedouino][DEBUG] : -=-= arduino  ( 1 ) =-=-
[2016-03-06 21:30:05][jeedouino][DEBUG] : Génération du sketch Arduino LAN.
[2016-03-06 21:30:05][jeedouino][DEBUG] : Création du Sketch Arduino Réseau pour l'équipement eqID : 1 - /var/www/html/plugins/jeedouino/sketchs/JeedouinoLAN_1.ino
[2016-03-06 21:30:07][jeedouino][DEBUG] : -=-= Fin du démarrage des démons et de la re-génération des sketchs =-=-
[2016-03-06 21:30:47][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S040S
[2016-03-06 21:30:47][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:30:49][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 21:30:49][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:30:54][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 21:30:54][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:30:55][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S040S
[2016-03-06 21:30:57][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:30:58][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 21:30:59][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:38:15][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 21:38:21][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S040S
[2016-03-06 21:38:22][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:38:26][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 21:38:26][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 21:38:33][jeedouino][DEBUG] : REPONSE  DE CONNECTION :
[2016-03-06 21:38:33][jeedouino][ERROR] : ERREUR SETTING PIN VALUE eqID ( 1 )- Réponse :
[2016-03-06 22:23:11][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 22:23:11][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 22:23:14][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S040S
[2016-03-06 22:23:14][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
[2016-03-06 22:23:16][jeedouino][DEBUG] : ConfigurePinValue auno ( 1 ) PinValue : S041S
[2016-03-06 22:23:16][jeedouino][DEBUG] : REPONSE  DE CONNECTION :SOK
le code généré

Code : Tout sélectionner

////////
// 
// Sketch Arduino pour le Plugin JEEDOUINO de JEEDOM
// Connection via Ethernet
//
////////

#include <SPI.h>
// Pour shield avec W5100
#include <Ethernet.h>

// Pour shield avec ENC28J60 
// Attention, problèmes de mémoire possibles sur arduino nano/uno/328 avec cette lib (v1.59)!
// Pour la récupérer, et l'installer dans l'IDE, voir : https://github.com/ntruchsess/arduino_uip/tree/Arduino_1.5.x
//
// Il faudra modifier dans le fichier \arduino-IDE\libraries\arduino_uip-master\utility\uipethernet-conf
// les lignes suivantes:
//#define UIP_SOCKET_NUMPACKETS    3
//#define UIP_CONF_MAX_CONNECTIONS 2
//#define UIP_CONF_UDP						 0
//
// Puis commenter (//) la ligne #include <Ethernet.h> ci-dessus^^, et décommenter le ligne ci-dessous
//#include <UIPEthernet.h>  // v1.59
// Traitement spécifique a cette librairie (pb de deconnection):
int UIPEFailCount = 0;
unsigned long UIPEFailTime = millis();

////////
// DHT
// https://github.com/adafruit/DHT-sensor-library
#include <DHT.h>

////////
// DS18x20
// https://github.com/PaulStoffregen/OneWire
#include <OneWire.h>

byte IP_ARDUINO[] = { 192, 168, 0, 61 }; 
byte IP_JEEDOM[] = { 172, 17, 42, 1 }; 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xE1 }; 
EthernetServer server(8000);

#include <EEPROM.h>

// CONFIGURATION VARIABLES

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define NB_DIGITALPIN 54
#define NB_ANALOGPIN 16
#else
#define NB_DIGITALPIN 14
#define NB_ANALOGPIN 6
#endif
#define NB_TOTALPIN ( NB_DIGITALPIN + NB_ANALOGPIN)

// Etat des pins de l'arduino ( Mode )
char Status_pins[NB_TOTALPIN];
byte pin_id;

String eqLogic = "";
String inString = "";
byte BootMode;

// Pour la detection des changements sur pins en entree
byte PinValue;
byte OLDPinValue[NB_TOTALPIN ];
unsigned long AnalogPinValue;
unsigned long OLDAnalogPinValue[NB_TOTALPIN ];
unsigned long CounterPinValue[NB_TOTALPIN ];
unsigned long PinNextSend[NB_TOTALPIN ];
byte swtch[NB_TOTALPIN];
// pour envoi ver jeedom
String jeedom = "\0";
// reception commande
char c[100];
byte n=0;
// Temporisation sorties
unsigned long TempoPinHIGH[NB_TOTALPIN ]; // pour tempo pins sorties HIGH
unsigned long TempoPinLOW[NB_TOTALPIN ]; // pour tempo pins sorties LOW
unsigned long pinTempo=0;
unsigned long NextRefresh=0;
DHT *myDHT[NB_TOTALPIN];
long ProbeNextSend=millis();

// SETUP 

void setup() 
{
  jeedom.reserve(128);
  inString.reserve(4);
  //Serial.begin(115200); // Init du Port serie/USB
  //Serial.setTimeout(5); // Timeout 5ms
  if (EEPROM.read(13) != 'J') Init_EEPROM();

  Ethernet.begin(mac, IP_ARDUINO);
  server.begin(); 
  Load_EEPROM(1);

  //Serial.println(F("JEEDOUINO IS HERE."));
 
}

// LOOP 

void loop() 
{
    // TRAITEMENT DES TEMPO SORTIES SI IL Y EN A
    jeedom="";
    for (int i = 2; i < NB_TOTALPIN; i++) 
    {
			  if (TempoPinHIGH[i]!=0 && TempoPinHIGH[i]<millis()) // depassement de la temporisation
			  {
			    TempoPinHIGH[i]=0; // Suppression de la temporisation
			    PinWriteHIGH(i);						
			  }
			  else if (TempoPinLOW[i]!=0 && TempoPinLOW[i]<millis()) // depassement de la temporisation
			  {
			    TempoPinLOW[i]=0; // Suppression de la temporisation
			    PinWriteLOW(i);			 
			  }
    }
    //if (jeedom!="") SendToJeedom();
    // FIN TEMPO
  
  // On ecoute le reseau
  EthernetClient client = server.available();
 
  if (client) 
  {
    // on regarde si on recois des donnees
    n=0;
    while (client.connected()) 
    {
			if (client.available()) 
			{
			  c[n] = client.read();   
			  if (c[n]=='\n') break;
			  n++;  
			}   
    }
    
    if (n && c[n]=='\n')
    {
			n--;
			// on les traites
			if (c[0]=='C' && c[n]=='C')   // Configuration de l'etat des pins
			{
			  // NB_TOTALPIN = NB_DIGITALPIN  + NB_ANALOGPIN
     
			  if (n==(NB_TOTALPIN+1))			   // Petite securite
			  {
			    for (int i = 2; i < NB_TOTALPIN; i++) 
			    {
						EEPROM.update(30+i, c[i+1]);			// Sauvegarde mode des pins 
			    }
			    Load_EEPROM(0);						  // On met en place
			    client.print(F("COK"));						   // On reponds a JEEDOM
			    jeedom+=F("&REP=COK"); 
			    ProbeNextSend=millis()+60000; // Décalage pour laisser le temps aux differents parametrages d'arriver de Jeedom
			  }
			}
			else if (c[0]=='E' && c[n]=='Q')  // Recuperation de l' eqLogic de Jeedom concernant cet arduino
			{
			  eqLogic = "";
			  EEPROM.update(15, n);			   // Sauvegarde de la longueur du eqLogic
			  for (int i = 1; i < n; i++) 
			  {
			    EEPROM.update(15+i, c[i]-'0');			// Sauvegarde de l' eqLogic
			    eqLogic += c[i];
			  } 
			  client.print(F("EOK"));						   // On reponds a JEEDOM
			  jeedom+=F("&REP=EOK");  
			  ProbeNextSend=millis()+60000; // Décalage pour laisser le temps aux differents parametrages d'arriver de Jeedom			    
			}
			else if (c[0]=='I' && c[n]=='P')  // Recuperation de l' IP de Jeedom ( I192.168.000.044P )
			{
			  if (n<17)			 // Petite securite
			  {
			    int ip=0; 
			    inString="";  
			    for (int i = 1; i <= n; i++)  //jusqu'a n car il faut un caractere non digit pour finir
			    {
						if (isDigit(c[i])) 
						{
						  inString += (char)c[i];
						}
						else
						{
						  IP_JEEDOM[ip]=inString.toInt();
						  inString="";  
						  ip++;
						}
			    } 
			    EEPROM.update(26, IP_JEEDOM[0]);			    // Sauvegarde de l' IP
			    EEPROM.update(27, IP_JEEDOM[1]);  
			    EEPROM.update(28, IP_JEEDOM[2]);  
			    EEPROM.update(29, IP_JEEDOM[3]);  
			    client.print(F("IPOK"));						  // On reponds a JEEDOM
			    jeedom+=F("&REP=IPOK");  
			    ProbeNextSend=millis()+60000; // Décalage pour laisser le temps aux differents parametrages d'arriver de Jeedom			
			  }
			}   
			else if (c[0]=='S' && c[n]=='S')  // Modifie la valeur d'une pin sortie
			{
			  jeedom+=F("&REP=SOK");
			  for (int i = 1; i < n; i++)
			  {
			    if (isDigit(c[i])) c[i]=c[i]-'0';
			  }
			
			  pin_id=10*int(c[1])+int(c[2]);			    // recuperation du numero de la pin
			     
			  Set_OutputPin(pin_id);
			  client.print(F("SOK"));						   // On reponds a JEEDOM     
			  ProbeNextSend=millis()+10000; // Décalage pour laisser le temps au differents parametrages d'arriver de Jeedom   
			}
			else if ((c[0]=='S' || c[0]=='R') && c[n]=='C')     	// Reçoie la valeur SAUVEE d'une pin compteur (suite reboot)
			{																				// ou RESET suite sauvegarde equipement.
			    if (n>3)									  // Petite securite
			    {			     
						for (int i = 1; i < n; i++)
						{
						  if (isDigit(c[i])) c[i]=c[i]-'0';
						}
						
						if (c[0]=='R') CounterPinValue[pin_id]=0;	// On reset la valeur si demandé.
  
						pin_id=10*int(c[1])+int(c[2]);									  // récupération du numéro de la pin
						int multiple=1;
						for (int i = n-1; i >= 3; i--)									  // récupération de la valeur
						{
						  CounterPinValue[pin_id] += int(c[i])*multiple;
						  multiple *= 10;
						}
						PinNextSend[pin_id]=millis()+2000;
						NextRefresh=millis()+2000; 
						ProbeNextSend=millis()+10000; // Décalage pour laisser le temps au differents parametrages d'arriver de Jeedom 
						  
						client.print(F("SCOK"));												// On reponds a JEEDOM
						jeedom+=F("&REP=SCOK");			    
			    } 
			}    
			else if (c[0]=='S' && c[n]=='F')  // Modifie la valeur de toutes les pins sortie (suite reboot )
			{
			  // NB_TOTALPIN = NB_DIGITALPIN  + NB_ANALOGPIN
			  if (n==(NB_TOTALPIN+1))			 // Petite securite
			  {
			    jeedom+=F("&REP=SFOK");
			    for (int i = 2; i < NB_TOTALPIN; i++) 
			    {
						switch (Status_pins[i]) 
						{
						  case 'o': // output
						  case 's': // switch
						  case 'l': // low_relais
						  case 'h': // high_relais
						  case 'u': // output_pulse
						  case 'v': // low_pulse
						  case 'w': // high_pulse 
						    if (c[i+1]=='0')
						    {
									PinWriteLOW(i);
						    }
						    else if (c[i+1]=='1')
						    {
									PinWriteHIGH(i);			   
						    }
						  break;
						}
			    }			   
			    client.print(F("SFOK"));						  // On reponds a JEEDOM			
			    ProbeNextSend=millis()+20000; // Décalage pour laisser le temps au differents parametrages d'arriver de Jeedom  
			  }
			}
			else if (c[0]=='S' && (c[n]=='L' || c[n]=='H')) // Modifie la valeur de toutes les pins sortie a LOW / HIGH
			{
			  if (n==2)			// Petite securite
			  {
			    jeedom+=F("&REP=SOK");
			    for (int i = 2; i < NB_TOTALPIN; i++) 
			    {
						switch (Status_pins[i]) 
						{
						  case 'o': // output
						  case 's': // switch
						  case 'l': // low_relais
						  case 'h': // high_relais
						  case 'u': // output_pulse
						  case 'v': // low_pulse
						  case 'w': // high_pulse 
						    if (c[n]=='L') PinWriteLOW(i);  
						    else PinWriteHIGH(i); 
						  break;
						}
			    }			  
			    client.print(F("SOK"));						  // On reponds a JEEDOM     
			    ProbeNextSend=millis()+10000; // Décalage pour laisser le temps au differents parametrages d'arriver de Jeedom  
			  }
			}
			else if (c[0]=='B' && c[n]=='M')  // Choix du BootMode
			{
			  BootMode=int(c[1]-'0');
			  EEPROM.update(14, BootMode);

			  client.print(F("BMOK"));						    // On reponds a JEEDOM
			  jeedom+=F("&REP=BMOK");    
			  ProbeNextSend=millis()+3000; // Décalage pour laisser le temps au differents parametrages d'arriver de Jeedom 
			}   
			else
			{
			  client.print(F("NOK"));									 // On reponds a JEEDOM
			  jeedom+=F("&REP=NOK");			     
			}

			//delay(444);
    }
  }
  client.stop();
  // On ecoute les pins en entree
  //jeedom="";
  for (int i = 2; i < NB_TOTALPIN; i++) 
  {
    switch (Status_pins[i]) 
    {
		case 'i': // input
		case 'p': // input_pullup
			  PinValue = digitalRead(i);
			  if (PinValue!=OLDPinValue[i] && (PinNextSend[i]<millis() || NextRefresh<millis()))
			  {
			    OLDPinValue[i]=PinValue;
			    jeedom += '&';
			    jeedom += i;
			    jeedom += '=';
			    jeedom += PinValue;
			    PinNextSend[i]=millis()+1000; // Delai pour eviter trop d'envois
			  }
			  break;
		case 'g': // input_variable suivant tempo
			PinValue = digitalRead(i);
			// Calcul
			if (PinNextSend[i]>millis()) // bouton laché avant les 10s
			{
				pinTempo=255-((PinNextSend[i]-millis())*255/10000); // pas de 25.5 par seconde
			}
			else pinTempo=255;  // si bouton laché après les 10s, on bloque la valeur a 255			    
				
			if (PinValue!=OLDPinValue[i]) // changement état entrée = bouton appuyé ou bouton relaché
			{
				OLDPinValue[i]=PinValue;
				if (swtch[i]==1)  // on vient de lacher le bouton.
				{
					swtch[i]=0; // on enregistre le laché.
					jeedom += '&';
					jeedom += i;
					jeedom += '=';
					jeedom += pinTempo;
					PinNextSend[i]=millis();
				}
				else 
				{
					swtch[i]=1; // on vient d'appuyer sur le bouton, on enregistre.
					PinNextSend[i]=millis()+10000; // Delai pour la tempo de maintient du bouton.
					CounterPinValue[i]==millis(); // reutilisation pour economie de ram
					ProbeNextSend=millis()+15000; // decale la lecture des sondes pour eviter un conflit
				}			    
			}
			else
			{
				if (swtch[i]==1 && CounterPinValue[i]<millis())
				{
					jeedom += '&';
					jeedom += i;
					jeedom += '=';
					jeedom += pinTempo;  
					CounterPinValue[i]==millis()+1000; // reactualisation toutes les secondes pour ne pas trop charger Jeedom
				}
			}
			break; 
		case 'a': // analog_input    
			  AnalogPinValue = analogRead(i);
			  if (AnalogPinValue!=OLDAnalogPinValue[i] && (PinNextSend[i]<millis() || NextRefresh<millis()))
			  {
			    if (abs(AnalogPinValue-OLDAnalogPinValue[i])>20)    // delta correctif pour eviter les changements negligeables
			    {
						int j=i;
						if (i<54) j=i+40;   // petit correctif car dans Jeedom toutes les pins Analog commencent a l'id 54+
						OLDAnalogPinValue[i]=AnalogPinValue;
						//jeedom += '&' + j + '=' + AnalogPinValue;
						jeedom += '&';
						jeedom += j;
						jeedom += '=';
						jeedom += AnalogPinValue;			  
						PinNextSend[i]=millis()+1000; // Delai pour eviter trop d'envois			     
			    }
			  }
			  break;						    
			case 'c': // compteur_pullup CounterPinValue
			PinValue = digitalRead(i);
			if (PinValue!=OLDPinValue[i])
			{
				OLDPinValue[i]=PinValue;
				CounterPinValue[i]+=PinValue; 		
			}
			if (NextRefresh<millis() || PinNextSend[i]<millis())
			{
				jeedom += '&';
				jeedom += i;
				jeedom += '=';
				jeedom += CounterPinValue[i];	 
				PinNextSend[i]=millis()+10000;		// Delai 10s pour eviter trop d'envois
			}					
			break;
			case 'd': // DHT11
			case 'e': // DHT21
			case 'f':  // DHT22
			  if (PinNextSend[i]<millis() and ProbeNextSend<millis()) 
			  {
			    jeedom += '&';
			    jeedom += i;
			    jeedom += '=';
			    jeedom += int (myDHT[i]->readTemperature()*100);
			    jeedom += '&';
			    jeedom += i+1000;
			    jeedom += '=';
			    jeedom += int (myDHT[i]->readHumidity()*100);
			    PinNextSend[i]=millis()+60000;  // Delai 60s entre chaques mesures pour eviter trop d'envois
			    ProbeNextSend=millis()+10000; // Permet de decaler la lecture entre chaque sonde DHT sinon ne marche pas cf librairie (3000 mini)
			    //jeedom += F("&FREERAM=");
			    //jeedom += freeRam();			    
			  }
			  break;    
			case 'b': // DS18x20
			  if (PinNextSend[i]<millis() and ProbeNextSend<millis()) 
			  {
			    jeedom += '&';
			    jeedom += i;
			    jeedom += '=';
			    jeedom += read_DSx(i); // DS18x20
			    PinNextSend[i]=millis()+60000;  // Delai 60s entre chaques mesures pour eviter trop d'envois  
			    ProbeNextSend=millis()+10000; // Permet de laisser du temps pour les commandes 'action', probabilite de blocage moins grande idem^^
			  }
			  break;			    
    }
  }
  if (NextRefresh<millis()) NextRefresh=millis()+40000; // Refresh auto toutes les 40s
  if (jeedom!="") SendToJeedom();
}

// FONCTIONS

void SendToJeedom()
{
  EthernetClient JEEDOMclient = server.available();
  //Serial.print(F("Sending : "));
  //Serial.println(jeedom);
  int J=JEEDOMclient.connect(IP_JEEDOM, 80);
  if (J) 
  {
    JEEDOMclient.print(F("GET /plugins/jeedouino/core/php/Callback.php?BoardEQ="));
    JEEDOMclient.print(eqLogic);
    JEEDOMclient.print(jeedom);
    JEEDOMclient.println(F(" HTTP/1.1"));
    JEEDOMclient.print(F("Host: "));
    JEEDOMclient.print(IP_JEEDOM[0]);
    JEEDOMclient.print('.');
    JEEDOMclient.print(IP_JEEDOM[1]);
    JEEDOMclient.print('.');
    JEEDOMclient.print(IP_JEEDOM[2]);
    JEEDOMclient.print('.');
    JEEDOMclient.println(IP_JEEDOM[3]);
    delay(111); 
    JEEDOMclient.println(F("Connection: close"));
    JEEDOMclient.println(); 
    delay(111); 
    JEEDOMclient.stop();  
    //Serial.print(IP_JEEDOM[0]);
    //Serial.print('.');
    //Serial.print(IP_JEEDOM[1]);
    //Serial.print('.');
    //Serial.print(IP_JEEDOM[2]);
    //Serial.print('.');
    //Serial.println(IP_JEEDOM[3]); 
    UIPEFailTime = millis();
    UIPEFailCount = 0;
  }
  else
  {
    JEEDOMclient.stop(); 
    UIPEFailCount++;
    // Serial.print(F("connection failed : "));
    // Serial.println(J);
    // Serial.print(F("UIPEFailCount : "));
    // Serial.println(UIPEFailCount);    
    if (UIPEFailCount>30 and millis()>UIPEFailTime+120000)
    {
			//Serial.println(F("Waiting UIPEFailTime 120s "));
			delay(120000); // tentative soft pour laisser le temps a la lib de se resaisir
			JEEDOMclient.stop(); 
			UIPEFailTime = millis()+120000;
    }
    else if (UIPEFailCount>10 and millis()>UIPEFailTime+60000)
    {
			//Serial.println(F("Waiting UIPEFailTime 60s "));
			delay(30000); // tentative soft pour laisser le temps a la lib de se resaisir
			JEEDOMclient.stop(); 
			Ethernet.begin(mac, IP_ARDUINO);
			server.begin(); 
			UIPEFailTime = millis()+60000;
    }
  } 
  jeedom="";
  delay(444); 
  //JEEDOMclient.stop(); 
}

void Set_OutputPin(int i) 
{
  TempoPinHIGH[i]=0;
  TempoPinLOW[i]=0;

  switch (Status_pins[i]) 
  {
    case 'o': // output			 // S131S pin 13 set to 1 (ou S130S pin 13 set to 0)
    case 'l': // low_relais  // S13S pin 13 set to 0 
    case 'h': // high_relais  // S13S pin 13 set to 1
			if (c[3]==0)
			{
			  PinWriteLOW(i);			
			}
			else
			{
			  PinWriteHIGH(i); 
			}
			break;    
			
    case 's': // switch			// S13 pin 13 set to 1 si 0 sinon set to 0 si 1
			if (swtch[i]==1)
			{
			  PinWriteLOW(i);   
			}
			else
			{
			  PinWriteHIGH(i);			    
			}
			break;			

    //
    // ON VERIFIE SI UNE TEMPORISATION EST DEMANDEE SUR UNE DES SORTIES
    // On essai d'etre sur une precision de 0.1s mais ca peut fluctuer en fonction de la charge cpu
    // Test� seulement sur mega2560
    //
    case 'u': // output_pulse // Tempo ON : S1309999S : pin 13 set to 0 during 999.9 seconds then set to 1 (S1319999 : set to 1 then to 0)
			pinTempo=1000*int(c[4])+100*int(c[5])+10*int(c[6])+int(c[7]); 
			// pinTempo est donc en dixieme de seconde  
			pinTempo = pinTempo*100+millis(); // temps apres lequel la pin doit retourner dans l'autre etat. 

			// Peut buguer quand millis() arrive vers 50jours si une tempo est en cours pendant la remise a zero de millis().
			// Risque faible si les tempo sont de l'ordre de la seconde (impulsions sur relais par ex.).
			if (c[3]==0)
			{
			  TempoPinHIGH[i]=pinTempo;
			  PinWriteLOW(i);    
			}
			else if (c[3]==1)
			{
			  TempoPinLOW[i]=pinTempo;
			  PinWriteHIGH(i);			    
			}
			break;
			
    case 'v': // low_pulse    // Tempo ON : S139999S : pin 13 set to 0 during 999.9 seconds then set to 1 
			//pinTempo=1000*int(c[3])+100*int(c[4])+10*int(c[5])+int(c[6]); 
			pinTempo=1000*int(c[4])+100*int(c[5])+10*int(c[6])+int(c[7]); 
			// pinTempo est donc en dixieme de seconde    
			pinTempo = pinTempo*100+millis(); // temps apres lequel la pin doit retourner dans l'autre etat.     
    
			TempoPinHIGH[i]=pinTempo;
			PinWriteLOW(i);  
			break;
    
    case 'w': // high_pulse   // Tempo ON : S139999S : pin 13 set to 1 during 999.9 seconds then set to 0 
			//pinTempo=1000*int(c[3])+100*int(c[4])+10*int(c[5])+int(c[6]); 
			pinTempo=1000*int(c[4])+100*int(c[5])+10*int(c[6])+int(c[7]); 
			// pinTempo est donc en dixieme de seconde
    
			pinTempo = pinTempo*100+millis(); // temps apres lequel la pin doit retourner dans l'autre etat. 
  
			TempoPinLOW[i]=pinTempo;
			PinWriteHIGH(i);    
			break;
    
    case 'm': // pwm_output
			pinTempo=100*int(c[4])+10*int(c[5])+int(c[6]);  // the duty cycle: between 0 (always off) and 255 (always on).
			analogWrite(i, pinTempo);
			break;
  }
}

void Load_EEPROM(int k) 
{
  // on recupere le BootMode
  BootMode=EEPROM.read(14);
  // Recuperation de l'eqLogic  
  eqLogic = "";
  n=EEPROM.read(15);			  // Recuperation de la longueur du eqLogic
  if (n>1)			  // bug probable si eqLogic_id<10 dans jeedom
  {
    for (int i = 1; i < n; i++) 
    {
			eqLogic += EEPROM.read(15+i);
    } 
  }
  // Recuperation de l'IP
  IP_JEEDOM[0]=EEPROM.read(26);			 
  IP_JEEDOM[1]=EEPROM.read(27); 
  IP_JEEDOM[2]=EEPROM.read(28); 
  IP_JEEDOM[3]=EEPROM.read(29); 
  
  // on met en place le mode des pins
  jeedom="";
  byte y=1;
  for (int i = 2; i < NB_TOTALPIN; i++) 
  {
    Status_pins[i] = EEPROM.read(30+i); // Etats des pins

    // INITIALISATION DES TABLEAUX DE TEMPO SORTIES
    TempoPinHIGH[i] = 0;
    TempoPinLOW[i] = 0;
    //
    switch (Status_pins[i]) 
    {
			case 'i': // input
			case 'a': // analog_input    
			  pinMode(i, INPUT);
			  break;
			case 'd': // DHT11     
			  myDHT[i] = new DHT(i, 11);  // DHT11
			  PinNextSend[i]=millis()+60000;
			  break;
			case 'e': // DHT21     
			  myDHT[i] = new DHT(i, 21);  // DHT21
			  PinNextSend[i]=millis()+60000;
			  break;
			case 'f': // DHT 22   
			  myDHT[i] = new DHT(i, 22);  // DHT22
			  PinNextSend[i]=millis()+60000;
			  break;
			case 'b': // DS18x20    
			  //myDS[i] = new OneWire(i); // DS18x20
			  PinNextSend[i]=millis()+60000;
			  break;			  
			case 'p':     // input_pullup
			case 'g':     // pwm_input
			    pinMode(i, INPUT_PULLUP); // pour eviter les parasites en lecture, mais inverse l'etat de l'entree : HIGH = input open, LOW = input closed
			    // Arduino Doc : An internal 20K-ohm resistor is pulled to 5V.
				swtch[i]=0; 	// init pour pwm_input
				OLDPinValue[i]=1;
				PinNextSend[i]=millis();
			    break;						
			case 'c':     // compteur_pullup
			    pinMode(i, INPUT_PULLUP); // pour eviter les parasites en lecture, mais inverse l'etat de l'entree : HIGH = input open, LOW = input closed
			    // Arduino Doc : An internal 20K-ohm resistor is pulled to 5V.
			    if (k)
			    {
						jeedom += F("&CPT_"); // On demande à Jeedom de renvoyer la dernière valeur connue pour la pin i
						jeedom += i;
						jeedom += '=';									
						jeedom += i;			    
			    }
			    break;			  
			case 'o': // output
			case 's': // switch
			case 'l': // low_relais
			case 'h': // high_relais
			case 'u': // output_pulse
			case 'v': // low_pulse
			case 'w': // high_pulse
			  pinMode(i, OUTPUT);
			  // restauration de l'etat des pins DIGITAL OUT au demarrage
			 if (k)
			 {
			  switch (BootMode) 
			  {
			    case 0: 
						// On laisse tel quel
						break;
			    case 1: 
						PinWriteLOW(i); 
						break;
			    case 2: 
						PinWriteHIGH(i);
						break;
			    case 3: 
			PinWriteHIGH(i);			 
						// On demande a Jeedom d'envoyer la valeur des pins
						if (y) 
						{
						  jeedom += F("&ASK=1");
						  y=0;
						}
						break;
			    case 4: 
						if (EEPROM.read(110+i) == 0) PinWriteLOW(i);  
						else PinWriteHIGH(i); 
						break;    
			    case 5: 
			PinWriteLOW(i);
						// On demande a Jeedom d'envoyer la valeur des pins
						if (y) 
						{
						  jeedom += F("&ASK=1");
						  y=0;
						}
						break;			
			  } 
			 }			  
			  // fin restauration     

			  break;
			  
			case 'm': // pwm_output
			  pinMode(i, OUTPUT);
			  break;
    }
  }
  if (jeedom!="") SendToJeedom();
}
void PinWriteHIGH(long p) 
{
  digitalWrite(p, HIGH);   
  swtch[p]=1; 
  jeedom += '&';
  jeedom += p;
  jeedom += F("=1"); 
  // Si bootmode=4 sauvegarde de l'etat de la pin (en sortie) - !!! Dangereux pour l'eeprom à long terme !!!
  if (BootMode==4) EEPROM.update(110+p, 1);  
}
void PinWriteLOW(long p) 
{
  digitalWrite(p, LOW); 
  swtch[p]=0; 
  jeedom += '&';
  jeedom += p;
  jeedom += F("=0");   
  // Si bootmode=4 sauvegarde de l'etat de la pin (en sortie) - !!! Dangereux pour l'eeprom à long terme !!!
  if (BootMode==4) EEPROM.update(110+p, 0); 
}

void Init_EEPROM() 
{
  // Un marqueur
  EEPROM.update(13, 'J');   // JEEDOUINO

  // BootMode choisi au demarrage de l'arduino
  // 0 = Pas de sauvegarde - Toutes les pins sorties non modifi�es au d�marrage.  
  // 1 = Pas de sauvegarde - Toutes les pins sorties mises � LOW au d�marrage.
  // 2 = Pas de sauvegarde - Toutes les pins sorties mises � HIGH au d�marrage.
  // 3 = Sauvegarde sur JEEDOM - Toutes les pins sorties mises suivant leur sauvegarde dans Jeedom. Jeedom requis, sinon pins mises � OFF.
  // 4 = Sauvegarde sur EEPROM- Toutes les pins sorties mises suivant leur sauvegarde dans l\'EEPROM. Autonome, mais dur�e de vie de l\'eeprom fortement r�duite.
  EEPROM.update(14, 2);
  BootMode=2;
  
  // Initialisation par default
  for (int i = 15; i < 200; i++) 
  {
    EEPROM.update(i, 1);  // Valeur des pins OUT au 1er demarrage ( mes relais sont actis a 0, donc je met 1 pour eviter de les actionner au 1er boot)
  }
  EEPROM.update(26, IP_JEEDOM[0]);			    // Sauvegarde de l' IP
  EEPROM.update(27, IP_JEEDOM[1]);  
  EEPROM.update(28, IP_JEEDOM[2]);  
  EEPROM.update(29, IP_JEEDOM[3]);    
  // fin initialisation 
} 
//int freeRam () 
//{
//  extern int __heap_start, *__brkval; 
//  int v; 
//  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
//}
int read_DSx(int pinD)
{
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8]; 
  OneWire ds(pinD);
  
  if ( !ds.search(addr))   
  {
    ds.reset_search();
    //Serial.println(F("ds not found..."));
    delay(250);
    return 0;
  }
  
  if (OneWire::crc8(addr, 7) != addr[7]) //Check if there is no errors on transmission
  {
			//Serial.println(F("CRC invalide..."));
			return 0;
  }
  
  // the first ROM byte indicates which chip
  switch (addr[0])
  {
    case 0x10:
     //Serial.println(F(" Chip = DS18S20")); // or old DS1820
     type_s = 1;
     break;
    case 0x28:
     //Serial.println(F(" Chip = DS18B20"));
     type_s = 0;
     break;
    case 0x22:
     //Serial.println(F(" Chip = DS1822"));
     type_s = 0;
     break;
    default:
     //Serial.println(F("Device is not a DS18x20 family device."));
     return 0;
  }
			
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);			 // start conversion, with parasite power on at the end
  delay(800);    
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);			 // Read Scratchpad
  byte ii;
  for ( ii = 0; ii < 9; ii++) 
  {			   // we need 9 bytes
    data[ii] = ds.read();
  }
 
  // convert the data to actual temperature

  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) 
  {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) 
    {
			// count remain gives full 12 bit resolution
			raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } 
  else 
  {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
   
  }
  //Serial.println(raw/16);
  return raw;

}
Si je fait un test de base pour vérifier si les composants sont bon, ben ils le sont.....
La sonde sur le port 7 et le DHT port 8.

Le relais étant sur le port 4, lui fonctionne correctement sauf le retour d'état.

Voili voila

@+
Eric

Avatar de l’utilisateur
revlys
Timide
Messages : 330
Inscription : 05 mai 2015, 17:10
Localisation : Gard

Re: [Sujet officiel] : Jeedouino

Message par revlys » 07 mars 2016, 09:25

Bonjour à tous ,

Parrain27240, tu veux mettre quoi en pull-up ? Seule une entrée peut l’être.

Eric, bon je pense voir où est le problème, dans le sketch généré :( :
byte IP_ARDUINO[] = { 192, 168, 0, 61 };
byte IP_JEEDOM[] = { 172, 17, 42, 1 };
Ils ne sont pas vraiment sur le même réseau....
Dans le sens Jeedom vers Arduino ( ex: actions sur relais ), ça marche car la gestion réseau est complète de la part du système sur lequel repose Jeedom.
Par contre dans l'autre sens ( ex: Remontés d’état, et valeurs des sondes ), la gestion réseau sur un arduino est plus simpliste. Il n'arrivera pas a accéder à Jeedom, car il est bloqué sur le réseau 192.168.0.xx.

Je ne sais pas si c'est docker qui implique l'utilisation d'une adresse comme 172, 17, 42, 1, mais dans le sketch , il faudrait plutôt utiliser l'adresse locale de ton Jeedom 192.168.0.xx. Si tu ne peux pas modifier directement dans la configuration réseau de Jeedom ( pour éviter les fameux messages d'erreurs ;) ), essaie de la modifier directement dans le sketch.

Il faut vraiment que je prenne le temps d'essayer ce docker... :geek:

On va y arriver :D

P.S. Tu peux utiliser la dernière màj du plugin sur le market, elle inclue le patch 0.91a.

Bonne journée.

airhic
Timide
Messages : 186
Inscription : 18 oct. 2014, 12:26

Re: [Sujet officiel] : Jeedouino

Message par airhic » 07 mars 2016, 10:52

Je n'utilise pas arduino mais j'ai un environnement avec docker sous syno et une jeedom mini en slave pour le rfxcom et le zwave. J'ai eu aussi des pb de comm entre la mini et docker. La solution que j'ai trouvée est d'ajouter une route static dans mon slave:

Configuration du slave
Il faut ajouter une route static pour accéder au réseau 172.17.0.0 (défaut du docker) dans le fichier /etc/network/interfaces puis reboot du système.

Code : Tout sélectionner

# ECADD - Static route
up route add -net 172.17.0.0 netmask 255.255.255.0 gw 192.168.0.22
192.168.0.22 est l'@ de mon syno.

Peut-être que ca peut aider dans votre cas.
Synology DS415+ (vmm/mariadb) ; Rpi3 avec rfxcom et zwave.

latwingo
Actif
Messages : 504
Inscription : 24 nov. 2014, 10:58
Localisation : Cagnes Sur Mer

Re: [Sujet officiel] : Jeedouino

Message par latwingo » 07 mars 2016, 10:57

Bonjour Revlys un grand bravo pour ton travail sur ce plugin

a tu essayer avec ce genre de carte

http://www.banggood.com/NodeMcu-Lua-WIF ... 76440.html

par avance merci de ta réponse

Philippe ;) ;) ;)

Ericd
Timide
Messages : 59
Inscription : 18 déc. 2014, 16:45
Localisation : Toulouse

Re: [Sujet officiel] : Jeedouino

Message par Ericd » 07 mars 2016, 11:41

Docker impose une adresse du style 172.17.42.xx

Avec la technique de Stef74, l'ip ne change pas ....
A la limite, il faudrait plus se pencher vers le routage soit :
* de docker
* ou mettre une gateway dans le script de jeedouino (est-ce possible ?)

en faisant référence à
https://www.arduino.cc/en/Reference/EthernetBegin

mettre :

Ethernet.begin(mac, ip, dns, gateway);

à la place de
Ethernet.begin(mac, IP_ARDUINO);

Je vais tester de modifier ça...

janus39
Timide
Messages : 71
Inscription : 04 mars 2016, 08:13

Re: [Sujet officiel] : Jeedouino

Message par janus39 » 07 mars 2016, 11:58

Bonjour,
Je teste ce plugin avec un NODEMCU, celui-ci:
https://smartarduino.gitbooks.io/user-m ... t/content/

J'ai des résultats, mais je pense qu'il faudrait adapter le plugin.

J'ai essayé avec comme modèle de carte la ESP8266-07.
- Le NODEMCU n'utilise pas l'adresse IP donnée, il semble se connecter en DHCP. Je dois le trouver sur le réseau et aller mettre l'adresse dans le plugin.
- dans la configuration des pins j'ai 16 ligne GPIO sans numéro, une ligne GPIO XPD et une ligne ADC (A0) - (ANA)
- si je met "Sortie mise à LOW (HIGH générée aussi)" sur toutes les lignes, quand je fais "Sauver et/ou générer les commandes", le NODEMCU reset sans arrèt en indiquant :

ets Jan 8 2013,rst cause:4, boot mode:(3,0)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld

Après le NODECMCU est planté et je dois flasher le programme d'exemple "EEPROM Clear" pour le reflasher ensuite.

- si je mets "non utilisé" sur tous les pins sauf GPIO XPD à "Sortie mise à LOW (HIGH générée aussi)". La LED incorporé répond aux commandes ALL_HIGH et ALL_LOW. (mais je n'ai que 5 commandes gébérées: 16_high_relais, 16_low_relais, Etat_Pin_16, ALL_HIGH et ALL_LOW).

Ma config: Jeedom installé sur NAS synology avec docker et MariaDB.

Voila tout ce que j'ai trouvé pour l'instant, si ça peut aider à supporter les NODEMCU ce serait super.

Merci pour ce plugin.

latwingo
Actif
Messages : 504
Inscription : 24 nov. 2014, 10:58
Localisation : Cagnes Sur Mer

Re: [Sujet officiel] : Jeedouino

Message par latwingo » 07 mars 2016, 13:44

merci de ton aide Janus39

j'ai exactement les mêmes problèmes que tu as énumérer ce qui me rassure

je pense que pour l'instant le nodemcu n'est pas compatible

ont va attendre ;) ;)

Répondre

Revenir vers « [Catégorie] Protocoles domotiques »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités