Aller au contenu
sebcbien

YAJTOH (Yet Another Jeedom To HC2)

Recommended Posts

Bonjour,

Pour ne pas polluer le topic de @ADN182 et comme les solutions divergent, voici le post avec une solution pour pousser les valeurs de Jeedom vers un HC2 en utilisant l' API PUT

Les deux soluitions font la même chose

La solution de ADN182 effectue la plupart du traitement sur la HC2 alors que ici c'est via ce script sur Jeedom.

La solution de ADN182 convertit les noms des pièces/devices automatiquement en ID, on peut donc utiliser la même url de push dans tous les modules Z-Wave

Ce script ne le fait pas (encore) la recherche automatique d'id sera peut être ajouté par la suite, éventuellement par ADN182 :rolleyes:

La solution de ADN182 ne peut être utilisé que avec la commande push et non dans des scénarios ou ailleurs.

 

Ce script peut être utilisé pour modifier des valeurs de fake/dead devices sur une HC2
   exemple de format de l'url http:
   arguments:
   id: id du device Fibaro
   value: valeur numérique
   value_bin: valeur binaire, 0 et 1 seront transformés en false et true
   properties: si non sspécifié, le script utilisera value.
 exemple:
 appel via script "message"  :
 http://127.0.0.1/plugins/script/core/ressources/put2hc2V2.php?id=#title#&value=#message#
 appels via url:
 http://127.0.0.1/plugins/script/core/ressources/put2hc2V2.php?value_bin=0&id=1245
 appel via push url d'un device:
 http://127.0.0.1/plugins/script/core/ressources/put2hc2V2.php?value_bin=#value#&id=1245
 http://127.0.0.1/plugins/script/core/ressources/put2hc2V2.php?value=150&id=1245&properties=power

 

Installation:

Installer un script php dans jeedom via le plugin script:

2016-12-22_00-16-41.png

 

Affichage sur le dashboard, pratique pour tester:

2016-12-22_00-21-00.png

 

Utilisation dans un scénario (ou ailleurs, plugins, alarme, modes etc...) dans Jeedom:

2016-12-22_00-22-59.png

 

Dans la zone push d'un device:

2016-12-22_00-33-38.png

 

Contenu du script put2hc2.php:

Version2:

<?php
// ce script peut être utilisé pour modifier des valeurs de fake/dead devices sur une HC2
  // exemple de format de l'url http: 
  // arguments:
  // id: id du device Fibaro
  // value: valeur numérique
  // value_bin: valeur binaire, 0 et 1 seront transformés en false et true
  // properties: si non sspécifié, le script utilisera value.
// exemple:
// appel via script "message"  
// http://127.0.0.1/plugins/script/core/ressources/put2hc2.php?id=#title#&value=#message#
// appels via url
// http://127.0.0.1/plugins/script/core/ressources/put2hc2.php?value_bin=0&id=1245
// appel via push url d'un device
// http://127.0.0.1/plugins/script/core/ressources/put2hc2.php?value_bin=#value#&id=1245
// http://127.0.0.1/plugins/script/core/ressources/put2hc2.php?value=150&id=1245&properties=power
// V2.0 22/12/2016
  
$userName = "XXXXXXXXX";
$password = "XXXXXXXXXXXXXXXXXXX";
$ipHc2 = "192.168.XXX.XXX";
$tcpPort = "80";
$default_properties="value"; // si pas de properties spécifiée utiliser celle-ci (convient à quasiment tout les cas)

//si value vide, tester value_bin et transformer
if (isset($_GET['value'])) {
		$value=$_GET['value'];
	}else{
		$value_bin=$_GET['value_bin'];
		// transformer 0 et 1 en true/false
		if ($value_bin=="1") {
			$value="true";    
		}
		if ($value_bin=="0") {
			$value="false";
		}
}
// récupérer l'id
$id=$_GET['id'];

//si properties vide, mettre properties=value
if (isset($_GET['properties'])) {
    $properties=$_GET['properties'];    
}else{  
    $properties=$default_properties;
}

//pour debug
//if !isset($id) then $id="2153" end;
//$properties=value;
//$value= true;

$request = "/api/devices/".$id;
$data_string = '{"properties":{"'.$properties.'": '.$value.'}}';
$url = 'http://'.$userName.':'.$password.'@'.$ipHc2.':'.$tcpPort .$request;
 
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);
// retours possibles pour debug
//echo $result;
//echo $data_string;
//echo $properties.$value;
?>

 

Plus de détails et d'explications déjà données sur le fil de ADN182:

https://www.domotique-fibaro.fr/topic/9659-jeedom-to-hc2/?do=findComment&comment=148369

https://www.domotique-fibaro.fr/topic/9659-jeedom-to-hc2/?do=findComment&comment=148353

améliorations futures:

https://www.domotique-fibaro.fr/topic/9659-jeedom-to-hc2/?do=findComment&comment=148355

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Super, je l'avais rate celui la !!

Merci @sebcbien. TOP du top

 

Du tonnerre pour le RFX dont j'ai besoin..mais pas encore mis lol

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Sebcbien,

 

pourrais-tu stp me donner un équivalent pour appuyer sur le bouton d'un vd sur la hc2 ?

Il y aurait donc l'id du module et le numéro du bouton.

Je souhaite le faire en passant par un scénario.

 

Merci d'avance. :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @trainkill666

 

Dans le sens  Jeedom --> HC2 pour appuyer sur un bouton tu peux le faire en utilisant l'api http de la HC2 en passant par le plugin script de jeedom, et après dans le scénario tu dois pouvoir passer par le plugin script non ? 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de tester ça fonctionne ;-) 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pepite

 

mais euh, j'ai compris la démarche en passant par un script php et l'api hc2,

tout est bien expliqué dans ce tuto, il me manque juste ce script modifié pour ne pas agir sur un fake device mais plutôt sur le bouton du vb.

Le 22/12/2016 à 00:35, sebcbien a dit :

put2hc2.php

Le reste étant identique je suppose pour le scénario.

Partager ce message


Lien à poster
Partager sur d’autres sites

De mémoire je ne sais pas te répondre, mais je peux essayer de trouver un peu de temps d'ici ce weekend.



Sent from my SM-N910F using Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


Footer title

This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.

Footer title

This is an example of a list.

Footer title

This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.

Footer title

This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.

×
/* Navigation */ function ipsfocusNavigation() { var navwidth = 0; var morewidth = $('.ipsNavBar_primary .focus-nav-more').outerWidth(true); $('.ipsNavBar_primary > ul > li:not(.focus-nav-more)').each(function() { navwidth += $(this).outerWidth( true ) + 2; }); var availablespace = $('.ipsNavBar_primary').outerWidth(true) - morewidth; if (availablespace > 0 && navwidth > availablespace) { var lastItem = $('.ipsNavBar_primary > ul > li:not(.focus-nav-more)').last(); lastItem.attr('data-width', lastItem.outerWidth(true)); lastItem.prependTo($('.ipsNavBar_primary .focus-nav-more > ul')); ipsfocusNavigation(); } else { var firstMoreElement = $('.ipsNavBar_primary li.focus-nav-more li').first(); if (navwidth + firstMoreElement.data('width') < availablespace) { firstMoreElement.insertBefore($('.ipsNavBar_primary .focus-nav-more')); } } if ($('.focus-nav-more li').length > 0) { $('.focus-nav-more').removeClass('focus-nav-hidden'); } else { $('.focus-nav-more').addClass('focus-nav-hidden'); } } $(window).on('load',function(){ $(".ipsNavBar_primary").removeClass("focus-nav-loading"); ipsfocusNavigation(); }); $(window).on('resize',function(){ ipsfocusNavigation(); }); // Make hover navigation work with touch devices // http://osvaldas.info/drop-down-navigation-responsive-and-touch-friendly ;(function(e,t,n,r){e.fn.doubleTapToGo=function(r){if(!("ontouchstart"in t)&&!navigator.msMaxTouchPoints&&!navigator.userAgent.toLowerCase().match(/windows phone os 7/i))return false;this.each(function(){var t=false;e(this).on("click",function(n){var r=e(this);if(r[0]!=t[0]){n.preventDefault();t=r}});e(n).on("click touchstart MSPointerDown",function(n){var r=true,i=e(n.target).parents();for(var s=0;s ul > li:has(ul)').doubleTapToGo(); var browserResponsiveWidth = 980; var defaultBrowserWidth = $(window).width(); var headerHeight = $("#header").height(); var headerWrap = $(".headerWrap"); var headerBackgrounds = $(".headerBackgrounds"); var headerBlur = $(".headerBlur"); var blurEnd = 110; var headerEffects = function(){ var amountScrolled = $(window).scrollTop(); // Make navigation fixed if( amountScrolled >= headerHeight ){ headerWrap.addClass("fixedBlur"); } else { headerWrap.removeClass("fixedBlur"); } // Blur header if( (amountScrolled <= blurEnd) ){ headerWrap.removeClass("blurred"); } else { headerWrap.addClass("blurred"); } // Parallax effect var translateHeader = amountScrolled / 2; if( amountScrolled <= headerHeight ){ headerBackgrounds.css( "margin-top", translateHeader + "px" ); } else { headerBackgrounds.css( "margin-top", (headerHeight / 2) + "px" ); } } if( $('body').hasClass('wDesktop') ){ $(window).scroll(function(){ headerEffects(); }); }; });