Avez-vous déjà rêvé d’automatiser votre maison à l’aide d’un Raspberry Pi ? Si c’est le cas, Jeedom peut vous permettre de réaliser ce rêve. Cet article est un tutoriel complet pour la création d’un plugin pour le système domotique Jeedom. Il explique l’ensemble du processus, de la compréhension des concepts au test de votre plugin à l’aide d’exemples. Le tutoriel utilise des modèles pour obtenir un flux de développement rapide et des exemples pour vous montrer exactement comment les choses fonctionnent.
Logiciel d’édition de code
Nous allons pour commencer choisir le logiciel pour écrire le code, vous pouvez le faire avec le bloc-notes, mais c’est moyen…
Dans ce tutoriel, on va utiliser Visual Studio Code qui est gratuit, que j’utilise personnellement pour tous mes développements.
L’avantage de Visual Studio Code c’est qu’il existe des extensions qui vous feront gagner du temps.
Il permet également de faire du débug sur PHP et d’autres langages, mais cela fera partie d’un autre tutoriel…
Pour le télécharger, c’est ici que ça se passe : https://code.visualstudio.com/download
Je ne détaille pas l’installation de VS Code, si vous bloquez à cette étape, ça va être compliqué pour la suite….
Créer un compte GitHub
En prérequis, il faudra également un compte GitHub, pour cela, allez sur https://github.com/
Cliquez sur « Sign up »

Suivez les étapes pour créer votre compte.
Un fois crée, allez sur le dépôt jeedom/plugin-template https://github.com/jeedom/plugin-template
Cliquez sur « Use this template » puis « Create a new repository »

Entrez le nom du plugin et créez le répertoire

Téléchargez le ZIP

Décompressez l’archive et renommez le nom du dossier en enlevant « plugin-«
Ouvrez le dossier avec Visual Studio Code

Il faut maintenant renommer tous les fichiers qui sont nommés « Template » par le nom de votre plugin, pour moi ce sera « btc » :
/core/ajax/template.ajax.php => /core/ajax/btc.ajax.php
/core/class/template.class.php => /core/class/btc.class.php
/core/php/template.inc.php => /core/php/btc.inc.php
/desktop/js/template.js => /desktop/js/btc.js
/desktop/modal/modal.template.php => /desktop/modal/modal.btc.php
/desktop/php/template.php => /desktop/php/btc.php
Il faut également renommer dans les fichiers, faites une recherche dans les fichiers

Attention, il ne faut pas tout renommer ! Ne surtout pas renommer la ligne suivante dans /desktop/php/plugin.php

Utilisez le petit logo « remplacer » sur la droite pour les autres résultats.

Informations du plugin
Nous pouvons à présent remplir les informations qui concernent le plugin, ces informations seront utilisées pour les afficher dans le market de Jeedom une fois publié.
Ouvrez le fichier /plugin_info/info.json
Modifiez les champs suivants (Voir les commentaires) :
{
"id" : "btc", // Identifiant unique, ne doit pas exister sur Jeedom
"name" : "Bitcoin", // Nom qui sera affiché
"description" : {
"fr_FR": "Plugin permettant de rechercher l'indice BTC en EUR, USD." // Déscription du plugin.
},
"licence" : "AGPL",
"author" : "Foulek57", // C'est le moment de vous rendre célèbre ;)
"require" : "4.0.0", // Version mini de Jeedom
"category" : "programming", // Catégorie voir si desous les différentes catégories.
"hasDependency" : false, // Si vous avez des dépendances
"hasOwnDeamon" : false, // Si vous avez un deamon
"maxDependancyInstallTime" : 0,
"changelog" : "https://jeedom.github.io/plugin-btc/#language#/changelog",
"documentation" : "https://jeedom.github.io/plugin-btc/#language#/",
"changelog_beta" : "https://jeedom.github.io/plugin-btc/#language#/beta/changelog",
"documentation_beta" : "https://jeedom.github.io/plugin-btc/#language#/beta/",
"link" : {
"forum":"Lien vers le forum",
"video" : "Lien vers une video"
},
"language": [
"fr_FR",
"en_US",
"es_ES",
"de_DE",
"ru_RU",
"id_ID",
"it_IT",
"ja_JP",
"pt_PT"
],
"compatibility": [
"miniplus",
"smart",
"rpi",
"docker",
"diy",
"mobile",
"v4",
"atlas"
]
}
Voici la correspondance de chaque champ :
Champs | Valeurs | |
---|---|---|
id * | Identifiant unique du plugin sur le Market Jeedom. Doit débuter par une lettre. Sans accents. | |
name * | Nom du plugin. | |
description * | Description du plugin, tel qu’elle s’affichera sur le Market Jeedom. Minimum 80 caractères. (<br/> pour le retour à la ligne.). Attention, c’est un tableau pour les différentes langues de Jeedom possible (bien regarder l’exemple du plugin template) | |
utilization | Informations complémentaires à la documentation sur l’usage du plugin. | |
licence * | Type de licence. | |
author * | Nom de l’auteur du plugin, tel qu’il sera affiché une fois le plugin installé, dans les informations de celui-ci. | |
require * | Version minimum requise de Jeedom (Core). | |
category * | Catégorie de classement du plugin sur le Market Jeedom. Respecter impérativement la nomenclature du tableau ci-dessous | |
display | Si le plugin utilise un panel dédié sur le desktop,. Il s’agit du nom du fichier principal de ce panel. | |
mobile | Si le plugin utilise un panel dédié sur la webApp Jeedom. Il s’agit du nom du fichier principal de ce panel. | |
changelog * | Lien Html vers le Changelog. | |
documentation * | Lien Html vers la documentation du plugin. | |
changelog_beta * | Lien Html vers le Changelog Beta. | |
documentation_beta * | Lien Html vers la documentation beta du plugin. | |
link -> video | Lien Html vers une vidéo de présentation. | |
link -> forum | Lien Html vers le forum sur le sujet officiel du plugin. | |
languages | Liste des langues disponibles pour le plugin : fr_FR , en_US , de_DE , it_IT , sp_SP , pt_PT | |
compatibility | Compatibilité du plugin : miniplus, smart, docker, rpi, diy, mobileapp, v4. | |
hasDependency | «true» si le plugin doit installer des dépendances, sinon «false» ou absent. | |
hasOwnDeamon | «true» si le plugin doit exécuter des deamons, sinon «false» ou absent. | |
maxDependancyInstallTime | Temps maximum imparti pour l’installation des dépendances, exprimé en minutes. | |
specialAttributes | Permet aux plugin de demander des parametre suplémentaire sur des objets ou des utilisateurs (bien regarder l’exemple du plugin template) | |
issue | URL vers le bugtracker si externe (si non remplis alors vous receverez un mail) |
Voici les différentes catégories :
Market Jeedom | info.json |
---|---|
Communication | communication |
Confort | wellness |
Energie | energy |
Météo | weather |
Monitoring | monitoring |
Multimédia | multimedia |
Nature | nature |
Objets Connectés | devicecommunication |
Organisation | organization |
Passerelle domotique | home automation protocol |
Programmation | programming |
Protocole domotique | automation protocol |
Santé | health |
Sécurité | security |
Automatisme | automatisation |
Voilà votre plugin est créé, mais ne sert pas à grand-chose pour le moment…
On verra la suite dans la partie 2 !