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