Aller au contenu

Recommended Posts

Alors bonjour à  tous,
 
Voici une petite contribution de ma part pour ceux qui souhaitent coupler une box jeedom à  la box fibaro. Le tuto ci-dessous vous permettra de récupérer l'état de vos périphériques ZWAVE sous FIBARO via l'api et les mettra à  jour sous Jeedom. Perso, mon but est d'utiliser le mode plan que je trouve intéressant. Attention, vous n'aurez pas le contrôle de vos éléments!! C'est pas bien compliqué à  rajouter le contrôle si vous le désirez, mais c'est plus compliqué à  mettre en place de manière automatique avec mon script ci-dessous.
 
Vous excuserez gentiment les fôtes de francé svp! Merci d'avance.
 
Ah, une dernière chose, chez moi ça fonctionne très bien mais il se peut que ça plante chez vous, j'ai pas testé sur d'autres installations^^ Si ça bugg, vous apprendrez à  faire sans ces prochaines lignes!
 
Toutes les manipulations se font sous Jeedom (mais pourquoi il nous met ça sur un forum FIBARO lui?! ... euh... )
 
Au préalable, il faut installer les plugins "Scripts" et "Virtuel"
 
Sous Virtuel - ajouter:

 

1

 

2

 

Il faut aller jusqu'à  fibaro_XXX_10.
Pensez aussi à  noter le premierID.
 
Puis dupliquez avec le bouton se trouvant en haut à  droite ("dupliquer"...) 10 fois (permet 100 périphériques!)
 

3

Attention, il faut s'assurer que tous les ID se suivent et qu'entre chaque périphériques il y a +3 de différence. Sinon, faut recommencer.
 
Chez moi, ça donne ça:
 

4

 
Plugins - scripts - ajouter
 

5

 
Pour le script - cliquer sur "nouveau" - FibaroLink.php (l'extension est importante!!!) et coller le code ici (qui a visiblement mal apprécié le copier-coller pour sa mise en forme):
 
Il faut remplacer inscrire l'adresse IP de votre fibaro, le mot de passe admin de votre fibaro, le premier id virtuel sous votre JEEDOM (voir plus haut), votre api sous JEEDOM et l'url de votre JEEDOM.

<?php

	set_time_limit(120); //lance le script jusqu'à  120 secondes

	//info à  compléter
	$url_fibaro ="192.168.XXX.XXX";
	$admin_fibaro ="admin";
	$password_admin_fibaro ="PASSWORD";
	$premier_id_device_virtuel = "306"; //premier ID virtuel se trouvant dans JEEDOM
	$api_jeedom = "API JEEDOM";
	$url_jeedom = "192.168.XXX.XXX";

	//ne pas toucher ce qui suit
	$url_jeedom_device = "http://" . $admin_fibaro . ":" . $password_admin_fibaro . "@" . $url_fibaro . "/api/devices/";
	$url_jeedom_room = "http://" . $admin_fibaro . ":" . $password_admin_fibaro . "@" . $url_fibaro . "/api/rooms";
	$json_jeedom_device = file_get_contents($url_jeedom_device);
	$json_jeedom_room = file_get_contents($url_jeedom_room);
	$data_json_jeedom = json_decode($json_jeedom_device, true);
	$data_json_jeedom_room = json_decode($json_jeedom_room, true,300);
	$premier_id_device_virtuel_avec_incrementation = $premier_id_device_virtuel;

	$nombre_incrémentation = "0";

	//compte le nombre d'élément dans le tableau
	$nbre_element_json_jeedom = count($data_json_jeedom);
	$nbre_element_json_jeedom_room = count($data_json_jeedom_room);
	
	//SCRIPT PRINCIPAL
	//le script commence ici
	for($i=5;$i<$nbre_element_json_jeedom;$i++){
		//vérifie si une propriété zwavecompagny exise | qu'il y a une valeur dans les propriétés zwave | que c'est pas un plugin
		if(isset($data_json_jeedom[$i]['properties']['zwaveCompany']) && isset($data_json_jeedom[$i]['properties']['value']) && $data_json_jeedom[$i]['isPlugin']==false){ 
				//change de device virtuel sous jeedom après 20 exports
				if ($nombre_incrémentation==1*30 || $nombre_incrémentation==2*30 || $nombre_incrémentation==3*30 || $nombre_incrémentation==4*30 || $nombre_incrémentation==5*30 || $nombre_incrémentation==6*30 || $nombre_incrémentation==7*30 || $nombre_incrémentation==8*30 || $nombre_incrémentation==9*30 || $nombre_incrémentation==10*30 || $nombre_incrémentation==11*30 || $nombre_incrémentation==12*30 || $nombre_incrémentation==13*30 || $nombre_incrémentation==14*30 || $nombre_incrémentation==15*30){
					$premier_id_device_virtuel_avec_incrementation=$premier_id_device_virtuel_avec_incrementation+2;
				}				
				//envoie le nom de la pièce
				for($j=0; $j<$nbre_element_json_jeedom_room;$j++){
					if($data_json_jeedom[$i]['roomID']==$data_json_jeedom_room[$j]['id']){
					file_get_contents('http://' . $url_jeedom . '/core/api/jeeApi.php?apikey=' . $api_jeedom . '&type=virtual&id=' . urlencode($premier_id_device_virtuel_avec_incrementation) . '&value=' . urlencode($data_json_jeedom_room[$j]['name']));
					}					
					
				}
				$premier_id_device_virtuel_avec_incrementation++;
				$nombre_incrémentation++;
				
					
				//envoie le nom du device à  jeedom
				file_get_contents('http://' . $url_jeedom . '/core/api/jeeApi.php?apikey=' . $api_jeedom . '&type=virtual&id=' . urlencode($premier_id_device_virtuel_avec_incrementation) . '&value=' . urlencode($data_json_jeedom[$i]['name']));
				$premier_id_device_virtuel_avec_incrementation++;
				$nombre_incrémentation++;
				//envoie la valeur à  Jeedom
				file_get_contents('http://' . $url_jeedom . '/core/api/jeeApi.php?apikey=' . $api_jeedom . '&type=virtual&id=' . urlencode($premier_id_device_virtuel_avec_incrementation) . '&value=' . urlencode($data_json_jeedom[$i]['properties']['value']));
				$premier_id_device_virtuel_avec_incrementation++;
				$nombre_incrémentation++;	
		}
	}
	
?>

Pour automatiser ce script, j'ai dà» utiliser le crontab en ssh sur mon pi qui héberge JEEDOM.
(Les identifiants SSH sont jeedom/Mjeedom96 de base)
 
sudo chmod +x /usr/share/nginx/www/jeedom/plugins/script/core/ressources/FibaroLink.php
sudo crontab -e
*/3 * * * * php /usr/share/nginx/www/jeedom/plugins/script/core/ressources/FibaroLink.php

 

EDIT (à  tester):

Si nouvelle version de JEEDOM, il se peut que nginx ne foncitonne plus et que jeedom tourne sur apache2. Donc les commandes ci-dessus sont à  remplacer par:

sudo chmod +x /var/www/html/plugins/script/core/ressources/FibaroLink.php

sudo crontab -e

*/3 * * * * php /var/www/html/plugins/script/core/ressources/FibaroLink.php

 
(execute toutes les 3mn - vous avez la possibilité de modifier le /3 par /1 pour executer toutes les minutes si jamais)
 
Voilà , ca doit marcher!
 
Pour la suite, voici un petit exemple de ce que j'ai fait:
 
Plugins - virtuel - ajouter

 

6

 

7

8

 
Voilà , j'espère que ça sera utile à  quelqu'un. Si ça ne l'est pas, j'aurai juste perdu 15minutes de ma vie à  vous faire ces screenshots et ce texte.
 
Amusez-vous bien avec tout ça!
 
Dernière chose, feel free de changer mon code comme bon vous semble et/ou d'y apporter des améliorations^^

 

EDIT:

Pour info, vous pouvez également changer dans le script php "set_time_limit(120)" à  "set_time_limit(115)" et le crontab -e à  2mn au lieu de 3mn. Je l'ai fait chez moi et ça ne semble pas utiliser trop de ressources systèmes sur ma box FIBARO ou mon PI (JEEDOM). Vous gagnerez 1 mn pour la remontée des données!

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Masque ton apikey, si c'est la vrai  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais que je suis bête, j'ai pourtant vérifié mes logins password, mais pas l'api. Merci!

 

Du coup j'ai modifié légèrement le script pour que ça fonctionne chez tout le monde, et pas que chez moi! c'est vrai qu'on n'a pas tous la même IP pour son JEEDOM...

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympa ta procédure !

Je n'ai fait que créer un ou deux scripts pour tester le pilotage d'un module virtuel HC2 depuis Jeedom et un FGD211 sur HC2 (je débute  ;) )

Exemple

gallery_12_6_25504.png

 

 

EDIT : certaines de tes copies d'écran ne sont pas lisibles, même en cliquant dessus ... choisi l'option size: large

Modifié par i-magin

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis navré, je ne trouve pas comment mettre les images en plus grand...

 

Sympa ta récup JSON et contrôle. A terme je pense ajouter le contrôle aussi au périphériques avec mon script. Mais pas trop le temps de voir comment faire ça pour l'instant.

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans la galerie du forum, tu choisis ton image  :

- soit tu fais un clic droit sur l'image et tu choisis "large" : l'image s'affiche donc en grand, puis à  nouveau clic droit pour récupérer l'adresse de l'image

- soit "options" "view all sizes" : cliquer sur large, puis clic droit pour récupérer l'adresse de l'image.... ce qui est plus long  ;)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai mal importé mes images au début, mais le problème a été résolu (il me semble en tout cas). Merci ài-magin pour le conseil!

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est presque çà  .... je ne sais pas pourquoi en cliquant sur tes images, on obtient en plus des commentaires à  droite ?

Cela dit c'est devenu lisible  ;)

 

Ayant toujours utilisé phpBB pour les forums, j'étais un peu déconcerté par IP board au tout début de ce forum

Maintenant, je regrette que le forum de Jeedom soit sous phpBB, pour un problème de lisibilité des copies d'écran de scénarios, scripts ou modules virtuels  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ce tuto, je suis justement en train de monter un JEEDOM en complément (Remplacement?) de ma HCL, cela me permettra de faire un pont entre les deux :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu montes Jeedom sur quoi ? Raspberry ?

Un conseil très important, alors....

 

Une des qualités de Jeedom qui lui porte tort : c'est le peu de dépense pour s'y lancer !

 

Il suffit d'un RPi  et une carte (ou clé) Zwave... Il est donc facile d'essayer

On peut donc survoler Jeedom, sans y entrer vraiment et ne pas découvrir tout son potentiel (surtout si l'on possède déjà  une solution domotique qui fonctionne chez soi)

Lorsque l'on achète une box à  600€, comme ce fut mon cas mi-2013, on s'investit à  fond... même si l'on galère comme moi parce que le forum est en anglais et qu'il n'existe pratiquement pas de doc .... à  l'époque ce forum n'existait pas encore  ;)

 

Il faut donc reprendre à  la base son apprentissage avec Jeedom, être patient et découvrir les principes basiques avant de se lancer dans des fonctions évoluées... et oublier un peu le modèle Fibaro pour intégrer le nouveau

Après, il faut prendre en considération d'autres aspects, comme le fait d'utiliser un Rpi avec carte SD pour piloter sa domotique (c'est pourquoi la Jeedom center est très attendue)

 

Comme écrit maintes fois sur ce forum, il existe plusieurs solutions de domotique : c'est une chance et à  chacun de trouver celle qui lui convient  :)

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, j'ai monté JEEDOM sur un raspberry pi 2. J'ai surtout fait ça pour tester ce système domotique et voir ce qu'il a dans le ventre. J'ai déjàfait un bridge avec domoticz (aussi sur un PI 2) surtout dans le but de pouvoir lancer des scripts plus complexes (tels que des scripts de synchronisation entre mon NAS et un serveur distant, des pings de téléphones, des plus jolis graphiques,...) et également pour décharger ma box principale qui est et restera ma FIBARO HC2. Surtout depuis que le nombre de script simultané a été réduit...

Après, chaque solution possède ses avantages et ses inconvénients. Mais làencore, toutes ces solutions peuvent être couplées l'une àl'autre par différents moyens et c'est làque c'est intéressant. Non seulement on peut partager les ressources si on veut lancer des scripts plus conséquents, mais on peut également s'affranchir des limitations imposées par les box (pour fibaro par exemple: pas de ssh, plus de os.execute, etc. )

Ensuite libre àchacun de choisir sa (ou ses!) solution(s).

Partager ce message


Lien à poster
Partager sur d’autres sites

Je l'ai monté sur mon Synology avec Docker, et normalement la clé zwave devrait arriver aujourd'hui.

 

Je vais y aller tranquillement, pour dompter ce nouvelle environnement. Mon premier objectif est la gestion du chauffage car le panneau de chauffage sur ma HCL plante régulièrement et après ce sera la partie script plus évoluée.

A voir également comment cela ce comporte avec Imperihome. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Sachant que je viens de passer 3h à  remettre un backup correct après un méchant crash sur ma Mini, je vais tenter ton script pour voir. 

Jeedom gère mes sondes et mes volets donc mon chauffage... 

Partager ce message


Lien à poster
Partager sur d’autres sites

Installation Jeedom découverte depuis un petit mois sur un rpi 1( pour voir et tester), surement une intégration sur docker synology plus tard. 

 

intéresser pour entre autre un Plugin (Xeecloud) et en faite sert de secours si HC2 hs (firmware).

 

réception clef usb Lab gen5 hier. première association (avant dissociés), résultat bien. Bon après c'est du Jeedom, des avantages (additionnel a des appareils connectées et inconvénient (mise en oeuvre, houla, graphisme). Pas très très simple, mais on cherche (doc bien renseigner)

 

Un petit plugin HC2 pour Jeedom serait serait ...Jeedom a developper toutes les box en plugin sauf Fib . (jeebase)

 

Je testerai aussi ton script.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

Est-ce que ton script me permettrait de gerer mon alarme satel depuis Jeedom ?

Merci :-)

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

×