Envoyer des tweets comme notifications Domotique

Après avoir testé pas mal de solutions de notifications domotique comme pushbullet, notify my android, prowl, ou encore pushalot, aucune de ces solutions ne m’a satisfait. J’ai donc pris le parti de développer quelques scripts PHP autour de twitter qui m’envoient des tweets lorsque nécessaire.

Configuration de twitter

Pour que nous puissions envoyer des tweets via une API php, il faut tout d’abord autoriser votre twitter à être accédé par une application tierce. Allez sur https://apps.twitter.com/, logger vous puis cliquez sur Create New App.

Remplissez les champs et cocher bien la case en bas de l’écran.

twitter

Une fois créé, cliquez sur Manage keys and access tokens pour gérer les clés.

twitter_key

Vous avez sur la page les 2 éléments qui nous intéressent le plus : le consumer key et le consumer secret.

twitter_api2

Il faut ensuite créer les tokens d’accès. Cliquez en dessous sur Create my access token.

twitter_token

Puis les token s’affichent. Il faudra les recopier dans le code PHP.

twitter_token2

Le code source

Pour pouvoir envoyer des tweets sur notre compte twitter, nous allons utiliser la classe Codebird et voici la version que j’utilise : codebird.php

Je me suis créé 2 fonctions pour envoyer des messages et des images. Les images sont celles de mes caméras extérieures !

function sendTweetMessage($message,$consumer_key,$consumer_secret,$token,$secret){
	require_once('codebird.php');
	 
	\Codebird\Codebird::setConsumerKey($consumer_key, $consumer_secret);
	$cb = \Codebird\Codebird::getInstance();
	$cb->setToken($token, $secret);
	 
	$params = array(
	   'status' => $message
	);
	$reply = $cb->statuses_update($params);
}

function sendTweetImage($message,$urlimage,$consumer_key,$consumer_secret,$token,$secret){
	require_once('codebird.php');	 
	\Codebird\Codebird::setConsumerKey($consumer_key, $consumer_secret);
	$cb = \Codebird\Codebird::getInstance();
	$cb->setToken($token, $secret);
	 
	$params = array(
	  'status' => $message,
	  'media[]' => $urlimage
	);
	$reply = $cb->statuses_updateWithMedia($params);
}

Ensuite, voici comment j’utilise le code et les fonctions.
1er exemple avec l’envoi d’un snapshot de caméra :

$TWITTER_CONSUMER_KEY = 'xxxxx';
$TWITTER_CONSUMER_SECRET = 'xxxxx';
$TWITTER_TOKEN = 'xxxxx';
$TWITTER_SECRET = 'xxxxx';
$image = "http://192.168.1.102/snapshot.cgi?user=xxxxx&pwd=xxxx&count=0";
$message = date('H:i').' : caméra OUEST';
sendTweetImage($message,$image,$TWITTER_CONSUMER_KEY,$TWITTER_CONSUMER_SECRET,$TWITTER_TOKEN,$TWITTER_SECRET);	

Voici le rendu :

twitter_camera

2eme exemple avec l’envoi de mon rapport journalier sur les statistiques de la maison :

//récupération dans domoticz et ecodevices des statistiques
$temp = getDomoticzData($SERVER,$ID_JARDIN,'Temp');
$maxTemp = getDomoticzData($SERVER,$ID_VARIABLE_TEMP_MAX,'Temp');
$minTemp = getDomoticzData($SERVER,$ID_VARIABLE_TEMP_MIN,'Temp');
$rain = getDomoticzData($SERVER,$ID_PLUVIO,'Rain');		
$watercounter = getDomoticzData($SERVER,$ID_WATERCOUNTER,'CounterToday');
$wattcounter = getDomoticzData($SERVER,$ID_EDFTOTAL,'CounterToday');
$color = getEcodeviceData($ECODEVICE,'T1_DEMAIN');

//génération du message		
$message = date('H:i').' : Tnow : '.$temp.' °C - Tmin :  '.$minTemp.' °C - Tmax : '.$maxTemp.' °C - Pluie : '.$rain.' mm - Eau : '.$watercounter.' - Elec : '.$wattcounter.' - Tempo demain : '.$color;
//Envoi du message
sendTweetMessage($message,$TWITTER_CONSUMER_KEY,$TWITTER_CONSUMER_SECRET,$TWITTER_TOKEN,$TWITTER_SECRET);	

voici le rendu :

twitter_message

Conseil

Afin de ne pas polluer votre fil twitter, je vous conseille de créer un compte dédié pour poster vos tweets et de vous abonnez dessus. Rajouter les notifications pour ce compte et le tour est joué ! Vous verrez, à l’usage, vous ne pourrez plus vous en passez !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.