Page 1 sur 2

besoin d aide relai esp8266

Publié : 24 oct. 2020, 02:57
par tofawakz
voila je suis newbi dans la domotique avec les esp8266 et j ai achete sur amazon un lot de relais avec esp et lorque je les flash avec se code

Code : Tout sélectionner

// Inclure les librairies.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

// Déclaration des constantes, données à adapter à votre réseau.
// ------------------------------------------------------------
const char* ssid = "freebox_randjie";                // SSID du réseau Wifi
const char* password = "mon code wifi";   // Mot de passe du réseau Wifi.
const char* mqtt_server = "192.168.x.xx;     // Adresse IP ou DNS du Broker.
const int mqtt_port = 1883;                     // Port du Brocker MQTT
const char* mqtt_login = "mon login mqtt";             // Login de connexion à MQTT.
const char* mqtt_password = "mon mdp mqtt";       // Mot de passe de connexion à MQTT.
// ------------------------------------------------------------
// Variables et constantes utilisateur :
String nomModule = "Module relais";     // Nom usuel de ce module.
char* topicIn = "domoticz/out";         // Nom du topic envoyé par Domoticz
char* topicOut = "domoticz/in";         // Nom du topic écouté par Domoticz
int pinRelais = 2;                      // Pin sur lequel est connecté la commande du relais.
int idxDevice = 3;                     // Index du Device à actionner.
// ------------------------------------------------------------


WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE	(50)
char msg[MSG_BUFFER_SIZE];
int value = 0;


void setup() {
  pinMode(pinRelais, OUTPUT);
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

}


void setup_wifi() {
  // Connexion au réseau Wifi
  delay(10);
  Serial.println();
  Serial.print("Connection au réseau : ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    // Tant que l'on est pas connecté, on boucle.
    delay(500);
    Serial.print(".");
  }
  // Initialise la séquence Random
  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connecté");
  Serial.print("Addresse IP : ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  // Message reçu du Broker.
  String string;
  // On vérifie qu'il vient bien de Domoticz.
  int valeur = strcmp(topic, topicIn);
  if (valeur == 0) {
    Serial.print("Message arrivé [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) {
      string += ((char)payload[i]);
    }
    // Affiche le message entrant - display incoming message
    Serial.println(string);

    // Parse l'objet JSON nommé "root"
    StaticJsonBuffer<512> jsonBuffer;
    JsonObject &root = jsonBuffer.parseObject(string);
    if (root.success()) {
      int idx = root["idx"];
      int nvalue = root["nvalue"];

      // Activer la sortie du relais si 1a "nvalue" 1 est reçu.
      if (idx == idxDevice && nvalue == 1) {
        digitalWrite(pinRelais, LOW);
        Serial.print("Device ");
        Serial.print(idx);
        Serial.println(" sur ON");
      } else if (idx == idxDevice && nvalue == 0) {
        digitalWrite(pinRelais, HIGH);
        Serial.print("Device ");
        Serial.print(idx);
        Serial.println(" sur OFF");
      } else if (idx != idxDevice) {
        Serial.print("Reçu information du Device : ");
        Serial.println(idx);
      }
    } else {
      Serial.println("Erreur de lecture du JSON !");
    }
  }

}

void reconnect() {
  // Boucle jusqu'à la connexion MQTT
  while (!client.connected()) {
    Serial.print("Tentative de connexion MQTT...");
    // Création d'un ID client aléatoire
    String clientId = "ESP8266Client-";
    clientId += String(random(0xffff), HEX);

    // Tentative de connexion
    if (client.connect(clientId.c_str(), mqtt_login, mqtt_password)) {
      Serial.println("connecté");

      // Connexion effectuée, publication d'un message...
      String message = "Connexion MQTT de " + nomModule + " réussi sous référence technique : " + clientId + ".";
      // String message = "Connexion MQTT de "+ nomModule + " réussi.";
      StaticJsonBuffer<256> jsonBuffer;
      // Parse l'objet root
      JsonObject &root = jsonBuffer.createObject();
      // On renseigne les variables.
      root["command"] = "addlogmessage";
      root["message"] = message;

      // On sérialise la variable JSON
      String messageOut;
      if (root.printTo(messageOut) == 0) {
        Serial.println("Erreur lors de la création du message de connexion pour Domoticz");
      } else  {
        // Convertion du message en Char pour envoi dans les Log Domoticz.
        char messageChar[messageOut.length() + 1];
        messageOut.toCharArray(messageChar, messageOut.length() + 1);
        client.publish(topicOut, messageChar);
      }

      // On souscrit (écoute)
      client.subscribe("#");
    } else {
      Serial.print("Erreur, rc=");
      Serial.print(client.state());
      Serial.println(" prochaine tentative dans 5s");
      // Pause de 5 secondes
      delay(5000);
    }
  }
}
je voit la led d activité wifi reagir mais le relais ne s enclanche pas j ai pose la question sur amazon et la reponse que j ai eu ne ma pas aide
L'ensemble circuit+relais+ESP8266 fonctionnait de base avec des commandes AT depuis un téléphone mobile.
mais c est quoi les commandes AT et comment les integre a domoticz
si une personne peut m aide se serait super meme si il faut madifié les cartes ou change le code du esp

Re: besoin d aide relai esp8266

Publié : 24 oct. 2020, 04:23
par vil1driver
Salut,

Le pousse carton te dit que l'objet était vendu fonctionnel et que tu l'as mis en panne.

Pourquoi as tu fais ça ?
Pourquoi ce code ?
Qu'as tu changé au code initial ?
Pourquoi dis tu que le relai ne s'enclenche pas, il devrait ?

Re: besoin d aide relai esp8266

Publié : 24 oct. 2020, 05:19
par tofawakz
j ai trouve ce code qui fait une boucle d allumage et d extinction/allumage par boucle de 10s mais comment l intégré a domoticz pour que ce sois juste on/off

Code : Tout sélectionner

/*
serialRelayTest.ino
*/


byte relON[] = {0xA0, 0x01, 0x01, 0xA2};  //Hex command to send to serial for open relay
byte relOFF[] = {0xA0, 0x01, 0x00, 0xA1}; //Hex command to send to serial for close relay

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

  //make sure the relay is off before moving forward
  Serial.write(relOFF, sizeof(relOFF));
  delay(10);
  Serial.write(relOFF, sizeof(relOFF));
}


void loop(void){

  //turn the relay on for 3 seconds
  Serial.write(relON, sizeof(relON));
  delay(3000);

  //turn the relay off for 3 seconds
  Serial.write(relOFF, sizeof(relOFF));
  delay(3000);
}

Re: besoin d aide relai esp8266

Publié : 24 oct. 2020, 05:22
par tofawakz
Salut,

Le pousse carton te dit que l'objet était vendu fonctionnel et que tu l'as mis en panne.

Pourquoi as tu fais ça ?
Pourquoi ce code ?
Qu'as tu changé au code initial ?
Pourquoi dis tu que le relai ne s'enclenche pas, il devrait ?
encore une fois je suis debutant avec ce materiel donc de decouvre et j apprend de mes erreurs et je ne savait pas qui il y avait deja un firmeware car il y a aucune doc fournie avec le matos (vendeur allemand)

Re: besoin d aide relai esp8266

Publié : 24 oct. 2020, 07:55
par bricololo
Salut,
Peut être le flashé avec espeasy.
Pour un débutant c'est plus simple.

Re: besoin d aide relai esp8266

Publié : 25 oct. 2020, 01:47
par tofawakz
voila j ai flashé mon esp-01 mais command on le confi pour un relai depuis l interface et le faire communiqué avec domoticz

Re: besoin d aide relai esp8266

Publié : 25 oct. 2020, 10:06
par Flying Domotic
Bonjour,

Je pense que la bonne méthode est de comprendre comment on commande le relai. Dans le dernier exemple donné, c'est par le lien série, ce qui est un chouillat exotique, mais possible (c'est fait comme ça dans les modules TUYA). Les versions les plus simples se contentent d'une pin.

Est-il possible de trouver une doc sur ce module ?

Re: besoin d aide relai esp8266

Publié : 25 oct. 2020, 15:35
par tofawakz
le problème c est que c est module sont vendu sans documentation

Re: besoin d aide relai esp8266

Publié : 26 oct. 2020, 08:48
par fidoboulettes
Bonjour,
dans domoticz il faut créer un virtuel de type "interrupteur" dans matériel.
Ensuite il faut récupérer son idx dans les dispositifs.

On passe ensuite dans ESPEasy.

Onglet Device créer un dispositif de type switch input.

Au niveau du GPIO il faut indiquer le GPIO qui contrôle ton relais.
De plus il faut rentrer l'idx (de domoticz) et enfin "submit" pour créer ta commande... à partir de là ton relais devrait être controlable par domoticz.

https://www.letscontrolit.com/wiki/inde ... tle=Relais

Re: besoin d aide relai esp8266

Publié : 27 oct. 2020, 21:18
par tofawakz
de ce que j ai pu comprendre ce genre de relais communique via les port serial mais comment les intégré dans espeasy ??

j aurai un debut de piste en utilsant les "rules" mais ile faudrai faire fonctionné c est commans sans la temporisation mais je suis null en ligne de code

Code : Tout sélectionner

/*
serialRelayTest.ino
*/


byte relON[] = {0xA0, 0x01, 0x01, 0xA2};  //Hex command to send to serial for open relay
byte relOFF[] = {0xA0, 0x01, 0x00, 0xA1}; //Hex command to send to serial for close relay

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

  //make sure the relay is off before moving forward
  Serial.write(relOFF, sizeof(relOFF));
  delay(10);
  Serial.write(relOFF, sizeof(relOFF));
}


void loop(void){

  //turn the relay on for 3 seconds
  Serial.write(relON, sizeof(relON));
  delay(3000);

  //turn the relay off for 3 seconds
  Serial.write(relOFF, sizeof(relOFF));
  delay(3000);
}
avec un declanchement par requête http