besoin d aide relai esp8266

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 ...
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

besoin d aide relai esp8266

Message 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
Pièces jointes
IMG_20201024_023526.jpg
IMG_20201024_023526.jpg (3.3 Mio) Consulté 5380 fois
IMG_20201024_023512.jpg
IMG_20201024_023512.jpg (4.08 Mio) Consulté 5380 fois
IMG_20201024_023506.jpg
IMG_20201024_023506.jpg (2.72 Mio) Consulté 5380 fois
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: besoin d aide relai esp8266

Message 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 ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

Re: besoin d aide relai esp8266

Message 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);
}
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

Re: besoin d aide relai esp8266

Message 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)
bricololo
Messages : 47
Inscription : 18 mars 2018, 14:23
Localisation : Nantes(44)

Re: besoin d aide relai esp8266

Message par bricololo »

Salut,
Peut être le flashé avec espeasy.
Pour un débutant c'est plus simple.
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

Re: besoin d aide relai esp8266

Message 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
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: besoin d aide relai esp8266

Message 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 ?
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

Re: besoin d aide relai esp8266

Message par tofawakz »

le problème c est que c est module sont vendu sans documentation
fidoboulettes
Messages : 58
Inscription : 28 janv. 2016, 03:38

Re: besoin d aide relai esp8266

Message 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
tofawakz
Messages : 8
Inscription : 24 oct. 2020, 02:44

Re: besoin d aide relai esp8266

Message 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
Répondre