Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Forçage sur Jeedom via MQTT
#1
Hello a tous 

Je récupere bien les infos du routeur dans mon jeedom sous mqttmanager 

J'ai ça en info 

   

Mais j'ai beau chercher et faire des tests, pour le moment echec meme via mqtt explorer

   

Si quelqu'un y arrive , je suis preneur d'information
Répondre
#2
Je ne comprends pas exactement ce que vous voulez faire. Si c'est un forçage des actions, il faut faire ça depuis Homassistant ou Jeedom par exemple. On ne comprend pas bien si c'est des transferts du Routeur vers le serveur MQTT ou du serveur MQTT vers le routeur que vous voulez faire.

Cordialement, André
Répondre
#3
C'est bien un forçage que je veux faire a partir de jeedom

J'ai bien vu ceci

tOnOff:30 force à On durant 30 minutes
tOnOff:-40 force à Off durant 40 minutes
tOnOff: 0 libère le forçage, le routeur retrouve son comportement normalement programmé

qui faut envoyer en mqtt au routeur mais j'ai plusieurs essais mais je n'y arrive pas pour le moment
Répondre
#4
(06-06-2024, 01:12 PM)Francky a écrit : Hello a tous 

Je récupere bien les infos du routeur dans mon jeedom sous mqttmanager 

J'ai ça en info 



Mais j'ai beau chercher et faire des tests, pour le moment echec meme via mqtt explorer



Si quelqu'un y arrive , je suis preneur d'information

Dans ton Jeedom tu n'as que des infos, il te faut aussi des actions  Wink

(06-06-2024, 03:50 PM)Francky a écrit : C'est bien un forçage que je veux faire a partir de jeedom

J'ai bien vu ceci

tOnOff:30 force à On durant 30 minutes
tOnOff:-40 force à Off durant 40 minutes
tOnOff: 0 libère le forçage, le routeur retrouve son comportement normalement programmé

qui faut envoyer en mqtt au routeur mais j'ai plusieurs essais mais je n'y arrive pas pour le moment

Mais en effet sur la page https://f1atb.fr/fr/routeur-photovoltaiq...-via-mqtt/ les captures montrent du HA et sous Jeedom et les plugin MQTT ça se présente différemment  Wink

N'ayant pas encore fait cette MàJ, je n'ai pas testé  Smile
Mais je regarde ça dans l'après-midi  Big Grin
Enphase -> Node-RED -> Source MQTT
1x Routeur 11.17_RMS -> CES 2,5kW
3x IQ7+/3x 375WhC + 4x IQ8MC/4x 400WhC
Domotique gérée sous Jeedom 4.4.14 (DIY VMM Synology)
Répondre
#5
(07-06-2024, 10:38 AM)Nalexdouze a écrit :
(06-06-2024, 01:12 PM)Francky a écrit : Hello a tous 

Je récupere bien les infos du routeur dans mon jeedom sous mqttmanager 

J'ai ça en info 



Mais j'ai beau chercher et faire des tests, pour le moment echec meme via mqtt explorer



Si quelqu'un y arrive , je suis preneur d'information

Dans ton Jeedom tu n'as que des infos, il te faut aussi des actions  Wink

(06-06-2024, 03:50 PM)Francky a écrit : C'est bien un forçage que je veux faire a partir de jeedom

J'ai bien vu ceci

tOnOff:30 force à On durant 30 minutes
tOnOff:-40 force à Off durant 40 minutes
tOnOff: 0 libère le forçage, le routeur retrouve son comportement normalement programmé

qui faut envoyer en mqtt au routeur mais j'ai plusieurs essais mais je n'y arrive pas pour le moment

Dans le code de André il y a :

Code :
//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) + ",";
  if (String(topic) == TopicT && Source_Temp == "tempMqtt") {  //Temperature attendue
    temperature = ValJson("temperature", message);
  }
  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) {
    for (int i = 0; i < NbActions; i++) {
      if (LesActions[i].Actif > 0 && LesActions[i].Titre == String(topic)) {
        LesActions[i].tOnOff=ValJson("tOnOff", message);
        LesActions[i].Prioritaire();
      }
    }
  }
  Serial.print(topic);
  Serial.println(Message);

La void callback permet d'écouter un topic sur le Broker MQTT, la première condition récupère une information température, la seconde des puissances et la dernière traite des actions. Je pense que c'est avec ceci que tu dois creuser.

N'ayant pas encore fait cette MàJ, je n'ai pas testé  Smile

Bonjour,

Je suis en train de regarder ça avec Francky sur les forums de Jeedom, et je suis confronté à la même situation.
Pour résumer :
- l'objectif : piloter le relais SSR (ou le triac) pour le forcer en mode ON/OFF via une commande MQTT transmis via Jeedom (avec le plugin MQTT Manager pour moi).
- le problème : le json {"OnOff":-30} (avec la valeur -30 pour exemple) doit être publié sur le topic racine <nom défini pour le relais dans la page Action>, soit "SSR1" en ce qui me concerne, pour désactiver le relais pendant 30 minutes en l'occurence. Le message MQTT complet est donc : SSR1={"OnOff":-30}
Cette procédure fonctionne très bien avec MQTT Explorer :

   

Mais à partir de Jeedom, j'ai un souci.
Je crée un équipement sous MQTT Manager, puis dans le topic racine, je déclare donc SSR1. 

   

Dans les commandes, je crée une action où je défini la commande dans un champ de type message : json::{"OnOff":-30}

   

Mais tel quel, cela ne fonctionne pas car le paramètre "topic" ne peut être vide.

   

En l’occurrence, le message réellement envoyé est SSR1/<topic vide>= {"OnOff":-30}, ce qui n'est pas ce qu'attends Solar_Router (v9.01).
J'ai essayé en utilisant des caractères génériques pour le topic (/, *, #, ~,...), mais évidemment cela ne fonctionne pas.

Je vais regarder dans le code source du coup, mais y'a t-il un moyen pour que le logiciel Solar_Router interprète une commande MQTT sous la forme <topic racine>/<topic>/commande ?
Merci d'avance !
Répondre
#6
[quote pid="176" dateline="1717749488"]
Dans ton Jeedom tu n'as que des infos, il te faut aussi des actions  Wink

[/quote]

Merci pour vos réponses, oui je creer une action bien sur mais comme dit DanielJ, cela ne focntionne pas pour moi. 
Enfin je n'ai pas trouvé la bonne commande

Moi j'ai fait comme ça mais cela ne fonctionne pas non plus
   


Pièces jointes Miniature(s)
   
Répondre
#7
Vous y êtes presque. Regardez la doc sur le site F1ATB
[Image: Capture-decran-2024-06-03-091452.png]
Il vous manque les { } pour délimiter un message JSON
Le nom Triac1 ou autre  doit être également identique au nom donné dans le routeur

Cordialement, André.
Répondre
#8
   
(07-06-2024, 02:15 PM)F1ATB a écrit : Vous y êtes presque. Regardez la doc sur le site F1ATB
[Image: Capture-decran-2024-06-03-091452.png]
Il vous manque les { } pour délimiter un message JSON
Le nom Triac1 ou autre  doit être également identique au nom donné dans le routeur

Cordialement, André.

Aprés un redemarrage ok a partir de mqttexplorer 

Cependant, a partir de jeedom et mqttmanager 
Il publie dans Topicracine / topic 

Meme si on ne met rien dans topic racine, il publie ça 
   
Répondre
#9
Bonjour André,

Je suis avec Frankie sur ce coup. On ne doit pas être très loin de la solution recherchée en effet, et pour ma part, comme indiqué dans mon message ci-dessus, la structure du message json est la bonne.
Le problème maintenant, c'est que jeedom envoie un message MQTT complet, avec <topic racine>/<topic>/<commande>.
Or, visiblement Solar_Router attends un message de type <topic racine><commande>.

Exemple : l'ordre SSR1{"tOnOff":-30} fonctionne très bien s'il est envoyé avec MQTT Explorer comme indiqué par Frankie (SSR1 est le nom donné à mon relais SSR).
Mais le plugin MQTT Manager dans jeedom envoie des messages sous la forme : SSR1/<topic>/ {"tOnOff":-30}, avec <topic> qui ne peut être vide. 
A ce niveau et malgré de nombreux tests, je n'ai pas pu passer outre pour l'instant.

Côté Solar_Router, il suffirait je pense, mais sans confirmation, de modifier le code source à ce niveau en y intégrant un test sur la présence (ou non...) de  <topic> :

(MQTT.ino)

 if (subMQTT == 1) {
    for (int i = 0; i < NbActions; i++) {
      if (LesActions[i].Actif > 0 && LesActions[i].Titre == String(topic)) {
        LesActions[i].tOnOff=ValJson("tOnOff", message);
        LesActions[i].Prioritaire();
      }
    }
  }



pour qu'il puisse interpréter correctement ce message reçu.
Est-ce qu'il vous semble possible de le faire, sans bien sûr gager un fonctionnement déjà validé avec HA et Domoticz ? 

Je précise que j'ai déjà réussi à renvoyer en MQTT vers ce module les informations de puissance (Pw) et Pf, en publiant sur routeur/Puissance/json::{"Pw": -#[Maison][Tableau électrique - Mesures][Puissance EDF]#,"pf": #[Maison][Tableau électrique - Mesures][pf0]#} 
où 
routeur = topic racine, 
Puiissance = topic, 
#[Maison][Tableau électrique - Mesures][Puissance EDF]# et #[Maison][Tableau électrique - Mesures][pf0]# sont les valeurs mesurées et renvoyées en MQTT vers jeedom par un Shelly PRO EM50 (double routage car malheureusement, seul le Shelly EM est pris en compte pour l'instant dans Solar_Router)
Donc ainsi formaté, cela fonctionne très bien et ne pose aucun problème.

Merci d'avance pour l'aide !
Daniel
Répondre
#10
   

Je suis avec jMQTT et la commande passe, mais avec MQTT Explorer ça devrait être la même.

D'un point de vu personnel, je préfèrerai que l'envoie de la commande passe dans le topic du routeur, plutôt qu'à la racine du broker :-)
Enphase -> Node-RED -> Source MQTT
1x Routeur 11.17_RMS -> CES 2,5kW
3x IQ7+/3x 375WhC + 4x IQ8MC/4x 400WhC
Domotique gérée sous Jeedom 4.4.14 (DIY VMM Synology)
Répondre


Atteindre :


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