Développer un plugin sur Jeedom Partie 1

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 :

ChampsValeurs 
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) 
utilizationInformations 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 
displaySi le plugin utilise un panel dédié sur le desktop,. Il s’agit du nom du fichier principal de ce panel. 
mobileSi 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 -> videoLien Html vers une vidéo de présentation. 
link -> forumLien Html vers le forum sur le sujet officiel du plugin. 
languagesListe des langues disponibles pour le plugin : fr_FRen_USde_DEit_ITsp_SPpt_PT 
compatibilityCompatibilité 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. 
maxDependancyInstallTimeTemps maximum imparti pour l’installation des dépendances, exprimé en minutes. 
specialAttributesPermet aux plugin de demander des parametre suplémentaire sur des objets ou des utilisateurs (bien regarder l’exemple du plugin template) 
issueURL vers le bugtracker si externe (si non remplis alors vous receverez un mail)
Source jeedom.com

Voici les différentes catégories :

Market Jeedominfo.json
Communicationcommunication
Confortwellness
Energieenergy
Météoweather
Monitoringmonitoring
Multimédiamultimedia
Naturenature
Objets Connectésdevicecommunication
Organisationorganization
Passerelle domotiquehome automation protocol
Programmationprogramming
Protocole domotiqueautomation protocol
Santéhealth
Sécuritésecurity
Automatismeautomatisation
Source jeedom.com

Voilà votre plugin est créé, mais ne sert pas à grand-chose pour le moment…

On verra la suite dans la partie 2 !