Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Modification fonction callback du fichier EnvoiMQTT.ino
#1
Bonjour à tous.
J'ai modifié la fonction callback afin de pouvoir modifier le pourcentage d'ouverture forcée par MQTT (test ok par envoi MQTT de home assistant de ForceOuvre).
La modification :           if (message.indexOf("ForceOuvre\":") > 0) {
            LesActions[i].ForceOuvre = int(ValJson("ForceOuvre", message));
            recordDemande = true;
          }

à ajaouter dans la fonction callback : 
// Callback  après souscription à un topic et  réaliser une action
void callback(char *topic, byte *payload, unsigned int length) {
  char Message[length + 1];
  for (int i = 0; i < length; i++) {
    Message[i] = payload[i];
  }
  Message[length] = '\0';
  String message = String(Message) + ",";
  TelnetPrintln("Mqtt::" + message);
  for (int canal = 0; canal < 4; canal++) {
    if (String(topic) == TopicT[canal] && Source_Temp[canal] == "tempMqtt") {
      temperature[canal] = ValJson("temperature", message);
      TemperatureValide[canal] = 5;
    }
  }
  if (String(topic) == TopicP && Source == "Pmqtt") {  // Mesure de puissance
    PwMQTT = ValJson("Pw", message);
    PvaMQTT = ValJson("Pva", message);
    PfMQTT = ValJson("Pf", message);
    P_MQTT_Brute = String(Message);
    if (message.indexOf("Pw") > 0)
      LastPwMQTTMillis = millis();
  }
  if (subMQTT == 1) {
    char TopicAct[60];
    bool recordDemande = false;
    for (int i = 0; i < NbActions; i++) {
      if (LesActions[i].Titre.length() > 0) {
        snprintf(TopicAct, sizeof(TopicAct), "%s/%s", MQTTdeviceName.c_str(), LesActions[i].Titre.c_str());
        if (strcmp(TopicAct, topic) == 0) {
          if (message.indexOf("tOnOff\":") > 0)
            LesActions[i].tOnOff = int(ValJson("tOnOff", message));
          if (message.indexOf("ForceOuvre\":") > 0) {
            LesActions[i].ForceOuvre = int(ValJson("ForceOuvre", message));
            recordDemande = true;
          }
          if (message.indexOf("Mode\":") > 0) {
            String modeRecu = StringJson("Mode", message);
            recordDemande = true;
            if (modeRecu == "Inactif") {
              LesActions[i].Actif = MODE_INACTIF;
            } else if (modeRecu == "Decoupe" || modeRecu == "OnOff") {
              LesActions[i].Actif = MODE_DECOUPE_ONOFF;
            } else if (modeRecu == "Multi") {
              LesActions[i].Actif = MODE_MULTISINUS;
            } else if (modeRecu == "Train") {
              LesActions[i].Actif = MODE_TRAINSINUS;
            } else if (modeRecu == "PWM") {
              LesActions[i].Actif = MODE_PWM;
            } else if (modeRecu == "Demi") {
              LesActions[i].Actif = MODE_DEMISINUS;
            }
          }
          if (message.indexOf("Periode\":") > 0) {
            int periodeRecu = int(ValJson("Periode", message));
            if (periodeRecu >= 0 && periodeRecu < LesActions[i].NbPeriode) {
              recordDemande = true;
              if (message.indexOf("SeuilOn\":") > 0)
                LesActions[i].Vmin[periodeRecu] = int(ValJson("SeuilOn", message));
              if (message.indexOf("SeuilOff\":") > 0)
                LesActions[i].Vmax[periodeRecu] = int(ValJson("SeuilOff", message));  // Mode OnOff
              if (message.indexOf("OuvreMax\":") > 0)
                LesActions[i].Vmax[periodeRecu] = int(ValJson("OuvreMax", message));  // Autre Modes
            }
          }
          LesActions[i].Prioritaire();
          StockMessage("Action MQTT : " + String(topic) + " | " + String(Message));
        }
      }
    }
    if (recordDemande) RecordFichierParametres();
  }
}
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
1 visiteur(s)

Moteur MyBB, © 2002-2026 Melroy van den Berg.