BUG : Plugin Ajax - Etat GSM incorrect

Bonjour a tous,

Je voudrais juste signaler un bug que j’ai constaté concernant le plugin alarme AJAX.

Sur le dashboard, mon objet « centrale d’alarme » ou Hub Ajax si vous préférez (Hub2), indique X (valeur 0 en binaire) pour l’item GSM.
En regardant le nom technique de la commande, je vois que ça correspond à gsm::activeSimCard, donc carte Sim active installée dans la centrale.
En ce qui me concerne, il y a bel et bien une carte SIM installée dans le Hub, et elle fonctionne (2G et SMS se transmettent bien).
Je n’ai qu’une seule carte SIM installée par contre, le Hub permet d’en installer 2.

Ce n’est pas dramatique et ne m’empêche pas d’utiliser le plugin, mais je préférais le signaler.
Je n’ai jamais vraiment remonté de bug avant aujourd’hui, donc je suppose que c’est via la communauté. Si ce n’est pas le cas, n’hésitez pas à m’indiquer où je dois faire ça :slight_smile:

Par avance, merci :slight_smile:

Bonjour,
Je ne comprends pas bien, pourrais tu me dire qu’il faut mettre a la place de gsm::activeSimCard ?

Bonjour Loïc,

Ce que je veux expliquer c’est qu’au niveau de cette commande soit l’état est inversé, soit la remontée d’information n’est pas bonne.

J’ai une carte sim installée active dans le Hub, et quand je regarde le résultat de cette commande gsm::activeSimCard, elle me renvoie 0.
Quand une carte SIM est insérée et active dans le HUB, on devrait obtenir l’état 1, non ?

D’ailleurs dans l’app AJAX du fabriquant, quand je regarde les infos de mon HUB j’ai bien :
-Intensité du signal cellulaire (2 barres sur 3)

  • Réseau mobile : Connecté
  • (SIM) Actif : SIM1

BAT,

Inversé c’est possible enfin oui et non nous on transmet ce que ajax donne, donc ca se trouve la logique ajax c’est 0 ya une carte sim.

Pour tester ton hypothèse, j’ai fait quelques tests :

  • Carte SIM insérée dans le HUB, réseau cellulaire activé => valeur commande = 0
  • Carte SIM insérée dans le HUB, réseau cellulaire désactivé => pas de changement, valeur = 0
  • Retirer carte SIM du HUB => pas de changement : valeur commande = 0

J’ai comme l’impression que le lien est cassé … changement au niveau du protocole avec ajax ??

Je ne sais pas si ça t’aide ou pas … tu veux que je regarde pour tester autre chose ?

Faudrait voir le log du plugin ajax lors des actions il est possible qu’il change le nom du champs entre les updates et les synchronisation forcée (c’est pas la 1er fois)

J’ai mis le plugin en debug.
Je copie pas le log ici, pour des raisons assez évidentes.

Je constate dans les logs à la synchro :

« activeChannels »:[« ETHERNET »,« GSM »]
« gsm »:{« activeSimCard »:0,« simCardState »:« OK »,« signalLevel »:« NORMAL »,« networkStatus »:« 2G »

Quand j’active le la partie GSM / Réseau cellulaire, je reçois bien l’info :
updates":{« gsmNetworkStatus »:0}
puis
updates":{« gsmNetworkStatus »:1}
puis
updates":{« gsmNetworkStatus »:2}

Si je ne me trompe pas, 0 correspond à « Pas de signal », 1 à « Faible », 2 à « Normal », 3 à « Fort »

La remontée des données se passe donc correctement.

Tu saurais me dire sur base de quel critère la commande est interprétée dans Jeedom ?
Sur quel / quels champs / quelle logique se base le code du plugin pour traduire si le GSM est OK ou pas ?

Je débarque un peu au niveau du code de Jeedom, j’ai regardé sur le github, mais j’ai pas fait de web depuis mes classes, et ça fait 10 ans que je fait plus que du .Net exclusivement … un peu rouillé sur les bords :wink:

J’en profite pour lancer une hypothèse, mais pas encore testé, le « activeSimCard » serait à mon sens le numéro, index base 0 de la carte SIM actuelle active …

0 = Slot Sim 1
1 = Slot Sim 2

Il me semble que la commande jeedom devrait plutot se baser sur le « Signal Level » ou le Network Status …

Qu’en penses tu ?

BAT,

Ok je vois faut remplacer gsm::activeSimCard par gsmNetworkStatus je pense. Ca sera changé dans les configs dans la beta de demain. Par contre faudra le faire manuellement chez ceux ayant deja l’équipement hub d’installé.

Salut, je viens de tester, j’ai remplacé la commande originale dans le « Logical Id » du Hub de
« gsm:activeSimCard » à « gsmNetworkStatus ».
J’ai bien désormais la valeur « 2 » qui se met.

Par contre, je pense que pour le plugin, ce serait pas mal au lieu d’avoir un boolean, d’avoir un petit bar graph ? :smiley:
J’abuse hein ? :smiley:

1 « J'aime »

Faut je vois oui j’essaye d’y penser demain

@Loic : si vous avez de votre coté la documentation de l’API Ajax, tu peux me la faire parvenir, je peux un peu regarder et voir pour éventuellement contribuer à la configuration dans le plugin (commandes etc) pour enrichir l’information exposée dans jeedom via PR dans github.

Je pensais notamment rajouter le status de la batterie interne du Hub, status GSM (none, 2G, 3G), état des signaux Jeweller et Wings etc …

Je suis particulièrement rouillé en développement web, mais je veux bien m’y remettre … (à petites doses)

BAT,

PS: je ne vois pas le plugin Ajax sur le github par contre … mmh

Bonjour,
Malheureusement non on a signé un NDA avec eux je n’ai pas le droit de passer la documentation…

OK pas de soucis, je comprends.

Pas moyen non plus de contribuer au code du plugin sans faire partie de votre équipe ?

Si non, je te soumets quelques petites demandes pour la prochaine version du plugin :
Exposer l’info relative à

battery::chargeLevelPercentage
battery::state
gsm::simCardState
gsm::signalLevel
gsm::gprsEnabled
gsm::networkStatus

Au niveau du Hub donc
Par avance, merci :wink:

BAT,

Voila la config pour le hub2

{
  "name" : "Hub 2",
  "commands" : [
    {
      "name": "Etat",
      "type": "info",
      "subtype": "string",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "state",
      "template":{
        "dashboard":"ajaxSystem::state",
        "mobile":"ajaxSystem::state"
      }
    },
    {
      "name": "Evenement",
      "type": "info",
      "subtype": "string",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "event"
    },
    {
      "name": "Code evenement",
      "type": "info",
      "subtype": "string",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "eventCode"
    },
    {
      "name": "Trafiqué",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "tampered",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "GSM",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "gsmNetworkStatus",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Ethernet",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "ethernet::enabled",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Alimentation secteur",
      "type": "info",
      "subtype": "binary",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "externallyPowered",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Armement",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "ARM"
    },
    {
      "name": "Mode nuit",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "NIGHT_MODE"
    }, 
    {
      "name": "Desarmement",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "DISARM"
    },
    {
      "name": "Panic",
      "type": "action",
      "subtype": "other",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "PANIC"
    },
    {
      "name": "Arret detection incendie",
      "type": "action",
      "subtype": "other",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "muteFireDetectors"
    },
    {
      "name": "Intrusion",
      "type": "info",
      "subtype": "binary",
      "isVisible": 1,
      "isHistorized": 1,
      "logicalId": "sia_state_intrusion",
      "generic_type": "ALARM_STATE",
      "configuration": {
        "repeatEventManagement": "always",
        "returnStateValue" : 0,
        "returnStateTime" : 1
      },
      "template":{
        "dashboard" : "alert",
        "mobile" : "alert"
      }
    }
  ]
}

Suffit que tu me refasse un fichier avec les commandes que tu veux et je le rajoute. Attention a bien tester, j’ai pas de sim dans mon hub ajax donc je peux absolument pas valider.

Bien reçu, merci, je vais regarder à ça et tester avec mon setup

Je te tiens au courant

@Loic :

Je suis en train de faire quelques tests, et je vois également quelque chose de pas normal pas rapport au reporting du niveau de batterie du HUB.

Je vois que vous avez du chipoter pour la détection de Hub branché sur le courant 220v à savoir « externallyPowered », car vous récupérez ce statut une première fois dans la trame qui contient toutes les données du HUB, et ensuite par le biais des event updates via « hubPowered ».

Je viens de me rendre compte que vous pourriez avoir exactement le même soucis, encore non géré en ce qui concerne la remontée des infos de batterie.
En débranchant mon hub, je constate que je reçois une trame « hubPowered=0 », donc pas de soucis, c’est géré avec votre test dans le code PHP.

Par contre en regardant ce qui se passe au niveau de la remontée d’info batterie, je reçois une trame update « batteryCharge ». En l’occurence, la valeur dedans est 95, puisque mon hub se décharge en ce moment suite à mes tests. Par contre, dans la fenetre « Analyze => Equipements » de jeedom, le niveau de batterie ne se met pas à jour. Ce qui est en soi logique, vu que seule la trame originale contenant le « battery::chargeLevelPercentage » est interprété au niveau du code php.

Donc de ce que je vois actuellement, les données des batteries des équipements ne se mettent pas à jour après la synchro initiale.

Tu me suis ?

@Loic

Au niveau de la config, pour le Hub2, je vais te proposer ceci, qui ne devrait pas avoir trop de soucis.
Garde en tête malgré tout ma remarque en ce qui concerne le niveau de batterie qui doit être rafraichi a la fois sur base de la trame globale envoyée par le HUB a la synchro (et périodiquement il semble) ainsi qu’avec l’event update « batteryCharge ».

A ce stade je ne sais pas encore te dire si les capteurs sont affectés par le même soucis, mais je le soupçonne fortement, en effet, les trames périodes reçues contenant les informations relatives aux capteurs ne mentionnent pas le niveau de batterie … j’imagine que les capteurs envoie également des trame update de type « batteryCharge » de temps à autre …

Voici la config.
Tu me dis comment tu veux procéder pour le testing.

BAT,

{
  "name" : "Hub 2",
  "commands" : [
    {
      "name": "Etat",
      "type": "info",
      "subtype": "string",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "state",
      "template":{
        "dashboard":"ajaxSystem::state",
        "mobile":"ajaxSystem::state"
      }
    },
    {
      "name": "Evenement",
      "type": "info",
      "subtype": "string",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "event"
    },
    {
      "name": "Code evenement",
      "type": "info",
      "subtype": "string",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "eventCode"
    },
    {
      "name": "Trafiqué",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "tampered",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "GSM",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "gsmNetworkStatus",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
	{
      "name": "Intensité du signal cellulaire",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "gsm::signalLevel",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
	{
      "name": "Type réseau GSM",
      "type": "info",
      "subtype": "string",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "gsm::networkStatus",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
	{
      "name": "Données cellulaires actives",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "gsm::gprsEnabled",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Ethernet",
      "type": "info",
      "subtype": "binary",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "ethernet::enabled",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Alimentation secteur",
      "type": "info",
      "subtype": "binary",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "externallyPowered",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
	{
      "name": "Etat de la batterie",
      "type": "info",
      "subtype": "string",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "battery::state",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
	{
      "name": "Batterie",
      "type": "info",
      "subtype": "numeric",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "battery::chargeLevelPercentage",
      "configuration": {
        "repeatEventManagement": "always"
      }
    },
    {
      "name": "Armement",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "ARM"
    },
    {
      "name": "Mode nuit",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "NIGHT_MODE"
    }, 
    {
      "name": "Desarmement",
      "type": "action",
      "subtype": "other",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "DISARM"
    },
    {
      "name": "Panic",
      "type": "action",
      "subtype": "other",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "PANIC"
    },
    {
      "name": "Arret detection incendie",
      "type": "action",
      "subtype": "other",
      "isVisible": 0,
      "isHistorized": 0,
      "logicalId": "muteFireDetectors"
    },
    {
      "name": "Intrusion",
      "type": "info",
      "subtype": "binary",
      "isVisible": 1,
      "isHistorized": 1,
      "logicalId": "sia_state_intrusion",
      "generic_type": "ALARM_STATE",
      "configuration": {
        "repeatEventManagement": "always",
        "returnStateValue" : 0,
        "returnStateTime" : 1
      },
      "template":{
        "dashboard" : "alert",
        "mobile" : "alert"
      }
    }
  ]
}

Egalement, mise à jour des batteries pour le HomeSiren

{
  "name" : "Home Siren",
    "configuration" : {
    "battery_type" : "2xCR123A"
  },
  "commands" : [
    {
      "name": "Température",
      "type": "info",
      "subtype": "numeric",
      "isVisible": 1,
      "isHistorized": 1,
      "logicalId": "temperature",
      "generic_type": "TEMPERATURE",
      "unite" : "°C"
    }
  ]
}

Et voici encore une autre update config pour les batteries dans le StreetSiren

{
  "name" : "Street Siren",
      "configuration" : {
		"battery_type" : "4xCR123A"
  },
  "commands" : [
    {
      "name": "Température",
      "type": "info",
      "subtype": "numeric",
      "isVisible": 1,
      "isHistorized": 1,
      "logicalId": "temperature",
      "generic_type": "TEMPERATURE",
      "unite" : "°C"
    },
    {
      "name": "Etat",
      "type": "info",
      "subtype": "binary",
      "isVisible": 1,
      "isHistorized": 0,
      "logicalId": "buzzerState",
      "configuration": {
        "repeatEventManagement": "always"
      }
    }
  ]
}