Bonjour,
Je suis emprunté , car cela marchait
Dans mon scénarion, j’ai un déclancheur.
J’avais fait un petit code PHP qui va
- récupérer l’ID du déclancheur
- Si ce n’est pas déclancher par une action de l’utilisateur, continue
- crée un permier log
- log l’ID du devise
Jusqu’à la tout va bien
Puis je sauve dans des tag des valeurs. Dans le tag ‹ station › je sauve la valeur dev_id.
Dans le log, je vois bien sa valeur, mais dans le tag, il m’affiche rien du tout.
Pourtant ‹ $arrayValue[‹ dev_id ›] › a bien la valeur de st-13
Puis je crée des tags, ce qui fonctionnait avant
$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",$cmdID." : ".$arrayValue['dev_id']);
$tags = $scenario->getTags();
$tags['#station#'] = $arrayValue['dev_id'];
log::add("SmartBud","info",$cmdID." : ".$tags['station']);
$tags['#field#'] = 0;
$tags['#alarm#'] = 0;
}
$scenario->setTags($tags);
Voici mon code au complet
$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",$cmdID." : ".$arrayValue['dev_id']);
//echo $scenario->setData($arrayValue['dev_id'], '0');
$tags = $scenario->getTags();
$tags['#station#'] = $arrayValue['dev_id'];
log::add("SmartBud","info",$cmdID." : ".$tags['station']);
$tags['#field#'] = 0;
$tags['#alarm#'] = 0;
foreach($arrayValue['payload_fields'] as $key => $val){
log::add("SmartBud","info",$cmdID."=> key : ".$key);
if($key == "ba")
{
log::add("SmartBud","info",$cmdID."=> ba : ".$val);
$val = $val/100;
cmd::byString('#[SmartBud]['.$arrayValue["dev_id"].'][Batterie]#')->event($val);
$tags['#'.$key.'#'] = $val;
log::add("SmartBud","info",$cmdID."=> ".$key." : ".$val);
}
if($key == "b1" || $key == "b2" || $key == "b3" || $key == "b4")
{
log::add("SmartBud","info",$cmdID."=> Température : ".$val);
$val = $val/10;
$tags['#'.$key.'#'] = $val;
cmd::byString('#[SmartBud]['.$arrayValue["dev_id"].']['.$key.']#')->event($val);
// Thershold
if($val < 2)
{
cmd::byString('#[SmartBud]['.$arrayValue["dev_id"].'][Alarm]#')->event(1);
$tags['#alarm#'] = 1;
}
else
{
cmd::byString('#[SmartBud]['.$arrayValue["dev_id"].'][Alarm]#')->event(0);
$tags['#alarm#'] = 0;
}
log::add("SmartBud","info",$cmdID."=> ".$key." : ".$val);
}
}
$scenario->setTags($tags);
}
Voyez-vous quelque chose que j’aurais omis de faire???
Par exemple, dans le foreach, il ne rendre jamais dans la $key quand elle est égal à ‹ ba ›