Bonjour,
J’utilise un équipement jMQTT pour publier un json que je calcule dans une user function
public static function jsonAlarmState() {
$alarm = cmd::byString('#[Maison][Myalarm][alarm]#')->execCmd();
$zone1 = cmd::byString('#[Maison][Myalarm][zone1]#')->execCmd();
$zone2 = cmd::byString('#[Maison][Myalarm][zone2]#')->execCmd();
$sound = cmd::byString('#[Maison][Myalarm][sound]#')->execCmd();
$siren = cmd::byString('#[Maison][Myalarm][siren]#')->execCmd();
$arr = array (
'alarm' => ($alarm ? 'armed' : 'disarmed'),
'zone1' => ($zone1 ? 'enabled' : 'disabled'),
'zone2' => ($zone2 ? 'enabled' : 'disabled'),
'sound' => ($sound ? 'enabled' : 'disabled'),
'siren' => ($siren ? 'enabled' : 'disabled')
);
return json_encode($arr);
La fonction retourne bien (testée dans un scenario) :
{"alarm":"disarmed","zone1":"disabled","zone2":"enabled","sound":"disabled","siren":"disabled"}
mais mon broker reçoit cela :
jeedom/jeealarm/state "{"alarm":"disarmed","zone1":"disabled","zone2":"enabled","sound":"disabled","siren":"disabled"}"
Le problème c’est l’apostrophe en début et en fin de chaine qui font du message un json malformé. Autant dire que les abonnés au message MQTT de l’autre côté n’apprécient pas beaucoup ![]()
Si je saisis à la main la chaine retrournée par la fonction dans la valeur de la commande, les données sont correctement formatées :
jeedom/jeealarm/state {"alarm":"disarmed","zone1":"disabled","zone2":"enabled","sound":"disabled","siren":"disabled"}
Pourquoi cet " en début et fin s’ajoute t-elle ?
Pour info si je fais la même chose avec le plugin MQTT Manager j’ai la même punition ![]()
Merci d’avance pour vos réponses avisées ![]()


