Bonjour,
Si le reverse engineering a déjà été fait ou qu’il existe une doc sur le fonctionnement de l’équipement ce sera plus simple sinon cela demande pas mal de temps pour le faire. Pour le reverse, il y a la solution donnée par @SWR en capturant le traffic et en l’analysant. On peut aussi décompiler l’apk de l’application s’il y en a une afin d’y trouver des infos par exemple.
Pour l’intégration dans le plugin Blea, il faut regarder ce qui existe déjà pour d’autres équipements dans le plugin Blea et adapter pour l’équipement concerné. Voici déjà quelques infos mais ce n’est pas exhaustif. N’hésitez pas à compléter ou corriger si je me trompe. Il y a des adaptations à faire en fonction de chaque équipement.
Si on prend par exemple la Miscale2.
Dans le répertoire /plugins/blea/core/config/devices/miscale2/ se trouvent :
- le fichier miscale2.json qui se divise en 3 parties:
- la configuration spécifique pour l’équipement :
"miscale2": {
"name": "MiScale 2",
"groupe" : "Santé",
"configuration" : {
"specificmodal" : 1,
"specificclass" : 1,
"xiaomi" : 1,
"name" : "miscale2",
"battery_type": "4x1.5V AA"
},
dans lequel on retrouve les paramètres suivants :
ainsi que les spécificités concernant le widget, un eventuel modal et une eventuelle class dédiée…
- les commandes à créer :
"commands": [
{
"name": "Dernier Poids",
"type": "info",
"subtype": "numeric",
"display": {
"generic_type": "GENERIC"
},
"unite": "kg",
"isVisible": 1,
"logicalId": "poids",
"isHistorized": 0,
"template": {
"mobile": "line",
"dashboard" : "line"
}
},
.
.
.
],
- La référence à l’image, d’eventuelles remarques, le type, la batterie …
"compatibility": [
{
"manufacturer": "Xiaomi",
"name": "MiScale V2",
"doc": "",
"type": "Scale",
"battery_type": "4x1.5V AA",
"ref" : "",
"comlink": "",
"remark": "Gestion de profils complète",
"inclusion" : "Mode inclusion",
"imglink": "miscale"
}
]
-
le/les fichier(s) miscale2.jpg correspondant à l’image que l’on souhaite afficher dans la page de configuration de l’équipement.
-
La Miscale2 ayant une classe spécifique (qui n’est pas obligatoire) pour la gestion des profils utilisateurs, le fichier se trouve dans /plugins/blea/core/config/devices/miscale2/miscale2.class.php. S’il y avait un Widget specifique pour ce device, il faudrait ajouter la fonction convertHtml() dans ce fichier et mettre le fichier html correspondant dans /plugins/blea/core/template/dashboard/ et/ou /plugins/blea/core/template/mobile/.
Dans le répertoire /plugins/blea/resources/blead/devices/ se trouve :
- le fichier miscale2.py. C’est dans ce fichier python que l’on va pouvoir définir les actions à réaliser.
La fonction isValid() va par exemple permettre d’identifier une équipement par son nom (s’il l’annonce) ou par le début de son adresse MAC.
La fonction parse() est apellée lorsque le plugin recoit des trames qui sont « advertisées » par l’équipement. Dans cette fonction, on va par exemple lire ces informations reçues en hexa et les convertir pour les rendre lisible dans une commande « Info ».
La fonction read() est apellée lorsque le plugin fait une « Refresh forcé » par exemple pour aller lire une information sur l’équipement. Dans cette fonction, on va par exemple lire les informations en hexa et les convertir pour les rendre lisible dans une commande « Info ».
La fonction action() est appelée lorsque l’on utlise une commande « Action » de l’équipement. Dans cette fonction, on va par exemple prendre les informations lisibles d’une commande « Action » pour les convertir en hexa et les envoyer à l’équipement.
La fonction handlenotification() pour gérer les notifications recues de la part de l’équipement si ce dernier le supporte et que l’on peut les activer.
Tout cela est bien sur à adapter pour chaque type d’équipement.
Bon courage à ceux qui se lanceront