Tag #topic#

Bonjour,

J’ai des payloads dans des commandes actions contenant le topic de l’équipement.
Serait-il possible d’avoir un tag #topic# afin, lors de l’utilisation du bouton Modifier Topics, de ne pas devoir revenir sur ces commandes?

Merci

EDIT : Utile aussi pour les templates.

EDIT2 : Les équipements concernés sont des Shelly GEN2.

Hello @Jeandhom,

Peux-tu me confirmer que ceci décrit bien le comportement que tu souhaiterais :

Penses-tu que d’autres tags seraient aussi utiles, par ex :
#cmdName#, #cmdHumanName#, #cmdSubType#, #eqName#, #eqHumanName# ?

Car la modification que tu demandes est assez simple à faire :

Bad

1 « J'aime »

Salut Bad,

Ce que je souhaite, c’est que #topic# = inscrit au topic - /#
soit pour inscrit au topic = shellies/garage/porte/ils/#
#topic# = shellies/garage/porte/ils

Capture d’écran du 2023-07-02 14-41-54

Le payload {"id":"wifigetstatus#[Shellies1][Garage finDeCourse][isConnectMQTT]#","src":"shellies/garage/porte/ils/events","method":"Wifi.GetStatus"} deviendrait : {"id":"wifigetstatus#[Shellies1][Garage finDeCourse][isConnectMQTT]#","src":"#topic#/events","method":"Wifi.GetStatus"}

A ce jour, personnellement non, mais je débute avec les scripts sur Shelly GEN2 et cela pourrait être intéressant. Certainement idem pour les utilisateurs de Jeedom + HA ou autres systèmes utilisant MQTT.

J’ai moins de scrupules à avoir fait cette demande d’amélioration.

Bon dimanche.

Edit, la beta est déjà là et opérationnel.

Exactement ce que je souhaite.

Je suis en train de tester avec le topic de l’équipement, mais c’est plus compliqué.
Je te propose d’utiliser #eqTopic# avec ce code :

			$replace[] = '#eqTopic#';
			$replaceBy[] = $this->getEqLogic()->getTopic();

Et la commande devra être de la forme suivante :
image

{"data":substr(#eqTopic#, 0, -2),"value":"#name#"}

Je vais donc ajouter pour :

  • la commande courante : #id#, #name#, #humanName#, #subType# et #topic#,
  • l’équipement courant : #eqId#, #eqName#, #eqHumanName#, #eqTopic# et #eqLastCom#

Oui, effectivement #topic# n’est pas ce qui est souhaité.

donc modifié par substr($this->getEqLogic()->getTopic(), 0, -2) pour pouvoir utiliser directement #eqTopic#.

$replace = array('#slider#', '#title#', '#message#', '#color#', '#select#', '#topic#', '#eqTopic#');
$replaceBy = array($_options['slider'], $_options['title'], $_options['message'], $_options['color'], $_options['select'], $topic, substr($this->getEqLogic()->getTopic(), 0, -2));

1 « J'aime »

Ca ne marchera pas pour ceux qui utilisent des topic de souscription du style mon/?/topic/#, je ne ferais donc pas le subsrt() dans le code de #eqTopic#, il faudra le faire dans la cmd.

Je me demande d’ailleurs si #eqTopic# a du sens du coup…

Laisse le cela reste le topic de base. je mettrais le substr dans le payload.

C’est fou quand tu lis et tu te dis … « mais p…in je comprends rien, ils sont de quelle planète » :joy:

2 « J'aime »

Hello Heddy,

Jeandhom a besoin d’avoir le topic utilisé par la commande (action) dans le payload :

Donc on regarde ce qu’on peut faire et je vais probablement rajouter ces tags :

  • #id# → id de la commande action (ex: 8873)
  • #name# → nom de la commande action (ex: set2)
  • #humanName# → humanName de la commande action (ex: [Doc][Topic 108883][set2])
  • #subType# → sous-type de la commande action (ex: other)
  • #topic# → topic de la commande action (ex: mon/topic)
  • #eqId# → id de l’équipement (ex: 447)
  • #eqName# → nom de l’équipement (ex: Topic 108883)
  • #eqHumanName# → humanName de l’équipement (ex: [Doc][Topic 108883])
  • #eqTopic# → topic de souscription de l’équipement (ex: mon/topic/#)

Bad

1 « J'aime »

Hello @Jeandhom,

C’est implémenté dans la stable du jour.

Qui contient aussi quelques corrections (cf : Plugin jMQTT - Actualités - #28 par Bad)

Bad

3 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.