Comment changer l'état d'un Virtuel avec Telegram

Bonjour

J’ai installé Telegram qui fonctionne très bien.
Je peux facilement envoyer un message Telegram sur mon smartphone (ou sur un autre) lorsqu’une alarm surgit.
En pélus de cela, quand une alarme est active, un equipement virtuel prend la valeur de 1.

Quand je lis mon message Telegram, je souhaite répondre pour acquité cette alarme, ou pour la désactiver. Par exemple, l’acquitement remettra mon virtuel avec une valeur de 0, et la désactivation à -1.

J’aimerais bien savoir comment je peux faire avec ma boite Jeedom pour traiter un message Telegram reçu.

J’ai lu une solution autour de ask

J’ai aussi vu qu’une variable ‹ repsone_telegram › est créée

Le message que je recois est

Que souhaitez vous faire?

si je réponds « stop » ou « alt », la variable ne prends pas de valeur, ni « stop », ni « alt ».
et je reçois le message

Désolé admin, je n’ai pas compris

Dès lors, je me demande comment on peut recevoir un message valide et traiter l’état d’une commande?

Merci pour vos lumières

Est-ce qu’on pourrait aussi m’expliquer comment configurer une interraction

Outils → Interraction

Quand j’en crée une, le premier nome que je dois donner, est « demande ». Je mets « teste »
Ensuite, la question que je me pose par rapport à cela est comment faire le lien avec Telegram, et surtout traiter une message reçu, si c’est une piste

Salut, tu a trouvé la réponse ? sinon je peux t’aider.

Salut PaTiTan,
Merci beaucoup pour ton message. Je ne le vois que maintenant.
Non je n’ai pas trouver de solution mais j’ai du bifurquer sur une autre problématique avec une application SmartPhone (Push notification) pour le même projet. J’ai donc fais une pose sur cette problématique, mais je vais devoir reprendre dans le prochains jours, car le temps commence à presser. Puis-je revenir vers toi, dans quelque jours si tu pouvais m’éclaircir la dessus? Mon but est qu’un utilisateur de Telegram puis valider une alarme. Par exemple, s’il revoir une alarme via Telegrame, il puisse répondre, par exemple, « STOP », et l’état de mon Virtuel prend la valeur aknoledge=true, pour ne plus d’envoyer des alertes pendans 6h.
Merci beaucoup pour ta proposition d’aide. Si c’est OK; je reviens vers toi, d’ici la fin de la semaine. Bonne soirée

Alors, il faut que dans ton alarme, tu fasse lancer un scénario ask si déclenchement

C’est pas forcément le menu interaction qu’il faut utilisé car tu as un délencheur… (ton alarme).
Les interactions, tu les utilises quand tu veux demander quelque chose à ta domotique.
Par exemple :


si j’envoi " plop " sur télégram, l’interaction lancera un scénario :

Ensuite ça se passe dans le scénario avec un ask.

Pour ton cas voici a quoi il devrais ressembler :

Certaines choses sont a adapter mais ça marche comme ça.

Au pire, on se cale un instant sur discord et je t’expliquerai.

Merci beaucoup! je vais regarder ceci entre ce soir et demain.

Bonjour PaTITan

Je reviens vers ce sujet et merci pour tes conseils.
Je n’ai pas tout compris

J’ai deux terrains à surveiller. une requête MQTT va vérifier l’état et selon la réponse un message Telegram est envoyé. Tout n’est pas optimal mais ca fonctionne.
Vu qu’il y a deux exploitants différents par terrain. Les alarmes du terrain 1 doivent être envoyées à l’exploitant 1, et les alarmes 2 à l’exploitants 2.

J’ai créé deux scénarios qui sont des doublons (pas très bien) mais au moins, un scénario va envoyer les messages Telegram à l’exploitant 1 et l’autre scénario à l’exploitant 2

Si j’ai bien compris, je devrais créé un troisième scénario qui est appelé par l’interaction (deuxième image). Donc t’as première photo est une interaction. Je n’arrive pas bien lire le contenu de l’interaction, mais sous Demande, je dois mettre Pop.

Je n’arrive absolument pas lire la troisième image qui sont les bloques du scénario

J’ai donc créé un nouveau scénario, qui pour le moment n’a pas de bloques

Par contre, je viens de constater un truc. J’ai déjà une interaction et je ne me souviens pas de l’avoir créé. Il y a un bouton « Regénéré » et dans le Filtre, il y a pas mal d’unités qui sont en lien avec mon projet. Pour être honnête, il y a un moment que j’avais travaillé dessus et la pause ne m’est pas bénéfique :wink:
Mais est-ce possible qu’elle ait été générée automatiquement?

Dans la deuxième photo, je dois donc remplacer alt par pop?
Ou non, alt est le texte que j’aimerais récupérer?

Le but est que l’exploitant répond à un message reçu pour valider une alarme.
Par exemple, s’il fait un reply avec le contenu « alt 1 », il ne recevra pas d’alarme pendant une heure. S’il fait « alt 2 », il ne recevra rien pendant 2 heures, et s’il fait « alt 3 » , rien pendant 3 heures, etc.

J’ai des virtuels qui représentent une station


Ils enregistrent les températures enregistrées et la commande « alarm » est à 0 si la station n’est pas alarmée, et à 1 si elle est alarmée. (ceci fonctionne, dans l’état)

L’idée est de créer une nouvelle commande « ack » pour chaque virtuel.
Si elle est à 0, l’alarme n’est pas confirmée (acknowlegment), si elle est a 1, elles est silencieuse pendant 1 heure (pas d’envois Telegram) si elle est à 2, elle est silencieuse 2 heure, etc.

Donc si l’exploitant, repond au message Telegram reçu « alt 2 », mon interaction doit lire le message et changer la commande ack du virtuel de la station concernée et mettre la valeur 2.

Si j’arrive déjà faire cet exorcise, cela serait super, sachant qu’il y aura un autre problème.

Il y a 14 stations!!! Donc le reply de l’exploitant doit correspondre à une station alarmée!!! :slight_smile: Donc l’exploitant devrait répondre « st1 alt 2 » (station 1, alt pour 2 heures)

Si non, si le message envoyé par ma boîte domotique est le suivant

Station 2 (st2)
sonde 1: 0°C
sonde 2: -4°C
Bat: 4.1V

S’il fait un reply à ce message, peut-on récupérer « st2 », ainsi il n’aura qu’à écrire « alt 2 », et mon interaction/scénarion vont traiter les textes « st2 alt 2 ».

Ou alors, l’exploitant pourrait juste écrire « st2 2 » (ou "st 2 2 "), pour « Station 2 , silencieuse pour 2 heures », sans utiliser le mot alt.

Bref, si j’arrive déjà faire la première partie, ca serait tip top :slight_smile:

Merciiii

J’ai réussi à faire un bon commencement

Un bloque code (ce code existait déjà et j’ai repris ta proposition)

$cmdID = $scenario->getRealTrigger();

log::add(« SmartBud »,« info »,$cmdID.« => has been triggered »);

if($cmdID != « user ») // The sclnario has not been trigger by an user
{
$value = cmd::byString(‹ # ›.$cmdID.‹ # ›)->execCmd();
log::add(« SmartBud »,« info »,$cmdID." : ".$value);
$arrayValue = json_decode($value, true);
log::add(« SmartBud »,« info »,"app_id : ".$arrayValue[‹ app_id ›]);
log::add(« SmartBud »,« info »,"dev_id : ".$arrayValue[‹ dev_id ›]);

  $tags = $scenario->getTags();
  $tags['#station#'] = $arrayValue['dev_id'];
  $tags['#alarm#'] = 0;

foreach($arrayValue[‹ payload_fields ›] as $key => $val){
log::add(« SmartBud »,« info »,"DEBUG => Sensor : ".$key);
if($key == « ba »)
{
$val = $val/100;
log::add(« SmartBud »,« info »,"DEBUG => batterie : ".$val);
cmd::byString(‹ #[ ›.$arrayValue[« app_id »].‹ ][ ›.$arrayValue[« dev_id »].‹ ][Batterie]# ›)->event($val);
$tags[‹ # ›.$key.‹ # ›] = $val;
}

 	if($key == "b1" || $key == "b2" || $key == "b3" || $key == "b4")
	{
      	
  	$val = $val/10;
      	log::add("SmartBud","info","DEBUG => Température : ".$key.'=>'.$val);
      	$tags['#'.$key.'#'] = $val;
      	cmd::byString('#['.$arrayValue["app_id"].']['.$arrayValue["dev_id"].']['.$key.']#')->event($val);
      
      	// Thershold
      	if($val < 6)
        {
         	cmd::byString('#['.$arrayValue["app_id"].']['.$arrayValue["dev_id"].'][Alarm]#')->event(1);
      		$tags['#alarm#'] = 1;
          	//log::add("SmartBud","info","DEBUG => #alarm# 1");
        }
        else
        {
          	cmd::byString('#['.$arrayValue["app_id"].']['.$arrayValue["dev_id"].'][Alarm]#')->event(0);
        	$tags['#alarm#'] = 0;
          	//log::add("SmartBud","info","DEBUG => #alarm# 0");
        }
      #log::add("SmartBud","info",$cmdID."=> ".$key." : ".$val);
	}	
}

  $scenario->setTags($tags);

log::add(« SmartBud »,« info »,« ==== FIN ==== »);
}

Puis

Et ca fonction.

Ce que je n’arrive pas

Je n’arrive pas à sélectionner l’action ack de mon virtuel


Pourtant la commande existe bien.

Si c’est cool, mais ce n’est pas optimale, car souvent je n’ai pas le choix des réponses, particulièrement quand il y 2-3 alarmes qui arrivent à la suite

Par contre, je ne suis passé par une interaction, j’aurais dû?

[Mise à jour du message]
Voilà.ca fait 30mn que j’ai augmenter le seuil et toutes les stations génèrent des alarmes et des message.

Le problème est que si je ne réagit pas au premier message, le choix des réponses n’est pas toujours affiché et s’il est affiché avec la question
« Ok, je ne fais rien et la station tag(station) vous alertera la prochaine fois »
il me reourne un message incohérent
Et pour des vignerons, ils vont vite se perdre.

Le top, et si c’est possible, c’est travailler avec une interaction, mais là je n’ai pas d’expérience.

J’ai vu que dans une interaction


il y a un regex.

Si l’exploitant recoit ce message

Alarme st-3
b1: 1.9°C
b2: 1°C
ba: 4.2V

Il ne pourrait pas faire un reply

Puis dans le message, il ecrit un truc du genre:

s1, s3, s6 pour silence 1heure, silence 3 heure, silence 6 heure

et dans l’interaction (regex) on détecte la chaine de caractpre ‹ st-3 › du message envoyé?

A savoir qu’il y a 14 stations, donc il peut avoir st-1, st-2, st-4, st-11, etc.

Ainsi, je pourrais détecter le numéro de la station et mettre la commande ‹ ack › de mon virtuel correspondanr à la station, à 1, si s1, à 3 si s3 et à 6 si s6?

Est-ce un truc de ouf?
mais ca serait top!

Peut être le choix des virtuels n’était pas un bon choix.
Pour résumé. Il y a autant de virtuels que de stations

Chaque vitruel à une commande correspondant à une mesure de la station.
Si par exmeple, la station 3 (avec ses trois capteurs) mesure une température de 1°C, de 2°c et sa batterie à 4V, le virtuel enregistre ces données jusqu’à la prochaine mesure. Mais un virtuel a aussi, d’autre commande pour savoir si la station est en alerte, ou si l’alarme est acquittée. C’est principalement pour ce dernier paramètre que j’utilise des virtuel.

Ainsi avant d’envoyer un message Telegram, le scenario va vérifier la commande ‹ ack › pour savoir s’il doit ou pas envoyer le message Telegram, soit l’alerte.

Merciiiii

Je medemande un truc, est-ce qu’on peut envoyer une message qui va ouvrir une application du téléphone que j’ai développé?
Parce que là, le lien du message Telegram, pourrait ouvrir l’app du téléphone ou l’utilisateur peut faire des modifications, tel que acquittement d’une alarne.