Site icon Abavala !!!

HomePress : de l’utilisation des articles et des flux RSS

Ce qui est bien avec HomePress c’est que vous pouvez utiliser les moyens modernes de WordPress mis à disposition.  C’est le cas des billets (ou post) et des flux RSS.  Comment les utiliser dans votre système domotique?  Voyons cela avec un exemple qui permet de lier une Zibase avec une installation HomePress via les billets. La Zibase devient rédacteur de posts HomePress!

Présentation

Imaginez que tous les jours vous souhaitiez vous faire un petit bilan de votre maison : température extérieure et température intérieure et état du chauffage. 

Vous serez en mesure d’entendre à haute voix ou alors de consulter à distance en utilisant:

  • HomePress hébergé sur votre NAS:  ses articles et ses flux RSS
  • la Zibase : sa centralisation des sondes de températures et sa gestion du chauffage
  • votre lapin Karotz

C’est le retour du trio KNZ!

Mise en œuvre

Sur la Zibase

En suivant les instructions pour la mise en œuvre d’un thermostat, on est en mesure de faire gérer sa production de chaleur par cette centrale domotique.  Reporter vous alors que le scénario qui pilote le chauffage et relevez les variables suivantes:

  • variable qui est utilisée pour sauvegardée la température qui pilote le thermostat : V14 dans mon exemple.
  • variable qui est utilisée pour déclencher le contact sec positionné sur la chaudière : V11 dans mon exemple.

 

Sur HomePress

Connectez-vous sur la console d’administration dans la rubrique Réglages=>Écriture.  Il faut alors cocher la case XML-RPC dans la rubrique “Publication à distance”.

 

Qu’est-ce que la XML-RPC?

XML-RPC est comme son nom l’indique, un protocole RPC (Remote procedure call).  Il permet à des processus informatiques s’exécutant dans des environnements différents et discuter à travers le réseau de manière simple et normée.

XML-RPC permet d’appeler une fonction sur un serveur distant à partir de n’importe quel système (Windows, Mac OS X, GNU/Linux) et avec n’importe quel langage de programmation. La fonction qui nous intéresse est celle qui permet de publier à distance un billet ou post sur notre serveur HomePress.

Ce protocole s’utilise avec le protocole HTTP pour le transfert des données et la norme XML pour la structuration des données. Pour les plus techniques d’entre vous, XML-RPC peut être considéré comme étant l’ancêtre de SOAP.

Dans HomePress donc WordPress cela va nous permettre de créer un billet dans le système un utilisant un simple script PHP.

Sur le NAS

Le NAS sera utilisé également pour héberger le script PHP suivant. 

  • Pour la partie récupération des données dur la Zibase, il se base sur le SDK Zibase en PHP développé par Benjamin Garel et que l’on a déjà eu l’occasion d’aborder sur Abavala lors d’un précédent article.
  • Pour la partie publication sur le site HomePress nous utiliserons une fonction se reposant sur cURL.

 Voici donc la fonction wpPostXMLRPC que vous pourrez mettre dans un fichier fonctions.php

<?PHP

function wpPostXMLRPC ($title,$body,$rpcurl,$username,$password,$category,$keywords=”,$encoding=’UTF-8′)

{

// les 2 lignes suivantes peuvent être mises en commentaire en cas de soucis avec

//les accents dans le titre

$title = htmlentities($title,ENT_NOQUOTES,$encoding);

$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);

$content = array( ‘title’=>$title,

‘description’=>$body,

‘mt_allow_comments’=>0, // 1 to allow comments

‘mt_allow_pings’=>0, // 1 to allow trackbacks

‘post_type’=>’post’,

‘mt_keywords’=>$keywords,

‘categories’=>array($category) );

$params = array(0,$username,$password,$content,true);

$request = xmlrpc_encode_request(‘metaWeblog.newPost’,$params);

$ch = curl_init();

curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

curl_setopt($ch, CURLOPT_URL, $rpcurl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 1);

$results = curl_exec($ch);

curl_close($ch);

return $results;

/*

$title : le titre de l’article

$body : le corps de l’article en HTML

$rpurl : l’URL du moteur XMLRPC de votre blog, en général http://blog_url/xmlrpc.php

$username : le login de l’utilisateur qui va poster (il doit avoir les permissions adéquates)

$password : le mot de passe de l’utilisateur qui va poster

$category : le nom de la catégorie dans laquelle sera classé l’article

$keywords : les tags (mots clés) associés à l’article sous forme d’une chaine vide si il n’y en a pas, ou d’une liste de mots séparés par des virgules sinon

$encoding : l’encodage, par défaut UTF-8 mais vous pouvez le modifier en fonction des paramètres de votre blog

Par défaut dans cette fonction, les commentaires et les pings sont désactivés, mais comme indiqué en commentaire, vous pouvez les activer en remplaçant les valeurs à 0 par des 1.

*/

}

?>

 Voici le code que l’on sauvegardera dans le fichier Recap.php.

<?PHP

require_once(“ZiBase.php”);

require_once(“fonctions.php”);

# Adresse IP de la zibase est nécessaire pour utiliser cette classe

$zibase = new ZiBase(“192.168.0.1”);  //remplacer par l’adresse de votre Zibase

# Lit la variable 14 de la zibase qui contient la temp du salon

$TempMaison = $zibase->getVariable(14)/10;

# Lit la variable 11 de la zibase qui contient l’état de marche du chauffage

$OnOff = $zibase->getVariable(11);

# Lit les valeurs de la sonde extérieure

$info = $zibase->getSensorInfo(“OS439183366”);

$TempExt = $info[1]/10;

# Construction du message

$Titre = ‘Récap de Température’;

$date = date(“d/m/Y”);

$heure = date(“G:i”);

$Message = ‘Nous sommes le ‘.$date.’ et il est ‘.$heure.

‘. Il fait ‘.$TempMaison.’ degrés dans le salon et ‘.$TempExt.

‘ degrés dehors.’;

if ($OnOff > 0)

{

$Message = $Message.’ <BR>Le chauffage est allumé!’;

}

//remplacer par l’url du fichier xmlrpc.php de votre site HomePress

$Url = ‘http://192.168.0.2/homepress/xmlrpc.php’;   

//remplacer par le login/mot de passe d’un utilisateur HomePress qui a les droits de publication

$Login = ‘HomepressLogin’;

$MdP = ‘HomepressMdp’;

//renseigner la catégorie de publication

$Categorie = ‘Météo’;

wpPostXMLRPC($Titre ,$Message,$Url,$Login,$MdP,$Categorie,”,’UTF-8′);
?>

Sur la Zibase

Faire un scénario déclenché aux horaires souhaités qui effectue un appel à la page Recap.php créée précédemment.  L’ordonnancement peut également être fait sur le Karotz via l’application Kron

Sur le Karotz

A ce stade vos billets sont sur le site HomePress.  Vous pouvez les consulter sur HomePress et également tout lecteur de flux RSS!

Il faut maintenant installer l’application Karotz Mon R.S.S. et la paramétrer pour qu’elle accède au flux RSS du système HomePress.

En lançant l’application par le moyen que vous aurez choisi le lapin vous relatera la journée passée. Une amélioration de cette application serait qu’elle puisse gérer les billets lus et ceux qui ne l’ont pas encore été.  Cela permettrait de ne pas écouter plusieurs fois un billet déjà consulté.

Conclusion

Cet assemblage n’est nécessaire que si vous avez besoin de “compiler” les données de plusieurs sondes ou actionneurs.  Si ce n’est pas utile vous pouvez utiliser l’application Zibase-Zodianet du Karotz.  Cela vous permettra de lire une sonde.  Bien entendu cela ne vous permettra pas de conserver un historique sur votre HomePress.

L’exemple présenté est assez simple mais vous pouvez facilement trouver une utilité plus évoluée à ce montage.  Je vous fais confiance.

Quitter la version mobile