Problème installation dépendances / questions sur le démon

Bonjour,

Je débute dans la création de plugin, j’ai commencé la création d’un plugin permettant de lier une installation domotique IHC à Jeedom. (J’ai présenté mon plugin ici : https://community.jeedom.com/t/plugin-ihc/56655?u=idhe)
Comme évoqué dans ce poste j’ai un problème au niveau de l’installation des dépendances, mon plugin a besoin de python3 pour fonctionner et comme j’ai utilisé le plugin MyAudi de @Mips pour développer mon démon et que lui aussi utilise python j’ai récupéré le code pour l’installation des dépendances. J’ai un message d’erreur qui s’affiche lorsque je veux installer les dépendances : [

ERROR] : Aucun script ne correspond à votre type de Linux : /var/www/html/plugins/ihc/core/class/../../resources/install_#stype#.sh /tmp/jeedom/ihc/dependency avec #stype# : apt

extrait de plugins\ihc\core\class\ihc.class.php :

public static function dependancy_install() {
		log::remove(__CLASS__.'_update');
		return array('script' => dirname(__FILE__) . '/../../resources/install_#stype#.sh ' . jeedom::getTmpFolder(__CLASS__) . '/dependency', 'log' => log::getPathToLog(__CLASS__.'_update'));
	}

	public static function dependancy_info() {
		$return = array();
		$return['log'] = log::getPathToLog(__CLASS__.'_update');
		$return['progress_file'] = jeedom::getTmpFolder(__CLASS__) . '/dependency';
		if (file_exists(jeedom::getTmpFolder(__CLASS__) . '/dependency')) {
			$return['state'] = 'in_progress';
		} else {
			if (exec(system::getCmdSudo() . system::get('cmd_check') . '-Ec "python3\-requests"') < 1) {
				$return['state'] = 'nok';
			} else {
				$return['state'] = 'ok';
			}
		}
		return $return;
	}

extrait de plugins\ihc\resources\ihc\install_apt.sh :

PROGRESS_FILE=/tmp/jeedom/influxdb/dependency
FFMPEG_INSTALL_DIR=/var/www/html/plugins/influxdb/resources/ffmpeg/
if [ ! -z $1 ]; then
	PROGRESS_FILE=$1
fi
touch ${PROGRESS_FILE}
echo 0 > ${PROGRESS_FILE}
echo "*************************************"
echo "*   Launch install of dependencies  *"
echo "*************************************"
echo $(date)
echo 5 > ${PROGRESS_FILE}
apt-get clean
echo 10 > ${PROGRESS_FILE}
apt-get update
echo 20 > ${PROGRESS_FILE}

echo "*****************************"
echo "Install modules using apt-get"
echo "*****************************"
apt-get install -y python3 python3-requests python3-pip
echo 50 > ${PROGRESS_FILE}

echo 100 > ${PROGRESS_FILE}
echo $(date)
echo "***************************"
echo "*      Install ended      *"
echo "***************************"
rm ${PROGRESS_FILE}

Le code du plugin est disponible ici : https://github.com/idhe-dev/ihc

Comment je peux faire pour résoudre ce problème ?

De plus je me pose une question sur le fonctionnement du démon, le démon un besoin d’un « socket port » je suppose que ce port doit être différent pour chaque démon ? Si oui, comment choisir le port pour ne pas avoir de conflit avec un autre démon ?

D’avance merci,

Salut,

Tu développes sur quelle version de linux?

c’est le core qui va remplacer le tag #stype# dans le path que le plugin donne ici

return array('script' => dirname(__FILE__) . '/../../resources/install_#stype#.sh ' . jeedom::getTmpFolder(__CLASS__) . '/dependency', 'log' => log::getPathToLog(__CLASS__.'_update'));

donc le script install_apt.sh ne fonctionnera que pour debian (c’est le seul os que je supporte, comme beaucoup)

la liste des commandes du core est ici dans core\class\system.class.php et c’est utilisé dans core\class\plugin.class.php (fichiers du core bien sur) dans la fonction dependancy_install().

edit: en passant je remarque que j’ai laissé un vieux copié/collé sur les 2 premières lignes de mon script :face_with_hand_over_mouth:

Même question

et pas de réponse en fait.
Le core devrait les attribuer dynamiquement pour bien faire et chaque plugin devrait demander un port au core qui les distribuerait (même principe qu’un dhcp si on veut).
C’est le seul moyen d’être sur de ne pas avoir de conflit.

Moi j’ai pris de 55064 à 55070 pour l’instant pour mes plugins donc évites ceux-là et ceux qui suivent directement :stuck_out_tongue:
Sinon c’est aussi pour ca que le port est configurable dans la plupart des plugins ayant des démons histoire qu’en cas de conflit cela puisse être adapté manuellement.

Salut,

Merci beaucoup pour tes réponses !

Je suis sur une Jeedom Smart dernière version donc debian 9.4. J’ai le même problème sur raspbian.

Je n’ai pas de lien à faire quelque part pour que #stype# soit modifié par le core ? Car actuellement il ne semble pas être remplacé …

Ok je vais utiliser une autre plage :wink:
Je vais rajouter la possibilité de modifier le port aussi du coup.

Bonjour,

Tu as mis install_apt.sh dans

/plugins/<pluginid>/resources/<pluginid>

Il faut le mettre dans

/plugins/<pluginid>/resources

akenad :slight_smile:

2 « J'aime »

En effet j’ai glissé mon fichier au mauvais endroit dans l’arborescence ! Bien vu, merci beaucoup @akenad :slight_smile:

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.