Le plugin ne remonte jamais les infos Ethernet, Alimentation secteur et GSM

Voila une trame « grosse synchro » que tu obtiens quand tu envoies la commande « REFRESH » au backend.

[2023-10-01 21:06:32][DEBUG] : {« name »:« XXXXXXX »,« id »:« XXXXXXX »,« state »:« DISARMED »,« timeZone »:« EUROPE_BRUSSELS »,« color »:« WHITE »,« postAlarmIndication »:{« enabledIndicationRules »:[« INDICATE_UNCONFIRMED_ALARMS »,« INDICATE_CONFIRMED_ALARMS »]},« ledIndicationMode »:« HUB_SERVER_CONNECTION »,« externallyPowered »:false,« connectionLostAsMalfunction »:false,« alarmAsMalfunctionWhenArming »:false,« hubAddress »:null,« hubMalfunctions »:[],« noiseLevel »:{« avgValueDataChannel »:-102,« avgValueChannel1 »:-99,« high »:false,« avgValueChannel2 »:-101},« offlineAlarmSeconds »:300,« ledBrightnessLevel »:10,« jeweller »:{« lostHeartbeatsThreshold »:8,« detectorPingIntervalSeconds »:36},« imageUrls »:null,« gsm »:{« activeSimCard »:0,« simCardState »:« OK »,« virtualOperatorAllowed »:false,« signalLevel »:« WEAK »,« simCards »:[{« number »:«  »,« apn »:« gprs.base.be »,« username »:« XXXXX »,« password »:« XXXXXX »,« balanceNumber »:« 444# »,« trafficTxKb »:27172,« trafficRxKb »:46551,« lastTrafficResetTimestamp »:0},{« number »:«  »,« apn »:« internet »,« username »:«  »,« password »:«  »,« balanceNumber »:«  »,« trafficTxKb »:0,« trafficRxKb »:0,« lastTrafficResetTimestamp »:0}],« gprsEnabled »:true,« disableIcmpBeforeConnecting »:true,« roamingEnabled »:true,« networkStatus »:« 2G »},« cms »:{« address »:« XXXXX »,« port »:XXXXXX,« ethernetEnabled »:true,« cmsProtocol »:« SIA »,« cmsConnectionMode »:« ALWAYS_UP »,« siaAccountNumber »:« XXXXX »,« siaEncryptionKey »:XXXXXX,« siaEncryptionType »:« AES128 »,« activeChannels »:[« ETHERNET »],« alarmRecoveryNotificationSettings »:{« alarmRecoveryReportMode »:« REPORT_IMMEDIATELY »,« additionalAlarmRecoveriesToReport »:[« PANIC »]},« addressReserve »:« 0.0.0.0 »,« portReserve »:0,« pingPeriodSeconds »:600,« gprsEnabled »:false,« sendPanicButtonLocation »:false,« gprsAddress »:« 0.0.0.0 »,« gprsPort »:0,« gprsAddressReserve »:« 0.0.0.0 »,« gprsPortReserve »:0},« panicSirenOnPanicButton »:true,« tampered »:false,« connectionTestInProgress »:false,« armPreventionMode »:« ALERT_USER »,« twoStageArming »:{« enabled »:false,« applicationTriggeredArming »:{« countdownDurationSeconds »:30,« state »:« NOT_STARTED »,« expirationUnixTime »:null},« deviceTriggeredArming »:{« countdownDurationSeconds »:60,« finalDoorBounceCountdownDurationSeconds »:3,« state »:« NOT_STARTED »,« expirationUnixTime »:null}},« groupsEnabled »:false,« firmware »:{« version »:« 2.16.1 »,« newVersionAvailable »:false,« latestAvailableVersion »:null,« autoupdateEnabled »:true},« ethernet »:{« enabled »:true,« dns »:« XXXXX »,« ip »:« XXXXXX »,« gate »:« XXXXXXX »,« dhcp »:false,« mask »:« 255.255.255.0 »},« activeChannels »:[« ETHERNET »,« GSM »],« hubSubtype »:« HUB_2 »,« debugLogState »:« ETHERNET_ONLY »,« fireAlarm »:{« triggerOnAllSensors »:false,« doubleImpulses »:false,« alarmPropagationTimeoutSeconds »:null,« alarmPropagationTimeoutExpirationTimestamp »:0,« alarmPropagationState »:« DISABLED »,« alarmPropagationDetails »:{« multiApartmentBuildingModeEnabled »:false}},« blockedByServiceProvider »:false,« alarmVerification »:{« verificationEnabled »:false,« verificationTimeout »:30},« alarmConfirmation »:{« commonDevice »:{« status »:« DISABLED »,« timeoutMinutes »:30,« confirmedAlarmOn »:[« DELAYED_DEVICES »]},« holdUpDevice »:{« status »:« DISABLED »,« timeoutMinutes »:480}},« geoFence »:{« latitude »:« XXXXXXXXXXXXXX »,« longitude »:« XXXXXXXXXXXXXXXXXX »,« radiusMeters »:150},« armPreventionConditions »:[« LOW_BATTERY_CHARGE »,« NO_EXTERNAL_POWER »,« TAMPERED »,« HIGH_NOISE_LEVEL »,« NO_SERVER_CONNECTION »],« restoreRequiredAfterAlarmCondition »:[],« limits »:{« rooms »:50,« groups »:9,« cameras »:25,« sensors »:100,« users »:50},« panicSirenOnAnyTamper »:true,« warnings »:{« hub »:1,« allDevices »:1},« battery »:{« chargeLevelPercentage »:85,« state »:« CHARGED »},« hardwareVersions »:{« cpu »:2,« wifi »:0,« ethernet »:1,« flash »:3,« pcb »:81,« rfm »:10,« zwave »:0,« modem »:10},« pingPeriodSeconds »:60,« alarmCondition »:[],« connectivityNotificationSettings »:{« channelOfflineAlarmDelaySeconds »:300,« enabledChannelNotifications »:[« ETHERNET »]},« photoOnDemandDetails »:null}

Dedans tu as des infos utiles concernant :

Le GSM, avec la force du signal, qui peut être WEAK, MEDIUM, et STRONG si je dis pas de conneries (de mémoire hein)

« gsm »:{« activeSimCard »:0,« simCardState »:« OK »,« virtualOperatorAllowed »:false,« signalLevel »:« WEAK »,
« simCards »:[{« number »:«  »,« apn »:« gprs.base.be »,« username »:« XXXXXX »,« password »:« XXXXXXX »,« balanceNumber »:« 444# »,« trafficTxKb »:27172,« trafficRxKb »:46551,« lastTrafficResetTimestamp »:0},
{« number »:«  »,« apn »:« internet »,« username »:«  »,« password »:«  »,« balanceNumber »:«  »,« trafficTxKb »:0,« trafficRxKb »:0,« lastTrafficResetTimestamp »:0}],

Partie signal :
« gsm »:{« activeSimCard »:0,« simCardState »:« OK »,« virtualOperatorAllowed »:false,« signalLevel »:« WEAK »,

Je vais tenter de générer une trame avec le signal qui change (type update) … le temps de trouver du papier alu :smiley:

Regarde aussi pour le statut de connectivité, que ce soit ETHERNET ou GSM, tu as l’info dans cette portion du message :

« activeChannels »:[« ETHERNET »,« GSM »]

Message d’update pour indiquer que la connexion au serveur SIA est perdue :
[2023-10-01 21:16:01][DEBUG] : Received : {« apikey »:« XXXXXXXXXXXXXXXXXXXX »,« data »:[{« type »:« HUB »,« id »:« XXXXXXXXXXXXX »,« updates »:{« CMSActiveChannels »:0},« userId »:« XXXXXXX »,« hubId »:« XXXXXXXXXX »}]}

Et le message qui dit que la connexion au serveur SIA est revenue :
[2023-10-01 21:16:01][DEBUG] : Received : {« apikey »:« XXXXXXXXXXXXXXXXX »,« data »:[{« type »:« HUB »,« id »:« XXXXXXXX »,« updates »:{« CMSActiveChannels »:1},« userId »:« XXXXXXXXXXXXXX »,« hubId »:« XXXXXXXXX »}]}

Ok alors je pourrais pas tout faire malheureusement j’ai autant de temps à accorder au plugin. Par contre je rajouterai les truc update ça par contre. Mais tout ce qui est nouvelle commande pas sur car le but c’est pas de tout remonter ça fait bcp de commande et ça ralenti jeedom. Et la commande activechannel ça demande de revoir le code d’analyse donc compliqué.

Tkt, moi je te donne l’info, mets ça au frigo pour quand t’auras le temps … je t’ai dit, si je pouvais, je donnerais volontiers un coup de main, mais le plugin est en closed source …
Je peux toujours le trafiquer en local sur ma jeedom frankenstein de DEV, et t’envoyer un zip du code source … mais tout comme toi, j’ai beaucoup de boulot au … boulot, et quand je finis de coder la journée, j’ai pas toujours la motivation de m’y remettre au soir :confused:

Concernant l’ethernet, je viens de faire le test en branchant et débranchant le cable, et je vois que Ajax n’envoie pas de trame update pour ça … donc de ce coté là, tu vas pas savoir faire grand chose, si ils envoient pas, ils envoient pas :confused:

Le plugin va passer public normalement il me faut juste l’autorisation de Domadoo et c’est bon ça sera plus simple

Je ferai de mon possible pour aider quand il sera en public aussi :slight_smile: j’aime pas juste demander de l’aide, et comme je suis DEV aussi, j’aime bien rajouter mes propres trucs aussi :slight_smile:

J’ai dit une connerie, y a bien un message update pour la partie ethernet
« updates »:{« eth_enabled »:false},« userId »:« XXXXXX »,« hubId »:« XXXXXX »}

Ceci dit, ils ne l’envoient que suite à une modification de config de la centrale, donc pas top top :s

C’est possible que le cloud jeedom filtre je regarderai. On filtre pas mal de chose car sinon trop de message et on perd trop de temps dépiler les messages et ensuite on a du retard dans les traitements donc l’idée cest Pas de tout avoir mais d’avoir les message critique en temps quasi réel

Ah ouais, je comprends :slight_smile:

Il me reste deux trucs que je galère à tester : l’intensité du signal … j’arrive pas à la faire changer, je vis à coté d’une antenne donc à moins d’emmener le brol à la cave ça va etre chaud.

Et y a le « tampering » mais si je chipote à ça maintenant, ça va déclencher mes sirènes, les voisins vont gueuler à cette heure ci LOL

Je veux pas abuser de ton temps et t’as déjà été super sympa de regarder avec moi.
Si j’arrive à chopper des trames sur la force du signal cellulaire en mode update, je te ferai signe :slight_smile:

Pas de soucis et dès que j’ai le temps je corrige au moins le gros et je te dis.

1 « J'aime »

Tu me fais signe quand tu mets en beta et je te testerai ça pico bello.

Si tu as besoin d’autres infos, trames, logs, quoi que ce soit, n’hésite surtout pas, je ne suis jamais bien loin :slight_smile:

Un dernier truc que je viens de comprendre,

Pour la partie NF du SIA, c’est normal que tu n’aies pas d’ID d’équipement, ça remonte ainsi car c’est une activation forcée par utilisateur (User) du coup, ça n’indique que le UserId et pas le device ID …

M’a fallu le temps de piger … donc selon leur documentation, même si c’est pas indiqué super clairement, c’est logique

Voilà c’est là le soucis je rajouterais le code à voir si y’en a d’autres

Ouais, je crois en voir d’autres, notamment dans le même cas mais que c’est un armement spécifique d’une zone ou l’autre, mais pour être sincère avec toi, j’ai vraiment la flemme de tester ça … si personne ne s’en plaint, je dirais que le fix du code NF est laaaaargement suffisant … les codes SIA dans le fichier de AJAX couvrent des cas totalement tordus que je suis certain que 99% des users lambda n’auront jamais

Je pense aussi au pire je rajouterai si d’autre utilisateur en ont besoin

ça me semble être un bon plan :smiley:

Bonjour,
Je viens de pousser une partie des modifications (disponible demain en beta) :

  • le code NF ca devrait etre bon
  • j’ai pris en compte la remontée de batterie
  • rajout de la commande pour le status du CMS
  • changement du typage de certaine commandes

Pour les 2 derniers il faudra supprimer l’équipement hub et refaire une synchronisation (je cherche comment améliorer ce point mais c’est pas simple)

Par contre je pense il y a encore beaucoup de boulot en particulier sur la partie GSM et connexion.

Pour info le repo est passé public.

Salut,

Ouaip, je viens de passer en revue les adaptations que t’as fait, ça me semble vraiment bien.

Je vais tester en beta demain et je te dirai quoi.
Nickel d’avoir mis le code en public, si je vois d’autres choses qu’on peut adapter / rajouter, j’enverrai directement des PR sur le repo :slight_smile:

Encore un très grand merci à toi Loic :slight_smile:

Je me suis permis de t’envoyer un PR, en relisant le code, j’ai vu qu’il manquait qqch.

Je te laisse le soin de regarder, à priori, je ne devrais pas avoir fait de connerie :slight_smile:

Pour la partie update, j’ai regardé le code, je pourrais proposer ceci, même si je suis un peu rouillé au niveau de mon PHP …

On a la config de chaque équipement dans devices.
Dans le install.php, au moment où on passe dans la fonction ajaxSystem_update() :

On boucle sur chaque équipement du type ajaxSystem.
On regarde de quel type de device il s’agit.
On compare les commandes sur base du logicalId de chaque truc qui se trouve dans le fichier json qui décrit la config du device.

  • Si la commande avec le logicalId correspondant ne se trouve pas dans la config on delete (on est pas obligés, mais ça nettoierait)

  • Si la commande avec le logicalId correspondant se trouve dans la config, on met à jour chaque commande en settant le type et subtype qu’il faut … un truc du genre

  • Enfin, on boucle sur la config et on regarde si il y a des choses en extra dans la config qu’on a pas au niveau de l’équipement, si c’est le cas, on créée la commande à la volée.

Je dirais qu’avec cette implémentation là, on est couverts … par contre, je pense pas être suffisamment calé en jeedom pour faire tout ça tout seul :stuck_out_tongue: